Browse Source

Merge remote-tracking branch 'origin/rel-10.4' into maliming/suite-mudblazor-docs

pull/25448/head
maliming 4 months ago
parent
commit
8bae59a8f5
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 2
      Directory.Packages.props
  2. 4
      common.props
  3. 2
      docs/en/Community-Articles/2026-03-17-Shared-User-Accounts-in-ABP/POST.md
  4. 30
      docs/en/cli/index.md
  5. 8
      docs/en/docs-nav.json
  6. 2
      docs/en/framework/architecture/multi-tenancy/index.md
  7. 164
      docs/en/framework/infrastructure/app-urls.md
  8. 1
      docs/en/framework/infrastructure/emailing.md
  9. 2
      docs/en/framework/ui/angular/authorization.md
  10. 1
      docs/en/framework/ui/angular/checkbox-component.md
  11. 18
      docs/en/framework/ui/angular/data-table-column-extensions.md
  12. 19
      docs/en/framework/ui/angular/dynamic-form-extensions.md
  13. 20
      docs/en/framework/ui/angular/entity-action-extensions.md
  14. 2
      docs/en/framework/ui/angular/extensions-overall.md
  15. 16
      docs/en/framework/ui/angular/feature-libraries.md
  16. 2
      docs/en/framework/ui/angular/features.md
  17. 2
      docs/en/framework/ui/angular/how-replaceable-components-work-with-extensions.md
  18. 2
      docs/en/framework/ui/angular/internet-connection-service.md
  19. 2
      docs/en/framework/ui/angular/oauth-module.md
  20. 41
      docs/en/framework/ui/angular/page-toolbar-extensions.md
  21. 5
      docs/en/framework/ui/angular/quick-start.md
  22. 2
      docs/en/framework/ui/angular/settings.md
  23. 411
      docs/en/framework/ui/angular/testing.md
  24. 8
      docs/en/framework/ui/react/index.md
  25. 2
      docs/en/guides/ms-multi-tenant-domain-resolving.md
  26. 2
      docs/en/modules/account.md
  27. 6
      docs/en/modules/account/shared-user-accounts.md
  28. 1
      docs/en/package-version-changes.md
  29. 133
      docs/en/studio/model-context-protocol.md
  30. 4
      docs/en/studio/monitoring-applications.md
  31. 2
      docs/en/studio/overview.md
  32. 6
      framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor
  33. 35
      framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs
  34. 4
      framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/DynamicHttpProxyInterceptor.cs
  35. 4
      framework/src/Volo.Abp.Mapperly/Volo/Abp/Mapperly/MapperlyAutoObjectMappingProvider.cs
  36. 40
      framework/src/Volo.Abp.MudBlazorUI/MudBlazorUiPageProgressService.cs
  37. 157
      framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/ClientProxyResponseDisposal_Tests.cs
  38. 35
      framework/test/Volo.Abp.Mapperly.Tests/Mapperly/AbpAutoMapperExtensibleDtoExtensions_Tests.cs
  39. 16
      framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/AbpReverseMapperly_Tests.cs
  40. 22
      framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/ExtraProperties_Dictionary_Reference_Tests.cs
  41. 16
      framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/MapperlyTestModule.cs
  42. 23
      framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/SampleClasses/MapperlyMappers.cs
  43. 17
      modules/account/src/Volo.Abp.Account.Web.IdentityServer/Pages/Account/IdentityServerSupportedLoginModel.cs
  44. 17
      modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs
  45. 6
      modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
  46. 266
      modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock
  47. 4
      modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json
  48. 270
      modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock
  49. 4
      modules/blogging/app/Volo.BloggingTestApp/package.json
  50. 308
      modules/blogging/app/Volo.BloggingTestApp/yarn.lock
  51. 2
      modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json
  52. 242
      modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock
  53. 10
      modules/cms-kit/angular/package.json
  54. 4
      modules/cms-kit/angular/projects/cms-kit/package.json
  55. 2
      modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json
  56. 242
      modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock
  57. 2
      modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json
  58. 242
      modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock
  59. 4
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json
  60. 394
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock
  61. 4
      modules/docs/app/VoloDocs.Web/package.json
  62. 298
      modules/docs/app/VoloDocs.Web/yarn.lock
  63. 13
      modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs
  64. 21
      modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs
  65. 66
      modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureAppService_Tests.cs
  66. 113
      modules/feature-management/test/Volo.Abp.FeatureManagement.Domain.Tests/Volo/Abp/FeatureManagement/FeatureManager_Tests.cs
  67. 27
      modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/TestFeatureDefinitionProvider.cs
  68. 1
      modules/identity/src/Volo.Abp.Identity.Blazor.MudBlazor/Pages/Identity/UserManagement.razor
  69. 36
      modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/AbpSignInManager_Tests.cs
  70. 2
      modules/openiddict/app/OpenIddict.Demo.Server/package.json
  71. 20
      modules/openiddict/app/angular/package.json
  72. 1
      modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor.MudBlazor/Components/PermissionManagementModal.razor
  73. 2
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManager.cs
  74. 2
      modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json
  75. 242
      modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock
  76. 4
      modules/setting-management/src/Volo.Abp.SettingManagement.Blazor.MudBlazor/Pages/SettingManagement/SettingManagement.razor
  77. 4
      modules/setting-management/src/Volo.Abp.SettingManagement.Blazor.MudBlazor/Pages/SettingManagement/SettingManagement.razor.cs
  78. 23
      modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingManager.cs
  79. 9
      modules/setting-management/test/Volo.Abp.SettingManagement.TestBase/Volo/Abp/SettingManagement/TestSettingDefinitionProvider.cs
  80. 99
      modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingManager_Basic_Tests.cs
  81. 4
      modules/virtual-file-explorer/app/package.json
  82. 2
      npm/lerna.json
  83. 4
      npm/ng-packs/package.json
  84. 6
      npm/ng-packs/packages/account-core/package.json
  85. 6
      npm/ng-packs/packages/account/package.json
  86. 8
      npm/ng-packs/packages/cms-kit/package.json
  87. 6
      npm/ng-packs/packages/components/package.json
  88. 4
      npm/ng-packs/packages/core/package.json
  89. 4
      npm/ng-packs/packages/feature-management/package.json
  90. 2
      npm/ng-packs/packages/generators/package.json
  91. 8
      npm/ng-packs/packages/identity/package.json
  92. 6
      npm/ng-packs/packages/oauth/package.json
  93. 4
      npm/ng-packs/packages/permission-management/package.json
  94. 2
      npm/ng-packs/packages/schematics/package.json
  95. 6
      npm/ng-packs/packages/setting-management/package.json
  96. 6
      npm/ng-packs/packages/tenant-management/package.json
  97. 6
      npm/ng-packs/packages/theme-basic/package.json
  98. 4
      npm/ng-packs/packages/theme-shared/package.json
  99. 4
      npm/packs/anchor-js/package.json
  100. 4
      npm/packs/aspnetcore.components.server.basictheme/package.json

2
Directory.Packages.props

@ -151,7 +151,7 @@
<PackageVersion Include="Rebus" Version="8.8.0" /> <PackageVersion Include="Rebus" Version="8.8.0" />
<PackageVersion Include="Rebus.ServiceProvider" Version="10.5.0" /> <PackageVersion Include="Rebus.ServiceProvider" Version="10.5.0" />
<PackageVersion Include="Riok.Mapperly" Version="4.3.1" /> <PackageVersion Include="Riok.Mapperly" Version="4.3.1" />
<PackageVersion Include="Scriban" Version="7.0.0" /> <PackageVersion Include="Scriban" Version="7.2.1" />
<PackageVersion Include="Serilog" Version="4.3.0" /> <PackageVersion Include="Serilog" Version="4.3.0" />
<PackageVersion Include="Serilog.AspNetCore" Version="9.0.0" /> <PackageVersion Include="Serilog.AspNetCore" Version="9.0.0" />
<PackageVersion Include="Serilog.Extensions.Hosting" Version="9.0.0" /> <PackageVersion Include="Serilog.Extensions.Hosting" Version="9.0.0" />

4
common.props

@ -1,8 +1,8 @@
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
<Version>10.4.0</Version> <Version>10.4.1</Version>
<LeptonXVersion>5.4.0</LeptonXVersion> <LeptonXVersion>5.4.1</LeptonXVersion>
<NoWarn>$(NoWarn);CS1591;CS0436</NoWarn> <NoWarn>$(NoWarn);CS1591;CS0436</NoWarn>
<PackageIconUrl>https://abp.io/assets/abp_nupkg.png</PackageIconUrl> <PackageIconUrl>https://abp.io/assets/abp_nupkg.png</PackageIconUrl>
<PackageProjectUrl>https://abp.io/</PackageProjectUrl> <PackageProjectUrl>https://abp.io/</PackageProjectUrl>

2
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. 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. 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 ## Invitations

30
docs/en/cli/index.md

@ -75,7 +75,6 @@ Here is the list of all available commands before explaining their details:
- [clear-download-cache](../cli#clear-download-cache): Clears the templates download cache. - [clear-download-cache](../cli#clear-download-cache): Clears the templates download cache.
- [check-extensions](../cli#check-extensions): Checks the latest version of the ABP CLI extensions. - [check-extensions](../cli#check-extensions): Checks the latest version of the ABP CLI extensions.
- [install-old-cli](../cli#install-old-cli): Installs old ABP CLI. - [install-old-cli](../cli#install-old-cli): Installs old ABP CLI.
- [mcp-studio](../cli#mcp-studio): Starts ABP Studio MCP bridge for AI tools (requires ABP Studio running).
- [generate-razor-page](../cli#generate-razor-page): Generates a page class that you can use it in the ASP NET Core pipeline to return an HTML page. - [generate-razor-page](../cli#generate-razor-page): Generates a page class that you can use it in the ASP NET Core pipeline to return an HTML page.
- [generate-jwks](../cli#generate-jwks): Generates an RSA key pair (JWKS public key + PEM private key) for OpenIddict `private_key_jwt` client authentication. - [generate-jwks](../cli#generate-jwks): Generates an RSA key pair (JWKS public key + PEM private key) for OpenIddict `private_key_jwt` client authentication.
@ -1091,35 +1090,6 @@ Usage:
abp install-old-cli [options] abp install-old-cli [options]
``` ```
### mcp-studio
Starts an MCP stdio bridge for AI tools (Cursor, Claude Desktop, VS Code, etc.) that connects to the local ABP Studio instance. ABP Studio must be running for this command to work.
> You do not need to run this command manually. It is invoked automatically by your AI tool once you add the MCP configuration to your IDE. See the [Configuration](#configuration) examples below.
> This command connects to the **local ABP Studio** instance. It is separate from the `abp mcp` command, which connects to the ABP.IO cloud MCP service and requires an active license.
Usage:
```bash
abp mcp-studio [options]
```
Options:
- `--endpoint` or `-e`: Overrides ABP Studio MCP endpoint. Default value is `http://localhost:38280/mcp/`.
Example:
```bash
abp mcp-studio
abp mcp-studio --endpoint http://localhost:38280/mcp/
```
For detailed configuration examples (Cursor, Claude Desktop, VS Code) and the full list of available MCP tools, see the [Model Context Protocol (MCP)](../studio/model-context-protocol.md) documentation.
> You can also run `abp help mcp-studio` to see available options and example IDE configuration snippets directly in your terminal.
### generate-razor-page ### generate-razor-page
`generate-razor-page` command to generate a page class and then use it in the ASP NET Core pipeline to return an HTML page. `generate-razor-page` command to generate a page class and then use it in the ASP NET Core pipeline to return an HTML page.

8
docs/en/docs-nav.json

@ -340,10 +340,6 @@
"text": "Monitoring Applications", "text": "Monitoring Applications",
"path": "studio/monitoring-applications.md" "path": "studio/monitoring-applications.md"
}, },
{
"text": "Model Context Protocol (MCP)",
"path": "studio/model-context-protocol.md"
},
{ {
"text": "Working with Kubernetes", "text": "Working with Kubernetes",
"path": "studio/kubernetes.md" "path": "studio/kubernetes.md"
@ -586,6 +582,10 @@
} }
] ]
}, },
{
"text": "Application URLs",
"path": "framework/infrastructure/app-urls.md"
},
{ {
"text": "Background Jobs", "text": "Background Jobs",
"items": [ "items": [

2
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 ##### Custom Tenant Resolvers
You can add implement your custom tenant resolver and configure the `AbpTenantResolveOptions` in your module's `ConfigureServices` method as like below: You can add implement your custom tenant resolver and configure the `AbpTenantResolveOptions` in your module's `ConfigureServices` method as like below:

164
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<AppUrlOptions>(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<AppUrlOptions>(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<AppUrlOptions>(options =>
{
options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"];
options.RedirectAllowedUrls.AddRange(
configuration["App:RedirectAllowedUrls"]?.Split(',') ?? Array.Empty<string>());
});
```
> 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<AbpTenantResolveOptions>(options =>
{
options.AddDomainTenantResolver("{0}.example.com");
});
Configure<AppUrlOptions>(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<AppUrlOptions>(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)

1
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 ## See Also
* [MailKit integration for sending emails](./mail-kit.md) * [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).

2
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 - `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 - `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 - `execute:` a function that stores the skip logic

1
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` - `label`
- `labelClass (default form-check-label)` - `labelClass (default form-check-label)`
- `checkboxId` - `checkboxId`
- `checkboxReadonly`
- `checkboxReadonly (default form-check-input)` - `checkboxReadonly (default form-check-input)`
- `checkboxStyle` - `checkboxStyle`

18
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. 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 ## 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). 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 ```js
// src/app/app.routes.ts // src/app/app.routes.ts
// other imports import { Routes } from '@angular/router';
import { identityEntityPropContributors } from './entity-prop-contributors'; import { identityEntityPropContributors } from './entity-prop-contributors';
export const APP_ROUTES: Routes = [ 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. 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 ## How to Render Custom HTML in Cells

19
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. 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 ## 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. 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 ```js
// src/app/app.routes.ts // src/app/app.routes.ts
// other imports import { Routes } from '@angular/router';
import { import {
identityCreateFormPropContributors, identityCreateFormPropContributors,
identityEditFormPropContributors, 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. 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 ## Object Extensions

20
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. 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 ## 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). 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 ### 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 ```js
// src/app/app.routes.ts // src/app/app.routes.ts
// other imports import { Routes } from '@angular/router';
import { identityEntityActionContributors } from './entity-action-contributors'; import { identityEntityActionContributors } from './entity-action-contributors';
export const APP_ROUTES: Routes = [ 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. 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 ## How to Place a Custom Modal and Trigger It by Entity Actions

2
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) * [Page Toolbar Extension](page-toolbar-extensions.md)
* [Dynamic Form (or Form Prop) Extensions](dynamic-form-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 ## Extensible Table Component
Using [ngx-datatable](https://github.com/swimlane/ngx-datatable) in extensible table. Using [ngx-datatable](https://github.com/swimlane/ngx-datatable) in extensible table.

16
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. 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 ## Feature Library Content
Each library has at least two key elements: 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. 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.
--- ---
<sup id="f-modify-route"><b>1</b></sup> _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')._ <sup>[↩](#a-modify-route)</sup> <sup id="f-modify-route"><b>1</b></sup> _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')._ <sup>[↩](#a-modify-route)</sup>

2
docs/en/framework/ui/angular/features.md

@ -7,7 +7,7 @@
# Features # 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. > This document explains how to get feature values in an Angular application. See the [Features document](../../infrastructure/features.md) to learn the feature system.

2
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. 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`: Create a new component called `MyRolesComponent`:
```bash ```bash

2
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 # 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** **You can get via signal**
```ts ```ts

2
docs/en/framework/ui/angular/oauth-module.md

@ -7,7 +7,7 @@
# ABP OAuth Package # 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`. If your app is version 8.3 or higher, you should include "provideAbpOAuth()" after "provideAbpCore()" in the `appConfig` array of your `app.config.ts`.

41
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. 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 ## 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. 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 ```js
// src/app/app.routes.ts // src/app/app.routes.ts
// other imports import { Routes } from '@angular/router';
import { identityToolbarActionContributors } from './toolbar-action-contributors'; import { identityToolbarActionContributors } from './toolbar-action-contributors';
export const APP_ROUTES: Routes = [ 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. 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 ## 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 ```js
// src/app/click-me-button.component.ts // 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 { IdentityUserDto } from '@abp/ng.identity/proxy';
import { ActionData, EXTENSIONS_ACTION_DATA } from '@abp/ng.components/extensible'; 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: `<button class="btn btn-warning" (click)="handleClick()">Click Me!</button>`, template: `<button class="btn btn-warning" (click)="handleClick()">Click Me!</button>`,
}) })
export class ClickMeButtonComponent { export class ClickMeButtonComponent {
constructor( private data = inject<ActionData<IdentityUserDto[]>>(EXTENSIONS_ACTION_DATA);
@Inject(EXTENSIONS_ACTION_DATA)
private data: ActionData<IdentityUserDto[]>
) {}
handleClick() { handleClick() {
this.data.record.forEach(user => console.log(user.userName)); this.data.record.forEach(user => console.log(user.userName));
@ -168,7 +181,7 @@ Import `identityToolbarActionContributors` in your routing configuration and pas
```js ```js
// src/app/app.routes.ts // src/app/app.routes.ts
// other imports import { Routes } from '@angular/router';
import { identityToolbarActionContributors } from './toolbar-action-contributors'; import { identityToolbarActionContributors } from './toolbar-action-contributors';
export const APP_ROUTES: Routes = [ 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. 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 ## How to Place a Custom Modal and Trigger It by Toolbar Actions

5
docs/en/framework/ui/angular/quick-start.md

@ -7,7 +7,7 @@
# ABP Angular Quick Start # 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 ## 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) - [Visual Studio IntelliCode](https://marketplace.visualstudio.com/items?itemName=visualstudioexptteam.vscodeintellicode)
- [Path Intellisense](https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense) - [Path Intellisense](https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense)
- [npm Intellisense](https://marketplace.visualstudio.com/items?itemName=christian-kohler.npm-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 (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) - [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) - [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. 2. Run `yarn` or `npm install` if you have not installed dependencies already.
3. Run `yarn build:prod` or `npm run build:prod`. 3. Run `yarn build:prod` or `npm run build:prod`.
<img alt="Angular compiler optimizing the build using Terser" src="./images/quick-start---self-signed-certificate-error.png" width="400px" style="max-width:100%"> <img alt="Browser blocking access to backend API due to self-signed certificate error" src="./images/quick-start---self-signed-certificate-error.png" width="400px" style="max-width:100%">
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. 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.

2
docs/en/framework/ui/angular/settings.md

@ -7,7 +7,7 @@
# Settings # 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. > 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.

411
docs/en/framework/ui/angular/testing.md

@ -1,7 +1,7 @@
```json ```json
//[doc-seo] //[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**. 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 ## Configuration
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";
describe("MyComponent", () => { The test target in _angular.json_ uses Angular's built-in Vitest builder:
let fixture: ComponentFixture<MyComponent>;
beforeEach( ```json
waitForAsync(() => { // angular.json
TestBed.configureTestingModule({
declarations: [MyComponent],
imports: [
CoreTestingModule.withConfig(),
ThemeSharedTestingModule.withConfig(),
ThemeBasicTestingModule.withConfig(),
NgxValidateCoreModule,
],
providers: [
/* mock providers here */
],
}).compileComponents();
})
);
beforeEach(() => { "test": {
fixture = TestBed.createComponent(MyComponent); "builder": "@angular/build:unit-test"
fixture.detectChanges(); }
}); ```
it("should be initiated", () => { Spec files are compiled with _tsconfig.spec.json_, which enables Vitest globals:
expect(fixture.componentInstance).toBeTruthy();
}); ```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 { CoreTestingModule } from "@abp/ng.core/testing";
import { ThemeBasicTestingModule } from "@abp/ng.theme.basic/testing";
import { ThemeSharedTestingModule } from "@abp/ng.theme.shared/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 { 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"; import { MyComponent } from "./my.component";
describe("MyComponent", () => { describe("MyComponent", () => {
let fixture: ComponentFixture<MyComponent>; let fixture: ComponentFixture<MyComponent>;
let mockAuthService: { isAuthenticated: boolean; navigateToLogin: ReturnType<typeof vi.fn> };
beforeEach(async () => { beforeEach(async () => {
const result = await render(MyComponent, { mockAuthService = {
isAuthenticated: false,
navigateToLogin: vi.fn(),
};
await TestBed.configureTestingModule({
imports: [ imports: [
CoreTestingModule.withConfig(), CoreTestingModule.withConfig(),
ThemeSharedTestingModule.withConfig(), ThemeSharedTestingModule.withConfig(),
ThemeBasicTestingModule.withConfig(),
NgxValidateCoreModule, NgxValidateCoreModule,
MyComponent,
], ],
providers: [ providers: [
/* mock providers here */ {
provide: AuthService,
useValue: mockAuthService,
},
], ],
}); }).compileComponents();
});
fixture = result.fixture; beforeEach(() => {
fixture = TestBed.createComponent(MyComponent);
fixture.detectChanges();
}); });
it("should be initiated", () => { 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 Current templates use standalone components, so put the component under test in the `imports` array instead of `declarations`.
// other imports
import { getByLabelText, screen } from "@testing-library/angular";
import userEvent from "@testing-library/user-event";
describe("MyComponent", () => { If your application uses `@abp/ng.theme.basic`, also import `ThemeBasicTestingModule.withConfig()` from `@abp/ng.theme.basic/testing`.
beforeEach(/* removed for sake of brevity */);
it("should display advanced filters", () => { ### Mocking Dependencies
const filters = screen.getByTestId("author-filters");
const nameInput = getByLabelText(filters, /name/i) as HTMLInputElement;
expect(nameInput.offsetWidth).toBe(0);
const advancedFiltersBtn = screen.getByRole("link", { name: /advanced/i }); Use Vitest mocks instead of Jasmine spies:
userEvent.click(advancedFiltersBtn);
expect(nameInput.offsetWidth).toBeGreaterThan(0); ```ts
import { vi } from "vitest";
userEvent.type(nameInput, "fooo{backspace}"); const deleteSpy = vi.fn().mockReturnValue(of(null));
expect(nameInput.value).toBe("foo"); 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) ## Tips
- [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)
### Clearing DOM After Each Spec ### 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 // other imports
import { clearPage } from "@abp/ng.core/testing"; import { clearPage } from "@abp/ng.core/testing";
@ -147,239 +154,189 @@ describe("MyComponent", () => {
afterEach(() => clearPage(fixture)); afterEach(() => clearPage(fixture));
beforeEach(async () => {
const result = await render(MyComponent, {
/* removed for sake of brevity */
});
fixture = result.fixture;
});
// specs here // 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 ### 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 // other imports
import { wait } from "@abp/ng.core/testing"; import { wait } from "@abp/ng.core/testing";
describe("MyComponent", () => { describe("MyComponent", () => {
beforeEach(/* removed for sake of brevity */); let fixture: ComponentFixture<MyComponent>;
it("should open a modal", async () => { it("should open a modal", async () => {
const openModalBtn = screen.getByRole("button", { name: "Open Modal" }); const openModalBtn = fixture.nativeElement.querySelector('[role="button"]');
userEvent.click(openModalBtn); openModalBtn.click();
await wait(fixture); await wait(fixture);
const modal = screen.getByRole("dialog"); const modal = fixture.nativeElement.ownerDocument.querySelector('[role="dialog"]');
expect(modal).toBeTruthy(); 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. 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 ```ts
import { clearPage, CoreTestingModule, wait } from "@abp/ng.core/testing"; import { CoreTestingModule } from "@abp/ng.core/testing";
import { ThemeBasicTestingModule } from "@abp/ng.theme.basic/testing";
import { ThemeSharedTestingModule } from "@abp/ng.theme.shared/testing"; import { ThemeSharedTestingModule } from "@abp/ng.theme.shared/testing";
import { ComponentFixture } from "@angular/core/testing"; import { ComponentFixture } from "@angular/core/testing";
import {
NgbCollapseModule,
NgbDatepickerModule,
NgbDropdownModule,
} from "@ng-bootstrap/ng-bootstrap";
import { NgxValidateCoreModule } from "@ngx-validate/core"; import { NgxValidateCoreModule } from "@ngx-validate/core";
import { CountryService } from "@proxy/countries"; import { render, screen } from "@testing-library/angular";
import { import { MyComponent } from "./my.component";
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<CountryComponent>;
afterEach(() => clearPage(fixture)); describe("MyComponent", () => {
let fixture: ComponentFixture<MyComponent>;
beforeEach(async () => { beforeEach(async () => {
const result = await render(CountryComponent, { const result = await render(MyComponent, {
imports: [ imports: [
CoreTestingModule.withConfig(), CoreTestingModule.withConfig(),
ThemeSharedTestingModule.withConfig(), ThemeSharedTestingModule.withConfig(),
ThemeBasicTestingModule.withConfig(),
NgxValidateCoreModule, NgxValidateCoreModule,
NgbCollapseModule,
NgbDatepickerModule,
NgbDropdownModule,
], ],
providers: [ providers: [
{ /* mock providers here */
provide: CountryService,
useValue: {
getList: () => list$,
},
},
], ],
}); });
fixture = result.fixture; fixture = result.fixture;
}); });
it("should display advanced filters", () => { it("should be initiated", () => {
const filters = screen.getByTestId("country-filters"); expect(fixture.componentInstance).toBeTruthy();
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 render list in table", async () => { 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 table = await screen.findByTestId("country-table");
const name = getByText(table, "United States of America"); - [Queries](https://testing-library.com/docs/dom-testing-library/api-queries)
expect(name).toBeTruthy(); - [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 () => { 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 actionsBtn = screen.queryByRole("button", { name: /actions/i });
userEvent.click(actionsBtn);
const editBtn = screen.getByRole("button", { name: /edit/i }); ## Testing Example
userEvent.click(editBtn);
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"); ```ts
const modalHeading = queryByRole(modal, "heading", { name: /edit/i }); import { CoreTestingModule } from "@abp/ng.core/testing";
expect(modalHeading).toBeTruthy(); 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, "×"); describe("HomeComponent", () => {
userEvent.click(closeBtn); let fixture: ComponentFixture<HomeComponent>;
let mockAuthService: { isAuthenticated: boolean; navigateToLogin: ReturnType<typeof vi.fn> };
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 () => { it("should be initiated", () => {
const newBtn = screen.getByRole("button", { name: /new/i }); fixture = TestBed.createComponent(HomeComponent);
userEvent.click(newBtn); fixture.detectChanges();
expect(fixture.componentInstance).toBeTruthy();
await wait(fixture);
const modal = screen.getByRole("dialog");
const modalHeading = queryByRole(modal, "heading", { name: /new/i });
expect(modalHeading).toBeTruthy();
}); });
it("should validate required name field", async () => { describe("when login state is false", () => {
const newBtn = screen.getByRole("button", { name: /new/i }); beforeEach(() => {
userEvent.click(newBtn); 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"); it("button should exist", () => {
const nameInput = getByRole(modal, "textbox", { const button = fixture.nativeElement.querySelector('[role="button"]');
name: /^name/i, expect(button).toBeDefined();
}) as HTMLInputElement; });
userEvent.type(nameInput, "x"); describe("when button clicked", () => {
userEvent.type(nameInput, "{backspace}"); beforeEach(() => {
const button = fixture.nativeElement.querySelector('[role="button"]');
button.click();
});
const nameError = await findByText(modal, /required/i); it("navigateToLogin should have been called", () => {
expect(nameError).toBeTruthy(); expect(mockAuthService.navigateToLogin).toHaveBeenCalled();
});
});
}); });
});
```
it("should delete a country", () => { 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 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);
const confirmText = screen.getByText("AreYouSure"); ## CI Configuration
expect(confirmText).toBeTruthy();
const confirmBtn = screen.getByRole("button", { name: "Yes" }); Run unit tests once in CI with:
userEvent.click(confirmBtn);
expect(deleteSpy).toHaveBeenCalledWith(list$.value.items[0].id); ```sh
expect(getSpy).toHaveBeenCalledTimes(1); ng test --watch=false
});
});
``` ```
## CI Configuration If you need a dedicated CI configuration, add one under the `test` target in _angular.json_:
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:
```json ```json
// angular.json // angular.json
"test": { "test": {
"builder": "@angular-devkit/build-angular:karma", "builder": "@angular/build:unit-test",
"options": { /* several options here */ },
"configurations": { "configurations": {
"production": { "ci": {
"karmaConfig": "karma.conf.prod.js" "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. Then run:
Finally, don't forget to run your CI tests with the following command:
```sh ```sh
npm test -- --prod ng test --configuration=ci
``` ```
## See Also ## See Also

8
docs/en/framework/ui/react/index.md

@ -30,10 +30,10 @@ The React UI template is built with:
The template also includes ABP-specific NPM packages: The template also includes ABP-specific NPM packages:
- [`@volo/abp-app-config`](https://github.com/volosoft/volo/tree/dev/abp/npm/packs/abp-app-config) - [`@volo/abp-app-config`](https://www.npmjs.com/package/@volo/abp-app-config)
- [`@volo/abp-oidc-auth`](https://github.com/volosoft/volo/tree/dev/abp/npm/packs/abp-oidc-auth) - [`@volo/abp-oidc-auth`](https://www.npmjs.com/package/@volo/abp-oidc-auth)
- [`@volo/abp-react-app-config`](https://github.com/volosoft/volo/tree/dev/abp/npm/packs/abp-react-app-config) - [`@volo/abp-react-app-config`](https://www.npmjs.com/package/@volo/abp-react-app-config)
- [`@volo/abp-react-oidc-auth`](https://github.com/volosoft/volo/tree/dev/abp/npm/packs/abp-react-oidc-auth) - [`@volo/abp-react-oidc-auth`](https://www.npmjs.com/package/@volo/abp-react-oidc-auth)
## React App and Admin Console ## React App and Admin Console

2
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. **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 ## 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`). 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`).

2
docs/en/modules/account.md

@ -43,6 +43,8 @@ Social/external login buttons becomes visible if you setup it. See the *Social/E
![account-module-forgot-password](../images/account-module-forgot-password.png) ![account-module-forgot-password](../images/account-module-forgot-password.png)
> 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 Management
`/Account/Manage` page is used to change password and personal information of the user. `/Account/Manage` page is used to change password and personal information of the user.

6
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. > 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 ## 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. 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 - Enable or disable two-factor authentication
- Change `LockoutEnabled` or `ShouldChangePasswordOnNextLogin` - 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 ### What tenant admins can do
- Invite users to the tenant (see the Invitation flow above) - 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 - Manage role and organization-unit assignments within the tenant
- View audit / security logs scoped to 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. 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. 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.

1
docs/en/package-version-changes.md

@ -12,6 +12,7 @@
| Package | Old Version | New Version | PR | | Package | Old Version | New Version | PR |
|---------|-------------|-------------|-----| |---------|-------------|-------------|-----|
| MudBlazor | 8.0.0 | 9.4.0 | #25393 | | MudBlazor | 8.0.0 | 9.4.0 | #25393 |
| Scriban | 7.0.0 | 7.2.1 | #25493 |
## 10.4.0-rc.2 ## 10.4.0-rc.2

133
docs/en/studio/model-context-protocol.md

@ -1,133 +0,0 @@
```json
//[doc-seo]
{
"Description": "Learn how to connect AI tools like Cursor, Claude Desktop, and VS Code to ABP Studio using the Model Context Protocol (MCP)."
}
```
# ABP Studio: Model Context Protocol (MCP)
````json
//[doc-nav]
{
"Next": {
"Name": "Working with Kubernetes",
"Path": "studio/kubernetes"
}
}
````
ABP Studio includes built-in [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) support so AI tools can query runtime telemetry and control solution runner operations.
## How It Works
ABP Studio runs a local MCP server in the background. The `abp mcp-studio` CLI command acts as a stdio bridge that AI clients connect to. The bridge forwards requests to ABP Studio and returns responses.
```text
MCP Client (Cursor / Claude Desktop / VS Code)
──stdio──▶ abp mcp-studio ──HTTP──▶ ABP Studio
```
> ABP Studio must be running while MCP is used. If ABP Studio is not running (or its MCP endpoint is unavailable), `abp mcp-studio` returns an error to the AI client.
## Configuration
### Cursor (`.cursor/mcp.json`)
```json
{
"mcpServers": {
"abp-studio": {
"command": "abp",
"args": ["mcp-studio"]
}
}
}
```
### Claude Desktop (`claude_desktop_config.json`)
```json
{
"mcpServers": {
"abp-studio": {
"command": "abp",
"args": ["mcp-studio"]
}
}
}
```
Claude Desktop config file locations:
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
- Linux: `~/.config/Claude/claude_desktop_config.json`
### VS Code (`.vscode/mcp.json`)
```json
{
"servers": {
"abp-studio": {
"command": "abp",
"args": ["mcp-studio"]
}
}
}
```
### Quick Reference
You can run `abp help mcp-studio` at any time to see the available options and example configuration snippets for each supported IDE directly in your terminal.
### Generating Config Files from ABP Studio
When creating a new solution, ABP Studio can generate MCP configuration files for Cursor and VS Code automatically.
## Available Tools
ABP Studio exposes the following tools to MCP clients. All tools operate on the currently open solution and selected run profile in ABP Studio.
### Monitoring
| Tool | Description |
|------|-------------|
| `list_applications` | Lists all running ABP applications connected to ABP Studio. |
| `get_exceptions` | Gets recent exceptions including stack traces and error messages. |
| `get_logs` | Gets log entries. Can be filtered by log level. |
| `get_requests` | Gets HTTP request information. Can be filtered by status code. |
| `get_events` | Gets distributed events for debugging inter-service communication. |
| `clear_monitor` | Clears collected monitor data. |
### Application Control
| Tool | Description |
|------|-------------|
| `list_runnable_applications` | Lists all applications in the current run profile with their state. |
| `start_application` | Starts a stopped application. |
| `stop_application` | Stops a running application. |
| `restart_application` | Restarts a running application. |
| `build_application` | Builds a .NET application using `dotnet build`. |
### Container Control
| Tool | Description |
|------|-------------|
| `list_containers` | Lists Docker containers in the current run profile with their state. |
| `start_containers` | Starts Docker containers (docker-compose up). |
| `stop_containers` | Stops Docker containers (docker-compose down). |
### Solution Structure
| Tool | Description |
|------|-------------|
| `get_solution_info` | Gets solution name, path, template, and run profile information. |
| `list_modules` | Lists all modules in the solution. |
| `list_packages` | Lists packages (projects) in the solution. Can be filtered by module. |
| `get_module_dependencies` | Gets module dependency/import information. |
## Notes
- Monitor data (exceptions, logs, requests, events) is kept in memory and is cleared when the solution is closed.
- The `abp mcp-studio` command connects to the local ABP Studio instance. This is separate from the `abp mcp` command, which connects to the ABP.IO cloud MCP service and requires an active license.

4
docs/en/studio/monitoring-applications.md

@ -11,8 +11,8 @@
//[doc-nav] //[doc-nav]
{ {
"Next": { "Next": {
"Name": "Model Context Protocol (MCP)", "Name": "Working with Kubernetes",
"Path": "studio/model-context-protocol" "Path": "studio/kubernetes"
} }
} }
```` ````

2
docs/en/studio/overview.md

@ -103,8 +103,6 @@ This pane is dedicated to managing Kubernetes services. It simplifies the proces
The AI Assistant is an integrated chat interface within ABP Studio that provides intelligent assistance for ABP-related questions. You can access it from the left sidebar by clicking the AI icon. The AI Assistant is an integrated chat interface within ABP Studio that provides intelligent assistance for ABP-related questions. You can access it from the left sidebar by clicking the AI icon.
For external AI tool integrations through MCP, see the [Model Context Protocol (MCP)](./model-context-protocol.md) documentation.
![ai-assistant](./images/overview/ai-assistant.png) ![ai-assistant](./images/overview/ai-assistant.png)
Key features of the AI Assistant include: Key features of the AI Assistant include:

6
framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor

@ -120,9 +120,9 @@
else else
{ {
<DataGridColumn TItem="TItem" Field="@nameof(IHasExtraProperties.ExtraProperties)" SortField="@column.PropertyName" Width="@BlazoriseFluentSizingParse.Parse(column.Width, SizingType.Width)" Caption="@column.Title" Displayable="column.Visible" Sortable="@column.Sortable"> <DataGridColumn TItem="TItem" Field="@nameof(IHasExtraProperties.ExtraProperties)" SortField="@column.PropertyName" Width="@BlazoriseFluentSizingParse.Parse(column.Width, SizingType.Width)" Caption="@column.Title" Displayable="column.Visible" Sortable="@column.Sortable">
<DisplayTemplate> <DisplayTemplate Context="rowContext">
@{ @{
var entity = context.Item as IHasExtraProperties; var entity = rowContext.Item as IHasExtraProperties;
var propertyName = ExtensionPropertiesRegex.Match(column.Data).Groups[1].Value; var propertyName = ExtensionPropertiesRegex.Match(column.Data).Groups[1].Value;
var propertyValue = entity?.GetProperty(propertyName); var propertyValue = entity?.GetProperty(propertyName);
if (propertyValue != null && propertyValue.GetType() == typeof(bool)) if (propertyValue != null && propertyValue.GetType() == typeof(bool))
@ -140,7 +140,7 @@
{ {
if (column.ValueConverter != null) if (column.ValueConverter != null)
{ {
@((MarkupString)GetConvertedFieldValue(context.Item, column)) @((MarkupString)GetConvertedFieldValue(rowContext.Item, column))
} }
else else
{ {

35
framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs

@ -50,7 +50,9 @@ public class ClientProxyBase<TService> : ITransientDependency
protected virtual async Task RequestAsync(string methodName, ClientProxyRequestTypeValue? arguments = null) 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<T> RequestAsync<T>(string methodName, ClientProxyRequestTypeValue? arguments = null) protected virtual async Task<T> RequestAsync<T>(string methodName, ClientProxyRequestTypeValue? arguments = null)
@ -120,18 +122,21 @@ public class ClientProxyBase<TService> : ITransientDependency
responseContent.Headers?.ContentLength); responseContent.Headers?.ContentLength);
} }
var stringContent = await responseContent.ReadAsStringAsync(); using (responseContent)
if (typeof(T) == typeof(string))
{ {
return (T)(object)stringContent; var stringContent = await responseContent.ReadAsStringAsync();
} if (typeof(T) == typeof(string))
{
return (T)(object)stringContent;
}
if (stringContent.IsNullOrWhiteSpace()) if (stringContent.IsNullOrWhiteSpace())
{ {
return default!; return default!;
} }
return JsonSerializer.Deserialize<T>(stringContent); return JsonSerializer.Deserialize<T>(stringContent);
}
} }
protected virtual async Task<HttpContent> RequestAsync(ClientProxyRequestContext requestContext) protected virtual async Task<HttpContent> RequestAsync(ClientProxyRequestContext requestContext)
@ -184,7 +189,15 @@ public class ClientProxyBase<TService> : ITransientDependency
if (!response.IsSuccessStatusCode) if (!response.IsSuccessStatusCode)
{ {
await ThrowExceptionForResponseAsync(response); try
{
await ThrowExceptionForResponseAsync(response);
}
catch
{
response.Dispose();
throw;
}
} }
return response.Content; return response.Content;

4
framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/DynamicHttpProxyInterceptor.cs

@ -59,7 +59,9 @@ public class DynamicHttpProxyInterceptor<TService> : AbpInterceptor, ITransientD
if (invocation.Method.ReturnType.GenericTypeArguments.IsNullOrEmpty()) if (invocation.Method.ReturnType.GenericTypeArguments.IsNullOrEmpty())
{ {
await InterceptorClientProxy.CallRequestAsync(context); using (await InterceptorClientProxy.CallRequestAsync(context))
{
}
} }
else else
{ {

4
framework/src/Volo.Abp.Mapperly/Volo/Abp/Mapperly/MapperlyAutoObjectMappingProvider.cs

@ -46,7 +46,7 @@ public class MapperlyAutoObjectMappingProvider : IAutoObjectMappingProvider
{ {
mapper.BeforeMap((TSource)source); mapper.BeforeMap((TSource)source);
var destination = mapper.Map((TSource)source); var destination = mapper.Map((TSource)source);
TryMapExtraProperties(mapper.GetType().GetSingleAttributeOrNull<MapExtraPropertiesAttribute>(), (TSource)source, destination, GetExtraProperties(destination)); TryMapExtraProperties(mapper.GetType().GetSingleAttributeOrNull<MapExtraPropertiesAttribute>(), (TSource)source, destination, new ExtraPropertyDictionary());
mapper.AfterMap((TSource)source, destination); mapper.AfterMap((TSource)source, destination);
return destination; return destination;
} }
@ -56,7 +56,7 @@ public class MapperlyAutoObjectMappingProvider : IAutoObjectMappingProvider
{ {
reverseMapper.BeforeReverseMap((TSource)source); reverseMapper.BeforeReverseMap((TSource)source);
var destination = reverseMapper.ReverseMap((TSource)source); var destination = reverseMapper.ReverseMap((TSource)source);
TryMapExtraProperties(reverseMapper.GetType().GetSingleAttributeOrNull<MapExtraPropertiesAttribute>(), (TSource)source, destination, GetExtraProperties(destination)); TryMapExtraProperties(reverseMapper.GetType().GetSingleAttributeOrNull<MapExtraPropertiesAttribute>(), (TSource)source, destination, new ExtraPropertyDictionary());
reverseMapper.AfterReverseMap((TSource)source, destination); reverseMapper.AfterReverseMap((TSource)source, destination);
return destination; return destination;
} }

40
framework/src/Volo.Abp.MudBlazorUI/MudBlazorUiPageProgressService.cs

@ -17,33 +17,57 @@ public class MudBlazorUiPageProgressService : IUiPageProgressService, IScopedDep
protected virtual int HideDelayMs => 250; protected virtual int HideDelayMs => 250;
private int _activeCount; private int _activeCount;
private UiPageProgressOptions _lastOptions = new(); private bool _visible;
private UiPageProgressOptions _lastOptions;
private readonly Timer _hideTimer; private readonly Timer _hideTimer;
public MudBlazorUiPageProgressService() 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<UiPageProgressOptions>? options = null) public Task Go(int? percentage, Action<UiPageProgressOptions>? options = null)
{ {
var opt = new UiPageProgressOptions(); var opt = CreateDefaultOptions();
options?.Invoke(opt); options?.Invoke(opt);
_lastOptions = opt; _lastOptions = opt;
if (percentage == -1 && Interlocked.Decrement(ref _activeCount) <= 0) if (percentage == -1)
{ {
Interlocked.Exchange(ref _activeCount, 0); _activeCount--;
_hideTimer.Change(HideDelayMs, Timeout.Infinite); 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); _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; return Task.CompletedTask;
} }
protected virtual UiPageProgressOptions CreateDefaultOptions()
{
return new UiPageProgressOptions();
}
public void Dispose() => _hideTimer.Dispose(); public void Dispose() => _hideTimer.Dispose();
} }

157
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<IRegularTestController>();
_factory = (StubProxyHttpClientFactory)ServiceProvider.GetRequiredService<IProxyHttpClientFactory>();
}
protected override void ConfigureServices(IServiceCollection services)
{
services.Replace(ServiceDescriptor.Singleton<IProxyHttpClientFactory, StubProxyHttpClientFactory>());
}
[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<AbpRemoteCallException>(
() => _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<HttpResponseMessage> _responseFactory;
public StubProxyHttpClientFactory(ITestServerAccessor testServerAccessor)
{
_testServerAccessor = testServerAccessor;
}
public void SetStubResponse(Func<HttpResponseMessage> 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<HttpResponseMessage> _responseFactory;
public StubHttpMessageHandler(Func<HttpResponseMessage> responseFactory)
{
_responseFactory = responseFactory;
}
protected override Task<HttpResponseMessage> 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);
}
}
}

35
framework/test/Volo.Abp.Mapperly.Tests/Mapperly/AbpAutoMapperExtensibleDtoExtensions_Tests.cs

@ -40,6 +40,25 @@ public class AbpAutoMapperExtensibleDtoExtensions_Tests : AbpIntegratedTest<Mapp
personDto.HasProperty("Sex").ShouldBeFalse(); //Not defined in both classes personDto.HasProperty("Sex").ShouldBeFalse(); //Not defined in both classes
} }
[Fact]
public void MapExtraPropertiesTo_Should_Only_Map_Defined_Properties_By_Default_With_Single_Parameter_Map()
{
var person = new ExtensibleTestPerson()
.SetProperty("Name", "John")
.SetProperty("Age", 42)
.SetProperty("ChildCount", 2)
.SetProperty("Sex", "male")
.SetProperty("CityName", "Adana");
var personDto = _objectMapper.Map<ExtensibleTestPerson, ExtensibleTestPersonDto>(person);
personDto.GetProperty<string>("Name").ShouldBe("John"); //Defined in both classes
personDto.GetProperty<int>("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] [Fact]
public void MapExtraProperties_Also_Should_Map_To_RegularProperties() public void MapExtraProperties_Also_Should_Map_To_RegularProperties()
{ {
@ -65,6 +84,22 @@ public class AbpAutoMapperExtensibleDtoExtensions_Tests : AbpIntegratedTest<Mapp
personDto.IsActive.ShouldBe(true); personDto.IsActive.ShouldBe(true);
} }
[Fact]
public void MapExtraProperties_Also_Should_Map_To_RegularProperties_With_Single_Parameter_Map()
{
var person = new ExtensibleTestPerson()
.SetProperty("Name", "John")
.SetProperty("Age", 42);
var personDto = _objectMapper.Map<ExtensibleTestPerson, ExtensibleTestPersonWithRegularPropertiesDto>(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")] [Fact(Skip = "Mapperly requires IHasExtraProperties.ExtraPropertyDictionary to be marked as nullable")]
public void MapExtraPropertiesTo_Should_Ignored_If_ExtraProperties_Is_Null() public void MapExtraPropertiesTo_Should_Ignored_If_ExtraProperties_Is_Null()
{ {

16
framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/AbpReverseMapperly_Tests.cs

@ -1,6 +1,9 @@
using System;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Riok.Mapperly.Abstractions; using Riok.Mapperly.Abstractions;
using Shouldly; using Shouldly;
using Volo.Abp.Data;
using Volo.Abp.Mapperly.SampleClasses;
using Volo.Abp.ObjectMapping; using Volo.Abp.ObjectMapping;
using Volo.Abp.Testing; using Volo.Abp.Testing;
using Xunit; using Xunit;
@ -83,4 +86,17 @@ public class AbpReverseMapperly_Tests : AbpIntegratedTest<MapperlyTestModule>
myClass.Id.ShouldBe("2"); myClass.Id.ShouldBe("2");
myClass.Name.ShouldBe("BeforeReverseMap Test2 AfterReverseMap"); 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<ExtensibleReverseDto, ExtensibleReverseEntity>(dto);
entity.GetProperty<string>("Tag").ShouldBe("ok");
entity.HasProperty("Secret").ShouldBeFalse();
}
} }

22
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<Mapp
destination.ExtraProperties["DestinationProperty"].ShouldBe("DestinationValue"); destination.ExtraProperties["DestinationProperty"].ShouldBe("DestinationValue");
} }
[Fact]
public void Should_Not_Share_ExtraProperties_Reference_With_Source_When_Using_Single_Parameter_Map()
{
var source = new TestEntityWithExtraProperties
{
Id = Guid.NewGuid(),
Name = "Source Entity"
};
source.SetProperty("TestProperty", "TestValue");
source.SetProperty("NumberProperty", 42);
var originalSourceReference = source.ExtraProperties;
var destination = _objectMapper.Map<TestEntityWithExtraProperties, TestEntityDtoWithExtraProperties>(source);
ReferenceEquals(source.ExtraProperties, originalSourceReference).ShouldBeTrue();
ReferenceEquals(source.ExtraProperties, destination.ExtraProperties).ShouldBeFalse();
destination.ExtraProperties["TestProperty"].ShouldBe("TestValue");
destination.ExtraProperties["NumberProperty"].ShouldBe(42);
}
[Fact] [Fact]
public void Should_Handle_Readonly_ExtraProperties_Gracefully() public void Should_Handle_Readonly_ExtraProperties_Gracefully()
{ {

16
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.ObjectExtending;
using Volo.Abp.Threading;
namespace Volo.Abp.Mapperly; namespace Volo.Abp.Mapperly;
@ -9,5 +11,17 @@ namespace Volo.Abp.Mapperly;
)] )]
public class MapperlyTestModule : AbpModule public class MapperlyTestModule : AbpModule
{ {
private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner();
public override void PreConfigureServices(ServiceConfigurationContext context)
{
OneTimeRunner.Run(() =>
{
ObjectExtensionManager.Instance
.AddOrUpdateProperty<ExtensibleReverseEntity, string>("Tag")
.AddOrUpdateProperty<ExtensibleReverseEntity, string>("Secret")
.AddOrUpdateProperty<ExtensibleReverseDto, string>("Tag")
.AddOrUpdateProperty<ExtensibleReverseDto, string>("Secret");
});
}
} }

23
framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/SampleClasses/MapperlyMappers.cs

@ -82,4 +82,27 @@ public partial class TestEntityWithReadonlyExtraPropertiesMapper : MapperBase<Te
public override partial TestEntityWithReadonlyExtraProperties Map(TestEntityWithReadonlyExtraProperties source); public override partial TestEntityWithReadonlyExtraProperties Map(TestEntityWithReadonlyExtraProperties source);
public override partial void Map(TestEntityWithReadonlyExtraProperties source, TestEntityWithReadonlyExtraProperties destination); public override partial void Map(TestEntityWithReadonlyExtraProperties source, TestEntityWithReadonlyExtraProperties destination);
}
public class ExtensibleReverseEntity : ExtensibleObject
{
public Guid Id { get; set; }
}
public class ExtensibleReverseDto : ExtensibleObject
{
public Guid Id { get; set; }
}
[Mapper]
[MapExtraProperties(IgnoredProperties = ["Secret"])]
public partial class ExtensibleReverseMapper : TwoWayMapperBase<ExtensibleReverseEntity, ExtensibleReverseDto>
{
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);
} }

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

@ -159,6 +159,23 @@ public class IdentityServerSupportedLoginModel : LoginModel
if (result.IsNotAllowed) 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"]); Alerts.Warning(L["LoginIsNotAllowed"]);
return Page(); return Page();
} }

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

@ -130,6 +130,23 @@ public class LoginModel : AccountPageModel
if (result.IsNotAllowed) 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"]); Alerts.Warning(L["LoginIsNotAllowed"]);
return Page(); return Page();
} }

6
modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json

@ -3,8 +3,8 @@
"name": "asp.net", "name": "asp.net",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@abp/aspnetcore.mvc.ui.theme.shared": "~10.4.0", "@abp/aspnetcore.mvc.ui.theme.shared": "~10.4.1",
"@abp/prismjs": "~10.4.0", "@abp/prismjs": "~10.4.1",
"@abp/highlight.js": "~10.4.0" "@abp/highlight.js": "~10.4.1"
} }
} }

266
modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock

@ -2,204 +2,204 @@
# yarn lockfile v1 # yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0": "@abp/aspnetcore.mvc.ui.theme.shared@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0.tgz#49002e55db00c98931d27357f7ea40eeab09e2e8" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.1.tgz#b12adabcb73a99d4597509ca2b0ff0475c81218e"
integrity sha512-bNQ+WOnsfQhb98Z9YO0zZsW2K8ZEgOQ+7/86QaqoYTf+ZFvLJsICmNuHryNkCGRM1XJf9EaDZ3qSOwoOGQwS9A== integrity sha512-tlb+b2OtPXzdRTMIPcoGuzH2glTAUSwJ+Pa3tDUZiwmnsZ1WTgwF54s4pwmQxSNHpFu1okdpeP1KHw0FEEFTzw==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0" "@abp/aspnetcore.mvc.ui" "~10.4.1"
"@abp/bootstrap" "~10.4.0" "@abp/bootstrap" "~10.4.1"
"@abp/bootstrap-datepicker" "~10.4.0" "@abp/bootstrap-datepicker" "~10.4.1"
"@abp/bootstrap-daterangepicker" "~10.4.0" "@abp/bootstrap-daterangepicker" "~10.4.1"
"@abp/datatables.net-bs5" "~10.4.0" "@abp/datatables.net-bs5" "~10.4.1"
"@abp/font-awesome" "~10.4.0" "@abp/font-awesome" "~10.4.1"
"@abp/jquery-validation-unobtrusive" "~10.4.0" "@abp/jquery-validation-unobtrusive" "~10.4.1"
"@abp/lodash" "~10.4.0" "@abp/lodash" "~10.4.1"
"@abp/luxon" "~10.4.0" "@abp/luxon" "~10.4.1"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0" "@abp/malihu-custom-scrollbar-plugin" "~10.4.1"
"@abp/moment" "~10.4.0" "@abp/moment" "~10.4.1"
"@abp/select2" "~10.4.0" "@abp/select2" "~10.4.1"
"@abp/sweetalert2" "~10.4.0" "@abp/sweetalert2" "~10.4.1"
"@abp/timeago" "~10.4.0" "@abp/timeago" "~10.4.1"
"@abp/aspnetcore.mvc.ui@~10.4.0": "@abp/aspnetcore.mvc.ui@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0.tgz#24e40fdc101c411f29a87adb77baa642299e979c" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.1.tgz#b39b2379da89fbadaec1279ba71f5e1a17cb3855"
integrity sha512-0qVFthS4f4fkCv//UY2GseO+NX+XYqlamZJJwOTmv1UXFW6LxAXxuEQqWYVfFKzwk2lbkXDUcgP8NhhQ9xp3Sw== integrity sha512-KhtMaMBGVqb+RyOyzS6ZpreGbiMZ1PU4tPJq9Eo80Cynki+E1ERoM/7aFQ30vvXchMXWHyCENAY34r47G81dOA==
dependencies: dependencies:
ansi-colors "^4.1.3" ansi-colors "^4.1.3"
"@abp/bootstrap-datepicker@~10.4.0": "@abp/bootstrap-datepicker@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0.tgz#a392fd5ce31c86e9fc07f7dedbd0c56a02af341e" resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.1.tgz#b7ad625795df22396bd1cd3c74d458efd3b7d8f0"
integrity sha512-kOpuCEO64zoJ7a9JASsCLFZIjEYgN0GG/oApS2L729pv6/oEhcupWpwrnvDUhsdGOezXwLIsgTzc6tiG3HxwGA== integrity sha512-X3h3/1OJnm9o8PRyotxEkC4SZeVDAJ7VfN23OFAffraqOWj99kfhbygX6CziAPqTTbu/gUxgow9oqw15M89F2w==
dependencies: dependencies:
bootstrap-datepicker "^1.10.1" bootstrap-datepicker "^1.10.1"
"@abp/bootstrap-daterangepicker@~10.4.0": "@abp/bootstrap-daterangepicker@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0.tgz#95f68d3f488a12ede3c12352637b48782eeb031a" resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.1.tgz#a70aba1b0a0189bc8332f982289776abe86695c3"
integrity sha512-HX4HutkbPDQWBJNPDozpT1Um9mHcfV+RL+ukwEy0N4e7nD8VJyqLT/a+/FzQN7iUkwV+aNR2v5c0W+dgyqTaEA== integrity sha512-5z+7UkdfBteedbOPgq/i9aSYY6DeFIg9L97/Ema5t626+NQonG1tA1YVnrUWMi+K1di1BHbx5FEIWcPEH7rFmg==
dependencies: dependencies:
"@abp/moment" "~10.4.0" "@abp/moment" "~10.4.1"
bootstrap-daterangepicker "^3.1.0" bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~10.4.0": "@abp/bootstrap@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0.tgz#64b22bbdbf6b5bda279b21a7bae0652290b1221f" resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.1.tgz#b44949abc6fa2d20b14044dd0010147caa5d9df9"
integrity sha512-WQzXi5h1mej9twrAB6kD4aJtTNfSxpnuo1pxIOu/8GKGWoDayVY2NMQl+MCVel6dST+6EUTmuDRxc2q9qHRxLg== integrity sha512-9NZlHg0Xj/p1ffoUOKcxcfb6YXCjEdxWkmlqXx3qWM7r3yS06G5yHbQrYClnY+9SQuP2+/FtwRZ87HfH7zVg9w==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@abp/popper.js" "~10.4.0" "@abp/popper.js" "~10.4.1"
bootstrap "^5.3.8" bootstrap "^5.3.8"
"@abp/clipboard@~10.4.0": "@abp/clipboard@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.0.tgz#bac5854af4f8bcaa987d39f234edd58b675a71c8" resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.1.tgz#eec933cef5a3d740e70e8736be6a68092dece645"
integrity sha512-KTTzCDEe+wjpGLdud8MHlwnPr/NdzFDmfHtENgESdIa5KilGOwy2wv24lQ5cyJOB4ftoJzkBaHinKJxg/KU0pw== integrity sha512-xvAuXcY099h3IlBYKhLG2mwfZnTRmcu5RqBp+PJz33uOMM4ZcdzxQ5lAD73ukYX32SuSE0EJaSw5SV2jqT3RGw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
clipboard "^2.0.11" clipboard "^2.0.11"
"@abp/core@~10.4.0": "@abp/core@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0.tgz#de0c09e26d1f20451da9430d939beebb5bb6e9dd" resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.1.tgz#1a286e98b6217ae65e58bca7f65b57b86d298ae1"
integrity sha512-3yKLFqUtFo5rgBPQxWkNPsdq1bE9VKwm02yB14lu913EIYhP//akizY4uSK08BozocJNveCASQbgd66z4x6v/Q== integrity sha512-pOtbCwq7Vi244Vql3CjZ5VY4SqEUuR4VSDeZ8ZvJnP/aQWaHb229z1iZMcjg/L+Mu0J3eHQso7rrP7n+4ww0Jw==
dependencies: dependencies:
"@abp/utils" "~10.4.0" "@abp/utils" "~10.4.1"
"@abp/datatables.net-bs5@~10.4.0": "@abp/datatables.net-bs5@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0.tgz#a24eef99399324e4b89a00a204d2c4c2de379da1" resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.1.tgz#0ee2cb1a2f22146fd3561eab6ed412ac4301b928"
integrity sha512-T4f7e6sR1qHcvygNUNfdPWsK61C3NQORV35Lzpl98eDwY8XLg2/RLAegpFI8GjESVy2+2PCKVqUoSYZtXaMFmw== integrity sha512-bXl2JUpa7/IGWq9IsBlp+OVRdeIiGaaXbyKONSdI1LGeY9L6W3cHF90E68c+DaCUlcTkRUgshWvEhxSRAEEDnQ==
dependencies: dependencies:
"@abp/datatables.net" "~10.4.0" "@abp/datatables.net" "~10.4.1"
datatables.net-bs5 "^2.3.4" datatables.net-bs5 "^2.3.4"
"@abp/datatables.net@~10.4.0": "@abp/datatables.net@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0.tgz#ab48f6e3ccae8d0644f0c01011ff98cc6ca16181" resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.1.tgz#62b2ca692ee7b59317ac46a80e46fc2f8df576ef"
integrity sha512-esIUozaSEa29G7bdWbEZr22fRChaTuGfNNB8rgBHmVKwgkbHSG7qUTgsfGhNz0T2vfDsK3X37n55xmSdE9RElg== integrity sha512-Lz0DUwlICTZiz0C7F2s32ddFOmlTQmEK+bUuigh7miir/lTb0GuoDIeDRQxFM7ucdsc3wo+ImbDwPvRI35XF4A==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
datatables.net "^2.3.4" datatables.net "^2.3.4"
"@abp/font-awesome@~10.4.0": "@abp/font-awesome@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0.tgz#327979191615fff571f0ea2e99d01bbcca5378ce" resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.1.tgz#936674af94d418eb4ebf5b42fbf8694e78139172"
integrity sha512-RBzDSi/hrjhLKc7h6Kf9CQqC+LCGvS7h8HrRVaIzWCZSeqTfIMFpixjCUrNgkqWI0bU4NDUKXZ4XCOv4nPVlBg== integrity sha512-FEY5XWyjLFbcydJyguim/nd6T0CS4K3xKg0wdciUEz4Nb8dAvi4mUeMcQNrD5qEtuhOA1OuGKbiG5TtTN2X/bg==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@fortawesome/fontawesome-free" "^7.0.1" "@fortawesome/fontawesome-free" "^7.0.1"
"@abp/highlight.js@~10.4.0": "@abp/highlight.js@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-10.4.0.tgz#b1b53329743f3eeb203ec35ebcf9c6e79c9fbe93" resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-10.4.1.tgz#9e956ae62c9640253db321aa7eaa31f99220fa41"
integrity sha512-L0mL/AErFsYdJbCLUu22lm/fn+Eelc0H57OQrUAzVy+22XXALiFtyq/cci3sjOcxfpf2CW/v+z0JKCouuJd7Ag== integrity sha512-AU//tBPE7jsONdZHXAS6eFsiqRCRT4p0MeasHqVfFbdZztzlGbnHr4En++9b6Jpqf0WHQts0sBr06wakmI/oVQ==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@highlightjs/cdn-assets" "~11.11.1" "@highlightjs/cdn-assets" "~11.11.1"
"@abp/jquery-validation-unobtrusive@~10.4.0": "@abp/jquery-validation-unobtrusive@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0.tgz#e0114347344931667f48e0f2de5ea4bd6f9d2a88" resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.1.tgz#b0ea174c262659215b69c6a92612b219273a091a"
integrity sha512-AJncXVB+eTSizq0fTAwLii9a0GeYFPiY+gw+Ki5pak8Pp9LQivphsW32TqQmPC3qZVuYtd4myUUraWuOTT1Adg== integrity sha512-HGb+yM26BWk1ne4iUAD2HqMbOk75xNYIA+V1ny469eh1JdWBzlI+gJOQCiFbwdxnEWDJ2QsWiN2DmLY/0SGmqQ==
dependencies: dependencies:
"@abp/jquery-validation" "~10.4.0" "@abp/jquery-validation" "~10.4.1"
jquery-validation-unobtrusive "^4.0.0" jquery-validation-unobtrusive "^4.0.0"
"@abp/jquery-validation@~10.4.0": "@abp/jquery-validation@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0.tgz#bd1ef0217c2500363f25223dd7316ba919a505b5" resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.1.tgz#21970617ca9286328b85b64501f00e444bd0ec0d"
integrity sha512-W9QiGnOpaq6uDDwBy4UEqWrP1p2UegHQShW5Cev9vr6g7Lk97UsS1Agh9lnjbvMzFSAiLl3M9gHmyMD4aU3NPA== integrity sha512-mRZdEMssYwCjZOLQEFcXQbM//jrTMCMp6P5E1acQBaRZfaTPg/mNCHmdgd9vTRRgXfaAhQhkpYSkwv3GzAXbgA==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
jquery-validation "^1.21.0" jquery-validation "^1.21.0"
"@abp/jquery@~10.4.0": "@abp/jquery@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0.tgz#7ed3f1808682717ccfa7c6ac6e8db8a8b648b1e1" resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.1.tgz#9828be045b0ae767cc6d7c2a0b4affe2aea19bf7"
integrity sha512-kjFoVIhqlaIHlEs917sIeP1sHmLWXMn+DVKaCkVQUXC2KVq+yvQRC8AZiFQVxOwLvzd9dFFpGwGZgpWkDfvhvg== integrity sha512-m9Pg0kV3oCDh0fzcseKF4InM83Ryvrhf5iXioBklshqGAXodKgnk5YIwfsSjTIcj9wMuWdpznuxC5bMo+PP7ig==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
jquery "~3.7.1" jquery "~3.7.1"
"@abp/lodash@~10.4.0": "@abp/lodash@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0.tgz#b6fc25b6e2fd74420ca16a5a13cb8fcd39b89efd" resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.1.tgz#f3d5532aef9772ccb38a6c7875a6b8b29db3ddc8"
integrity sha512-RuiIGAqJtSBS+4VAk4cg7Zsfj07B3xkiewCaK5j0xUcyjsCJKL1UdXe2zVNL3oE5bXTNMU7yNQWJS4knv2mfwA== integrity sha512-GcUNsy9rs2HET8v86PwCCwi9R0XOt5nklBjGhDyER+fzGSHHLFKX87WWjPulwBtxFCfEHMaYvCDAnkGO15tFwA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
lodash "^4.18.1" lodash "^4.18.1"
"@abp/luxon@~10.4.0": "@abp/luxon@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0.tgz#731d20877ec679fa518b7199128676631d030a90" resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.1.tgz#d279101a35f02e061eb08b0ac20285c17208ffc7"
integrity sha512-/hF+FBugJMkp/H9WNZxlsOy3Rl4DTeR2hqmRPI0sPcdFOixCziYrwzyHg/2Kx8cI/zHa6GRRt1B4Jz4yjQTvdw== integrity sha512-Tr8hhMzWPoiQlSHBvhxxy0viu8dw2y8JikvyDc2sQusm258vlHi4NMH3FAY7JsyeiZFH6fwlRTJjkEAsdRLlCQ==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
luxon "^3.7.2" luxon "^3.7.2"
"@abp/malihu-custom-scrollbar-plugin@~10.4.0": "@abp/malihu-custom-scrollbar-plugin@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0.tgz#e1c207d9c66cce64fcb4fe13c091c4b86b00b6d7" resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.1.tgz#fee2f4ffe0b6a56ec1afddc51217bd569be9163c"
integrity sha512-LC+imsGQganhKWybvQytATjQMXfQwfCfi6RRWREP+pejKPuHpqHzPd+AjKwZpx500K2/ZTwT62FKJ1uDiJXSKA== integrity sha512-iCvuDqoRtM0HtWToyzbox14kE9Y9E3DFRbE+sISB6vCOL+3gW+xEHmmOMzESWQ3DX+p/q8xidQMxCZsyo2l0IA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
malihu-custom-scrollbar-plugin "^3.1.5" malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~10.4.0": "@abp/moment@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0.tgz#6737898b90b579ce5e0d683657757725a4def09d" resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.1.tgz#43e8e4ebc6a4da3877b0333d463362df46e57f83"
integrity sha512-WUtzjD6+1JGpgS6Yv2Qo/h4jM77LkkasPrywsetmtj/6zyVQWrkk7tKHTCjhAJtdinctcROwIIcwLsELi0nDHg== integrity sha512-RNx+5gXkI902rWlFbMSHEYd+FAoiXKxfKrmj1hWiK4GSwhY+vike3oAcdGjcpkFyAG1o+5MkL5p9951eHtn1RA==
dependencies: dependencies:
moment "^2.30.1" moment "^2.30.1"
"@abp/popper.js@~10.4.0": "@abp/popper.js@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0.tgz#9d8d09c4e18020b6a75ba30daf6786606f555e84" resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.1.tgz#616691ccdd8632e84bf9419e59db841ef2ea610c"
integrity sha512-KR5wGZ/MfR1rOPcmFr5ekraYhOSRul9gqempir69hlqrFKUFqt46F9/wLWyaJ7vlsMU6o4gBo6/jE5tICIpzNw== integrity sha512-74kOjXTb4FRbg5t4dTsZ11io9iuEG38IjPyYue/1yIXVbc2hruIhcJC9V3HFZLirQv1s1rkRqmnf38kVjUiKHA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@popperjs/core" "^2.11.8" "@popperjs/core" "^2.11.8"
"@abp/prismjs@~10.4.0": "@abp/prismjs@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.0.tgz#0061d71d18252bc1e66e763aab6d81a7b4fe51b7" resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.1.tgz#cb1144481ba34b1150ba2587ed3940d217d16abd"
integrity sha512-kjV11XNt2uP01zlhrrScr4WA27lgZ03Cz3svA7/HHnfhFy76MHYo+Dyn7sS4Gp3UobMcf1QWHl4KQNCUnYNTOQ== integrity sha512-kC9VnxwTLLToiRXP6vHQD0nBoHQvQKHNssTHM4OsNjazToAVgqfHJyEqGsJwb1uulwR05vMspST2MbMFS8fx7g==
dependencies: dependencies:
"@abp/clipboard" "~10.4.0" "@abp/clipboard" "~10.4.1"
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
prismjs "^1.30.0" prismjs "^1.30.0"
"@abp/select2@~10.4.0": "@abp/select2@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0.tgz#e744988abf81e2194a5850acc4ac1333e9578df8" resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.1.tgz#8729f7648073ecedc93915d3c618d10c3c557cbb"
integrity sha512-tyAdGzX32joI5vw+MUJGR0iToWCGZrbQg/zKeoCib80Zx5cn+e6GXj6wZyPbsJgVm0jZ7zBweWt3x8HzW9N8Ww== integrity sha512-BtjhMMYKcHl1ZN04L+iWhQWzzqKGbpHi8tMe6o75ZunIpVtIFlIPUpzVUI0AaH6t2sIhlrYFEoxvGxA31lcIXw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
select2 "^4.0.13" select2 "^4.0.13"
"@abp/sweetalert2@~10.4.0": "@abp/sweetalert2@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0.tgz#65cb26c8c7c9c02158c9a487969eef033fe04a73" resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.1.tgz#68b4abe96c71b05d956c362edc19ccce8b9bbe42"
integrity sha512-kyVMlfnI6MZojJlaRstdHj/CL3olOn4BszjQ155UQaDsGHUu0THmbhpfi4P0q3TCLLzcLM4pkuY3wJHPNl3ZOw== integrity sha512-6Ce7uR49sqJBkqRfR56cn6jI898+xXHbWgJV+VHN+Dm6w6WX5MbEiOnjF3VLwaq0pwI3FeoCALZAAgra6t9vVw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
sweetalert2 "^11.23.0" sweetalert2 "^11.23.0"
"@abp/timeago@~10.4.0": "@abp/timeago@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0.tgz#100fc0598e3a605346397f8a395bb96dc70f429d" resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.1.tgz#a01c3840eb3c1e67b5c9fdd0ead020acb01d6676"
integrity sha512-G0ppO7Evai3DdhSg4ozxQpvIke0t3vyg63pNdfOtAPngmuam7WBM1WemBi4u29M84WcSfmk4KuAubXO0aCJgDg== integrity sha512-sh1afPeBSsL1RNBhWRn4FOD1ZgRE8HQc0zOhCAl6Kb7WXWcDuP8RPKbGLolnpNHgXfz12lhE6TsbsNFAaCGYjg==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
timeago "^1.6.7" timeago "^1.6.7"
"@abp/utils@~10.4.0": "@abp/utils@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0.tgz#75175f798e58643c0dec1e85a502186c811e9226" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.1.tgz#b5c7b57e3c2ef8f87c0c5780995d82a7baf2ee9d"
integrity sha512-BPc7KGDcbdFZ4GonAt3SOi/gYhG+iXI76TMlAzSKMBRhBU0vxFS8I/pb7U5zX0Gjh5M+aT0l2vA3l+POCHPBfw== integrity sha512-kPp7PsaMni81vQK3J1F4j3Eem4dBlZuqIYR6QWbO+udgS5CzYGJagdw+HsOGer6YzJHhcGFfe0LcxS1z/VsFDQ==
dependencies: dependencies:
just-compare "^2.3.0" just-compare "^2.3.0"

4
modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json

@ -3,8 +3,8 @@
"name": "asp.net", "name": "asp.net",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0", "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.1",
"@abp/prismjs": "~10.4.0" "@abp/prismjs": "~10.4.1"
}, },
"devDependencies": {} "devDependencies": {}
} }

270
modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock

@ -2,203 +2,203 @@
# yarn lockfile v1 # yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0": "@abp/aspnetcore.mvc.ui.theme.basic@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0.tgz#c0414583f1c1fca14b0133818a63434b4fbf7df0" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.1.tgz#6691f4a120cef77ec0ba341efc45fa828cebc98a"
integrity sha512-sOg3URmFRO/18D734B56jdFuC4LflGXXpw4w1Rdd77BJxugynxcmwNOQbLYFvMfqj0eKqDOH3E4yEcmS2IT1BQ== integrity sha512-nMLbBHFUk4eAmu5kj72k9Hf9FFXlt3QWQoW3CxXEEvdynTwjSEwHMvp8zgLalyelxvKuO4tKKoYVn3fU0zUBKA==
dependencies: 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": "@abp/aspnetcore.mvc.ui.theme.shared@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0.tgz#49002e55db00c98931d27357f7ea40eeab09e2e8" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.1.tgz#b12adabcb73a99d4597509ca2b0ff0475c81218e"
integrity sha512-bNQ+WOnsfQhb98Z9YO0zZsW2K8ZEgOQ+7/86QaqoYTf+ZFvLJsICmNuHryNkCGRM1XJf9EaDZ3qSOwoOGQwS9A== integrity sha512-tlb+b2OtPXzdRTMIPcoGuzH2glTAUSwJ+Pa3tDUZiwmnsZ1WTgwF54s4pwmQxSNHpFu1okdpeP1KHw0FEEFTzw==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0" "@abp/aspnetcore.mvc.ui" "~10.4.1"
"@abp/bootstrap" "~10.4.0" "@abp/bootstrap" "~10.4.1"
"@abp/bootstrap-datepicker" "~10.4.0" "@abp/bootstrap-datepicker" "~10.4.1"
"@abp/bootstrap-daterangepicker" "~10.4.0" "@abp/bootstrap-daterangepicker" "~10.4.1"
"@abp/datatables.net-bs5" "~10.4.0" "@abp/datatables.net-bs5" "~10.4.1"
"@abp/font-awesome" "~10.4.0" "@abp/font-awesome" "~10.4.1"
"@abp/jquery-validation-unobtrusive" "~10.4.0" "@abp/jquery-validation-unobtrusive" "~10.4.1"
"@abp/lodash" "~10.4.0" "@abp/lodash" "~10.4.1"
"@abp/luxon" "~10.4.0" "@abp/luxon" "~10.4.1"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0" "@abp/malihu-custom-scrollbar-plugin" "~10.4.1"
"@abp/moment" "~10.4.0" "@abp/moment" "~10.4.1"
"@abp/select2" "~10.4.0" "@abp/select2" "~10.4.1"
"@abp/sweetalert2" "~10.4.0" "@abp/sweetalert2" "~10.4.1"
"@abp/timeago" "~10.4.0" "@abp/timeago" "~10.4.1"
"@abp/aspnetcore.mvc.ui@~10.4.0": "@abp/aspnetcore.mvc.ui@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0.tgz#24e40fdc101c411f29a87adb77baa642299e979c" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.1.tgz#b39b2379da89fbadaec1279ba71f5e1a17cb3855"
integrity sha512-0qVFthS4f4fkCv//UY2GseO+NX+XYqlamZJJwOTmv1UXFW6LxAXxuEQqWYVfFKzwk2lbkXDUcgP8NhhQ9xp3Sw== integrity sha512-KhtMaMBGVqb+RyOyzS6ZpreGbiMZ1PU4tPJq9Eo80Cynki+E1ERoM/7aFQ30vvXchMXWHyCENAY34r47G81dOA==
dependencies: dependencies:
ansi-colors "^4.1.3" ansi-colors "^4.1.3"
"@abp/bootstrap-datepicker@~10.4.0": "@abp/bootstrap-datepicker@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0.tgz#a392fd5ce31c86e9fc07f7dedbd0c56a02af341e" resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.1.tgz#b7ad625795df22396bd1cd3c74d458efd3b7d8f0"
integrity sha512-kOpuCEO64zoJ7a9JASsCLFZIjEYgN0GG/oApS2L729pv6/oEhcupWpwrnvDUhsdGOezXwLIsgTzc6tiG3HxwGA== integrity sha512-X3h3/1OJnm9o8PRyotxEkC4SZeVDAJ7VfN23OFAffraqOWj99kfhbygX6CziAPqTTbu/gUxgow9oqw15M89F2w==
dependencies: dependencies:
bootstrap-datepicker "^1.10.1" bootstrap-datepicker "^1.10.1"
"@abp/bootstrap-daterangepicker@~10.4.0": "@abp/bootstrap-daterangepicker@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0.tgz#95f68d3f488a12ede3c12352637b48782eeb031a" resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.1.tgz#a70aba1b0a0189bc8332f982289776abe86695c3"
integrity sha512-HX4HutkbPDQWBJNPDozpT1Um9mHcfV+RL+ukwEy0N4e7nD8VJyqLT/a+/FzQN7iUkwV+aNR2v5c0W+dgyqTaEA== integrity sha512-5z+7UkdfBteedbOPgq/i9aSYY6DeFIg9L97/Ema5t626+NQonG1tA1YVnrUWMi+K1di1BHbx5FEIWcPEH7rFmg==
dependencies: dependencies:
"@abp/moment" "~10.4.0" "@abp/moment" "~10.4.1"
bootstrap-daterangepicker "^3.1.0" bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~10.4.0": "@abp/bootstrap@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0.tgz#64b22bbdbf6b5bda279b21a7bae0652290b1221f" resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.1.tgz#b44949abc6fa2d20b14044dd0010147caa5d9df9"
integrity sha512-WQzXi5h1mej9twrAB6kD4aJtTNfSxpnuo1pxIOu/8GKGWoDayVY2NMQl+MCVel6dST+6EUTmuDRxc2q9qHRxLg== integrity sha512-9NZlHg0Xj/p1ffoUOKcxcfb6YXCjEdxWkmlqXx3qWM7r3yS06G5yHbQrYClnY+9SQuP2+/FtwRZ87HfH7zVg9w==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@abp/popper.js" "~10.4.0" "@abp/popper.js" "~10.4.1"
bootstrap "^5.3.8" bootstrap "^5.3.8"
"@abp/clipboard@~10.4.0": "@abp/clipboard@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.0.tgz#bac5854af4f8bcaa987d39f234edd58b675a71c8" resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.1.tgz#eec933cef5a3d740e70e8736be6a68092dece645"
integrity sha512-KTTzCDEe+wjpGLdud8MHlwnPr/NdzFDmfHtENgESdIa5KilGOwy2wv24lQ5cyJOB4ftoJzkBaHinKJxg/KU0pw== integrity sha512-xvAuXcY099h3IlBYKhLG2mwfZnTRmcu5RqBp+PJz33uOMM4ZcdzxQ5lAD73ukYX32SuSE0EJaSw5SV2jqT3RGw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
clipboard "^2.0.11" clipboard "^2.0.11"
"@abp/core@~10.4.0": "@abp/core@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0.tgz#de0c09e26d1f20451da9430d939beebb5bb6e9dd" resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.1.tgz#1a286e98b6217ae65e58bca7f65b57b86d298ae1"
integrity sha512-3yKLFqUtFo5rgBPQxWkNPsdq1bE9VKwm02yB14lu913EIYhP//akizY4uSK08BozocJNveCASQbgd66z4x6v/Q== integrity sha512-pOtbCwq7Vi244Vql3CjZ5VY4SqEUuR4VSDeZ8ZvJnP/aQWaHb229z1iZMcjg/L+Mu0J3eHQso7rrP7n+4ww0Jw==
dependencies: dependencies:
"@abp/utils" "~10.4.0" "@abp/utils" "~10.4.1"
"@abp/datatables.net-bs5@~10.4.0": "@abp/datatables.net-bs5@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0.tgz#a24eef99399324e4b89a00a204d2c4c2de379da1" resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.1.tgz#0ee2cb1a2f22146fd3561eab6ed412ac4301b928"
integrity sha512-T4f7e6sR1qHcvygNUNfdPWsK61C3NQORV35Lzpl98eDwY8XLg2/RLAegpFI8GjESVy2+2PCKVqUoSYZtXaMFmw== integrity sha512-bXl2JUpa7/IGWq9IsBlp+OVRdeIiGaaXbyKONSdI1LGeY9L6W3cHF90E68c+DaCUlcTkRUgshWvEhxSRAEEDnQ==
dependencies: dependencies:
"@abp/datatables.net" "~10.4.0" "@abp/datatables.net" "~10.4.1"
datatables.net-bs5 "^2.3.4" datatables.net-bs5 "^2.3.4"
"@abp/datatables.net@~10.4.0": "@abp/datatables.net@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0.tgz#ab48f6e3ccae8d0644f0c01011ff98cc6ca16181" resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.1.tgz#62b2ca692ee7b59317ac46a80e46fc2f8df576ef"
integrity sha512-esIUozaSEa29G7bdWbEZr22fRChaTuGfNNB8rgBHmVKwgkbHSG7qUTgsfGhNz0T2vfDsK3X37n55xmSdE9RElg== integrity sha512-Lz0DUwlICTZiz0C7F2s32ddFOmlTQmEK+bUuigh7miir/lTb0GuoDIeDRQxFM7ucdsc3wo+ImbDwPvRI35XF4A==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
datatables.net "^2.3.4" datatables.net "^2.3.4"
"@abp/font-awesome@~10.4.0": "@abp/font-awesome@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0.tgz#327979191615fff571f0ea2e99d01bbcca5378ce" resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.1.tgz#936674af94d418eb4ebf5b42fbf8694e78139172"
integrity sha512-RBzDSi/hrjhLKc7h6Kf9CQqC+LCGvS7h8HrRVaIzWCZSeqTfIMFpixjCUrNgkqWI0bU4NDUKXZ4XCOv4nPVlBg== integrity sha512-FEY5XWyjLFbcydJyguim/nd6T0CS4K3xKg0wdciUEz4Nb8dAvi4mUeMcQNrD5qEtuhOA1OuGKbiG5TtTN2X/bg==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@fortawesome/fontawesome-free" "^7.0.1" "@fortawesome/fontawesome-free" "^7.0.1"
"@abp/jquery-validation-unobtrusive@~10.4.0": "@abp/jquery-validation-unobtrusive@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0.tgz#e0114347344931667f48e0f2de5ea4bd6f9d2a88" resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.1.tgz#b0ea174c262659215b69c6a92612b219273a091a"
integrity sha512-AJncXVB+eTSizq0fTAwLii9a0GeYFPiY+gw+Ki5pak8Pp9LQivphsW32TqQmPC3qZVuYtd4myUUraWuOTT1Adg== integrity sha512-HGb+yM26BWk1ne4iUAD2HqMbOk75xNYIA+V1ny469eh1JdWBzlI+gJOQCiFbwdxnEWDJ2QsWiN2DmLY/0SGmqQ==
dependencies: dependencies:
"@abp/jquery-validation" "~10.4.0" "@abp/jquery-validation" "~10.4.1"
jquery-validation-unobtrusive "^4.0.0" jquery-validation-unobtrusive "^4.0.0"
"@abp/jquery-validation@~10.4.0": "@abp/jquery-validation@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0.tgz#bd1ef0217c2500363f25223dd7316ba919a505b5" resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.1.tgz#21970617ca9286328b85b64501f00e444bd0ec0d"
integrity sha512-W9QiGnOpaq6uDDwBy4UEqWrP1p2UegHQShW5Cev9vr6g7Lk97UsS1Agh9lnjbvMzFSAiLl3M9gHmyMD4aU3NPA== integrity sha512-mRZdEMssYwCjZOLQEFcXQbM//jrTMCMp6P5E1acQBaRZfaTPg/mNCHmdgd9vTRRgXfaAhQhkpYSkwv3GzAXbgA==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
jquery-validation "^1.21.0" jquery-validation "^1.21.0"
"@abp/jquery@~10.4.0": "@abp/jquery@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0.tgz#7ed3f1808682717ccfa7c6ac6e8db8a8b648b1e1" resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.1.tgz#9828be045b0ae767cc6d7c2a0b4affe2aea19bf7"
integrity sha512-kjFoVIhqlaIHlEs917sIeP1sHmLWXMn+DVKaCkVQUXC2KVq+yvQRC8AZiFQVxOwLvzd9dFFpGwGZgpWkDfvhvg== integrity sha512-m9Pg0kV3oCDh0fzcseKF4InM83Ryvrhf5iXioBklshqGAXodKgnk5YIwfsSjTIcj9wMuWdpznuxC5bMo+PP7ig==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
jquery "~3.7.1" jquery "~3.7.1"
"@abp/lodash@~10.4.0": "@abp/lodash@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0.tgz#b6fc25b6e2fd74420ca16a5a13cb8fcd39b89efd" resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.1.tgz#f3d5532aef9772ccb38a6c7875a6b8b29db3ddc8"
integrity sha512-RuiIGAqJtSBS+4VAk4cg7Zsfj07B3xkiewCaK5j0xUcyjsCJKL1UdXe2zVNL3oE5bXTNMU7yNQWJS4knv2mfwA== integrity sha512-GcUNsy9rs2HET8v86PwCCwi9R0XOt5nklBjGhDyER+fzGSHHLFKX87WWjPulwBtxFCfEHMaYvCDAnkGO15tFwA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
lodash "^4.18.1" lodash "^4.18.1"
"@abp/luxon@~10.4.0": "@abp/luxon@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0.tgz#731d20877ec679fa518b7199128676631d030a90" resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.1.tgz#d279101a35f02e061eb08b0ac20285c17208ffc7"
integrity sha512-/hF+FBugJMkp/H9WNZxlsOy3Rl4DTeR2hqmRPI0sPcdFOixCziYrwzyHg/2Kx8cI/zHa6GRRt1B4Jz4yjQTvdw== integrity sha512-Tr8hhMzWPoiQlSHBvhxxy0viu8dw2y8JikvyDc2sQusm258vlHi4NMH3FAY7JsyeiZFH6fwlRTJjkEAsdRLlCQ==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
luxon "^3.7.2" luxon "^3.7.2"
"@abp/malihu-custom-scrollbar-plugin@~10.4.0": "@abp/malihu-custom-scrollbar-plugin@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0.tgz#e1c207d9c66cce64fcb4fe13c091c4b86b00b6d7" resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.1.tgz#fee2f4ffe0b6a56ec1afddc51217bd569be9163c"
integrity sha512-LC+imsGQganhKWybvQytATjQMXfQwfCfi6RRWREP+pejKPuHpqHzPd+AjKwZpx500K2/ZTwT62FKJ1uDiJXSKA== integrity sha512-iCvuDqoRtM0HtWToyzbox14kE9Y9E3DFRbE+sISB6vCOL+3gW+xEHmmOMzESWQ3DX+p/q8xidQMxCZsyo2l0IA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
malihu-custom-scrollbar-plugin "^3.1.5" malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~10.4.0": "@abp/moment@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0.tgz#6737898b90b579ce5e0d683657757725a4def09d" resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.1.tgz#43e8e4ebc6a4da3877b0333d463362df46e57f83"
integrity sha512-WUtzjD6+1JGpgS6Yv2Qo/h4jM77LkkasPrywsetmtj/6zyVQWrkk7tKHTCjhAJtdinctcROwIIcwLsELi0nDHg== integrity sha512-RNx+5gXkI902rWlFbMSHEYd+FAoiXKxfKrmj1hWiK4GSwhY+vike3oAcdGjcpkFyAG1o+5MkL5p9951eHtn1RA==
dependencies: dependencies:
moment "^2.30.1" moment "^2.30.1"
"@abp/popper.js@~10.4.0": "@abp/popper.js@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0.tgz#9d8d09c4e18020b6a75ba30daf6786606f555e84" resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.1.tgz#616691ccdd8632e84bf9419e59db841ef2ea610c"
integrity sha512-KR5wGZ/MfR1rOPcmFr5ekraYhOSRul9gqempir69hlqrFKUFqt46F9/wLWyaJ7vlsMU6o4gBo6/jE5tICIpzNw== integrity sha512-74kOjXTb4FRbg5t4dTsZ11io9iuEG38IjPyYue/1yIXVbc2hruIhcJC9V3HFZLirQv1s1rkRqmnf38kVjUiKHA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@popperjs/core" "^2.11.8" "@popperjs/core" "^2.11.8"
"@abp/prismjs@~10.4.0": "@abp/prismjs@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.0.tgz#0061d71d18252bc1e66e763aab6d81a7b4fe51b7" resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.1.tgz#cb1144481ba34b1150ba2587ed3940d217d16abd"
integrity sha512-kjV11XNt2uP01zlhrrScr4WA27lgZ03Cz3svA7/HHnfhFy76MHYo+Dyn7sS4Gp3UobMcf1QWHl4KQNCUnYNTOQ== integrity sha512-kC9VnxwTLLToiRXP6vHQD0nBoHQvQKHNssTHM4OsNjazToAVgqfHJyEqGsJwb1uulwR05vMspST2MbMFS8fx7g==
dependencies: dependencies:
"@abp/clipboard" "~10.4.0" "@abp/clipboard" "~10.4.1"
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
prismjs "^1.30.0" prismjs "^1.30.0"
"@abp/select2@~10.4.0": "@abp/select2@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0.tgz#e744988abf81e2194a5850acc4ac1333e9578df8" resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.1.tgz#8729f7648073ecedc93915d3c618d10c3c557cbb"
integrity sha512-tyAdGzX32joI5vw+MUJGR0iToWCGZrbQg/zKeoCib80Zx5cn+e6GXj6wZyPbsJgVm0jZ7zBweWt3x8HzW9N8Ww== integrity sha512-BtjhMMYKcHl1ZN04L+iWhQWzzqKGbpHi8tMe6o75ZunIpVtIFlIPUpzVUI0AaH6t2sIhlrYFEoxvGxA31lcIXw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
select2 "^4.0.13" select2 "^4.0.13"
"@abp/sweetalert2@~10.4.0": "@abp/sweetalert2@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0.tgz#65cb26c8c7c9c02158c9a487969eef033fe04a73" resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.1.tgz#68b4abe96c71b05d956c362edc19ccce8b9bbe42"
integrity sha512-kyVMlfnI6MZojJlaRstdHj/CL3olOn4BszjQ155UQaDsGHUu0THmbhpfi4P0q3TCLLzcLM4pkuY3wJHPNl3ZOw== integrity sha512-6Ce7uR49sqJBkqRfR56cn6jI898+xXHbWgJV+VHN+Dm6w6WX5MbEiOnjF3VLwaq0pwI3FeoCALZAAgra6t9vVw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
sweetalert2 "^11.23.0" sweetalert2 "^11.23.0"
"@abp/timeago@~10.4.0": "@abp/timeago@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0.tgz#100fc0598e3a605346397f8a395bb96dc70f429d" resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.1.tgz#a01c3840eb3c1e67b5c9fdd0ead020acb01d6676"
integrity sha512-G0ppO7Evai3DdhSg4ozxQpvIke0t3vyg63pNdfOtAPngmuam7WBM1WemBi4u29M84WcSfmk4KuAubXO0aCJgDg== integrity sha512-sh1afPeBSsL1RNBhWRn4FOD1ZgRE8HQc0zOhCAl6Kb7WXWcDuP8RPKbGLolnpNHgXfz12lhE6TsbsNFAaCGYjg==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
timeago "^1.6.7" timeago "^1.6.7"
"@abp/utils@~10.4.0": "@abp/utils@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0.tgz#75175f798e58643c0dec1e85a502186c811e9226" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.1.tgz#b5c7b57e3c2ef8f87c0c5780995d82a7baf2ee9d"
integrity sha512-BPc7KGDcbdFZ4GonAt3SOi/gYhG+iXI76TMlAzSKMBRhBU0vxFS8I/pb7U5zX0Gjh5M+aT0l2vA3l+POCHPBfw== integrity sha512-kPp7PsaMni81vQK3J1F4j3Eem4dBlZuqIYR6QWbO+udgS5CzYGJagdw+HsOGer6YzJHhcGFfe0LcxS1z/VsFDQ==
dependencies: dependencies:
just-compare "^2.3.0" just-compare "^2.3.0"

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

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

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

@ -2,229 +2,229 @@
# yarn lockfile v1 # yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0": "@abp/aspnetcore.mvc.ui.theme.basic@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0.tgz#c0414583f1c1fca14b0133818a63434b4fbf7df0" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.1.tgz#6691f4a120cef77ec0ba341efc45fa828cebc98a"
integrity sha512-sOg3URmFRO/18D734B56jdFuC4LflGXXpw4w1Rdd77BJxugynxcmwNOQbLYFvMfqj0eKqDOH3E4yEcmS2IT1BQ== integrity sha512-nMLbBHFUk4eAmu5kj72k9Hf9FFXlt3QWQoW3CxXEEvdynTwjSEwHMvp8zgLalyelxvKuO4tKKoYVn3fU0zUBKA==
dependencies: 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": "@abp/aspnetcore.mvc.ui.theme.shared@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0.tgz#49002e55db00c98931d27357f7ea40eeab09e2e8" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.1.tgz#b12adabcb73a99d4597509ca2b0ff0475c81218e"
integrity sha512-bNQ+WOnsfQhb98Z9YO0zZsW2K8ZEgOQ+7/86QaqoYTf+ZFvLJsICmNuHryNkCGRM1XJf9EaDZ3qSOwoOGQwS9A== integrity sha512-tlb+b2OtPXzdRTMIPcoGuzH2glTAUSwJ+Pa3tDUZiwmnsZ1WTgwF54s4pwmQxSNHpFu1okdpeP1KHw0FEEFTzw==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0" "@abp/aspnetcore.mvc.ui" "~10.4.1"
"@abp/bootstrap" "~10.4.0" "@abp/bootstrap" "~10.4.1"
"@abp/bootstrap-datepicker" "~10.4.0" "@abp/bootstrap-datepicker" "~10.4.1"
"@abp/bootstrap-daterangepicker" "~10.4.0" "@abp/bootstrap-daterangepicker" "~10.4.1"
"@abp/datatables.net-bs5" "~10.4.0" "@abp/datatables.net-bs5" "~10.4.1"
"@abp/font-awesome" "~10.4.0" "@abp/font-awesome" "~10.4.1"
"@abp/jquery-validation-unobtrusive" "~10.4.0" "@abp/jquery-validation-unobtrusive" "~10.4.1"
"@abp/lodash" "~10.4.0" "@abp/lodash" "~10.4.1"
"@abp/luxon" "~10.4.0" "@abp/luxon" "~10.4.1"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0" "@abp/malihu-custom-scrollbar-plugin" "~10.4.1"
"@abp/moment" "~10.4.0" "@abp/moment" "~10.4.1"
"@abp/select2" "~10.4.0" "@abp/select2" "~10.4.1"
"@abp/sweetalert2" "~10.4.0" "@abp/sweetalert2" "~10.4.1"
"@abp/timeago" "~10.4.0" "@abp/timeago" "~10.4.1"
"@abp/aspnetcore.mvc.ui@~10.4.0": "@abp/aspnetcore.mvc.ui@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0.tgz#24e40fdc101c411f29a87adb77baa642299e979c" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.1.tgz#b39b2379da89fbadaec1279ba71f5e1a17cb3855"
integrity sha512-0qVFthS4f4fkCv//UY2GseO+NX+XYqlamZJJwOTmv1UXFW6LxAXxuEQqWYVfFKzwk2lbkXDUcgP8NhhQ9xp3Sw== integrity sha512-KhtMaMBGVqb+RyOyzS6ZpreGbiMZ1PU4tPJq9Eo80Cynki+E1ERoM/7aFQ30vvXchMXWHyCENAY34r47G81dOA==
dependencies: dependencies:
ansi-colors "^4.1.3" ansi-colors "^4.1.3"
"@abp/blogging@~10.4.0": "@abp/blogging@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-10.4.0.tgz#ae468b0cdfdd011fcb709b627dc9cb7a3076506b" resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-10.4.1.tgz#04a2409ac5fb52a7ebee66b1c1b6e9471076fd06"
integrity sha512-UHoEeo3lBTXA4TpkPkOSaNklsbB4MG6OC6oM2l9ApihMzJyKV3osczBr8COZ+awpRGCsEAjotOw8OMIVH4evcQ== integrity sha512-G6wwFKfDnxqlUMQVEROTOg6gqyP5epJxh0wWF2jzhxIiwsrzIWK8CQdNIJJt7+IF7aWJBtuo6gWkftuv1wpGhw==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0" "@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.1"
"@abp/owl.carousel" "~10.4.0" "@abp/owl.carousel" "~10.4.1"
"@abp/prismjs" "~10.4.0" "@abp/prismjs" "~10.4.1"
"@abp/tui-editor" "~10.4.0" "@abp/tui-editor" "~10.4.1"
"@abp/bootstrap-datepicker@~10.4.0": "@abp/bootstrap-datepicker@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0.tgz#a392fd5ce31c86e9fc07f7dedbd0c56a02af341e" resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.1.tgz#b7ad625795df22396bd1cd3c74d458efd3b7d8f0"
integrity sha512-kOpuCEO64zoJ7a9JASsCLFZIjEYgN0GG/oApS2L729pv6/oEhcupWpwrnvDUhsdGOezXwLIsgTzc6tiG3HxwGA== integrity sha512-X3h3/1OJnm9o8PRyotxEkC4SZeVDAJ7VfN23OFAffraqOWj99kfhbygX6CziAPqTTbu/gUxgow9oqw15M89F2w==
dependencies: dependencies:
bootstrap-datepicker "^1.10.1" bootstrap-datepicker "^1.10.1"
"@abp/bootstrap-daterangepicker@~10.4.0": "@abp/bootstrap-daterangepicker@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0.tgz#95f68d3f488a12ede3c12352637b48782eeb031a" resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.1.tgz#a70aba1b0a0189bc8332f982289776abe86695c3"
integrity sha512-HX4HutkbPDQWBJNPDozpT1Um9mHcfV+RL+ukwEy0N4e7nD8VJyqLT/a+/FzQN7iUkwV+aNR2v5c0W+dgyqTaEA== integrity sha512-5z+7UkdfBteedbOPgq/i9aSYY6DeFIg9L97/Ema5t626+NQonG1tA1YVnrUWMi+K1di1BHbx5FEIWcPEH7rFmg==
dependencies: dependencies:
"@abp/moment" "~10.4.0" "@abp/moment" "~10.4.1"
bootstrap-daterangepicker "^3.1.0" bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~10.4.0": "@abp/bootstrap@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0.tgz#64b22bbdbf6b5bda279b21a7bae0652290b1221f" resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.1.tgz#b44949abc6fa2d20b14044dd0010147caa5d9df9"
integrity sha512-WQzXi5h1mej9twrAB6kD4aJtTNfSxpnuo1pxIOu/8GKGWoDayVY2NMQl+MCVel6dST+6EUTmuDRxc2q9qHRxLg== integrity sha512-9NZlHg0Xj/p1ffoUOKcxcfb6YXCjEdxWkmlqXx3qWM7r3yS06G5yHbQrYClnY+9SQuP2+/FtwRZ87HfH7zVg9w==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@abp/popper.js" "~10.4.0" "@abp/popper.js" "~10.4.1"
bootstrap "^5.3.8" bootstrap "^5.3.8"
"@abp/clipboard@~10.4.0": "@abp/clipboard@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.0.tgz#bac5854af4f8bcaa987d39f234edd58b675a71c8" resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.1.tgz#eec933cef5a3d740e70e8736be6a68092dece645"
integrity sha512-KTTzCDEe+wjpGLdud8MHlwnPr/NdzFDmfHtENgESdIa5KilGOwy2wv24lQ5cyJOB4ftoJzkBaHinKJxg/KU0pw== integrity sha512-xvAuXcY099h3IlBYKhLG2mwfZnTRmcu5RqBp+PJz33uOMM4ZcdzxQ5lAD73ukYX32SuSE0EJaSw5SV2jqT3RGw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
clipboard "^2.0.11" clipboard "^2.0.11"
"@abp/core@~10.4.0": "@abp/core@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0.tgz#de0c09e26d1f20451da9430d939beebb5bb6e9dd" resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.1.tgz#1a286e98b6217ae65e58bca7f65b57b86d298ae1"
integrity sha512-3yKLFqUtFo5rgBPQxWkNPsdq1bE9VKwm02yB14lu913EIYhP//akizY4uSK08BozocJNveCASQbgd66z4x6v/Q== integrity sha512-pOtbCwq7Vi244Vql3CjZ5VY4SqEUuR4VSDeZ8ZvJnP/aQWaHb229z1iZMcjg/L+Mu0J3eHQso7rrP7n+4ww0Jw==
dependencies: dependencies:
"@abp/utils" "~10.4.0" "@abp/utils" "~10.4.1"
"@abp/datatables.net-bs5@~10.4.0": "@abp/datatables.net-bs5@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0.tgz#a24eef99399324e4b89a00a204d2c4c2de379da1" resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.1.tgz#0ee2cb1a2f22146fd3561eab6ed412ac4301b928"
integrity sha512-T4f7e6sR1qHcvygNUNfdPWsK61C3NQORV35Lzpl98eDwY8XLg2/RLAegpFI8GjESVy2+2PCKVqUoSYZtXaMFmw== integrity sha512-bXl2JUpa7/IGWq9IsBlp+OVRdeIiGaaXbyKONSdI1LGeY9L6W3cHF90E68c+DaCUlcTkRUgshWvEhxSRAEEDnQ==
dependencies: dependencies:
"@abp/datatables.net" "~10.4.0" "@abp/datatables.net" "~10.4.1"
datatables.net-bs5 "^2.3.4" datatables.net-bs5 "^2.3.4"
"@abp/datatables.net@~10.4.0": "@abp/datatables.net@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0.tgz#ab48f6e3ccae8d0644f0c01011ff98cc6ca16181" resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.1.tgz#62b2ca692ee7b59317ac46a80e46fc2f8df576ef"
integrity sha512-esIUozaSEa29G7bdWbEZr22fRChaTuGfNNB8rgBHmVKwgkbHSG7qUTgsfGhNz0T2vfDsK3X37n55xmSdE9RElg== integrity sha512-Lz0DUwlICTZiz0C7F2s32ddFOmlTQmEK+bUuigh7miir/lTb0GuoDIeDRQxFM7ucdsc3wo+ImbDwPvRI35XF4A==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
datatables.net "^2.3.4" datatables.net "^2.3.4"
"@abp/font-awesome@~10.4.0": "@abp/font-awesome@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0.tgz#327979191615fff571f0ea2e99d01bbcca5378ce" resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.1.tgz#936674af94d418eb4ebf5b42fbf8694e78139172"
integrity sha512-RBzDSi/hrjhLKc7h6Kf9CQqC+LCGvS7h8HrRVaIzWCZSeqTfIMFpixjCUrNgkqWI0bU4NDUKXZ4XCOv4nPVlBg== integrity sha512-FEY5XWyjLFbcydJyguim/nd6T0CS4K3xKg0wdciUEz4Nb8dAvi4mUeMcQNrD5qEtuhOA1OuGKbiG5TtTN2X/bg==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@fortawesome/fontawesome-free" "^7.0.1" "@fortawesome/fontawesome-free" "^7.0.1"
"@abp/jquery-validation-unobtrusive@~10.4.0": "@abp/jquery-validation-unobtrusive@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0.tgz#e0114347344931667f48e0f2de5ea4bd6f9d2a88" resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.1.tgz#b0ea174c262659215b69c6a92612b219273a091a"
integrity sha512-AJncXVB+eTSizq0fTAwLii9a0GeYFPiY+gw+Ki5pak8Pp9LQivphsW32TqQmPC3qZVuYtd4myUUraWuOTT1Adg== integrity sha512-HGb+yM26BWk1ne4iUAD2HqMbOk75xNYIA+V1ny469eh1JdWBzlI+gJOQCiFbwdxnEWDJ2QsWiN2DmLY/0SGmqQ==
dependencies: dependencies:
"@abp/jquery-validation" "~10.4.0" "@abp/jquery-validation" "~10.4.1"
jquery-validation-unobtrusive "^4.0.0" jquery-validation-unobtrusive "^4.0.0"
"@abp/jquery-validation@~10.4.0": "@abp/jquery-validation@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0.tgz#bd1ef0217c2500363f25223dd7316ba919a505b5" resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.1.tgz#21970617ca9286328b85b64501f00e444bd0ec0d"
integrity sha512-W9QiGnOpaq6uDDwBy4UEqWrP1p2UegHQShW5Cev9vr6g7Lk97UsS1Agh9lnjbvMzFSAiLl3M9gHmyMD4aU3NPA== integrity sha512-mRZdEMssYwCjZOLQEFcXQbM//jrTMCMp6P5E1acQBaRZfaTPg/mNCHmdgd9vTRRgXfaAhQhkpYSkwv3GzAXbgA==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
jquery-validation "^1.21.0" jquery-validation "^1.21.0"
"@abp/jquery@~10.4.0": "@abp/jquery@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0.tgz#7ed3f1808682717ccfa7c6ac6e8db8a8b648b1e1" resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.1.tgz#9828be045b0ae767cc6d7c2a0b4affe2aea19bf7"
integrity sha512-kjFoVIhqlaIHlEs917sIeP1sHmLWXMn+DVKaCkVQUXC2KVq+yvQRC8AZiFQVxOwLvzd9dFFpGwGZgpWkDfvhvg== integrity sha512-m9Pg0kV3oCDh0fzcseKF4InM83Ryvrhf5iXioBklshqGAXodKgnk5YIwfsSjTIcj9wMuWdpznuxC5bMo+PP7ig==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
jquery "~3.7.1" jquery "~3.7.1"
"@abp/lodash@~10.4.0": "@abp/lodash@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0.tgz#b6fc25b6e2fd74420ca16a5a13cb8fcd39b89efd" resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.1.tgz#f3d5532aef9772ccb38a6c7875a6b8b29db3ddc8"
integrity sha512-RuiIGAqJtSBS+4VAk4cg7Zsfj07B3xkiewCaK5j0xUcyjsCJKL1UdXe2zVNL3oE5bXTNMU7yNQWJS4knv2mfwA== integrity sha512-GcUNsy9rs2HET8v86PwCCwi9R0XOt5nklBjGhDyER+fzGSHHLFKX87WWjPulwBtxFCfEHMaYvCDAnkGO15tFwA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
lodash "^4.18.1" lodash "^4.18.1"
"@abp/luxon@~10.4.0": "@abp/luxon@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0.tgz#731d20877ec679fa518b7199128676631d030a90" resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.1.tgz#d279101a35f02e061eb08b0ac20285c17208ffc7"
integrity sha512-/hF+FBugJMkp/H9WNZxlsOy3Rl4DTeR2hqmRPI0sPcdFOixCziYrwzyHg/2Kx8cI/zHa6GRRt1B4Jz4yjQTvdw== integrity sha512-Tr8hhMzWPoiQlSHBvhxxy0viu8dw2y8JikvyDc2sQusm258vlHi4NMH3FAY7JsyeiZFH6fwlRTJjkEAsdRLlCQ==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
luxon "^3.7.2" luxon "^3.7.2"
"@abp/malihu-custom-scrollbar-plugin@~10.4.0": "@abp/malihu-custom-scrollbar-plugin@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0.tgz#e1c207d9c66cce64fcb4fe13c091c4b86b00b6d7" resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.1.tgz#fee2f4ffe0b6a56ec1afddc51217bd569be9163c"
integrity sha512-LC+imsGQganhKWybvQytATjQMXfQwfCfi6RRWREP+pejKPuHpqHzPd+AjKwZpx500K2/ZTwT62FKJ1uDiJXSKA== integrity sha512-iCvuDqoRtM0HtWToyzbox14kE9Y9E3DFRbE+sISB6vCOL+3gW+xEHmmOMzESWQ3DX+p/q8xidQMxCZsyo2l0IA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
malihu-custom-scrollbar-plugin "^3.1.5" malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~10.4.0": "@abp/moment@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0.tgz#6737898b90b579ce5e0d683657757725a4def09d" resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.1.tgz#43e8e4ebc6a4da3877b0333d463362df46e57f83"
integrity sha512-WUtzjD6+1JGpgS6Yv2Qo/h4jM77LkkasPrywsetmtj/6zyVQWrkk7tKHTCjhAJtdinctcROwIIcwLsELi0nDHg== integrity sha512-RNx+5gXkI902rWlFbMSHEYd+FAoiXKxfKrmj1hWiK4GSwhY+vike3oAcdGjcpkFyAG1o+5MkL5p9951eHtn1RA==
dependencies: dependencies:
moment "^2.30.1" moment "^2.30.1"
"@abp/owl.carousel@~10.4.0": "@abp/owl.carousel@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-10.4.0.tgz#03cb3abec37b9e61196982d20f8b48ca9ff9818a" resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-10.4.1.tgz#4f05616f56c37efa32c90a0ee92d528f12816e3b"
integrity sha512-wSMMMVJ5LRSmmV4jXekrWJdI7MQ+37LWKu83dQRD1Bwegy2USuB2efBcwVB/juI2iaxP9b0jTrKmxTlFPkNbCg== integrity sha512-FqyqIG6ezNe2aFs/Xg3UIlVER03mF+alP0jE/wMewQAzB9btbhcBC6icG0RRqs6z5PPt3I85j/EhyjMQQAQMeg==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
owl.carousel "^2.3.4" owl.carousel "^2.3.4"
"@abp/popper.js@~10.4.0": "@abp/popper.js@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0.tgz#9d8d09c4e18020b6a75ba30daf6786606f555e84" resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.1.tgz#616691ccdd8632e84bf9419e59db841ef2ea610c"
integrity sha512-KR5wGZ/MfR1rOPcmFr5ekraYhOSRul9gqempir69hlqrFKUFqt46F9/wLWyaJ7vlsMU6o4gBo6/jE5tICIpzNw== integrity sha512-74kOjXTb4FRbg5t4dTsZ11io9iuEG38IjPyYue/1yIXVbc2hruIhcJC9V3HFZLirQv1s1rkRqmnf38kVjUiKHA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@popperjs/core" "^2.11.8" "@popperjs/core" "^2.11.8"
"@abp/prismjs@~10.4.0": "@abp/prismjs@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.0.tgz#0061d71d18252bc1e66e763aab6d81a7b4fe51b7" resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.1.tgz#cb1144481ba34b1150ba2587ed3940d217d16abd"
integrity sha512-kjV11XNt2uP01zlhrrScr4WA27lgZ03Cz3svA7/HHnfhFy76MHYo+Dyn7sS4Gp3UobMcf1QWHl4KQNCUnYNTOQ== integrity sha512-kC9VnxwTLLToiRXP6vHQD0nBoHQvQKHNssTHM4OsNjazToAVgqfHJyEqGsJwb1uulwR05vMspST2MbMFS8fx7g==
dependencies: dependencies:
"@abp/clipboard" "~10.4.0" "@abp/clipboard" "~10.4.1"
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
prismjs "^1.30.0" prismjs "^1.30.0"
"@abp/select2@~10.4.0": "@abp/select2@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0.tgz#e744988abf81e2194a5850acc4ac1333e9578df8" resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.1.tgz#8729f7648073ecedc93915d3c618d10c3c557cbb"
integrity sha512-tyAdGzX32joI5vw+MUJGR0iToWCGZrbQg/zKeoCib80Zx5cn+e6GXj6wZyPbsJgVm0jZ7zBweWt3x8HzW9N8Ww== integrity sha512-BtjhMMYKcHl1ZN04L+iWhQWzzqKGbpHi8tMe6o75ZunIpVtIFlIPUpzVUI0AaH6t2sIhlrYFEoxvGxA31lcIXw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
select2 "^4.0.13" select2 "^4.0.13"
"@abp/sweetalert2@~10.4.0": "@abp/sweetalert2@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0.tgz#65cb26c8c7c9c02158c9a487969eef033fe04a73" resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.1.tgz#68b4abe96c71b05d956c362edc19ccce8b9bbe42"
integrity sha512-kyVMlfnI6MZojJlaRstdHj/CL3olOn4BszjQ155UQaDsGHUu0THmbhpfi4P0q3TCLLzcLM4pkuY3wJHPNl3ZOw== integrity sha512-6Ce7uR49sqJBkqRfR56cn6jI898+xXHbWgJV+VHN+Dm6w6WX5MbEiOnjF3VLwaq0pwI3FeoCALZAAgra6t9vVw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
sweetalert2 "^11.23.0" sweetalert2 "^11.23.0"
"@abp/timeago@~10.4.0": "@abp/timeago@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0.tgz#100fc0598e3a605346397f8a395bb96dc70f429d" resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.1.tgz#a01c3840eb3c1e67b5c9fdd0ead020acb01d6676"
integrity sha512-G0ppO7Evai3DdhSg4ozxQpvIke0t3vyg63pNdfOtAPngmuam7WBM1WemBi4u29M84WcSfmk4KuAubXO0aCJgDg== integrity sha512-sh1afPeBSsL1RNBhWRn4FOD1ZgRE8HQc0zOhCAl6Kb7WXWcDuP8RPKbGLolnpNHgXfz12lhE6TsbsNFAaCGYjg==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
timeago "^1.6.7" timeago "^1.6.7"
"@abp/tui-editor@~10.4.0": "@abp/tui-editor@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-10.4.0.tgz#8041b62eb464f4a8adddc043904e2bc8475d45e3" resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-10.4.1.tgz#e7012ed869a5de852f454e14fbe1342c55d1c07b"
integrity sha512-SbbAs3V94UaF6xaMIaRNpDE9KSvOU45XZl24jCWjCAwkyTkN0bHlpnqs0UuJUtCnnQAzj4C+AvVy5ykrDKGtIg== integrity sha512-lFcSkESJnAjIqiU12F19U8BYko/jLTXWN6s0uqvgQ14qhPPWMr13PidMjijj/x/m0wtFg2lHwbAFt3nl+6O+sA==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
"@abp/prismjs" "~10.4.0" "@abp/prismjs" "~10.4.1"
"@abp/utils@~10.4.0": "@abp/utils@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0.tgz#75175f798e58643c0dec1e85a502186c811e9226" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.1.tgz#b5c7b57e3c2ef8f87c0c5780995d82a7baf2ee9d"
integrity sha512-BPc7KGDcbdFZ4GonAt3SOi/gYhG+iXI76TMlAzSKMBRhBU0vxFS8I/pb7U5zX0Gjh5M+aT0l2vA3l+POCHPBfw== integrity sha512-kPp7PsaMni81vQK3J1F4j3Eem4dBlZuqIYR6QWbO+udgS5CzYGJagdw+HsOGer6YzJHhcGFfe0LcxS1z/VsFDQ==
dependencies: dependencies:
just-compare "^2.3.0" just-compare "^2.3.0"

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

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

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

@ -2,186 +2,186 @@
# yarn lockfile v1 # yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0": "@abp/aspnetcore.mvc.ui.theme.basic@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0.tgz#c0414583f1c1fca14b0133818a63434b4fbf7df0" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.1.tgz#6691f4a120cef77ec0ba341efc45fa828cebc98a"
integrity sha512-sOg3URmFRO/18D734B56jdFuC4LflGXXpw4w1Rdd77BJxugynxcmwNOQbLYFvMfqj0eKqDOH3E4yEcmS2IT1BQ== integrity sha512-nMLbBHFUk4eAmu5kj72k9Hf9FFXlt3QWQoW3CxXEEvdynTwjSEwHMvp8zgLalyelxvKuO4tKKoYVn3fU0zUBKA==
dependencies: 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": "@abp/aspnetcore.mvc.ui.theme.shared@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0.tgz#49002e55db00c98931d27357f7ea40eeab09e2e8" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.1.tgz#b12adabcb73a99d4597509ca2b0ff0475c81218e"
integrity sha512-bNQ+WOnsfQhb98Z9YO0zZsW2K8ZEgOQ+7/86QaqoYTf+ZFvLJsICmNuHryNkCGRM1XJf9EaDZ3qSOwoOGQwS9A== integrity sha512-tlb+b2OtPXzdRTMIPcoGuzH2glTAUSwJ+Pa3tDUZiwmnsZ1WTgwF54s4pwmQxSNHpFu1okdpeP1KHw0FEEFTzw==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0" "@abp/aspnetcore.mvc.ui" "~10.4.1"
"@abp/bootstrap" "~10.4.0" "@abp/bootstrap" "~10.4.1"
"@abp/bootstrap-datepicker" "~10.4.0" "@abp/bootstrap-datepicker" "~10.4.1"
"@abp/bootstrap-daterangepicker" "~10.4.0" "@abp/bootstrap-daterangepicker" "~10.4.1"
"@abp/datatables.net-bs5" "~10.4.0" "@abp/datatables.net-bs5" "~10.4.1"
"@abp/font-awesome" "~10.4.0" "@abp/font-awesome" "~10.4.1"
"@abp/jquery-validation-unobtrusive" "~10.4.0" "@abp/jquery-validation-unobtrusive" "~10.4.1"
"@abp/lodash" "~10.4.0" "@abp/lodash" "~10.4.1"
"@abp/luxon" "~10.4.0" "@abp/luxon" "~10.4.1"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0" "@abp/malihu-custom-scrollbar-plugin" "~10.4.1"
"@abp/moment" "~10.4.0" "@abp/moment" "~10.4.1"
"@abp/select2" "~10.4.0" "@abp/select2" "~10.4.1"
"@abp/sweetalert2" "~10.4.0" "@abp/sweetalert2" "~10.4.1"
"@abp/timeago" "~10.4.0" "@abp/timeago" "~10.4.1"
"@abp/aspnetcore.mvc.ui@~10.4.0": "@abp/aspnetcore.mvc.ui@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0.tgz#24e40fdc101c411f29a87adb77baa642299e979c" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.1.tgz#b39b2379da89fbadaec1279ba71f5e1a17cb3855"
integrity sha512-0qVFthS4f4fkCv//UY2GseO+NX+XYqlamZJJwOTmv1UXFW6LxAXxuEQqWYVfFKzwk2lbkXDUcgP8NhhQ9xp3Sw== integrity sha512-KhtMaMBGVqb+RyOyzS6ZpreGbiMZ1PU4tPJq9Eo80Cynki+E1ERoM/7aFQ30vvXchMXWHyCENAY34r47G81dOA==
dependencies: dependencies:
ansi-colors "^4.1.3" ansi-colors "^4.1.3"
"@abp/bootstrap-datepicker@~10.4.0": "@abp/bootstrap-datepicker@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0.tgz#a392fd5ce31c86e9fc07f7dedbd0c56a02af341e" resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.1.tgz#b7ad625795df22396bd1cd3c74d458efd3b7d8f0"
integrity sha512-kOpuCEO64zoJ7a9JASsCLFZIjEYgN0GG/oApS2L729pv6/oEhcupWpwrnvDUhsdGOezXwLIsgTzc6tiG3HxwGA== integrity sha512-X3h3/1OJnm9o8PRyotxEkC4SZeVDAJ7VfN23OFAffraqOWj99kfhbygX6CziAPqTTbu/gUxgow9oqw15M89F2w==
dependencies: dependencies:
bootstrap-datepicker "^1.10.1" bootstrap-datepicker "^1.10.1"
"@abp/bootstrap-daterangepicker@~10.4.0": "@abp/bootstrap-daterangepicker@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0.tgz#95f68d3f488a12ede3c12352637b48782eeb031a" resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.1.tgz#a70aba1b0a0189bc8332f982289776abe86695c3"
integrity sha512-HX4HutkbPDQWBJNPDozpT1Um9mHcfV+RL+ukwEy0N4e7nD8VJyqLT/a+/FzQN7iUkwV+aNR2v5c0W+dgyqTaEA== integrity sha512-5z+7UkdfBteedbOPgq/i9aSYY6DeFIg9L97/Ema5t626+NQonG1tA1YVnrUWMi+K1di1BHbx5FEIWcPEH7rFmg==
dependencies: dependencies:
"@abp/moment" "~10.4.0" "@abp/moment" "~10.4.1"
bootstrap-daterangepicker "^3.1.0" bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~10.4.0": "@abp/bootstrap@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0.tgz#64b22bbdbf6b5bda279b21a7bae0652290b1221f" resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.1.tgz#b44949abc6fa2d20b14044dd0010147caa5d9df9"
integrity sha512-WQzXi5h1mej9twrAB6kD4aJtTNfSxpnuo1pxIOu/8GKGWoDayVY2NMQl+MCVel6dST+6EUTmuDRxc2q9qHRxLg== integrity sha512-9NZlHg0Xj/p1ffoUOKcxcfb6YXCjEdxWkmlqXx3qWM7r3yS06G5yHbQrYClnY+9SQuP2+/FtwRZ87HfH7zVg9w==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@abp/popper.js" "~10.4.0" "@abp/popper.js" "~10.4.1"
bootstrap "^5.3.8" bootstrap "^5.3.8"
"@abp/core@~10.4.0": "@abp/core@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0.tgz#de0c09e26d1f20451da9430d939beebb5bb6e9dd" resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.1.tgz#1a286e98b6217ae65e58bca7f65b57b86d298ae1"
integrity sha512-3yKLFqUtFo5rgBPQxWkNPsdq1bE9VKwm02yB14lu913EIYhP//akizY4uSK08BozocJNveCASQbgd66z4x6v/Q== integrity sha512-pOtbCwq7Vi244Vql3CjZ5VY4SqEUuR4VSDeZ8ZvJnP/aQWaHb229z1iZMcjg/L+Mu0J3eHQso7rrP7n+4ww0Jw==
dependencies: dependencies:
"@abp/utils" "~10.4.0" "@abp/utils" "~10.4.1"
"@abp/datatables.net-bs5@~10.4.0": "@abp/datatables.net-bs5@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0.tgz#a24eef99399324e4b89a00a204d2c4c2de379da1" resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.1.tgz#0ee2cb1a2f22146fd3561eab6ed412ac4301b928"
integrity sha512-T4f7e6sR1qHcvygNUNfdPWsK61C3NQORV35Lzpl98eDwY8XLg2/RLAegpFI8GjESVy2+2PCKVqUoSYZtXaMFmw== integrity sha512-bXl2JUpa7/IGWq9IsBlp+OVRdeIiGaaXbyKONSdI1LGeY9L6W3cHF90E68c+DaCUlcTkRUgshWvEhxSRAEEDnQ==
dependencies: dependencies:
"@abp/datatables.net" "~10.4.0" "@abp/datatables.net" "~10.4.1"
datatables.net-bs5 "^2.3.4" datatables.net-bs5 "^2.3.4"
"@abp/datatables.net@~10.4.0": "@abp/datatables.net@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0.tgz#ab48f6e3ccae8d0644f0c01011ff98cc6ca16181" resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.1.tgz#62b2ca692ee7b59317ac46a80e46fc2f8df576ef"
integrity sha512-esIUozaSEa29G7bdWbEZr22fRChaTuGfNNB8rgBHmVKwgkbHSG7qUTgsfGhNz0T2vfDsK3X37n55xmSdE9RElg== integrity sha512-Lz0DUwlICTZiz0C7F2s32ddFOmlTQmEK+bUuigh7miir/lTb0GuoDIeDRQxFM7ucdsc3wo+ImbDwPvRI35XF4A==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
datatables.net "^2.3.4" datatables.net "^2.3.4"
"@abp/font-awesome@~10.4.0": "@abp/font-awesome@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0.tgz#327979191615fff571f0ea2e99d01bbcca5378ce" resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.1.tgz#936674af94d418eb4ebf5b42fbf8694e78139172"
integrity sha512-RBzDSi/hrjhLKc7h6Kf9CQqC+LCGvS7h8HrRVaIzWCZSeqTfIMFpixjCUrNgkqWI0bU4NDUKXZ4XCOv4nPVlBg== integrity sha512-FEY5XWyjLFbcydJyguim/nd6T0CS4K3xKg0wdciUEz4Nb8dAvi4mUeMcQNrD5qEtuhOA1OuGKbiG5TtTN2X/bg==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@fortawesome/fontawesome-free" "^7.0.1" "@fortawesome/fontawesome-free" "^7.0.1"
"@abp/jquery-validation-unobtrusive@~10.4.0": "@abp/jquery-validation-unobtrusive@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0.tgz#e0114347344931667f48e0f2de5ea4bd6f9d2a88" resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.1.tgz#b0ea174c262659215b69c6a92612b219273a091a"
integrity sha512-AJncXVB+eTSizq0fTAwLii9a0GeYFPiY+gw+Ki5pak8Pp9LQivphsW32TqQmPC3qZVuYtd4myUUraWuOTT1Adg== integrity sha512-HGb+yM26BWk1ne4iUAD2HqMbOk75xNYIA+V1ny469eh1JdWBzlI+gJOQCiFbwdxnEWDJ2QsWiN2DmLY/0SGmqQ==
dependencies: dependencies:
"@abp/jquery-validation" "~10.4.0" "@abp/jquery-validation" "~10.4.1"
jquery-validation-unobtrusive "^4.0.0" jquery-validation-unobtrusive "^4.0.0"
"@abp/jquery-validation@~10.4.0": "@abp/jquery-validation@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0.tgz#bd1ef0217c2500363f25223dd7316ba919a505b5" resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.1.tgz#21970617ca9286328b85b64501f00e444bd0ec0d"
integrity sha512-W9QiGnOpaq6uDDwBy4UEqWrP1p2UegHQShW5Cev9vr6g7Lk97UsS1Agh9lnjbvMzFSAiLl3M9gHmyMD4aU3NPA== integrity sha512-mRZdEMssYwCjZOLQEFcXQbM//jrTMCMp6P5E1acQBaRZfaTPg/mNCHmdgd9vTRRgXfaAhQhkpYSkwv3GzAXbgA==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
jquery-validation "^1.21.0" jquery-validation "^1.21.0"
"@abp/jquery@~10.4.0": "@abp/jquery@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0.tgz#7ed3f1808682717ccfa7c6ac6e8db8a8b648b1e1" resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.1.tgz#9828be045b0ae767cc6d7c2a0b4affe2aea19bf7"
integrity sha512-kjFoVIhqlaIHlEs917sIeP1sHmLWXMn+DVKaCkVQUXC2KVq+yvQRC8AZiFQVxOwLvzd9dFFpGwGZgpWkDfvhvg== integrity sha512-m9Pg0kV3oCDh0fzcseKF4InM83Ryvrhf5iXioBklshqGAXodKgnk5YIwfsSjTIcj9wMuWdpznuxC5bMo+PP7ig==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
jquery "~3.7.1" jquery "~3.7.1"
"@abp/lodash@~10.4.0": "@abp/lodash@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0.tgz#b6fc25b6e2fd74420ca16a5a13cb8fcd39b89efd" resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.1.tgz#f3d5532aef9772ccb38a6c7875a6b8b29db3ddc8"
integrity sha512-RuiIGAqJtSBS+4VAk4cg7Zsfj07B3xkiewCaK5j0xUcyjsCJKL1UdXe2zVNL3oE5bXTNMU7yNQWJS4knv2mfwA== integrity sha512-GcUNsy9rs2HET8v86PwCCwi9R0XOt5nklBjGhDyER+fzGSHHLFKX87WWjPulwBtxFCfEHMaYvCDAnkGO15tFwA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
lodash "^4.18.1" lodash "^4.18.1"
"@abp/luxon@~10.4.0": "@abp/luxon@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0.tgz#731d20877ec679fa518b7199128676631d030a90" resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.1.tgz#d279101a35f02e061eb08b0ac20285c17208ffc7"
integrity sha512-/hF+FBugJMkp/H9WNZxlsOy3Rl4DTeR2hqmRPI0sPcdFOixCziYrwzyHg/2Kx8cI/zHa6GRRt1B4Jz4yjQTvdw== integrity sha512-Tr8hhMzWPoiQlSHBvhxxy0viu8dw2y8JikvyDc2sQusm258vlHi4NMH3FAY7JsyeiZFH6fwlRTJjkEAsdRLlCQ==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
luxon "^3.7.2" luxon "^3.7.2"
"@abp/malihu-custom-scrollbar-plugin@~10.4.0": "@abp/malihu-custom-scrollbar-plugin@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0.tgz#e1c207d9c66cce64fcb4fe13c091c4b86b00b6d7" resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.1.tgz#fee2f4ffe0b6a56ec1afddc51217bd569be9163c"
integrity sha512-LC+imsGQganhKWybvQytATjQMXfQwfCfi6RRWREP+pejKPuHpqHzPd+AjKwZpx500K2/ZTwT62FKJ1uDiJXSKA== integrity sha512-iCvuDqoRtM0HtWToyzbox14kE9Y9E3DFRbE+sISB6vCOL+3gW+xEHmmOMzESWQ3DX+p/q8xidQMxCZsyo2l0IA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
malihu-custom-scrollbar-plugin "^3.1.5" malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~10.4.0": "@abp/moment@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0.tgz#6737898b90b579ce5e0d683657757725a4def09d" resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.1.tgz#43e8e4ebc6a4da3877b0333d463362df46e57f83"
integrity sha512-WUtzjD6+1JGpgS6Yv2Qo/h4jM77LkkasPrywsetmtj/6zyVQWrkk7tKHTCjhAJtdinctcROwIIcwLsELi0nDHg== integrity sha512-RNx+5gXkI902rWlFbMSHEYd+FAoiXKxfKrmj1hWiK4GSwhY+vike3oAcdGjcpkFyAG1o+5MkL5p9951eHtn1RA==
dependencies: dependencies:
moment "^2.30.1" moment "^2.30.1"
"@abp/popper.js@~10.4.0": "@abp/popper.js@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0.tgz#9d8d09c4e18020b6a75ba30daf6786606f555e84" resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.1.tgz#616691ccdd8632e84bf9419e59db841ef2ea610c"
integrity sha512-KR5wGZ/MfR1rOPcmFr5ekraYhOSRul9gqempir69hlqrFKUFqt46F9/wLWyaJ7vlsMU6o4gBo6/jE5tICIpzNw== integrity sha512-74kOjXTb4FRbg5t4dTsZ11io9iuEG38IjPyYue/1yIXVbc2hruIhcJC9V3HFZLirQv1s1rkRqmnf38kVjUiKHA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@popperjs/core" "^2.11.8" "@popperjs/core" "^2.11.8"
"@abp/select2@~10.4.0": "@abp/select2@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0.tgz#e744988abf81e2194a5850acc4ac1333e9578df8" resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.1.tgz#8729f7648073ecedc93915d3c618d10c3c557cbb"
integrity sha512-tyAdGzX32joI5vw+MUJGR0iToWCGZrbQg/zKeoCib80Zx5cn+e6GXj6wZyPbsJgVm0jZ7zBweWt3x8HzW9N8Ww== integrity sha512-BtjhMMYKcHl1ZN04L+iWhQWzzqKGbpHi8tMe6o75ZunIpVtIFlIPUpzVUI0AaH6t2sIhlrYFEoxvGxA31lcIXw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
select2 "^4.0.13" select2 "^4.0.13"
"@abp/sweetalert2@~10.4.0": "@abp/sweetalert2@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0.tgz#65cb26c8c7c9c02158c9a487969eef033fe04a73" resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.1.tgz#68b4abe96c71b05d956c362edc19ccce8b9bbe42"
integrity sha512-kyVMlfnI6MZojJlaRstdHj/CL3olOn4BszjQ155UQaDsGHUu0THmbhpfi4P0q3TCLLzcLM4pkuY3wJHPNl3ZOw== integrity sha512-6Ce7uR49sqJBkqRfR56cn6jI898+xXHbWgJV+VHN+Dm6w6WX5MbEiOnjF3VLwaq0pwI3FeoCALZAAgra6t9vVw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
sweetalert2 "^11.23.0" sweetalert2 "^11.23.0"
"@abp/timeago@~10.4.0": "@abp/timeago@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0.tgz#100fc0598e3a605346397f8a395bb96dc70f429d" resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.1.tgz#a01c3840eb3c1e67b5c9fdd0ead020acb01d6676"
integrity sha512-G0ppO7Evai3DdhSg4ozxQpvIke0t3vyg63pNdfOtAPngmuam7WBM1WemBi4u29M84WcSfmk4KuAubXO0aCJgDg== integrity sha512-sh1afPeBSsL1RNBhWRn4FOD1ZgRE8HQc0zOhCAl6Kb7WXWcDuP8RPKbGLolnpNHgXfz12lhE6TsbsNFAaCGYjg==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
timeago "^1.6.7" timeago "^1.6.7"
"@abp/utils@~10.4.0": "@abp/utils@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0.tgz#75175f798e58643c0dec1e85a502186c811e9226" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.1.tgz#b5c7b57e3c2ef8f87c0c5780995d82a7baf2ee9d"
integrity sha512-BPc7KGDcbdFZ4GonAt3SOi/gYhG+iXI76TMlAzSKMBRhBU0vxFS8I/pb7U5zX0Gjh5M+aT0l2vA3l+POCHPBfw== integrity sha512-kPp7PsaMni81vQK3J1F4j3Eem4dBlZuqIYR6QWbO+udgS5CzYGJagdw+HsOGer6YzJHhcGFfe0LcxS1z/VsFDQ==
dependencies: dependencies:
just-compare "^2.3.0" just-compare "^2.3.0"

10
modules/cms-kit/angular/package.json

@ -15,11 +15,11 @@
}, },
"private": true, "private": true,
"dependencies": { "dependencies": {
"@abp/ng.account": "~10.4.0", "@abp/ng.account": "~10.4.1",
"@abp/ng.identity": "~10.4.0", "@abp/ng.identity": "~10.4.1",
"@abp/ng.setting-management": "~10.4.0", "@abp/ng.setting-management": "~10.4.1",
"@abp/ng.tenant-management": "~10.4.0", "@abp/ng.tenant-management": "~10.4.1",
"@abp/ng.theme.basic": "~10.4.0", "@abp/ng.theme.basic": "~10.4.1",
"@angular/animations": "~10.0.0", "@angular/animations": "~10.0.0",
"@angular/common": "~10.0.0", "@angular/common": "~10.0.0",
"@angular/compiler": "~10.0.0", "@angular/compiler": "~10.0.0",

4
modules/cms-kit/angular/projects/cms-kit/package.json

@ -4,8 +4,8 @@
"peerDependencies": { "peerDependencies": {
"@angular/common": "^9.1.11", "@angular/common": "^9.1.11",
"@angular/core": "^9.1.11", "@angular/core": "^9.1.11",
"@abp/ng.core": ">=10.4.0", "@abp/ng.core": ">=10.4.1",
"@abp/ng.theme.shared": ">=10.4.0" "@abp/ng.theme.shared": ">=10.4.1"
}, },
"dependencies": { "dependencies": {
"tslib": "^2.0.0" "tslib": "^2.0.0"

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

@ -3,6 +3,6 @@
"name": "my-app-identityserver", "name": "my-app-identityserver",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0" "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.1"
} }
} }

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

@ -2,186 +2,186 @@
# yarn lockfile v1 # yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0": "@abp/aspnetcore.mvc.ui.theme.basic@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0.tgz#c0414583f1c1fca14b0133818a63434b4fbf7df0" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.1.tgz#6691f4a120cef77ec0ba341efc45fa828cebc98a"
integrity sha512-sOg3URmFRO/18D734B56jdFuC4LflGXXpw4w1Rdd77BJxugynxcmwNOQbLYFvMfqj0eKqDOH3E4yEcmS2IT1BQ== integrity sha512-nMLbBHFUk4eAmu5kj72k9Hf9FFXlt3QWQoW3CxXEEvdynTwjSEwHMvp8zgLalyelxvKuO4tKKoYVn3fU0zUBKA==
dependencies: 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": "@abp/aspnetcore.mvc.ui.theme.shared@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0.tgz#49002e55db00c98931d27357f7ea40eeab09e2e8" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.1.tgz#b12adabcb73a99d4597509ca2b0ff0475c81218e"
integrity sha512-bNQ+WOnsfQhb98Z9YO0zZsW2K8ZEgOQ+7/86QaqoYTf+ZFvLJsICmNuHryNkCGRM1XJf9EaDZ3qSOwoOGQwS9A== integrity sha512-tlb+b2OtPXzdRTMIPcoGuzH2glTAUSwJ+Pa3tDUZiwmnsZ1WTgwF54s4pwmQxSNHpFu1okdpeP1KHw0FEEFTzw==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0" "@abp/aspnetcore.mvc.ui" "~10.4.1"
"@abp/bootstrap" "~10.4.0" "@abp/bootstrap" "~10.4.1"
"@abp/bootstrap-datepicker" "~10.4.0" "@abp/bootstrap-datepicker" "~10.4.1"
"@abp/bootstrap-daterangepicker" "~10.4.0" "@abp/bootstrap-daterangepicker" "~10.4.1"
"@abp/datatables.net-bs5" "~10.4.0" "@abp/datatables.net-bs5" "~10.4.1"
"@abp/font-awesome" "~10.4.0" "@abp/font-awesome" "~10.4.1"
"@abp/jquery-validation-unobtrusive" "~10.4.0" "@abp/jquery-validation-unobtrusive" "~10.4.1"
"@abp/lodash" "~10.4.0" "@abp/lodash" "~10.4.1"
"@abp/luxon" "~10.4.0" "@abp/luxon" "~10.4.1"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0" "@abp/malihu-custom-scrollbar-plugin" "~10.4.1"
"@abp/moment" "~10.4.0" "@abp/moment" "~10.4.1"
"@abp/select2" "~10.4.0" "@abp/select2" "~10.4.1"
"@abp/sweetalert2" "~10.4.0" "@abp/sweetalert2" "~10.4.1"
"@abp/timeago" "~10.4.0" "@abp/timeago" "~10.4.1"
"@abp/aspnetcore.mvc.ui@~10.4.0": "@abp/aspnetcore.mvc.ui@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0.tgz#24e40fdc101c411f29a87adb77baa642299e979c" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.1.tgz#b39b2379da89fbadaec1279ba71f5e1a17cb3855"
integrity sha512-0qVFthS4f4fkCv//UY2GseO+NX+XYqlamZJJwOTmv1UXFW6LxAXxuEQqWYVfFKzwk2lbkXDUcgP8NhhQ9xp3Sw== integrity sha512-KhtMaMBGVqb+RyOyzS6ZpreGbiMZ1PU4tPJq9Eo80Cynki+E1ERoM/7aFQ30vvXchMXWHyCENAY34r47G81dOA==
dependencies: dependencies:
ansi-colors "^4.1.3" ansi-colors "^4.1.3"
"@abp/bootstrap-datepicker@~10.4.0": "@abp/bootstrap-datepicker@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0.tgz#a392fd5ce31c86e9fc07f7dedbd0c56a02af341e" resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.1.tgz#b7ad625795df22396bd1cd3c74d458efd3b7d8f0"
integrity sha512-kOpuCEO64zoJ7a9JASsCLFZIjEYgN0GG/oApS2L729pv6/oEhcupWpwrnvDUhsdGOezXwLIsgTzc6tiG3HxwGA== integrity sha512-X3h3/1OJnm9o8PRyotxEkC4SZeVDAJ7VfN23OFAffraqOWj99kfhbygX6CziAPqTTbu/gUxgow9oqw15M89F2w==
dependencies: dependencies:
bootstrap-datepicker "^1.10.1" bootstrap-datepicker "^1.10.1"
"@abp/bootstrap-daterangepicker@~10.4.0": "@abp/bootstrap-daterangepicker@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0.tgz#95f68d3f488a12ede3c12352637b48782eeb031a" resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.1.tgz#a70aba1b0a0189bc8332f982289776abe86695c3"
integrity sha512-HX4HutkbPDQWBJNPDozpT1Um9mHcfV+RL+ukwEy0N4e7nD8VJyqLT/a+/FzQN7iUkwV+aNR2v5c0W+dgyqTaEA== integrity sha512-5z+7UkdfBteedbOPgq/i9aSYY6DeFIg9L97/Ema5t626+NQonG1tA1YVnrUWMi+K1di1BHbx5FEIWcPEH7rFmg==
dependencies: dependencies:
"@abp/moment" "~10.4.0" "@abp/moment" "~10.4.1"
bootstrap-daterangepicker "^3.1.0" bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~10.4.0": "@abp/bootstrap@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0.tgz#64b22bbdbf6b5bda279b21a7bae0652290b1221f" resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.1.tgz#b44949abc6fa2d20b14044dd0010147caa5d9df9"
integrity sha512-WQzXi5h1mej9twrAB6kD4aJtTNfSxpnuo1pxIOu/8GKGWoDayVY2NMQl+MCVel6dST+6EUTmuDRxc2q9qHRxLg== integrity sha512-9NZlHg0Xj/p1ffoUOKcxcfb6YXCjEdxWkmlqXx3qWM7r3yS06G5yHbQrYClnY+9SQuP2+/FtwRZ87HfH7zVg9w==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@abp/popper.js" "~10.4.0" "@abp/popper.js" "~10.4.1"
bootstrap "^5.3.8" bootstrap "^5.3.8"
"@abp/core@~10.4.0": "@abp/core@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0.tgz#de0c09e26d1f20451da9430d939beebb5bb6e9dd" resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.1.tgz#1a286e98b6217ae65e58bca7f65b57b86d298ae1"
integrity sha512-3yKLFqUtFo5rgBPQxWkNPsdq1bE9VKwm02yB14lu913EIYhP//akizY4uSK08BozocJNveCASQbgd66z4x6v/Q== integrity sha512-pOtbCwq7Vi244Vql3CjZ5VY4SqEUuR4VSDeZ8ZvJnP/aQWaHb229z1iZMcjg/L+Mu0J3eHQso7rrP7n+4ww0Jw==
dependencies: dependencies:
"@abp/utils" "~10.4.0" "@abp/utils" "~10.4.1"
"@abp/datatables.net-bs5@~10.4.0": "@abp/datatables.net-bs5@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0.tgz#a24eef99399324e4b89a00a204d2c4c2de379da1" resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.1.tgz#0ee2cb1a2f22146fd3561eab6ed412ac4301b928"
integrity sha512-T4f7e6sR1qHcvygNUNfdPWsK61C3NQORV35Lzpl98eDwY8XLg2/RLAegpFI8GjESVy2+2PCKVqUoSYZtXaMFmw== integrity sha512-bXl2JUpa7/IGWq9IsBlp+OVRdeIiGaaXbyKONSdI1LGeY9L6W3cHF90E68c+DaCUlcTkRUgshWvEhxSRAEEDnQ==
dependencies: dependencies:
"@abp/datatables.net" "~10.4.0" "@abp/datatables.net" "~10.4.1"
datatables.net-bs5 "^2.3.4" datatables.net-bs5 "^2.3.4"
"@abp/datatables.net@~10.4.0": "@abp/datatables.net@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0.tgz#ab48f6e3ccae8d0644f0c01011ff98cc6ca16181" resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.1.tgz#62b2ca692ee7b59317ac46a80e46fc2f8df576ef"
integrity sha512-esIUozaSEa29G7bdWbEZr22fRChaTuGfNNB8rgBHmVKwgkbHSG7qUTgsfGhNz0T2vfDsK3X37n55xmSdE9RElg== integrity sha512-Lz0DUwlICTZiz0C7F2s32ddFOmlTQmEK+bUuigh7miir/lTb0GuoDIeDRQxFM7ucdsc3wo+ImbDwPvRI35XF4A==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
datatables.net "^2.3.4" datatables.net "^2.3.4"
"@abp/font-awesome@~10.4.0": "@abp/font-awesome@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0.tgz#327979191615fff571f0ea2e99d01bbcca5378ce" resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.1.tgz#936674af94d418eb4ebf5b42fbf8694e78139172"
integrity sha512-RBzDSi/hrjhLKc7h6Kf9CQqC+LCGvS7h8HrRVaIzWCZSeqTfIMFpixjCUrNgkqWI0bU4NDUKXZ4XCOv4nPVlBg== integrity sha512-FEY5XWyjLFbcydJyguim/nd6T0CS4K3xKg0wdciUEz4Nb8dAvi4mUeMcQNrD5qEtuhOA1OuGKbiG5TtTN2X/bg==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@fortawesome/fontawesome-free" "^7.0.1" "@fortawesome/fontawesome-free" "^7.0.1"
"@abp/jquery-validation-unobtrusive@~10.4.0": "@abp/jquery-validation-unobtrusive@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0.tgz#e0114347344931667f48e0f2de5ea4bd6f9d2a88" resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.1.tgz#b0ea174c262659215b69c6a92612b219273a091a"
integrity sha512-AJncXVB+eTSizq0fTAwLii9a0GeYFPiY+gw+Ki5pak8Pp9LQivphsW32TqQmPC3qZVuYtd4myUUraWuOTT1Adg== integrity sha512-HGb+yM26BWk1ne4iUAD2HqMbOk75xNYIA+V1ny469eh1JdWBzlI+gJOQCiFbwdxnEWDJ2QsWiN2DmLY/0SGmqQ==
dependencies: dependencies:
"@abp/jquery-validation" "~10.4.0" "@abp/jquery-validation" "~10.4.1"
jquery-validation-unobtrusive "^4.0.0" jquery-validation-unobtrusive "^4.0.0"
"@abp/jquery-validation@~10.4.0": "@abp/jquery-validation@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0.tgz#bd1ef0217c2500363f25223dd7316ba919a505b5" resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.1.tgz#21970617ca9286328b85b64501f00e444bd0ec0d"
integrity sha512-W9QiGnOpaq6uDDwBy4UEqWrP1p2UegHQShW5Cev9vr6g7Lk97UsS1Agh9lnjbvMzFSAiLl3M9gHmyMD4aU3NPA== integrity sha512-mRZdEMssYwCjZOLQEFcXQbM//jrTMCMp6P5E1acQBaRZfaTPg/mNCHmdgd9vTRRgXfaAhQhkpYSkwv3GzAXbgA==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
jquery-validation "^1.21.0" jquery-validation "^1.21.0"
"@abp/jquery@~10.4.0": "@abp/jquery@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0.tgz#7ed3f1808682717ccfa7c6ac6e8db8a8b648b1e1" resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.1.tgz#9828be045b0ae767cc6d7c2a0b4affe2aea19bf7"
integrity sha512-kjFoVIhqlaIHlEs917sIeP1sHmLWXMn+DVKaCkVQUXC2KVq+yvQRC8AZiFQVxOwLvzd9dFFpGwGZgpWkDfvhvg== integrity sha512-m9Pg0kV3oCDh0fzcseKF4InM83Ryvrhf5iXioBklshqGAXodKgnk5YIwfsSjTIcj9wMuWdpznuxC5bMo+PP7ig==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
jquery "~3.7.1" jquery "~3.7.1"
"@abp/lodash@~10.4.0": "@abp/lodash@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0.tgz#b6fc25b6e2fd74420ca16a5a13cb8fcd39b89efd" resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.1.tgz#f3d5532aef9772ccb38a6c7875a6b8b29db3ddc8"
integrity sha512-RuiIGAqJtSBS+4VAk4cg7Zsfj07B3xkiewCaK5j0xUcyjsCJKL1UdXe2zVNL3oE5bXTNMU7yNQWJS4knv2mfwA== integrity sha512-GcUNsy9rs2HET8v86PwCCwi9R0XOt5nklBjGhDyER+fzGSHHLFKX87WWjPulwBtxFCfEHMaYvCDAnkGO15tFwA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
lodash "^4.18.1" lodash "^4.18.1"
"@abp/luxon@~10.4.0": "@abp/luxon@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0.tgz#731d20877ec679fa518b7199128676631d030a90" resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.1.tgz#d279101a35f02e061eb08b0ac20285c17208ffc7"
integrity sha512-/hF+FBugJMkp/H9WNZxlsOy3Rl4DTeR2hqmRPI0sPcdFOixCziYrwzyHg/2Kx8cI/zHa6GRRt1B4Jz4yjQTvdw== integrity sha512-Tr8hhMzWPoiQlSHBvhxxy0viu8dw2y8JikvyDc2sQusm258vlHi4NMH3FAY7JsyeiZFH6fwlRTJjkEAsdRLlCQ==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
luxon "^3.7.2" luxon "^3.7.2"
"@abp/malihu-custom-scrollbar-plugin@~10.4.0": "@abp/malihu-custom-scrollbar-plugin@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0.tgz#e1c207d9c66cce64fcb4fe13c091c4b86b00b6d7" resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.1.tgz#fee2f4ffe0b6a56ec1afddc51217bd569be9163c"
integrity sha512-LC+imsGQganhKWybvQytATjQMXfQwfCfi6RRWREP+pejKPuHpqHzPd+AjKwZpx500K2/ZTwT62FKJ1uDiJXSKA== integrity sha512-iCvuDqoRtM0HtWToyzbox14kE9Y9E3DFRbE+sISB6vCOL+3gW+xEHmmOMzESWQ3DX+p/q8xidQMxCZsyo2l0IA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
malihu-custom-scrollbar-plugin "^3.1.5" malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~10.4.0": "@abp/moment@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0.tgz#6737898b90b579ce5e0d683657757725a4def09d" resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.1.tgz#43e8e4ebc6a4da3877b0333d463362df46e57f83"
integrity sha512-WUtzjD6+1JGpgS6Yv2Qo/h4jM77LkkasPrywsetmtj/6zyVQWrkk7tKHTCjhAJtdinctcROwIIcwLsELi0nDHg== integrity sha512-RNx+5gXkI902rWlFbMSHEYd+FAoiXKxfKrmj1hWiK4GSwhY+vike3oAcdGjcpkFyAG1o+5MkL5p9951eHtn1RA==
dependencies: dependencies:
moment "^2.30.1" moment "^2.30.1"
"@abp/popper.js@~10.4.0": "@abp/popper.js@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0.tgz#9d8d09c4e18020b6a75ba30daf6786606f555e84" resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.1.tgz#616691ccdd8632e84bf9419e59db841ef2ea610c"
integrity sha512-KR5wGZ/MfR1rOPcmFr5ekraYhOSRul9gqempir69hlqrFKUFqt46F9/wLWyaJ7vlsMU6o4gBo6/jE5tICIpzNw== integrity sha512-74kOjXTb4FRbg5t4dTsZ11io9iuEG38IjPyYue/1yIXVbc2hruIhcJC9V3HFZLirQv1s1rkRqmnf38kVjUiKHA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@popperjs/core" "^2.11.8" "@popperjs/core" "^2.11.8"
"@abp/select2@~10.4.0": "@abp/select2@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0.tgz#e744988abf81e2194a5850acc4ac1333e9578df8" resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.1.tgz#8729f7648073ecedc93915d3c618d10c3c557cbb"
integrity sha512-tyAdGzX32joI5vw+MUJGR0iToWCGZrbQg/zKeoCib80Zx5cn+e6GXj6wZyPbsJgVm0jZ7zBweWt3x8HzW9N8Ww== integrity sha512-BtjhMMYKcHl1ZN04L+iWhQWzzqKGbpHi8tMe6o75ZunIpVtIFlIPUpzVUI0AaH6t2sIhlrYFEoxvGxA31lcIXw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
select2 "^4.0.13" select2 "^4.0.13"
"@abp/sweetalert2@~10.4.0": "@abp/sweetalert2@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0.tgz#65cb26c8c7c9c02158c9a487969eef033fe04a73" resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.1.tgz#68b4abe96c71b05d956c362edc19ccce8b9bbe42"
integrity sha512-kyVMlfnI6MZojJlaRstdHj/CL3olOn4BszjQ155UQaDsGHUu0THmbhpfi4P0q3TCLLzcLM4pkuY3wJHPNl3ZOw== integrity sha512-6Ce7uR49sqJBkqRfR56cn6jI898+xXHbWgJV+VHN+Dm6w6WX5MbEiOnjF3VLwaq0pwI3FeoCALZAAgra6t9vVw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
sweetalert2 "^11.23.0" sweetalert2 "^11.23.0"
"@abp/timeago@~10.4.0": "@abp/timeago@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0.tgz#100fc0598e3a605346397f8a395bb96dc70f429d" resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.1.tgz#a01c3840eb3c1e67b5c9fdd0ead020acb01d6676"
integrity sha512-G0ppO7Evai3DdhSg4ozxQpvIke0t3vyg63pNdfOtAPngmuam7WBM1WemBi4u29M84WcSfmk4KuAubXO0aCJgDg== integrity sha512-sh1afPeBSsL1RNBhWRn4FOD1ZgRE8HQc0zOhCAl6Kb7WXWcDuP8RPKbGLolnpNHgXfz12lhE6TsbsNFAaCGYjg==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
timeago "^1.6.7" timeago "^1.6.7"
"@abp/utils@~10.4.0": "@abp/utils@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0.tgz#75175f798e58643c0dec1e85a502186c811e9226" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.1.tgz#b5c7b57e3c2ef8f87c0c5780995d82a7baf2ee9d"
integrity sha512-BPc7KGDcbdFZ4GonAt3SOi/gYhG+iXI76TMlAzSKMBRhBU0vxFS8I/pb7U5zX0Gjh5M+aT0l2vA3l+POCHPBfw== integrity sha512-kPp7PsaMni81vQK3J1F4j3Eem4dBlZuqIYR6QWbO+udgS5CzYGJagdw+HsOGer6YzJHhcGFfe0LcxS1z/VsFDQ==
dependencies: dependencies:
just-compare "^2.3.0" just-compare "^2.3.0"

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

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

242
modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock

@ -2,186 +2,186 @@
# yarn lockfile v1 # yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0": "@abp/aspnetcore.mvc.ui.theme.basic@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0.tgz#c0414583f1c1fca14b0133818a63434b4fbf7df0" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.1.tgz#6691f4a120cef77ec0ba341efc45fa828cebc98a"
integrity sha512-sOg3URmFRO/18D734B56jdFuC4LflGXXpw4w1Rdd77BJxugynxcmwNOQbLYFvMfqj0eKqDOH3E4yEcmS2IT1BQ== integrity sha512-nMLbBHFUk4eAmu5kj72k9Hf9FFXlt3QWQoW3CxXEEvdynTwjSEwHMvp8zgLalyelxvKuO4tKKoYVn3fU0zUBKA==
dependencies: 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": "@abp/aspnetcore.mvc.ui.theme.shared@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0.tgz#49002e55db00c98931d27357f7ea40eeab09e2e8" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.1.tgz#b12adabcb73a99d4597509ca2b0ff0475c81218e"
integrity sha512-bNQ+WOnsfQhb98Z9YO0zZsW2K8ZEgOQ+7/86QaqoYTf+ZFvLJsICmNuHryNkCGRM1XJf9EaDZ3qSOwoOGQwS9A== integrity sha512-tlb+b2OtPXzdRTMIPcoGuzH2glTAUSwJ+Pa3tDUZiwmnsZ1WTgwF54s4pwmQxSNHpFu1okdpeP1KHw0FEEFTzw==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0" "@abp/aspnetcore.mvc.ui" "~10.4.1"
"@abp/bootstrap" "~10.4.0" "@abp/bootstrap" "~10.4.1"
"@abp/bootstrap-datepicker" "~10.4.0" "@abp/bootstrap-datepicker" "~10.4.1"
"@abp/bootstrap-daterangepicker" "~10.4.0" "@abp/bootstrap-daterangepicker" "~10.4.1"
"@abp/datatables.net-bs5" "~10.4.0" "@abp/datatables.net-bs5" "~10.4.1"
"@abp/font-awesome" "~10.4.0" "@abp/font-awesome" "~10.4.1"
"@abp/jquery-validation-unobtrusive" "~10.4.0" "@abp/jquery-validation-unobtrusive" "~10.4.1"
"@abp/lodash" "~10.4.0" "@abp/lodash" "~10.4.1"
"@abp/luxon" "~10.4.0" "@abp/luxon" "~10.4.1"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0" "@abp/malihu-custom-scrollbar-plugin" "~10.4.1"
"@abp/moment" "~10.4.0" "@abp/moment" "~10.4.1"
"@abp/select2" "~10.4.0" "@abp/select2" "~10.4.1"
"@abp/sweetalert2" "~10.4.0" "@abp/sweetalert2" "~10.4.1"
"@abp/timeago" "~10.4.0" "@abp/timeago" "~10.4.1"
"@abp/aspnetcore.mvc.ui@~10.4.0": "@abp/aspnetcore.mvc.ui@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0.tgz#24e40fdc101c411f29a87adb77baa642299e979c" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.1.tgz#b39b2379da89fbadaec1279ba71f5e1a17cb3855"
integrity sha512-0qVFthS4f4fkCv//UY2GseO+NX+XYqlamZJJwOTmv1UXFW6LxAXxuEQqWYVfFKzwk2lbkXDUcgP8NhhQ9xp3Sw== integrity sha512-KhtMaMBGVqb+RyOyzS6ZpreGbiMZ1PU4tPJq9Eo80Cynki+E1ERoM/7aFQ30vvXchMXWHyCENAY34r47G81dOA==
dependencies: dependencies:
ansi-colors "^4.1.3" ansi-colors "^4.1.3"
"@abp/bootstrap-datepicker@~10.4.0": "@abp/bootstrap-datepicker@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0.tgz#a392fd5ce31c86e9fc07f7dedbd0c56a02af341e" resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.1.tgz#b7ad625795df22396bd1cd3c74d458efd3b7d8f0"
integrity sha512-kOpuCEO64zoJ7a9JASsCLFZIjEYgN0GG/oApS2L729pv6/oEhcupWpwrnvDUhsdGOezXwLIsgTzc6tiG3HxwGA== integrity sha512-X3h3/1OJnm9o8PRyotxEkC4SZeVDAJ7VfN23OFAffraqOWj99kfhbygX6CziAPqTTbu/gUxgow9oqw15M89F2w==
dependencies: dependencies:
bootstrap-datepicker "^1.10.1" bootstrap-datepicker "^1.10.1"
"@abp/bootstrap-daterangepicker@~10.4.0": "@abp/bootstrap-daterangepicker@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0.tgz#95f68d3f488a12ede3c12352637b48782eeb031a" resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.1.tgz#a70aba1b0a0189bc8332f982289776abe86695c3"
integrity sha512-HX4HutkbPDQWBJNPDozpT1Um9mHcfV+RL+ukwEy0N4e7nD8VJyqLT/a+/FzQN7iUkwV+aNR2v5c0W+dgyqTaEA== integrity sha512-5z+7UkdfBteedbOPgq/i9aSYY6DeFIg9L97/Ema5t626+NQonG1tA1YVnrUWMi+K1di1BHbx5FEIWcPEH7rFmg==
dependencies: dependencies:
"@abp/moment" "~10.4.0" "@abp/moment" "~10.4.1"
bootstrap-daterangepicker "^3.1.0" bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~10.4.0": "@abp/bootstrap@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0.tgz#64b22bbdbf6b5bda279b21a7bae0652290b1221f" resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.1.tgz#b44949abc6fa2d20b14044dd0010147caa5d9df9"
integrity sha512-WQzXi5h1mej9twrAB6kD4aJtTNfSxpnuo1pxIOu/8GKGWoDayVY2NMQl+MCVel6dST+6EUTmuDRxc2q9qHRxLg== integrity sha512-9NZlHg0Xj/p1ffoUOKcxcfb6YXCjEdxWkmlqXx3qWM7r3yS06G5yHbQrYClnY+9SQuP2+/FtwRZ87HfH7zVg9w==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@abp/popper.js" "~10.4.0" "@abp/popper.js" "~10.4.1"
bootstrap "^5.3.8" bootstrap "^5.3.8"
"@abp/core@~10.4.0": "@abp/core@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0.tgz#de0c09e26d1f20451da9430d939beebb5bb6e9dd" resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.1.tgz#1a286e98b6217ae65e58bca7f65b57b86d298ae1"
integrity sha512-3yKLFqUtFo5rgBPQxWkNPsdq1bE9VKwm02yB14lu913EIYhP//akizY4uSK08BozocJNveCASQbgd66z4x6v/Q== integrity sha512-pOtbCwq7Vi244Vql3CjZ5VY4SqEUuR4VSDeZ8ZvJnP/aQWaHb229z1iZMcjg/L+Mu0J3eHQso7rrP7n+4ww0Jw==
dependencies: dependencies:
"@abp/utils" "~10.4.0" "@abp/utils" "~10.4.1"
"@abp/datatables.net-bs5@~10.4.0": "@abp/datatables.net-bs5@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0.tgz#a24eef99399324e4b89a00a204d2c4c2de379da1" resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.1.tgz#0ee2cb1a2f22146fd3561eab6ed412ac4301b928"
integrity sha512-T4f7e6sR1qHcvygNUNfdPWsK61C3NQORV35Lzpl98eDwY8XLg2/RLAegpFI8GjESVy2+2PCKVqUoSYZtXaMFmw== integrity sha512-bXl2JUpa7/IGWq9IsBlp+OVRdeIiGaaXbyKONSdI1LGeY9L6W3cHF90E68c+DaCUlcTkRUgshWvEhxSRAEEDnQ==
dependencies: dependencies:
"@abp/datatables.net" "~10.4.0" "@abp/datatables.net" "~10.4.1"
datatables.net-bs5 "^2.3.4" datatables.net-bs5 "^2.3.4"
"@abp/datatables.net@~10.4.0": "@abp/datatables.net@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0.tgz#ab48f6e3ccae8d0644f0c01011ff98cc6ca16181" resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.1.tgz#62b2ca692ee7b59317ac46a80e46fc2f8df576ef"
integrity sha512-esIUozaSEa29G7bdWbEZr22fRChaTuGfNNB8rgBHmVKwgkbHSG7qUTgsfGhNz0T2vfDsK3X37n55xmSdE9RElg== integrity sha512-Lz0DUwlICTZiz0C7F2s32ddFOmlTQmEK+bUuigh7miir/lTb0GuoDIeDRQxFM7ucdsc3wo+ImbDwPvRI35XF4A==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
datatables.net "^2.3.4" datatables.net "^2.3.4"
"@abp/font-awesome@~10.4.0": "@abp/font-awesome@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0.tgz#327979191615fff571f0ea2e99d01bbcca5378ce" resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.1.tgz#936674af94d418eb4ebf5b42fbf8694e78139172"
integrity sha512-RBzDSi/hrjhLKc7h6Kf9CQqC+LCGvS7h8HrRVaIzWCZSeqTfIMFpixjCUrNgkqWI0bU4NDUKXZ4XCOv4nPVlBg== integrity sha512-FEY5XWyjLFbcydJyguim/nd6T0CS4K3xKg0wdciUEz4Nb8dAvi4mUeMcQNrD5qEtuhOA1OuGKbiG5TtTN2X/bg==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@fortawesome/fontawesome-free" "^7.0.1" "@fortawesome/fontawesome-free" "^7.0.1"
"@abp/jquery-validation-unobtrusive@~10.4.0": "@abp/jquery-validation-unobtrusive@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0.tgz#e0114347344931667f48e0f2de5ea4bd6f9d2a88" resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.1.tgz#b0ea174c262659215b69c6a92612b219273a091a"
integrity sha512-AJncXVB+eTSizq0fTAwLii9a0GeYFPiY+gw+Ki5pak8Pp9LQivphsW32TqQmPC3qZVuYtd4myUUraWuOTT1Adg== integrity sha512-HGb+yM26BWk1ne4iUAD2HqMbOk75xNYIA+V1ny469eh1JdWBzlI+gJOQCiFbwdxnEWDJ2QsWiN2DmLY/0SGmqQ==
dependencies: dependencies:
"@abp/jquery-validation" "~10.4.0" "@abp/jquery-validation" "~10.4.1"
jquery-validation-unobtrusive "^4.0.0" jquery-validation-unobtrusive "^4.0.0"
"@abp/jquery-validation@~10.4.0": "@abp/jquery-validation@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0.tgz#bd1ef0217c2500363f25223dd7316ba919a505b5" resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.1.tgz#21970617ca9286328b85b64501f00e444bd0ec0d"
integrity sha512-W9QiGnOpaq6uDDwBy4UEqWrP1p2UegHQShW5Cev9vr6g7Lk97UsS1Agh9lnjbvMzFSAiLl3M9gHmyMD4aU3NPA== integrity sha512-mRZdEMssYwCjZOLQEFcXQbM//jrTMCMp6P5E1acQBaRZfaTPg/mNCHmdgd9vTRRgXfaAhQhkpYSkwv3GzAXbgA==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
jquery-validation "^1.21.0" jquery-validation "^1.21.0"
"@abp/jquery@~10.4.0": "@abp/jquery@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0.tgz#7ed3f1808682717ccfa7c6ac6e8db8a8b648b1e1" resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.1.tgz#9828be045b0ae767cc6d7c2a0b4affe2aea19bf7"
integrity sha512-kjFoVIhqlaIHlEs917sIeP1sHmLWXMn+DVKaCkVQUXC2KVq+yvQRC8AZiFQVxOwLvzd9dFFpGwGZgpWkDfvhvg== integrity sha512-m9Pg0kV3oCDh0fzcseKF4InM83Ryvrhf5iXioBklshqGAXodKgnk5YIwfsSjTIcj9wMuWdpznuxC5bMo+PP7ig==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
jquery "~3.7.1" jquery "~3.7.1"
"@abp/lodash@~10.4.0": "@abp/lodash@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0.tgz#b6fc25b6e2fd74420ca16a5a13cb8fcd39b89efd" resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.1.tgz#f3d5532aef9772ccb38a6c7875a6b8b29db3ddc8"
integrity sha512-RuiIGAqJtSBS+4VAk4cg7Zsfj07B3xkiewCaK5j0xUcyjsCJKL1UdXe2zVNL3oE5bXTNMU7yNQWJS4knv2mfwA== integrity sha512-GcUNsy9rs2HET8v86PwCCwi9R0XOt5nklBjGhDyER+fzGSHHLFKX87WWjPulwBtxFCfEHMaYvCDAnkGO15tFwA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
lodash "^4.18.1" lodash "^4.18.1"
"@abp/luxon@~10.4.0": "@abp/luxon@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0.tgz#731d20877ec679fa518b7199128676631d030a90" resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.1.tgz#d279101a35f02e061eb08b0ac20285c17208ffc7"
integrity sha512-/hF+FBugJMkp/H9WNZxlsOy3Rl4DTeR2hqmRPI0sPcdFOixCziYrwzyHg/2Kx8cI/zHa6GRRt1B4Jz4yjQTvdw== integrity sha512-Tr8hhMzWPoiQlSHBvhxxy0viu8dw2y8JikvyDc2sQusm258vlHi4NMH3FAY7JsyeiZFH6fwlRTJjkEAsdRLlCQ==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
luxon "^3.7.2" luxon "^3.7.2"
"@abp/malihu-custom-scrollbar-plugin@~10.4.0": "@abp/malihu-custom-scrollbar-plugin@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0.tgz#e1c207d9c66cce64fcb4fe13c091c4b86b00b6d7" resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.1.tgz#fee2f4ffe0b6a56ec1afddc51217bd569be9163c"
integrity sha512-LC+imsGQganhKWybvQytATjQMXfQwfCfi6RRWREP+pejKPuHpqHzPd+AjKwZpx500K2/ZTwT62FKJ1uDiJXSKA== integrity sha512-iCvuDqoRtM0HtWToyzbox14kE9Y9E3DFRbE+sISB6vCOL+3gW+xEHmmOMzESWQ3DX+p/q8xidQMxCZsyo2l0IA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
malihu-custom-scrollbar-plugin "^3.1.5" malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~10.4.0": "@abp/moment@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0.tgz#6737898b90b579ce5e0d683657757725a4def09d" resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.1.tgz#43e8e4ebc6a4da3877b0333d463362df46e57f83"
integrity sha512-WUtzjD6+1JGpgS6Yv2Qo/h4jM77LkkasPrywsetmtj/6zyVQWrkk7tKHTCjhAJtdinctcROwIIcwLsELi0nDHg== integrity sha512-RNx+5gXkI902rWlFbMSHEYd+FAoiXKxfKrmj1hWiK4GSwhY+vike3oAcdGjcpkFyAG1o+5MkL5p9951eHtn1RA==
dependencies: dependencies:
moment "^2.30.1" moment "^2.30.1"
"@abp/popper.js@~10.4.0": "@abp/popper.js@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0.tgz#9d8d09c4e18020b6a75ba30daf6786606f555e84" resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.1.tgz#616691ccdd8632e84bf9419e59db841ef2ea610c"
integrity sha512-KR5wGZ/MfR1rOPcmFr5ekraYhOSRul9gqempir69hlqrFKUFqt46F9/wLWyaJ7vlsMU6o4gBo6/jE5tICIpzNw== integrity sha512-74kOjXTb4FRbg5t4dTsZ11io9iuEG38IjPyYue/1yIXVbc2hruIhcJC9V3HFZLirQv1s1rkRqmnf38kVjUiKHA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@popperjs/core" "^2.11.8" "@popperjs/core" "^2.11.8"
"@abp/select2@~10.4.0": "@abp/select2@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0.tgz#e744988abf81e2194a5850acc4ac1333e9578df8" resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.1.tgz#8729f7648073ecedc93915d3c618d10c3c557cbb"
integrity sha512-tyAdGzX32joI5vw+MUJGR0iToWCGZrbQg/zKeoCib80Zx5cn+e6GXj6wZyPbsJgVm0jZ7zBweWt3x8HzW9N8Ww== integrity sha512-BtjhMMYKcHl1ZN04L+iWhQWzzqKGbpHi8tMe6o75ZunIpVtIFlIPUpzVUI0AaH6t2sIhlrYFEoxvGxA31lcIXw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
select2 "^4.0.13" select2 "^4.0.13"
"@abp/sweetalert2@~10.4.0": "@abp/sweetalert2@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0.tgz#65cb26c8c7c9c02158c9a487969eef033fe04a73" resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.1.tgz#68b4abe96c71b05d956c362edc19ccce8b9bbe42"
integrity sha512-kyVMlfnI6MZojJlaRstdHj/CL3olOn4BszjQ155UQaDsGHUu0THmbhpfi4P0q3TCLLzcLM4pkuY3wJHPNl3ZOw== integrity sha512-6Ce7uR49sqJBkqRfR56cn6jI898+xXHbWgJV+VHN+Dm6w6WX5MbEiOnjF3VLwaq0pwI3FeoCALZAAgra6t9vVw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
sweetalert2 "^11.23.0" sweetalert2 "^11.23.0"
"@abp/timeago@~10.4.0": "@abp/timeago@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0.tgz#100fc0598e3a605346397f8a395bb96dc70f429d" resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.1.tgz#a01c3840eb3c1e67b5c9fdd0ead020acb01d6676"
integrity sha512-G0ppO7Evai3DdhSg4ozxQpvIke0t3vyg63pNdfOtAPngmuam7WBM1WemBi4u29M84WcSfmk4KuAubXO0aCJgDg== integrity sha512-sh1afPeBSsL1RNBhWRn4FOD1ZgRE8HQc0zOhCAl6Kb7WXWcDuP8RPKbGLolnpNHgXfz12lhE6TsbsNFAaCGYjg==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
timeago "^1.6.7" timeago "^1.6.7"
"@abp/utils@~10.4.0": "@abp/utils@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0.tgz#75175f798e58643c0dec1e85a502186c811e9226" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.1.tgz#b5c7b57e3c2ef8f87c0c5780995d82a7baf2ee9d"
integrity sha512-BPc7KGDcbdFZ4GonAt3SOi/gYhG+iXI76TMlAzSKMBRhBU0vxFS8I/pb7U5zX0Gjh5M+aT0l2vA3l+POCHPBfw== integrity sha512-kPp7PsaMni81vQK3J1F4j3Eem4dBlZuqIYR6QWbO+udgS5CzYGJagdw+HsOGer6YzJHhcGFfe0LcxS1z/VsFDQ==
dependencies: dependencies:
just-compare "^2.3.0" just-compare "^2.3.0"

4
modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json

@ -3,7 +3,7 @@
"name": "my-app", "name": "my-app",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0", "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.1",
"@abp/cms-kit": "10.4.0" "@abp/cms-kit": "10.4.1"
} }
} }

394
modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock

@ -2,294 +2,294 @@
# yarn lockfile v1 # yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0": "@abp/aspnetcore.mvc.ui.theme.basic@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0.tgz#c0414583f1c1fca14b0133818a63434b4fbf7df0" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.1.tgz#6691f4a120cef77ec0ba341efc45fa828cebc98a"
integrity sha512-sOg3URmFRO/18D734B56jdFuC4LflGXXpw4w1Rdd77BJxugynxcmwNOQbLYFvMfqj0eKqDOH3E4yEcmS2IT1BQ== integrity sha512-nMLbBHFUk4eAmu5kj72k9Hf9FFXlt3QWQoW3CxXEEvdynTwjSEwHMvp8zgLalyelxvKuO4tKKoYVn3fU0zUBKA==
dependencies: 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": "@abp/aspnetcore.mvc.ui.theme.shared@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0.tgz#49002e55db00c98931d27357f7ea40eeab09e2e8" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.1.tgz#b12adabcb73a99d4597509ca2b0ff0475c81218e"
integrity sha512-bNQ+WOnsfQhb98Z9YO0zZsW2K8ZEgOQ+7/86QaqoYTf+ZFvLJsICmNuHryNkCGRM1XJf9EaDZ3qSOwoOGQwS9A== integrity sha512-tlb+b2OtPXzdRTMIPcoGuzH2glTAUSwJ+Pa3tDUZiwmnsZ1WTgwF54s4pwmQxSNHpFu1okdpeP1KHw0FEEFTzw==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0" "@abp/aspnetcore.mvc.ui" "~10.4.1"
"@abp/bootstrap" "~10.4.0" "@abp/bootstrap" "~10.4.1"
"@abp/bootstrap-datepicker" "~10.4.0" "@abp/bootstrap-datepicker" "~10.4.1"
"@abp/bootstrap-daterangepicker" "~10.4.0" "@abp/bootstrap-daterangepicker" "~10.4.1"
"@abp/datatables.net-bs5" "~10.4.0" "@abp/datatables.net-bs5" "~10.4.1"
"@abp/font-awesome" "~10.4.0" "@abp/font-awesome" "~10.4.1"
"@abp/jquery-validation-unobtrusive" "~10.4.0" "@abp/jquery-validation-unobtrusive" "~10.4.1"
"@abp/lodash" "~10.4.0" "@abp/lodash" "~10.4.1"
"@abp/luxon" "~10.4.0" "@abp/luxon" "~10.4.1"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0" "@abp/malihu-custom-scrollbar-plugin" "~10.4.1"
"@abp/moment" "~10.4.0" "@abp/moment" "~10.4.1"
"@abp/select2" "~10.4.0" "@abp/select2" "~10.4.1"
"@abp/sweetalert2" "~10.4.0" "@abp/sweetalert2" "~10.4.1"
"@abp/timeago" "~10.4.0" "@abp/timeago" "~10.4.1"
"@abp/aspnetcore.mvc.ui@~10.4.0": "@abp/aspnetcore.mvc.ui@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0.tgz#24e40fdc101c411f29a87adb77baa642299e979c" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.1.tgz#b39b2379da89fbadaec1279ba71f5e1a17cb3855"
integrity sha512-0qVFthS4f4fkCv//UY2GseO+NX+XYqlamZJJwOTmv1UXFW6LxAXxuEQqWYVfFKzwk2lbkXDUcgP8NhhQ9xp3Sw== integrity sha512-KhtMaMBGVqb+RyOyzS6ZpreGbiMZ1PU4tPJq9Eo80Cynki+E1ERoM/7aFQ30vvXchMXWHyCENAY34r47G81dOA==
dependencies: dependencies:
ansi-colors "^4.1.3" ansi-colors "^4.1.3"
"@abp/bootstrap-datepicker@~10.4.0": "@abp/bootstrap-datepicker@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0.tgz#a392fd5ce31c86e9fc07f7dedbd0c56a02af341e" resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.1.tgz#b7ad625795df22396bd1cd3c74d458efd3b7d8f0"
integrity sha512-kOpuCEO64zoJ7a9JASsCLFZIjEYgN0GG/oApS2L729pv6/oEhcupWpwrnvDUhsdGOezXwLIsgTzc6tiG3HxwGA== integrity sha512-X3h3/1OJnm9o8PRyotxEkC4SZeVDAJ7VfN23OFAffraqOWj99kfhbygX6CziAPqTTbu/gUxgow9oqw15M89F2w==
dependencies: dependencies:
bootstrap-datepicker "^1.10.1" bootstrap-datepicker "^1.10.1"
"@abp/bootstrap-daterangepicker@~10.4.0": "@abp/bootstrap-daterangepicker@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0.tgz#95f68d3f488a12ede3c12352637b48782eeb031a" resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.1.tgz#a70aba1b0a0189bc8332f982289776abe86695c3"
integrity sha512-HX4HutkbPDQWBJNPDozpT1Um9mHcfV+RL+ukwEy0N4e7nD8VJyqLT/a+/FzQN7iUkwV+aNR2v5c0W+dgyqTaEA== integrity sha512-5z+7UkdfBteedbOPgq/i9aSYY6DeFIg9L97/Ema5t626+NQonG1tA1YVnrUWMi+K1di1BHbx5FEIWcPEH7rFmg==
dependencies: dependencies:
"@abp/moment" "~10.4.0" "@abp/moment" "~10.4.1"
bootstrap-daterangepicker "^3.1.0" bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~10.4.0": "@abp/bootstrap@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0.tgz#64b22bbdbf6b5bda279b21a7bae0652290b1221f" resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.1.tgz#b44949abc6fa2d20b14044dd0010147caa5d9df9"
integrity sha512-WQzXi5h1mej9twrAB6kD4aJtTNfSxpnuo1pxIOu/8GKGWoDayVY2NMQl+MCVel6dST+6EUTmuDRxc2q9qHRxLg== integrity sha512-9NZlHg0Xj/p1ffoUOKcxcfb6YXCjEdxWkmlqXx3qWM7r3yS06G5yHbQrYClnY+9SQuP2+/FtwRZ87HfH7zVg9w==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@abp/popper.js" "~10.4.0" "@abp/popper.js" "~10.4.1"
bootstrap "^5.3.8" bootstrap "^5.3.8"
"@abp/clipboard@~10.4.0": "@abp/clipboard@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.0.tgz#bac5854af4f8bcaa987d39f234edd58b675a71c8" resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.1.tgz#eec933cef5a3d740e70e8736be6a68092dece645"
integrity sha512-KTTzCDEe+wjpGLdud8MHlwnPr/NdzFDmfHtENgESdIa5KilGOwy2wv24lQ5cyJOB4ftoJzkBaHinKJxg/KU0pw== integrity sha512-xvAuXcY099h3IlBYKhLG2mwfZnTRmcu5RqBp+PJz33uOMM4ZcdzxQ5lAD73ukYX32SuSE0EJaSw5SV2jqT3RGw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
clipboard "^2.0.11" clipboard "^2.0.11"
"@abp/cms-kit.admin@~10.4.0": "@abp/cms-kit.admin@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-10.4.0.tgz#f3d2272d8ab6adb60b7b23807b1d48a174411377" resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-10.4.1.tgz#11b3359298f24522fd37c2184971a5d7757693d6"
integrity sha512-klxpGOF4aiJevsZT+7zM/TpWfoEAXlBBWSrFWNtxMNMmYisOFEX2AWCDVl2lQvoEiwTFNR+D9zhuKYFdWKQXFQ== integrity sha512-AENxQkn9s21xitgbIppA0FiqJjKTICvctx/gyITFn5NzyldENTZYvqSfBSttd9fweJoxgs6xWzaKd2aM1GvsGA==
dependencies: dependencies:
"@abp/codemirror" "~10.4.0" "@abp/codemirror" "~10.4.1"
"@abp/jstree" "~10.4.0" "@abp/jstree" "~10.4.1"
"@abp/markdown-it" "~10.4.0" "@abp/markdown-it" "~10.4.1"
"@abp/slugify" "~10.4.0" "@abp/slugify" "~10.4.1"
"@abp/tui-editor" "~10.4.0" "@abp/tui-editor" "~10.4.1"
"@abp/uppy" "~10.4.0" "@abp/uppy" "~10.4.1"
"@abp/cms-kit.public@~10.4.0": "@abp/cms-kit.public@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-10.4.0.tgz#a7f0c5b45f7cd4c6189311f4f293fa4ee09d4e2c" resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-10.4.1.tgz#d464e1e04acd6411c20403c708494b041a024d4b"
integrity sha512-LbQC0Q05fCuTa9ZXIcNYGp3b9vbdlFif/tL8LReNWVQQ2FgzjdtOoCajz9v4lfbqbjsQeH+fMir+gCQDQggYOQ== integrity sha512-e54WAu7/1yyJP6y6Ntgp75LxXR7LIvDEYlz01xdjVTVyiyU5M7QwwnNib8tNOEs4I5UDpj2pa+O7q641pOAyhA==
dependencies: dependencies:
"@abp/highlight.js" "~10.4.0" "@abp/highlight.js" "~10.4.1"
"@abp/star-rating-svg" "~10.4.0" "@abp/star-rating-svg" "~10.4.1"
"@abp/cms-kit@10.4.0": "@abp/cms-kit@10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-10.4.0.tgz#03773131bf5e74d410f4657d68179328059a04c4" resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-10.4.1.tgz#f275d861ea5012987ebe50ee3e0cff9dfc437c43"
integrity sha512-7J93H3pWbsD0fAoEJP+ELkYMlcj+bC442ypB5sLrPDOBZ2cLB4Nji4m9D/17KMIb87vu7gNQuUnk+OhjpBrmFg== integrity sha512-I2s1ma/ovMfGz2rmhkazVy1pPmPVDdV6wZoCo9G2mJA0OiqOs5sCbztIsrcOcQMKie3yczsGYLlGUr2RMrw8Xg==
dependencies: dependencies:
"@abp/cms-kit.admin" "~10.4.0" "@abp/cms-kit.admin" "~10.4.1"
"@abp/cms-kit.public" "~10.4.0" "@abp/cms-kit.public" "~10.4.1"
"@abp/codemirror@~10.4.0": "@abp/codemirror@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-10.4.0.tgz#1e5f9a37dbaaa6484f67ce57a187263b8b95b860" resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-10.4.1.tgz#450cb7bd5091fa6fdf64a4115cf91c1864c51a32"
integrity sha512-6C0AOVon9S89b+8SuBy3fuKq/CQ4rvgpJk+8o90veGm4s0BDZkyGbee/vaJItX7c3ZzAYpWdcO22ybUuJVHpJA== integrity sha512-yL0joL60tr2fpatrmu2tsSPlJNtwWU6neZURfXnWYdyP2D/LRDZK3OKw7YUA/XS7Mg5GdVfmht2DowYmWpRnQg==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
codemirror "^5.65.1" codemirror "^5.65.1"
"@abp/core@~10.4.0": "@abp/core@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0.tgz#de0c09e26d1f20451da9430d939beebb5bb6e9dd" resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.1.tgz#1a286e98b6217ae65e58bca7f65b57b86d298ae1"
integrity sha512-3yKLFqUtFo5rgBPQxWkNPsdq1bE9VKwm02yB14lu913EIYhP//akizY4uSK08BozocJNveCASQbgd66z4x6v/Q== integrity sha512-pOtbCwq7Vi244Vql3CjZ5VY4SqEUuR4VSDeZ8ZvJnP/aQWaHb229z1iZMcjg/L+Mu0J3eHQso7rrP7n+4ww0Jw==
dependencies: dependencies:
"@abp/utils" "~10.4.0" "@abp/utils" "~10.4.1"
"@abp/datatables.net-bs5@~10.4.0": "@abp/datatables.net-bs5@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0.tgz#a24eef99399324e4b89a00a204d2c4c2de379da1" resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.1.tgz#0ee2cb1a2f22146fd3561eab6ed412ac4301b928"
integrity sha512-T4f7e6sR1qHcvygNUNfdPWsK61C3NQORV35Lzpl98eDwY8XLg2/RLAegpFI8GjESVy2+2PCKVqUoSYZtXaMFmw== integrity sha512-bXl2JUpa7/IGWq9IsBlp+OVRdeIiGaaXbyKONSdI1LGeY9L6W3cHF90E68c+DaCUlcTkRUgshWvEhxSRAEEDnQ==
dependencies: dependencies:
"@abp/datatables.net" "~10.4.0" "@abp/datatables.net" "~10.4.1"
datatables.net-bs5 "^2.3.4" datatables.net-bs5 "^2.3.4"
"@abp/datatables.net@~10.4.0": "@abp/datatables.net@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0.tgz#ab48f6e3ccae8d0644f0c01011ff98cc6ca16181" resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.1.tgz#62b2ca692ee7b59317ac46a80e46fc2f8df576ef"
integrity sha512-esIUozaSEa29G7bdWbEZr22fRChaTuGfNNB8rgBHmVKwgkbHSG7qUTgsfGhNz0T2vfDsK3X37n55xmSdE9RElg== integrity sha512-Lz0DUwlICTZiz0C7F2s32ddFOmlTQmEK+bUuigh7miir/lTb0GuoDIeDRQxFM7ucdsc3wo+ImbDwPvRI35XF4A==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
datatables.net "^2.3.4" datatables.net "^2.3.4"
"@abp/font-awesome@~10.4.0": "@abp/font-awesome@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0.tgz#327979191615fff571f0ea2e99d01bbcca5378ce" resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.1.tgz#936674af94d418eb4ebf5b42fbf8694e78139172"
integrity sha512-RBzDSi/hrjhLKc7h6Kf9CQqC+LCGvS7h8HrRVaIzWCZSeqTfIMFpixjCUrNgkqWI0bU4NDUKXZ4XCOv4nPVlBg== integrity sha512-FEY5XWyjLFbcydJyguim/nd6T0CS4K3xKg0wdciUEz4Nb8dAvi4mUeMcQNrD5qEtuhOA1OuGKbiG5TtTN2X/bg==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@fortawesome/fontawesome-free" "^7.0.1" "@fortawesome/fontawesome-free" "^7.0.1"
"@abp/highlight.js@~10.4.0": "@abp/highlight.js@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-10.4.0.tgz#b1b53329743f3eeb203ec35ebcf9c6e79c9fbe93" resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-10.4.1.tgz#9e956ae62c9640253db321aa7eaa31f99220fa41"
integrity sha512-L0mL/AErFsYdJbCLUu22lm/fn+Eelc0H57OQrUAzVy+22XXALiFtyq/cci3sjOcxfpf2CW/v+z0JKCouuJd7Ag== integrity sha512-AU//tBPE7jsONdZHXAS6eFsiqRCRT4p0MeasHqVfFbdZztzlGbnHr4En++9b6Jpqf0WHQts0sBr06wakmI/oVQ==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@highlightjs/cdn-assets" "~11.11.1" "@highlightjs/cdn-assets" "~11.11.1"
"@abp/jquery-validation-unobtrusive@~10.4.0": "@abp/jquery-validation-unobtrusive@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0.tgz#e0114347344931667f48e0f2de5ea4bd6f9d2a88" resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.1.tgz#b0ea174c262659215b69c6a92612b219273a091a"
integrity sha512-AJncXVB+eTSizq0fTAwLii9a0GeYFPiY+gw+Ki5pak8Pp9LQivphsW32TqQmPC3qZVuYtd4myUUraWuOTT1Adg== integrity sha512-HGb+yM26BWk1ne4iUAD2HqMbOk75xNYIA+V1ny469eh1JdWBzlI+gJOQCiFbwdxnEWDJ2QsWiN2DmLY/0SGmqQ==
dependencies: dependencies:
"@abp/jquery-validation" "~10.4.0" "@abp/jquery-validation" "~10.4.1"
jquery-validation-unobtrusive "^4.0.0" jquery-validation-unobtrusive "^4.0.0"
"@abp/jquery-validation@~10.4.0": "@abp/jquery-validation@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0.tgz#bd1ef0217c2500363f25223dd7316ba919a505b5" resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.1.tgz#21970617ca9286328b85b64501f00e444bd0ec0d"
integrity sha512-W9QiGnOpaq6uDDwBy4UEqWrP1p2UegHQShW5Cev9vr6g7Lk97UsS1Agh9lnjbvMzFSAiLl3M9gHmyMD4aU3NPA== integrity sha512-mRZdEMssYwCjZOLQEFcXQbM//jrTMCMp6P5E1acQBaRZfaTPg/mNCHmdgd9vTRRgXfaAhQhkpYSkwv3GzAXbgA==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
jquery-validation "^1.21.0" jquery-validation "^1.21.0"
"@abp/jquery@~10.4.0": "@abp/jquery@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0.tgz#7ed3f1808682717ccfa7c6ac6e8db8a8b648b1e1" resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.1.tgz#9828be045b0ae767cc6d7c2a0b4affe2aea19bf7"
integrity sha512-kjFoVIhqlaIHlEs917sIeP1sHmLWXMn+DVKaCkVQUXC2KVq+yvQRC8AZiFQVxOwLvzd9dFFpGwGZgpWkDfvhvg== integrity sha512-m9Pg0kV3oCDh0fzcseKF4InM83Ryvrhf5iXioBklshqGAXodKgnk5YIwfsSjTIcj9wMuWdpznuxC5bMo+PP7ig==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
jquery "~3.7.1" jquery "~3.7.1"
"@abp/jstree@~10.4.0": "@abp/jstree@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-10.4.0.tgz#99f49383dd016bfa66e0512603a4a02b3534b36a" resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-10.4.1.tgz#857b633756adb04199739de38a140ea53f52371e"
integrity sha512-GXcK+JZGLBwGWs3GiFK/sLQt4VJIlweXR6MymE9YvG2X9i9Q8GrhfivINhbWAttSvbBTGca0RiKG2SxiZMAyhg== integrity sha512-QszVxmUSeW1XeMELRfL6z4C6KGH51PaQf0TsE2ygyiVJiV3Xvw8dhb6DkVMlNo+7icQbDojAEJZXDBG34T7o7Q==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
jstree "^3.3.17" jstree "^3.3.17"
"@abp/lodash@~10.4.0": "@abp/lodash@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0.tgz#b6fc25b6e2fd74420ca16a5a13cb8fcd39b89efd" resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.1.tgz#f3d5532aef9772ccb38a6c7875a6b8b29db3ddc8"
integrity sha512-RuiIGAqJtSBS+4VAk4cg7Zsfj07B3xkiewCaK5j0xUcyjsCJKL1UdXe2zVNL3oE5bXTNMU7yNQWJS4knv2mfwA== integrity sha512-GcUNsy9rs2HET8v86PwCCwi9R0XOt5nklBjGhDyER+fzGSHHLFKX87WWjPulwBtxFCfEHMaYvCDAnkGO15tFwA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
lodash "^4.18.1" lodash "^4.18.1"
"@abp/luxon@~10.4.0": "@abp/luxon@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0.tgz#731d20877ec679fa518b7199128676631d030a90" resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.1.tgz#d279101a35f02e061eb08b0ac20285c17208ffc7"
integrity sha512-/hF+FBugJMkp/H9WNZxlsOy3Rl4DTeR2hqmRPI0sPcdFOixCziYrwzyHg/2Kx8cI/zHa6GRRt1B4Jz4yjQTvdw== integrity sha512-Tr8hhMzWPoiQlSHBvhxxy0viu8dw2y8JikvyDc2sQusm258vlHi4NMH3FAY7JsyeiZFH6fwlRTJjkEAsdRLlCQ==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
luxon "^3.7.2" luxon "^3.7.2"
"@abp/malihu-custom-scrollbar-plugin@~10.4.0": "@abp/malihu-custom-scrollbar-plugin@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0.tgz#e1c207d9c66cce64fcb4fe13c091c4b86b00b6d7" resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.1.tgz#fee2f4ffe0b6a56ec1afddc51217bd569be9163c"
integrity sha512-LC+imsGQganhKWybvQytATjQMXfQwfCfi6RRWREP+pejKPuHpqHzPd+AjKwZpx500K2/ZTwT62FKJ1uDiJXSKA== integrity sha512-iCvuDqoRtM0HtWToyzbox14kE9Y9E3DFRbE+sISB6vCOL+3gW+xEHmmOMzESWQ3DX+p/q8xidQMxCZsyo2l0IA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
malihu-custom-scrollbar-plugin "^3.1.5" malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/markdown-it@~10.4.0": "@abp/markdown-it@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-10.4.0.tgz#bb0bf97f13462454fc84782a09b50f637a49f200" resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-10.4.1.tgz#2f3b37b7107d7dac31b45a00a4527163e8860d41"
integrity sha512-Tb1hiZiq024WeveNJBS49HL6W+uNAGEn3NHV335wSlN9e+x4LeyYd79wj+PAfRaX9yWCXjupqrafpDZ6Nj0C7g== integrity sha512-bPfvJACsIdZFHs9ewTBzDOT6BEceea3s4fAiOcf2/xaRHXIT1H1xsg7lulEdsMSA9+sthKLHHgcGW9ao5lfXEw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
markdown-it "^14.1.0" markdown-it "^14.1.0"
"@abp/moment@~10.4.0": "@abp/moment@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0.tgz#6737898b90b579ce5e0d683657757725a4def09d" resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.1.tgz#43e8e4ebc6a4da3877b0333d463362df46e57f83"
integrity sha512-WUtzjD6+1JGpgS6Yv2Qo/h4jM77LkkasPrywsetmtj/6zyVQWrkk7tKHTCjhAJtdinctcROwIIcwLsELi0nDHg== integrity sha512-RNx+5gXkI902rWlFbMSHEYd+FAoiXKxfKrmj1hWiK4GSwhY+vike3oAcdGjcpkFyAG1o+5MkL5p9951eHtn1RA==
dependencies: dependencies:
moment "^2.30.1" moment "^2.30.1"
"@abp/popper.js@~10.4.0": "@abp/popper.js@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0.tgz#9d8d09c4e18020b6a75ba30daf6786606f555e84" resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.1.tgz#616691ccdd8632e84bf9419e59db841ef2ea610c"
integrity sha512-KR5wGZ/MfR1rOPcmFr5ekraYhOSRul9gqempir69hlqrFKUFqt46F9/wLWyaJ7vlsMU6o4gBo6/jE5tICIpzNw== integrity sha512-74kOjXTb4FRbg5t4dTsZ11io9iuEG38IjPyYue/1yIXVbc2hruIhcJC9V3HFZLirQv1s1rkRqmnf38kVjUiKHA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@popperjs/core" "^2.11.8" "@popperjs/core" "^2.11.8"
"@abp/prismjs@~10.4.0": "@abp/prismjs@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.0.tgz#0061d71d18252bc1e66e763aab6d81a7b4fe51b7" resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.1.tgz#cb1144481ba34b1150ba2587ed3940d217d16abd"
integrity sha512-kjV11XNt2uP01zlhrrScr4WA27lgZ03Cz3svA7/HHnfhFy76MHYo+Dyn7sS4Gp3UobMcf1QWHl4KQNCUnYNTOQ== integrity sha512-kC9VnxwTLLToiRXP6vHQD0nBoHQvQKHNssTHM4OsNjazToAVgqfHJyEqGsJwb1uulwR05vMspST2MbMFS8fx7g==
dependencies: dependencies:
"@abp/clipboard" "~10.4.0" "@abp/clipboard" "~10.4.1"
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
prismjs "^1.30.0" prismjs "^1.30.0"
"@abp/select2@~10.4.0": "@abp/select2@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0.tgz#e744988abf81e2194a5850acc4ac1333e9578df8" resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.1.tgz#8729f7648073ecedc93915d3c618d10c3c557cbb"
integrity sha512-tyAdGzX32joI5vw+MUJGR0iToWCGZrbQg/zKeoCib80Zx5cn+e6GXj6wZyPbsJgVm0jZ7zBweWt3x8HzW9N8Ww== integrity sha512-BtjhMMYKcHl1ZN04L+iWhQWzzqKGbpHi8tMe6o75ZunIpVtIFlIPUpzVUI0AaH6t2sIhlrYFEoxvGxA31lcIXw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
select2 "^4.0.13" select2 "^4.0.13"
"@abp/slugify@~10.4.0": "@abp/slugify@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-10.4.0.tgz#eb70ee28499f4406b738478cf4a26319ea4b9097" resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-10.4.1.tgz#838904a9f8206eb73daf0976cc24be7e79594a98"
integrity sha512-bJXo86hWHQiF9QlYHu869AcDV1sy1p7nlqWxjA3kMkZ5OvP+/7qkwuGfRzkhVhQ9MK6hcMOKwasZ6xw9UPERFQ== integrity sha512-lAcyFBiQdBVHDhoOa9QCqe3U/gd6R7bpxfSiZYI6aiGXh/2E32j9wZw70Vdl8zbBjdnzYgOd7Cniw9uMkead7w==
dependencies: dependencies:
slugify "^1.6.6" slugify "^1.6.6"
"@abp/star-rating-svg@~10.4.0": "@abp/star-rating-svg@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-10.4.0.tgz#9aa9226494be5d0d4cd99237d6bd75cedf41a0c6" resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-10.4.1.tgz#9d51107d8e349fbd5b347c05178b8a51faafc193"
integrity sha512-cvu+9ARD9dq7qWHsmb+7Ml9ITyzuUzDHBvBxt5xE4WV0e3jszJRhOJ4TROlh15Z8ymZtStMVb2m1F2JGx1i3xA== integrity sha512-zerJfy1wjFnl3UN8rPrqxSWXv9q7Os1Y/G5hJWCX5JPfgka9lMATruvBpGBg6pEOUJGkYDS4NJamL4zDpOsu5g==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
star-rating-svg "^3.5.0" star-rating-svg "^3.5.0"
"@abp/sweetalert2@~10.4.0": "@abp/sweetalert2@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0.tgz#65cb26c8c7c9c02158c9a487969eef033fe04a73" resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.1.tgz#68b4abe96c71b05d956c362edc19ccce8b9bbe42"
integrity sha512-kyVMlfnI6MZojJlaRstdHj/CL3olOn4BszjQ155UQaDsGHUu0THmbhpfi4P0q3TCLLzcLM4pkuY3wJHPNl3ZOw== integrity sha512-6Ce7uR49sqJBkqRfR56cn6jI898+xXHbWgJV+VHN+Dm6w6WX5MbEiOnjF3VLwaq0pwI3FeoCALZAAgra6t9vVw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
sweetalert2 "^11.23.0" sweetalert2 "^11.23.0"
"@abp/timeago@~10.4.0": "@abp/timeago@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0.tgz#100fc0598e3a605346397f8a395bb96dc70f429d" resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.1.tgz#a01c3840eb3c1e67b5c9fdd0ead020acb01d6676"
integrity sha512-G0ppO7Evai3DdhSg4ozxQpvIke0t3vyg63pNdfOtAPngmuam7WBM1WemBi4u29M84WcSfmk4KuAubXO0aCJgDg== integrity sha512-sh1afPeBSsL1RNBhWRn4FOD1ZgRE8HQc0zOhCAl6Kb7WXWcDuP8RPKbGLolnpNHgXfz12lhE6TsbsNFAaCGYjg==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
timeago "^1.6.7" timeago "^1.6.7"
"@abp/tui-editor@~10.4.0": "@abp/tui-editor@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-10.4.0.tgz#8041b62eb464f4a8adddc043904e2bc8475d45e3" resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-10.4.1.tgz#e7012ed869a5de852f454e14fbe1342c55d1c07b"
integrity sha512-SbbAs3V94UaF6xaMIaRNpDE9KSvOU45XZl24jCWjCAwkyTkN0bHlpnqs0UuJUtCnnQAzj4C+AvVy5ykrDKGtIg== integrity sha512-lFcSkESJnAjIqiU12F19U8BYko/jLTXWN6s0uqvgQ14qhPPWMr13PidMjijj/x/m0wtFg2lHwbAFt3nl+6O+sA==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
"@abp/prismjs" "~10.4.0" "@abp/prismjs" "~10.4.1"
"@abp/uppy@~10.4.0": "@abp/uppy@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-10.4.0.tgz#876650cda8f5187cf9e4a0f4731632fed9be1356" resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-10.4.1.tgz#81aaf6f0779fb5ba9d1ca5297e2d4ea57e17f4d5"
integrity sha512-E+86xlPFZemx56K6nK1gbDC1pcYHMEWw03QOfZwtwP5UGU5JvyyW6CpV3M8PdfBRo4sx+lRqOW2I/X8MIsbTig== integrity sha512-olNAAg+jjBFRQYIUhjx4PR5TcGhA3aAOPMySCVSxDhA3nWavc1Tb60SkqlOHScqmxM6RonooUTRVtD9G5RKixA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
uppy "^5.1.2" uppy "^5.1.2"
"@abp/utils@~10.4.0": "@abp/utils@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0.tgz#75175f798e58643c0dec1e85a502186c811e9226" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.1.tgz#b5c7b57e3c2ef8f87c0c5780995d82a7baf2ee9d"
integrity sha512-BPc7KGDcbdFZ4GonAt3SOi/gYhG+iXI76TMlAzSKMBRhBU0vxFS8I/pb7U5zX0Gjh5M+aT0l2vA3l+POCHPBfw== integrity sha512-kPp7PsaMni81vQK3J1F4j3Eem4dBlZuqIYR6QWbO+udgS5CzYGJagdw+HsOGer6YzJHhcGFfe0LcxS1z/VsFDQ==
dependencies: dependencies:
just-compare "^2.3.0" just-compare "^2.3.0"

4
modules/docs/app/VoloDocs.Web/package.json

@ -3,7 +3,7 @@
"name": "volo.docstestapp", "name": "volo.docstestapp",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0", "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.1",
"@abp/docs": "~10.4.0" "@abp/docs": "~10.4.1"
} }
} }

298
modules/docs/app/VoloDocs.Web/yarn.lock

@ -2,222 +2,222 @@
# yarn lockfile v1 # yarn lockfile v1
"@abp/anchor-js@~10.4.0": "@abp/anchor-js@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-10.4.0.tgz#32a6e61e7d2ca6cd5b5b1fc53a684bd52d1fc710" resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-10.4.1.tgz#93e482ab4a0a34c5764284246d3515fd1ba78a88"
integrity sha512-/ZmG6hbKFRY1w18jNdhfEX9614d/OAH++BTOGuQ/1ZQUZqxu+FTLLlDMczce3UmL4d5devYocu5f/x2JnKROZw== integrity sha512-6Vmwie96ThlGYGouP7dteTuviP0nIzg5gpMOSwL037Buu8M6a+ScXhQ9VsPdlTCf/kjwoCG1jfyIpCyp6YGmXw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
anchor-js "^5.0.0" anchor-js "^5.0.0"
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0": "@abp/aspnetcore.mvc.ui.theme.basic@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0.tgz#c0414583f1c1fca14b0133818a63434b4fbf7df0" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.1.tgz#6691f4a120cef77ec0ba341efc45fa828cebc98a"
integrity sha512-sOg3URmFRO/18D734B56jdFuC4LflGXXpw4w1Rdd77BJxugynxcmwNOQbLYFvMfqj0eKqDOH3E4yEcmS2IT1BQ== integrity sha512-nMLbBHFUk4eAmu5kj72k9Hf9FFXlt3QWQoW3CxXEEvdynTwjSEwHMvp8zgLalyelxvKuO4tKKoYVn3fU0zUBKA==
dependencies: 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": "@abp/aspnetcore.mvc.ui.theme.shared@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0.tgz#49002e55db00c98931d27357f7ea40eeab09e2e8" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.1.tgz#b12adabcb73a99d4597509ca2b0ff0475c81218e"
integrity sha512-bNQ+WOnsfQhb98Z9YO0zZsW2K8ZEgOQ+7/86QaqoYTf+ZFvLJsICmNuHryNkCGRM1XJf9EaDZ3qSOwoOGQwS9A== integrity sha512-tlb+b2OtPXzdRTMIPcoGuzH2glTAUSwJ+Pa3tDUZiwmnsZ1WTgwF54s4pwmQxSNHpFu1okdpeP1KHw0FEEFTzw==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0" "@abp/aspnetcore.mvc.ui" "~10.4.1"
"@abp/bootstrap" "~10.4.0" "@abp/bootstrap" "~10.4.1"
"@abp/bootstrap-datepicker" "~10.4.0" "@abp/bootstrap-datepicker" "~10.4.1"
"@abp/bootstrap-daterangepicker" "~10.4.0" "@abp/bootstrap-daterangepicker" "~10.4.1"
"@abp/datatables.net-bs5" "~10.4.0" "@abp/datatables.net-bs5" "~10.4.1"
"@abp/font-awesome" "~10.4.0" "@abp/font-awesome" "~10.4.1"
"@abp/jquery-validation-unobtrusive" "~10.4.0" "@abp/jquery-validation-unobtrusive" "~10.4.1"
"@abp/lodash" "~10.4.0" "@abp/lodash" "~10.4.1"
"@abp/luxon" "~10.4.0" "@abp/luxon" "~10.4.1"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0" "@abp/malihu-custom-scrollbar-plugin" "~10.4.1"
"@abp/moment" "~10.4.0" "@abp/moment" "~10.4.1"
"@abp/select2" "~10.4.0" "@abp/select2" "~10.4.1"
"@abp/sweetalert2" "~10.4.0" "@abp/sweetalert2" "~10.4.1"
"@abp/timeago" "~10.4.0" "@abp/timeago" "~10.4.1"
"@abp/aspnetcore.mvc.ui@~10.4.0": "@abp/aspnetcore.mvc.ui@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0.tgz#24e40fdc101c411f29a87adb77baa642299e979c" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.1.tgz#b39b2379da89fbadaec1279ba71f5e1a17cb3855"
integrity sha512-0qVFthS4f4fkCv//UY2GseO+NX+XYqlamZJJwOTmv1UXFW6LxAXxuEQqWYVfFKzwk2lbkXDUcgP8NhhQ9xp3Sw== integrity sha512-KhtMaMBGVqb+RyOyzS6ZpreGbiMZ1PU4tPJq9Eo80Cynki+E1ERoM/7aFQ30vvXchMXWHyCENAY34r47G81dOA==
dependencies: dependencies:
ansi-colors "^4.1.3" ansi-colors "^4.1.3"
"@abp/bootstrap-datepicker@~10.4.0": "@abp/bootstrap-datepicker@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0.tgz#a392fd5ce31c86e9fc07f7dedbd0c56a02af341e" resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.1.tgz#b7ad625795df22396bd1cd3c74d458efd3b7d8f0"
integrity sha512-kOpuCEO64zoJ7a9JASsCLFZIjEYgN0GG/oApS2L729pv6/oEhcupWpwrnvDUhsdGOezXwLIsgTzc6tiG3HxwGA== integrity sha512-X3h3/1OJnm9o8PRyotxEkC4SZeVDAJ7VfN23OFAffraqOWj99kfhbygX6CziAPqTTbu/gUxgow9oqw15M89F2w==
dependencies: dependencies:
bootstrap-datepicker "^1.10.1" bootstrap-datepicker "^1.10.1"
"@abp/bootstrap-daterangepicker@~10.4.0": "@abp/bootstrap-daterangepicker@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0.tgz#95f68d3f488a12ede3c12352637b48782eeb031a" resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.1.tgz#a70aba1b0a0189bc8332f982289776abe86695c3"
integrity sha512-HX4HutkbPDQWBJNPDozpT1Um9mHcfV+RL+ukwEy0N4e7nD8VJyqLT/a+/FzQN7iUkwV+aNR2v5c0W+dgyqTaEA== integrity sha512-5z+7UkdfBteedbOPgq/i9aSYY6DeFIg9L97/Ema5t626+NQonG1tA1YVnrUWMi+K1di1BHbx5FEIWcPEH7rFmg==
dependencies: dependencies:
"@abp/moment" "~10.4.0" "@abp/moment" "~10.4.1"
bootstrap-daterangepicker "^3.1.0" bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~10.4.0": "@abp/bootstrap@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0.tgz#64b22bbdbf6b5bda279b21a7bae0652290b1221f" resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.1.tgz#b44949abc6fa2d20b14044dd0010147caa5d9df9"
integrity sha512-WQzXi5h1mej9twrAB6kD4aJtTNfSxpnuo1pxIOu/8GKGWoDayVY2NMQl+MCVel6dST+6EUTmuDRxc2q9qHRxLg== integrity sha512-9NZlHg0Xj/p1ffoUOKcxcfb6YXCjEdxWkmlqXx3qWM7r3yS06G5yHbQrYClnY+9SQuP2+/FtwRZ87HfH7zVg9w==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@abp/popper.js" "~10.4.0" "@abp/popper.js" "~10.4.1"
bootstrap "^5.3.8" bootstrap "^5.3.8"
"@abp/clipboard@~10.4.0": "@abp/clipboard@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.0.tgz#bac5854af4f8bcaa987d39f234edd58b675a71c8" resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.1.tgz#eec933cef5a3d740e70e8736be6a68092dece645"
integrity sha512-KTTzCDEe+wjpGLdud8MHlwnPr/NdzFDmfHtENgESdIa5KilGOwy2wv24lQ5cyJOB4ftoJzkBaHinKJxg/KU0pw== integrity sha512-xvAuXcY099h3IlBYKhLG2mwfZnTRmcu5RqBp+PJz33uOMM4ZcdzxQ5lAD73ukYX32SuSE0EJaSw5SV2jqT3RGw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
clipboard "^2.0.11" clipboard "^2.0.11"
"@abp/core@~10.4.0": "@abp/core@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0.tgz#de0c09e26d1f20451da9430d939beebb5bb6e9dd" resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.1.tgz#1a286e98b6217ae65e58bca7f65b57b86d298ae1"
integrity sha512-3yKLFqUtFo5rgBPQxWkNPsdq1bE9VKwm02yB14lu913EIYhP//akizY4uSK08BozocJNveCASQbgd66z4x6v/Q== integrity sha512-pOtbCwq7Vi244Vql3CjZ5VY4SqEUuR4VSDeZ8ZvJnP/aQWaHb229z1iZMcjg/L+Mu0J3eHQso7rrP7n+4ww0Jw==
dependencies: dependencies:
"@abp/utils" "~10.4.0" "@abp/utils" "~10.4.1"
"@abp/datatables.net-bs5@~10.4.0": "@abp/datatables.net-bs5@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0.tgz#a24eef99399324e4b89a00a204d2c4c2de379da1" resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.1.tgz#0ee2cb1a2f22146fd3561eab6ed412ac4301b928"
integrity sha512-T4f7e6sR1qHcvygNUNfdPWsK61C3NQORV35Lzpl98eDwY8XLg2/RLAegpFI8GjESVy2+2PCKVqUoSYZtXaMFmw== integrity sha512-bXl2JUpa7/IGWq9IsBlp+OVRdeIiGaaXbyKONSdI1LGeY9L6W3cHF90E68c+DaCUlcTkRUgshWvEhxSRAEEDnQ==
dependencies: dependencies:
"@abp/datatables.net" "~10.4.0" "@abp/datatables.net" "~10.4.1"
datatables.net-bs5 "^2.3.4" datatables.net-bs5 "^2.3.4"
"@abp/datatables.net@~10.4.0": "@abp/datatables.net@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0.tgz#ab48f6e3ccae8d0644f0c01011ff98cc6ca16181" resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.1.tgz#62b2ca692ee7b59317ac46a80e46fc2f8df576ef"
integrity sha512-esIUozaSEa29G7bdWbEZr22fRChaTuGfNNB8rgBHmVKwgkbHSG7qUTgsfGhNz0T2vfDsK3X37n55xmSdE9RElg== integrity sha512-Lz0DUwlICTZiz0C7F2s32ddFOmlTQmEK+bUuigh7miir/lTb0GuoDIeDRQxFM7ucdsc3wo+ImbDwPvRI35XF4A==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
datatables.net "^2.3.4" datatables.net "^2.3.4"
"@abp/docs@~10.4.0": "@abp/docs@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-10.4.0.tgz#b5ad9177888b2421cd5bfc417d2ae2260ded2a63" resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-10.4.1.tgz#eac6736b3f5f0073b278df88327506b8a01064ce"
integrity sha512-JMdqns4h/Bm9yOu2aXz6LmxGvTnWRTlZ3gFUKV3KiVy0FZfX09DhGh1zZbpr2lBxkSjhjBzcLYptLlUjIL6bzA== integrity sha512-U3R6IgLwj2Gkup1EgFWFAEoWMkC3P7EQztQV2EsMZmqirr4CgM0DxoBd29h/gN6cAYX3q7Vwwo+j59dR+JNssQ==
dependencies: dependencies:
"@abp/anchor-js" "~10.4.0" "@abp/anchor-js" "~10.4.1"
"@abp/clipboard" "~10.4.0" "@abp/clipboard" "~10.4.1"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0" "@abp/malihu-custom-scrollbar-plugin" "~10.4.1"
"@abp/popper.js" "~10.4.0" "@abp/popper.js" "~10.4.1"
"@abp/prismjs" "~10.4.0" "@abp/prismjs" "~10.4.1"
"@abp/font-awesome@~10.4.0": "@abp/font-awesome@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0.tgz#327979191615fff571f0ea2e99d01bbcca5378ce" resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.1.tgz#936674af94d418eb4ebf5b42fbf8694e78139172"
integrity sha512-RBzDSi/hrjhLKc7h6Kf9CQqC+LCGvS7h8HrRVaIzWCZSeqTfIMFpixjCUrNgkqWI0bU4NDUKXZ4XCOv4nPVlBg== integrity sha512-FEY5XWyjLFbcydJyguim/nd6T0CS4K3xKg0wdciUEz4Nb8dAvi4mUeMcQNrD5qEtuhOA1OuGKbiG5TtTN2X/bg==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@fortawesome/fontawesome-free" "^7.0.1" "@fortawesome/fontawesome-free" "^7.0.1"
"@abp/jquery-validation-unobtrusive@~10.4.0": "@abp/jquery-validation-unobtrusive@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0.tgz#e0114347344931667f48e0f2de5ea4bd6f9d2a88" resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.1.tgz#b0ea174c262659215b69c6a92612b219273a091a"
integrity sha512-AJncXVB+eTSizq0fTAwLii9a0GeYFPiY+gw+Ki5pak8Pp9LQivphsW32TqQmPC3qZVuYtd4myUUraWuOTT1Adg== integrity sha512-HGb+yM26BWk1ne4iUAD2HqMbOk75xNYIA+V1ny469eh1JdWBzlI+gJOQCiFbwdxnEWDJ2QsWiN2DmLY/0SGmqQ==
dependencies: dependencies:
"@abp/jquery-validation" "~10.4.0" "@abp/jquery-validation" "~10.4.1"
jquery-validation-unobtrusive "^4.0.0" jquery-validation-unobtrusive "^4.0.0"
"@abp/jquery-validation@~10.4.0": "@abp/jquery-validation@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0.tgz#bd1ef0217c2500363f25223dd7316ba919a505b5" resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.1.tgz#21970617ca9286328b85b64501f00e444bd0ec0d"
integrity sha512-W9QiGnOpaq6uDDwBy4UEqWrP1p2UegHQShW5Cev9vr6g7Lk97UsS1Agh9lnjbvMzFSAiLl3M9gHmyMD4aU3NPA== integrity sha512-mRZdEMssYwCjZOLQEFcXQbM//jrTMCMp6P5E1acQBaRZfaTPg/mNCHmdgd9vTRRgXfaAhQhkpYSkwv3GzAXbgA==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
jquery-validation "^1.21.0" jquery-validation "^1.21.0"
"@abp/jquery@~10.4.0": "@abp/jquery@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0.tgz#7ed3f1808682717ccfa7c6ac6e8db8a8b648b1e1" resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.1.tgz#9828be045b0ae767cc6d7c2a0b4affe2aea19bf7"
integrity sha512-kjFoVIhqlaIHlEs917sIeP1sHmLWXMn+DVKaCkVQUXC2KVq+yvQRC8AZiFQVxOwLvzd9dFFpGwGZgpWkDfvhvg== integrity sha512-m9Pg0kV3oCDh0fzcseKF4InM83Ryvrhf5iXioBklshqGAXodKgnk5YIwfsSjTIcj9wMuWdpznuxC5bMo+PP7ig==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
jquery "~3.7.1" jquery "~3.7.1"
"@abp/lodash@~10.4.0": "@abp/lodash@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0.tgz#b6fc25b6e2fd74420ca16a5a13cb8fcd39b89efd" resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.1.tgz#f3d5532aef9772ccb38a6c7875a6b8b29db3ddc8"
integrity sha512-RuiIGAqJtSBS+4VAk4cg7Zsfj07B3xkiewCaK5j0xUcyjsCJKL1UdXe2zVNL3oE5bXTNMU7yNQWJS4knv2mfwA== integrity sha512-GcUNsy9rs2HET8v86PwCCwi9R0XOt5nklBjGhDyER+fzGSHHLFKX87WWjPulwBtxFCfEHMaYvCDAnkGO15tFwA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
lodash "^4.18.1" lodash "^4.18.1"
"@abp/luxon@~10.4.0": "@abp/luxon@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0.tgz#731d20877ec679fa518b7199128676631d030a90" resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.1.tgz#d279101a35f02e061eb08b0ac20285c17208ffc7"
integrity sha512-/hF+FBugJMkp/H9WNZxlsOy3Rl4DTeR2hqmRPI0sPcdFOixCziYrwzyHg/2Kx8cI/zHa6GRRt1B4Jz4yjQTvdw== integrity sha512-Tr8hhMzWPoiQlSHBvhxxy0viu8dw2y8JikvyDc2sQusm258vlHi4NMH3FAY7JsyeiZFH6fwlRTJjkEAsdRLlCQ==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
luxon "^3.7.2" luxon "^3.7.2"
"@abp/malihu-custom-scrollbar-plugin@~10.4.0": "@abp/malihu-custom-scrollbar-plugin@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0.tgz#e1c207d9c66cce64fcb4fe13c091c4b86b00b6d7" resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.1.tgz#fee2f4ffe0b6a56ec1afddc51217bd569be9163c"
integrity sha512-LC+imsGQganhKWybvQytATjQMXfQwfCfi6RRWREP+pejKPuHpqHzPd+AjKwZpx500K2/ZTwT62FKJ1uDiJXSKA== integrity sha512-iCvuDqoRtM0HtWToyzbox14kE9Y9E3DFRbE+sISB6vCOL+3gW+xEHmmOMzESWQ3DX+p/q8xidQMxCZsyo2l0IA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
malihu-custom-scrollbar-plugin "^3.1.5" malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~10.4.0": "@abp/moment@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0.tgz#6737898b90b579ce5e0d683657757725a4def09d" resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.1.tgz#43e8e4ebc6a4da3877b0333d463362df46e57f83"
integrity sha512-WUtzjD6+1JGpgS6Yv2Qo/h4jM77LkkasPrywsetmtj/6zyVQWrkk7tKHTCjhAJtdinctcROwIIcwLsELi0nDHg== integrity sha512-RNx+5gXkI902rWlFbMSHEYd+FAoiXKxfKrmj1hWiK4GSwhY+vike3oAcdGjcpkFyAG1o+5MkL5p9951eHtn1RA==
dependencies: dependencies:
moment "^2.30.1" moment "^2.30.1"
"@abp/popper.js@~10.4.0": "@abp/popper.js@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0.tgz#9d8d09c4e18020b6a75ba30daf6786606f555e84" resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.1.tgz#616691ccdd8632e84bf9419e59db841ef2ea610c"
integrity sha512-KR5wGZ/MfR1rOPcmFr5ekraYhOSRul9gqempir69hlqrFKUFqt46F9/wLWyaJ7vlsMU6o4gBo6/jE5tICIpzNw== integrity sha512-74kOjXTb4FRbg5t4dTsZ11io9iuEG38IjPyYue/1yIXVbc2hruIhcJC9V3HFZLirQv1s1rkRqmnf38kVjUiKHA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@popperjs/core" "^2.11.8" "@popperjs/core" "^2.11.8"
"@abp/prismjs@~10.4.0": "@abp/prismjs@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.0.tgz#0061d71d18252bc1e66e763aab6d81a7b4fe51b7" resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.1.tgz#cb1144481ba34b1150ba2587ed3940d217d16abd"
integrity sha512-kjV11XNt2uP01zlhrrScr4WA27lgZ03Cz3svA7/HHnfhFy76MHYo+Dyn7sS4Gp3UobMcf1QWHl4KQNCUnYNTOQ== integrity sha512-kC9VnxwTLLToiRXP6vHQD0nBoHQvQKHNssTHM4OsNjazToAVgqfHJyEqGsJwb1uulwR05vMspST2MbMFS8fx7g==
dependencies: dependencies:
"@abp/clipboard" "~10.4.0" "@abp/clipboard" "~10.4.1"
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
prismjs "^1.30.0" prismjs "^1.30.0"
"@abp/select2@~10.4.0": "@abp/select2@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0.tgz#e744988abf81e2194a5850acc4ac1333e9578df8" resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.1.tgz#8729f7648073ecedc93915d3c618d10c3c557cbb"
integrity sha512-tyAdGzX32joI5vw+MUJGR0iToWCGZrbQg/zKeoCib80Zx5cn+e6GXj6wZyPbsJgVm0jZ7zBweWt3x8HzW9N8Ww== integrity sha512-BtjhMMYKcHl1ZN04L+iWhQWzzqKGbpHi8tMe6o75ZunIpVtIFlIPUpzVUI0AaH6t2sIhlrYFEoxvGxA31lcIXw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
select2 "^4.0.13" select2 "^4.0.13"
"@abp/sweetalert2@~10.4.0": "@abp/sweetalert2@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0.tgz#65cb26c8c7c9c02158c9a487969eef033fe04a73" resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.1.tgz#68b4abe96c71b05d956c362edc19ccce8b9bbe42"
integrity sha512-kyVMlfnI6MZojJlaRstdHj/CL3olOn4BszjQ155UQaDsGHUu0THmbhpfi4P0q3TCLLzcLM4pkuY3wJHPNl3ZOw== integrity sha512-6Ce7uR49sqJBkqRfR56cn6jI898+xXHbWgJV+VHN+Dm6w6WX5MbEiOnjF3VLwaq0pwI3FeoCALZAAgra6t9vVw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
sweetalert2 "^11.23.0" sweetalert2 "^11.23.0"
"@abp/timeago@~10.4.0": "@abp/timeago@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0.tgz#100fc0598e3a605346397f8a395bb96dc70f429d" resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.1.tgz#a01c3840eb3c1e67b5c9fdd0ead020acb01d6676"
integrity sha512-G0ppO7Evai3DdhSg4ozxQpvIke0t3vyg63pNdfOtAPngmuam7WBM1WemBi4u29M84WcSfmk4KuAubXO0aCJgDg== integrity sha512-sh1afPeBSsL1RNBhWRn4FOD1ZgRE8HQc0zOhCAl6Kb7WXWcDuP8RPKbGLolnpNHgXfz12lhE6TsbsNFAaCGYjg==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
timeago "^1.6.7" timeago "^1.6.7"
"@abp/utils@~10.4.0": "@abp/utils@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0.tgz#75175f798e58643c0dec1e85a502186c811e9226" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.1.tgz#b5c7b57e3c2ef8f87c0c5780995d82a7baf2ee9d"
integrity sha512-BPc7KGDcbdFZ4GonAt3SOi/gYhG+iXI76TMlAzSKMBRhBU0vxFS8I/pb7U5zX0Gjh5M+aT0l2vA3l+POCHPBfw== integrity sha512-kPp7PsaMni81vQK3J1F4j3Eem4dBlZuqIYR6QWbO+udgS5CzYGJagdw+HsOGer6YzJHhcGFfe0LcxS1z/VsFDQ==
dependencies: dependencies:
just-compare "^2.3.0" just-compare "^2.3.0"

13
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 groupDto = CreateFeatureGroupDto(group);
var includedFeatures = new HashSet<FeatureDefinition>();
foreach (var featureDefinition in group.GetFeaturesWithChildren()) foreach (var featureDefinition in group.GetFeaturesWithChildren())
{ {
if (providerName == TenantFeatureValueProvider.ProviderName && if (providerName == TenantFeatureValueProvider.ProviderName &&
@ -48,6 +49,18 @@ public class FeatureAppService : FeatureManagementAppServiceBase, IFeatureAppSer
continue; 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); var feature = await FeatureManager.GetOrNullWithProviderAsync(featureDefinition.Name, providerName, providerKey);
groupDto.Features.Add(CreateFeatureDto(feature, featureDefinition)); groupDto.Features.Add(CreateFeatureDto(feature, featureDefinition));
} }

21
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) 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); var featureNameValueWithGrantedProvider = new FeatureNameValueWithGrantedProvider(feature.Name, null);
foreach (var provider in providerList) foreach (var provider in featureProviderList)
{ {
string pk = null; string pk = null;
if (provider.Compatible(providerName)) if (provider.Compatible(providerName))
@ -137,6 +146,11 @@ public class FeatureManager : IFeatureManager, ISingletonDependency
throw new FeatureValueInvalidException(feature.DisplayName.Localize(StringLocalizerFactory)); 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 var providers = Enumerable
.Reverse(Providers) .Reverse(Providers)
.SkipWhile(p => p.Name != providerName) .SkipWhile(p => p.Name != providerName)
@ -195,6 +209,11 @@ public class FeatureManager : IFeatureManager, ISingletonDependency
providers = providers.SkipWhile(c => c.Name != providerName); 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); var featureNameValueWithGrantedProvider = new FeatureNameValueWithGrantedProvider(name, null);
foreach (var provider in providers) foreach (var provider in providers)
{ {

66
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); 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<AbpException>(async () =>
{
await _featureAppService.UpdateAsync(
EditionFeatureValueProvider.ProviderName,
TestEditionIds.Regular.ToString(),
new UpdateFeaturesDto
{
Features = new List<UpdateFeatureDto>
{
new UpdateFeatureDto
{
Name = TestFeatureDefinitionProvider.TenantOnlyFeature,
Value = true.ToString().ToLowerInvariant()
}
}
});
});
}
private void Login(Guid userId) private void Login(Guid userId)
{ {
_currentUser.Id.Returns(userId); _currentUser.Id.Returns(userId);

113
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"); await _featureManager.SetAsync(TestFeatureDefinitionProvider.EmailSupport, "true", "UndefinedProvider", "Test");
}); });
exception.Message.ShouldBe("Unknown feature value provider: UndefinedProvider"); 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<AbpException>(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");
}
} }

27
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 UserCount = "UserCount";
public const string ProjectCount = "ProjectCount"; public const string ProjectCount = "ProjectCount";
public const string BackupCount = "BackupCount"; 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) public override void Define(IFeatureDefinitionContext context)
{ {
@ -22,6 +26,29 @@ public class TestFeatureDefinitionProvider : FeatureDefinitionProvider
valueType: new ToggleStringValueType() 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( var emailSupport = group.AddFeature(
EmailSupport, EmailSupport,
"true", "true",

1
modules/identity/src/Volo.Abp.Identity.Blazor.MudBlazor/Pages/Identity/UserManagement.razor

@ -24,6 +24,7 @@
<MudItem xs="12" sm="4"> <MudItem xs="12" sm="4">
<MudTextField Margin="Margin.Dense" @bind-Value="GetListInput.Filter" <MudTextField Margin="Margin.Dense" @bind-Value="GetListInput.Filter"
Placeholder="@L["Search"]" Placeholder="@L["Search"]"
UserAttributes="@(new Dictionary<string, object> { { "aria-label", L["Search"].Value } })"
Adornment="Adornment.Start" Adornment="Adornment.Start"
AdornmentIcon="@Icons.Material.Filled.Search" AdornmentIcon="@Icons.Material.Filled.Search"
Immediate="true" Immediate="true"

36
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.Net.Http;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Identity;
using Shouldly; using Shouldly;
using Volo.Abp.Uow;
using Xunit; using Xunit;
namespace Volo.Abp.Identity.AspNetCore; namespace Volo.Abp.Identity.AspNetCore;
@ -45,4 +47,36 @@ public class AbpSignInManager_Tests : AbpIdentityAspNetCoreTestBase
result.ShouldBe("NotAllowed"); 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<IdentityUserManager>();
var unitOfWorkManager = GetRequiredService<IUnitOfWorkManager>();
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");
}
} }

2
modules/openiddict/app/OpenIddict.Demo.Server/package.json

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

20
modules/openiddict/app/angular/package.json

@ -12,15 +12,15 @@
}, },
"private": true, "private": true,
"dependencies": { "dependencies": {
"@abp/ng.account": "~10.4.0", "@abp/ng.account": "~10.4.1",
"@abp/ng.components": "~10.4.0", "@abp/ng.components": "~10.4.1",
"@abp/ng.core": "~10.4.0", "@abp/ng.core": "~10.4.1",
"@abp/ng.oauth": "~10.4.0", "@abp/ng.oauth": "~10.4.1",
"@abp/ng.identity": "~10.4.0", "@abp/ng.identity": "~10.4.1",
"@abp/ng.setting-management": "~10.4.0", "@abp/ng.setting-management": "~10.4.1",
"@abp/ng.tenant-management": "~10.4.0", "@abp/ng.tenant-management": "~10.4.1",
"@abp/ng.theme.shared": "~10.4.0", "@abp/ng.theme.shared": "~10.4.1",
"@abp/ng.theme.lepton-x": "~5.4.0", "@abp/ng.theme.lepton-x": "~5.4.1",
"@angular/animations": "^15.0.1", "@angular/animations": "^15.0.1",
"@angular/common": "^15.0.1", "@angular/common": "^15.0.1",
"@angular/compiler": "^15.0.1", "@angular/compiler": "^15.0.1",
@ -36,7 +36,7 @@
"zone.js": "~0.11.4" "zone.js": "~0.11.4"
}, },
"devDependencies": { "devDependencies": {
"@abp/ng.schematics": "~10.4.0", "@abp/ng.schematics": "~10.4.1",
"@angular-devkit/build-angular": "^15.0.1", "@angular-devkit/build-angular": "^15.0.1",
"@angular-eslint/builder": "~15.1.0", "@angular-eslint/builder": "~15.1.0",
"@angular-eslint/eslint-plugin": "~15.1.0", "@angular-eslint/eslint-plugin": "~15.1.0",

1
modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor.MudBlazor/Components/PermissionManagementModal.razor

@ -13,6 +13,7 @@
<MudTextField Margin="Margin.Dense" Value="@_permissionGroupSearchText" <MudTextField Margin="Margin.Dense" Value="@_permissionGroupSearchText"
ValueChanged="@(async ([CanBeNull] string b) => await OnPermissionGroupSearchTextChangedAsync(b))" ValueChanged="@(async ([CanBeNull] string b) => await OnPermissionGroupSearchTextChangedAsync(b))"
Placeholder="@L["Search"]" Placeholder="@L["Search"]"
UserAttributes="@(new Dictionary<string, object> { { "aria-label", L["Search"].Value } })"
Adornment="Adornment.Start" Adornment="Adornment.Start"
AdornmentIcon="@Icons.Material.Filled.Search" AdornmentIcon="@Icons.Material.Filled.Search"
Immediate="true" /> Immediate="true" />

2
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)) if (permission.Providers.Any() && !permission.Providers.Contains(providerName))
{ {
//TODO: BusinessException //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())) if (!permission.MultiTenancySide.HasFlag(CurrentTenant.GetMultiTenancySide()))

2
modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json

@ -3,6 +3,6 @@
"name": "demo-app", "name": "demo-app",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0" "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.1"
} }
} }

242
modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock

@ -2,186 +2,186 @@
# yarn lockfile v1 # yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0": "@abp/aspnetcore.mvc.ui.theme.basic@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0.tgz#c0414583f1c1fca14b0133818a63434b4fbf7df0" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.1.tgz#6691f4a120cef77ec0ba341efc45fa828cebc98a"
integrity sha512-sOg3URmFRO/18D734B56jdFuC4LflGXXpw4w1Rdd77BJxugynxcmwNOQbLYFvMfqj0eKqDOH3E4yEcmS2IT1BQ== integrity sha512-nMLbBHFUk4eAmu5kj72k9Hf9FFXlt3QWQoW3CxXEEvdynTwjSEwHMvp8zgLalyelxvKuO4tKKoYVn3fU0zUBKA==
dependencies: 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": "@abp/aspnetcore.mvc.ui.theme.shared@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0.tgz#49002e55db00c98931d27357f7ea40eeab09e2e8" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.1.tgz#b12adabcb73a99d4597509ca2b0ff0475c81218e"
integrity sha512-bNQ+WOnsfQhb98Z9YO0zZsW2K8ZEgOQ+7/86QaqoYTf+ZFvLJsICmNuHryNkCGRM1XJf9EaDZ3qSOwoOGQwS9A== integrity sha512-tlb+b2OtPXzdRTMIPcoGuzH2glTAUSwJ+Pa3tDUZiwmnsZ1WTgwF54s4pwmQxSNHpFu1okdpeP1KHw0FEEFTzw==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui" "~10.4.0" "@abp/aspnetcore.mvc.ui" "~10.4.1"
"@abp/bootstrap" "~10.4.0" "@abp/bootstrap" "~10.4.1"
"@abp/bootstrap-datepicker" "~10.4.0" "@abp/bootstrap-datepicker" "~10.4.1"
"@abp/bootstrap-daterangepicker" "~10.4.0" "@abp/bootstrap-daterangepicker" "~10.4.1"
"@abp/datatables.net-bs5" "~10.4.0" "@abp/datatables.net-bs5" "~10.4.1"
"@abp/font-awesome" "~10.4.0" "@abp/font-awesome" "~10.4.1"
"@abp/jquery-validation-unobtrusive" "~10.4.0" "@abp/jquery-validation-unobtrusive" "~10.4.1"
"@abp/lodash" "~10.4.0" "@abp/lodash" "~10.4.1"
"@abp/luxon" "~10.4.0" "@abp/luxon" "~10.4.1"
"@abp/malihu-custom-scrollbar-plugin" "~10.4.0" "@abp/malihu-custom-scrollbar-plugin" "~10.4.1"
"@abp/moment" "~10.4.0" "@abp/moment" "~10.4.1"
"@abp/select2" "~10.4.0" "@abp/select2" "~10.4.1"
"@abp/sweetalert2" "~10.4.0" "@abp/sweetalert2" "~10.4.1"
"@abp/timeago" "~10.4.0" "@abp/timeago" "~10.4.1"
"@abp/aspnetcore.mvc.ui@~10.4.0": "@abp/aspnetcore.mvc.ui@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0.tgz#24e40fdc101c411f29a87adb77baa642299e979c" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.1.tgz#b39b2379da89fbadaec1279ba71f5e1a17cb3855"
integrity sha512-0qVFthS4f4fkCv//UY2GseO+NX+XYqlamZJJwOTmv1UXFW6LxAXxuEQqWYVfFKzwk2lbkXDUcgP8NhhQ9xp3Sw== integrity sha512-KhtMaMBGVqb+RyOyzS6ZpreGbiMZ1PU4tPJq9Eo80Cynki+E1ERoM/7aFQ30vvXchMXWHyCENAY34r47G81dOA==
dependencies: dependencies:
ansi-colors "^4.1.3" ansi-colors "^4.1.3"
"@abp/bootstrap-datepicker@~10.4.0": "@abp/bootstrap-datepicker@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0.tgz#a392fd5ce31c86e9fc07f7dedbd0c56a02af341e" resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.1.tgz#b7ad625795df22396bd1cd3c74d458efd3b7d8f0"
integrity sha512-kOpuCEO64zoJ7a9JASsCLFZIjEYgN0GG/oApS2L729pv6/oEhcupWpwrnvDUhsdGOezXwLIsgTzc6tiG3HxwGA== integrity sha512-X3h3/1OJnm9o8PRyotxEkC4SZeVDAJ7VfN23OFAffraqOWj99kfhbygX6CziAPqTTbu/gUxgow9oqw15M89F2w==
dependencies: dependencies:
bootstrap-datepicker "^1.10.1" bootstrap-datepicker "^1.10.1"
"@abp/bootstrap-daterangepicker@~10.4.0": "@abp/bootstrap-daterangepicker@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0.tgz#95f68d3f488a12ede3c12352637b48782eeb031a" resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.1.tgz#a70aba1b0a0189bc8332f982289776abe86695c3"
integrity sha512-HX4HutkbPDQWBJNPDozpT1Um9mHcfV+RL+ukwEy0N4e7nD8VJyqLT/a+/FzQN7iUkwV+aNR2v5c0W+dgyqTaEA== integrity sha512-5z+7UkdfBteedbOPgq/i9aSYY6DeFIg9L97/Ema5t626+NQonG1tA1YVnrUWMi+K1di1BHbx5FEIWcPEH7rFmg==
dependencies: dependencies:
"@abp/moment" "~10.4.0" "@abp/moment" "~10.4.1"
bootstrap-daterangepicker "^3.1.0" bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~10.4.0": "@abp/bootstrap@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0.tgz#64b22bbdbf6b5bda279b21a7bae0652290b1221f" resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.1.tgz#b44949abc6fa2d20b14044dd0010147caa5d9df9"
integrity sha512-WQzXi5h1mej9twrAB6kD4aJtTNfSxpnuo1pxIOu/8GKGWoDayVY2NMQl+MCVel6dST+6EUTmuDRxc2q9qHRxLg== integrity sha512-9NZlHg0Xj/p1ffoUOKcxcfb6YXCjEdxWkmlqXx3qWM7r3yS06G5yHbQrYClnY+9SQuP2+/FtwRZ87HfH7zVg9w==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@abp/popper.js" "~10.4.0" "@abp/popper.js" "~10.4.1"
bootstrap "^5.3.8" bootstrap "^5.3.8"
"@abp/core@~10.4.0": "@abp/core@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0.tgz#de0c09e26d1f20451da9430d939beebb5bb6e9dd" resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.1.tgz#1a286e98b6217ae65e58bca7f65b57b86d298ae1"
integrity sha512-3yKLFqUtFo5rgBPQxWkNPsdq1bE9VKwm02yB14lu913EIYhP//akizY4uSK08BozocJNveCASQbgd66z4x6v/Q== integrity sha512-pOtbCwq7Vi244Vql3CjZ5VY4SqEUuR4VSDeZ8ZvJnP/aQWaHb229z1iZMcjg/L+Mu0J3eHQso7rrP7n+4ww0Jw==
dependencies: dependencies:
"@abp/utils" "~10.4.0" "@abp/utils" "~10.4.1"
"@abp/datatables.net-bs5@~10.4.0": "@abp/datatables.net-bs5@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0.tgz#a24eef99399324e4b89a00a204d2c4c2de379da1" resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.1.tgz#0ee2cb1a2f22146fd3561eab6ed412ac4301b928"
integrity sha512-T4f7e6sR1qHcvygNUNfdPWsK61C3NQORV35Lzpl98eDwY8XLg2/RLAegpFI8GjESVy2+2PCKVqUoSYZtXaMFmw== integrity sha512-bXl2JUpa7/IGWq9IsBlp+OVRdeIiGaaXbyKONSdI1LGeY9L6W3cHF90E68c+DaCUlcTkRUgshWvEhxSRAEEDnQ==
dependencies: dependencies:
"@abp/datatables.net" "~10.4.0" "@abp/datatables.net" "~10.4.1"
datatables.net-bs5 "^2.3.4" datatables.net-bs5 "^2.3.4"
"@abp/datatables.net@~10.4.0": "@abp/datatables.net@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0.tgz#ab48f6e3ccae8d0644f0c01011ff98cc6ca16181" resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.1.tgz#62b2ca692ee7b59317ac46a80e46fc2f8df576ef"
integrity sha512-esIUozaSEa29G7bdWbEZr22fRChaTuGfNNB8rgBHmVKwgkbHSG7qUTgsfGhNz0T2vfDsK3X37n55xmSdE9RElg== integrity sha512-Lz0DUwlICTZiz0C7F2s32ddFOmlTQmEK+bUuigh7miir/lTb0GuoDIeDRQxFM7ucdsc3wo+ImbDwPvRI35XF4A==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
datatables.net "^2.3.4" datatables.net "^2.3.4"
"@abp/font-awesome@~10.4.0": "@abp/font-awesome@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0.tgz#327979191615fff571f0ea2e99d01bbcca5378ce" resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.1.tgz#936674af94d418eb4ebf5b42fbf8694e78139172"
integrity sha512-RBzDSi/hrjhLKc7h6Kf9CQqC+LCGvS7h8HrRVaIzWCZSeqTfIMFpixjCUrNgkqWI0bU4NDUKXZ4XCOv4nPVlBg== integrity sha512-FEY5XWyjLFbcydJyguim/nd6T0CS4K3xKg0wdciUEz4Nb8dAvi4mUeMcQNrD5qEtuhOA1OuGKbiG5TtTN2X/bg==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@fortawesome/fontawesome-free" "^7.0.1" "@fortawesome/fontawesome-free" "^7.0.1"
"@abp/jquery-validation-unobtrusive@~10.4.0": "@abp/jquery-validation-unobtrusive@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0.tgz#e0114347344931667f48e0f2de5ea4bd6f9d2a88" resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.1.tgz#b0ea174c262659215b69c6a92612b219273a091a"
integrity sha512-AJncXVB+eTSizq0fTAwLii9a0GeYFPiY+gw+Ki5pak8Pp9LQivphsW32TqQmPC3qZVuYtd4myUUraWuOTT1Adg== integrity sha512-HGb+yM26BWk1ne4iUAD2HqMbOk75xNYIA+V1ny469eh1JdWBzlI+gJOQCiFbwdxnEWDJ2QsWiN2DmLY/0SGmqQ==
dependencies: dependencies:
"@abp/jquery-validation" "~10.4.0" "@abp/jquery-validation" "~10.4.1"
jquery-validation-unobtrusive "^4.0.0" jquery-validation-unobtrusive "^4.0.0"
"@abp/jquery-validation@~10.4.0": "@abp/jquery-validation@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0.tgz#bd1ef0217c2500363f25223dd7316ba919a505b5" resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.1.tgz#21970617ca9286328b85b64501f00e444bd0ec0d"
integrity sha512-W9QiGnOpaq6uDDwBy4UEqWrP1p2UegHQShW5Cev9vr6g7Lk97UsS1Agh9lnjbvMzFSAiLl3M9gHmyMD4aU3NPA== integrity sha512-mRZdEMssYwCjZOLQEFcXQbM//jrTMCMp6P5E1acQBaRZfaTPg/mNCHmdgd9vTRRgXfaAhQhkpYSkwv3GzAXbgA==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
jquery-validation "^1.21.0" jquery-validation "^1.21.0"
"@abp/jquery@~10.4.0": "@abp/jquery@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0.tgz#7ed3f1808682717ccfa7c6ac6e8db8a8b648b1e1" resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.1.tgz#9828be045b0ae767cc6d7c2a0b4affe2aea19bf7"
integrity sha512-kjFoVIhqlaIHlEs917sIeP1sHmLWXMn+DVKaCkVQUXC2KVq+yvQRC8AZiFQVxOwLvzd9dFFpGwGZgpWkDfvhvg== integrity sha512-m9Pg0kV3oCDh0fzcseKF4InM83Ryvrhf5iXioBklshqGAXodKgnk5YIwfsSjTIcj9wMuWdpznuxC5bMo+PP7ig==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
jquery "~3.7.1" jquery "~3.7.1"
"@abp/lodash@~10.4.0": "@abp/lodash@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0.tgz#b6fc25b6e2fd74420ca16a5a13cb8fcd39b89efd" resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.1.tgz#f3d5532aef9772ccb38a6c7875a6b8b29db3ddc8"
integrity sha512-RuiIGAqJtSBS+4VAk4cg7Zsfj07B3xkiewCaK5j0xUcyjsCJKL1UdXe2zVNL3oE5bXTNMU7yNQWJS4knv2mfwA== integrity sha512-GcUNsy9rs2HET8v86PwCCwi9R0XOt5nklBjGhDyER+fzGSHHLFKX87WWjPulwBtxFCfEHMaYvCDAnkGO15tFwA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
lodash "^4.18.1" lodash "^4.18.1"
"@abp/luxon@~10.4.0": "@abp/luxon@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0.tgz#731d20877ec679fa518b7199128676631d030a90" resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.1.tgz#d279101a35f02e061eb08b0ac20285c17208ffc7"
integrity sha512-/hF+FBugJMkp/H9WNZxlsOy3Rl4DTeR2hqmRPI0sPcdFOixCziYrwzyHg/2Kx8cI/zHa6GRRt1B4Jz4yjQTvdw== integrity sha512-Tr8hhMzWPoiQlSHBvhxxy0viu8dw2y8JikvyDc2sQusm258vlHi4NMH3FAY7JsyeiZFH6fwlRTJjkEAsdRLlCQ==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
luxon "^3.7.2" luxon "^3.7.2"
"@abp/malihu-custom-scrollbar-plugin@~10.4.0": "@abp/malihu-custom-scrollbar-plugin@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0.tgz#e1c207d9c66cce64fcb4fe13c091c4b86b00b6d7" resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.1.tgz#fee2f4ffe0b6a56ec1afddc51217bd569be9163c"
integrity sha512-LC+imsGQganhKWybvQytATjQMXfQwfCfi6RRWREP+pejKPuHpqHzPd+AjKwZpx500K2/ZTwT62FKJ1uDiJXSKA== integrity sha512-iCvuDqoRtM0HtWToyzbox14kE9Y9E3DFRbE+sISB6vCOL+3gW+xEHmmOMzESWQ3DX+p/q8xidQMxCZsyo2l0IA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
malihu-custom-scrollbar-plugin "^3.1.5" malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~10.4.0": "@abp/moment@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0.tgz#6737898b90b579ce5e0d683657757725a4def09d" resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.1.tgz#43e8e4ebc6a4da3877b0333d463362df46e57f83"
integrity sha512-WUtzjD6+1JGpgS6Yv2Qo/h4jM77LkkasPrywsetmtj/6zyVQWrkk7tKHTCjhAJtdinctcROwIIcwLsELi0nDHg== integrity sha512-RNx+5gXkI902rWlFbMSHEYd+FAoiXKxfKrmj1hWiK4GSwhY+vike3oAcdGjcpkFyAG1o+5MkL5p9951eHtn1RA==
dependencies: dependencies:
moment "^2.30.1" moment "^2.30.1"
"@abp/popper.js@~10.4.0": "@abp/popper.js@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0.tgz#9d8d09c4e18020b6a75ba30daf6786606f555e84" resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.1.tgz#616691ccdd8632e84bf9419e59db841ef2ea610c"
integrity sha512-KR5wGZ/MfR1rOPcmFr5ekraYhOSRul9gqempir69hlqrFKUFqt46F9/wLWyaJ7vlsMU6o4gBo6/jE5tICIpzNw== integrity sha512-74kOjXTb4FRbg5t4dTsZ11io9iuEG38IjPyYue/1yIXVbc2hruIhcJC9V3HFZLirQv1s1rkRqmnf38kVjUiKHA==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
"@popperjs/core" "^2.11.8" "@popperjs/core" "^2.11.8"
"@abp/select2@~10.4.0": "@abp/select2@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0.tgz#e744988abf81e2194a5850acc4ac1333e9578df8" resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.1.tgz#8729f7648073ecedc93915d3c618d10c3c557cbb"
integrity sha512-tyAdGzX32joI5vw+MUJGR0iToWCGZrbQg/zKeoCib80Zx5cn+e6GXj6wZyPbsJgVm0jZ7zBweWt3x8HzW9N8Ww== integrity sha512-BtjhMMYKcHl1ZN04L+iWhQWzzqKGbpHi8tMe6o75ZunIpVtIFlIPUpzVUI0AaH6t2sIhlrYFEoxvGxA31lcIXw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
select2 "^4.0.13" select2 "^4.0.13"
"@abp/sweetalert2@~10.4.0": "@abp/sweetalert2@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0.tgz#65cb26c8c7c9c02158c9a487969eef033fe04a73" resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.1.tgz#68b4abe96c71b05d956c362edc19ccce8b9bbe42"
integrity sha512-kyVMlfnI6MZojJlaRstdHj/CL3olOn4BszjQ155UQaDsGHUu0THmbhpfi4P0q3TCLLzcLM4pkuY3wJHPNl3ZOw== integrity sha512-6Ce7uR49sqJBkqRfR56cn6jI898+xXHbWgJV+VHN+Dm6w6WX5MbEiOnjF3VLwaq0pwI3FeoCALZAAgra6t9vVw==
dependencies: dependencies:
"@abp/core" "~10.4.0" "@abp/core" "~10.4.1"
sweetalert2 "^11.23.0" sweetalert2 "^11.23.0"
"@abp/timeago@~10.4.0": "@abp/timeago@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0.tgz#100fc0598e3a605346397f8a395bb96dc70f429d" resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.1.tgz#a01c3840eb3c1e67b5c9fdd0ead020acb01d6676"
integrity sha512-G0ppO7Evai3DdhSg4ozxQpvIke0t3vyg63pNdfOtAPngmuam7WBM1WemBi4u29M84WcSfmk4KuAubXO0aCJgDg== integrity sha512-sh1afPeBSsL1RNBhWRn4FOD1ZgRE8HQc0zOhCAl6Kb7WXWcDuP8RPKbGLolnpNHgXfz12lhE6TsbsNFAaCGYjg==
dependencies: dependencies:
"@abp/jquery" "~10.4.0" "@abp/jquery" "~10.4.1"
timeago "^1.6.7" timeago "^1.6.7"
"@abp/utils@~10.4.0": "@abp/utils@~10.4.1":
version "10.4.0" version "10.4.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0.tgz#75175f798e58643c0dec1e85a502186c811e9226" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.1.tgz#b5c7b57e3c2ef8f87c0c5780995d82a7baf2ee9d"
integrity sha512-BPc7KGDcbdFZ4GonAt3SOi/gYhG+iXI76TMlAzSKMBRhBU0vxFS8I/pb7U5zX0Gjh5M+aT0l2vA3l+POCHPBfw== integrity sha512-kPp7PsaMni81vQK3J1F4j3Eem4dBlZuqIYR6QWbO+udgS5CzYGJagdw+HsOGer6YzJHhcGFfe0LcxS1z/VsFDQ==
dependencies: dependencies:
just-compare "^2.3.0" just-compare "^2.3.0"

4
modules/setting-management/src/Volo.Abp.SettingManagement.Blazor.MudBlazor/Pages/SettingManagement/SettingManagement.razor

@ -15,13 +15,13 @@
<MudCard Style="min-height: 400px;"> <MudCard Style="min-height: 400px;">
<MudCardContent Class="pt-3"> <MudCardContent Class="pt-3">
@if (string.IsNullOrEmpty(SelectedGroup)) @if (_loading)
{ {
<div class="d-flex justify-center align-center" style="min-height: 360px;"> <div class="d-flex justify-center align-center" style="min-height: 360px;">
<MudProgressCircular Indeterminate="true" Color="Color.Primary" /> <MudProgressCircular Indeterminate="true" Color="Color.Primary" />
</div> </div>
} }
else else if (SettingComponentCreationContext != null && SettingComponentCreationContext.Groups.Any())
{ {
<MudTabs @bind-ActivePanelIndex="@_activeTabIndex" <MudTabs @bind-ActivePanelIndex="@_activeTabIndex"
Variant="Variant.Pills" Variant="Variant.Pills"

4
modules/setting-management/src/Volo.Abp.SettingManagement.Blazor.MudBlazor/Pages/SettingManagement/SettingManagement.razor.cs

@ -36,6 +36,8 @@ public partial class SettingManagement
protected int _activeTabIndex = 0; protected int _activeTabIndex = 0;
protected bool _loading = true;
protected async override Task OnInitializedAsync() protected async override Task OnInitializedAsync()
{ {
BreadcrumbItems.Add(new BreadcrumbItem(LUiNavigation["Menu:Administration"].Value, null, disabled: true)); BreadcrumbItems.Add(new BreadcrumbItem(LUiNavigation["Menu:Administration"].Value, null, disabled: true));
@ -55,6 +57,8 @@ public partial class SettingManagement
SelectedGroup = GetNormalizedString(SettingComponentCreationContext.Groups.First().Id); SelectedGroup = GetNormalizedString(SettingComponentCreationContext.Groups.First().Id);
_activeTabIndex = 0; _activeTabIndex = 0;
} }
_loading = false;
} }
protected virtual string GetNormalizedString(string value) protected virtual string GetNormalizedString(string value)

23
modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingManager.cs

@ -73,11 +73,20 @@ public class SettingManager : ISettingManager, ISingletonDependency
foreach (var setting in settingDefinitions) foreach (var setting in settingDefinitions)
{ {
var settingProviderList = setting.Providers.Any()
? providerList.Where(p => setting.Providers.Contains(p.Name)).ToList()
: providerList;
if (!settingProviderList.Any())
{
continue;
}
string value = null; string value = null;
if (setting.IsInherited) if (setting.IsInherited)
{ {
foreach (var provider in providerList) foreach (var provider in settingProviderList)
{ {
var providerValue = await provider.GetOrNullAsync( var providerValue = await provider.GetOrNullAsync(
setting, setting,
@ -91,7 +100,7 @@ public class SettingManager : ISettingManager, ISingletonDependency
} }
else else
{ {
value = await providerList[0].GetOrNullAsync( value = await settingProviderList[0].GetOrNullAsync(
setting, setting,
providerKey providerKey
); );
@ -118,6 +127,11 @@ public class SettingManager : ISettingManager, ISingletonDependency
var setting = await SettingDefinitionManager.GetAsync(name); 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 var providers = Enumerable
.Reverse(Providers) .Reverse(Providers)
.SkipWhile(p => p.Name != providerName) .SkipWhile(p => p.Name != providerName)
@ -188,6 +202,11 @@ public class SettingManager : ISettingManager, ISingletonDependency
providers = providers.TakeWhile(c => c.Name == providerName); providers = providers.TakeWhile(c => c.Name == providerName);
} }
if (setting.Providers.Any())
{
providers = providers.Where(p => setting.Providers.Contains(p.Name));
}
string value = null; string value = null;
foreach (var provider in providers) foreach (var provider in providers)
{ {

9
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 class TestSettingDefinitionProvider : SettingDefinitionProvider
{ {
public const string UserOnlySetting = "UserOnlySetting";
public const string GlobalOnlySetting = "GlobalOnlySetting";
public override void Define(ISettingDefinitionContext context) public override void Define(ISettingDefinitionContext context)
{ {
context.Add(new SettingDefinition("MySetting1")); context.Add(new SettingDefinition("MySetting1"));
@ -11,7 +14,9 @@ public class TestSettingDefinitionProvider : SettingDefinitionProvider
context.Add(new SettingDefinition("MySetting3", "123")); context.Add(new SettingDefinition("MySetting3", "123"));
context.Add(new SettingDefinition("MySettingWithoutInherit", isInherited: false)); context.Add(new SettingDefinition("MySettingWithoutInherit", isInherited: false));
context.Add(new SettingDefinition("SettingNotSetInStore", defaultValue: "default-value")); context.Add(new SettingDefinition("SettingNotSetInStore", defaultValue: "default-value"));
context.Add(new SettingDefinition(UserOnlySetting)
.WithProviders(UserSettingValueProvider.ProviderName));
context.Add(new SettingDefinition(GlobalOnlySetting)
.WithProviders(GlobalSettingValueProvider.ProviderName));
} }
} }

99
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 ISettingManager _settingManager;
private readonly ISettingProvider _settingProvider; private readonly ISettingProvider _settingProvider;
private readonly ISettingManagementStore _settingManagementStore;
public SettingManager_Basic_Tests() public SettingManager_Basic_Tests()
{ {
_settingManager = GetRequiredService<ISettingManager>(); _settingManager = GetRequiredService<ISettingManager>();
_settingProvider = GetRequiredService<ISettingProvider>(); _settingProvider = GetRequiredService<ISettingProvider>();
_settingManagementStore = GetRequiredService<ISettingManagementStore>();
} }
[Fact] [Fact]
@ -74,4 +76,101 @@ public class SettingManager_Basic_Tests : SettingsTestBase
exception.Message.ShouldBe("Unknown setting value provider: UndefinedProvider"); 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<AbpException>(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");
}
} }

4
modules/virtual-file-explorer/app/package.json

@ -3,7 +3,7 @@
"name": "my-app", "name": "my-app",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0", "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.1",
"@abp/virtual-file-explorer": "~10.4.0" "@abp/virtual-file-explorer": "~10.4.1"
} }
} }

2
npm/lerna.json

@ -1,5 +1,5 @@
{ {
"version": "10.4.0", "version": "10.4.1",
"packages": [ "packages": [
"packs/*" "packs/*"
], ],

4
npm/ng-packs/package.json

@ -48,8 +48,8 @@
}, },
"private": true, "private": true,
"devDependencies": { "devDependencies": {
"@abp/ng.theme.lepton-x": "~5.4.0", "@abp/ng.theme.lepton-x": "~5.4.1",
"@abp/utils": "~10.4.0", "@abp/utils": "~10.4.1",
"@angular-devkit/build-angular": "~21.2.0", "@angular-devkit/build-angular": "~21.2.0",
"@angular-devkit/core": "~21.2.0", "@angular-devkit/core": "~21.2.0",
"@angular-devkit/schematics": "~21.2.0", "@angular-devkit/schematics": "~21.2.0",

6
npm/ng-packs/packages/account-core/package.json

@ -1,14 +1,14 @@
{ {
"name": "@abp/ng.account.core", "name": "@abp/ng.account.core",
"version": "10.4.0", "version": "10.4.1",
"homepage": "https://abp.io", "homepage": "https://abp.io",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/abpframework/abp.git" "url": "https://github.com/abpframework/abp.git"
}, },
"dependencies": { "dependencies": {
"@abp/ng.core": "~10.4.0", "@abp/ng.core": "~10.4.1",
"@abp/ng.theme.shared": "~10.4.0", "@abp/ng.theme.shared": "~10.4.1",
"tslib": "^2.0.0" "tslib": "^2.0.0"
}, },
"publishConfig": { "publishConfig": {

6
npm/ng-packs/packages/account/package.json

@ -1,14 +1,14 @@
{ {
"name": "@abp/ng.account", "name": "@abp/ng.account",
"version": "10.4.0", "version": "10.4.1",
"homepage": "https://abp.io", "homepage": "https://abp.io",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/abpframework/abp.git" "url": "https://github.com/abpframework/abp.git"
}, },
"dependencies": { "dependencies": {
"@abp/ng.account.core": "~10.4.0", "@abp/ng.account.core": "~10.4.1",
"@abp/ng.theme.shared": "~10.4.0", "@abp/ng.theme.shared": "~10.4.1",
"tslib": "^2.0.0" "tslib": "^2.0.0"
}, },
"publishConfig": { "publishConfig": {

8
npm/ng-packs/packages/cms-kit/package.json

@ -1,15 +1,15 @@
{ {
"name": "@abp/ng.cms-kit", "name": "@abp/ng.cms-kit",
"version": "10.4.0", "version": "10.4.1",
"homepage": "https://abp.io", "homepage": "https://abp.io",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/abpframework/abp.git" "url": "https://github.com/abpframework/abp.git"
}, },
"dependencies": { "dependencies": {
"@abp/ng.components": "~10.4.0", "@abp/ng.components": "~10.4.1",
"@abp/ng.setting-management": "~10.4.0", "@abp/ng.setting-management": "~10.4.1",
"@abp/ng.theme.shared": "~10.4.0", "@abp/ng.theme.shared": "~10.4.1",
"@toast-ui/editor": "~3.0.0", "@toast-ui/editor": "~3.0.0",
"codemirror": "~6.0.0", "codemirror": "~6.0.0",
"tslib": "^2.0.0" "tslib": "^2.0.0"

6
npm/ng-packs/packages/components/package.json

@ -1,14 +1,14 @@
{ {
"name": "@abp/ng.components", "name": "@abp/ng.components",
"version": "10.4.0", "version": "10.4.1",
"homepage": "https://abp.io", "homepage": "https://abp.io",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/abpframework/abp.git" "url": "https://github.com/abpframework/abp.git"
}, },
"peerDependencies": { "peerDependencies": {
"@abp/ng.core": ">=10.4.0", "@abp/ng.core": ">=10.4.1",
"@abp/ng.theme.shared": ">=10.4.0" "@abp/ng.theme.shared": ">=10.4.1"
}, },
"dependencies": { "dependencies": {
"chart.js": "^3.5.1", "chart.js": "^3.5.1",

4
npm/ng-packs/packages/core/package.json

@ -1,13 +1,13 @@
{ {
"name": "@abp/ng.core", "name": "@abp/ng.core",
"version": "10.4.0", "version": "10.4.1",
"homepage": "https://abp.io", "homepage": "https://abp.io",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/abpframework/abp.git" "url": "https://github.com/abpframework/abp.git"
}, },
"dependencies": { "dependencies": {
"@abp/utils": "~10.4.0", "@abp/utils": "~10.4.1",
"just-clone": "^6.0.0", "just-clone": "^6.0.0",
"just-compare": "^2.0.0", "just-compare": "^2.0.0",
"ts-toolbelt": "^9.0.0", "ts-toolbelt": "^9.0.0",

4
npm/ng-packs/packages/feature-management/package.json

@ -1,13 +1,13 @@
{ {
"name": "@abp/ng.feature-management", "name": "@abp/ng.feature-management",
"version": "10.4.0", "version": "10.4.1",
"homepage": "https://abp.io", "homepage": "https://abp.io",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/abpframework/abp.git" "url": "https://github.com/abpframework/abp.git"
}, },
"dependencies": { "dependencies": {
"@abp/ng.theme.shared": "~10.4.0", "@abp/ng.theme.shared": "~10.4.1",
"tslib": "^2.0.0" "tslib": "^2.0.0"
}, },
"peerDependencies": { "peerDependencies": {

2
npm/ng-packs/packages/generators/package.json

@ -1,6 +1,6 @@
{ {
"name": "@abp/nx.generators", "name": "@abp/nx.generators",
"version": "10.4.0", "version": "10.4.1",
"homepage": "https://abp.io", "homepage": "https://abp.io",
"generators": "./generators.json", "generators": "./generators.json",
"type": "commonjs", "type": "commonjs",

8
npm/ng-packs/packages/identity/package.json

@ -1,15 +1,15 @@
{ {
"name": "@abp/ng.identity", "name": "@abp/ng.identity",
"version": "10.4.0", "version": "10.4.1",
"homepage": "https://abp.io", "homepage": "https://abp.io",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/abpframework/abp.git" "url": "https://github.com/abpframework/abp.git"
}, },
"dependencies": { "dependencies": {
"@abp/ng.components": "~10.4.0", "@abp/ng.components": "~10.4.1",
"@abp/ng.permission-management": "~10.4.0", "@abp/ng.permission-management": "~10.4.1",
"@abp/ng.theme.shared": "~10.4.0", "@abp/ng.theme.shared": "~10.4.1",
"tslib": "^2.0.0" "tslib": "^2.0.0"
}, },
"publishConfig": { "publishConfig": {

6
npm/ng-packs/packages/oauth/package.json

@ -1,14 +1,14 @@
{ {
"name": "@abp/ng.oauth", "name": "@abp/ng.oauth",
"version": "10.4.0", "version": "10.4.1",
"homepage": "https://abp.io", "homepage": "https://abp.io",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/abpframework/abp.git" "url": "https://github.com/abpframework/abp.git"
}, },
"dependencies": { "dependencies": {
"@abp/ng.core": "~10.4.0", "@abp/ng.core": "~10.4.1",
"@abp/utils": "~10.4.0", "@abp/utils": "~10.4.1",
"angular-oauth2-oidc": "^20.0.0", "angular-oauth2-oidc": "^20.0.0",
"just-clone": "^6.0.0", "just-clone": "^6.0.0",
"just-compare": "^2.0.0", "just-compare": "^2.0.0",

4
npm/ng-packs/packages/permission-management/package.json

@ -1,13 +1,13 @@
{ {
"name": "@abp/ng.permission-management", "name": "@abp/ng.permission-management",
"version": "10.4.0", "version": "10.4.1",
"homepage": "https://abp.io", "homepage": "https://abp.io",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/abpframework/abp.git" "url": "https://github.com/abpframework/abp.git"
}, },
"dependencies": { "dependencies": {
"@abp/ng.theme.shared": "~10.4.0", "@abp/ng.theme.shared": "~10.4.1",
"tslib": "^2.0.0" "tslib": "^2.0.0"
}, },
"peerDependencies": { "peerDependencies": {

2
npm/ng-packs/packages/schematics/package.json

@ -1,6 +1,6 @@
{ {
"name": "@abp/ng.schematics", "name": "@abp/ng.schematics",
"version": "10.4.0", "version": "10.4.1",
"author": "", "author": "",
"schematics": "./collection.json", "schematics": "./collection.json",
"dependencies": { "dependencies": {

6
npm/ng-packs/packages/setting-management/package.json

@ -1,14 +1,14 @@
{ {
"name": "@abp/ng.setting-management", "name": "@abp/ng.setting-management",
"version": "10.4.0", "version": "10.4.1",
"homepage": "https://abp.io", "homepage": "https://abp.io",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/abpframework/abp.git" "url": "https://github.com/abpframework/abp.git"
}, },
"dependencies": { "dependencies": {
"@abp/ng.components": "~10.4.0", "@abp/ng.components": "~10.4.1",
"@abp/ng.theme.shared": "~10.4.0", "@abp/ng.theme.shared": "~10.4.1",
"tslib": "^2.0.0" "tslib": "^2.0.0"
}, },
"peerDependencies": { "peerDependencies": {

6
npm/ng-packs/packages/tenant-management/package.json

@ -1,14 +1,14 @@
{ {
"name": "@abp/ng.tenant-management", "name": "@abp/ng.tenant-management",
"version": "10.4.0", "version": "10.4.1",
"homepage": "https://abp.io", "homepage": "https://abp.io",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/abpframework/abp.git" "url": "https://github.com/abpframework/abp.git"
}, },
"dependencies": { "dependencies": {
"@abp/ng.feature-management": "~10.4.0", "@abp/ng.feature-management": "~10.4.1",
"@abp/ng.theme.shared": "~10.4.0", "@abp/ng.theme.shared": "~10.4.1",
"tslib": "^2.0.0" "tslib": "^2.0.0"
}, },
"publishConfig": { "publishConfig": {

6
npm/ng-packs/packages/theme-basic/package.json

@ -1,14 +1,14 @@
{ {
"name": "@abp/ng.theme.basic", "name": "@abp/ng.theme.basic",
"version": "10.4.0", "version": "10.4.1",
"homepage": "https://abp.io", "homepage": "https://abp.io",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/abpframework/abp.git" "url": "https://github.com/abpframework/abp.git"
}, },
"dependencies": { "dependencies": {
"@abp/ng.account.core": "~10.4.0", "@abp/ng.account.core": "~10.4.1",
"@abp/ng.theme.shared": "~10.4.0", "@abp/ng.theme.shared": "~10.4.1",
"tslib": "^2.0.0" "tslib": "^2.0.0"
}, },
"publishConfig": { "publishConfig": {

4
npm/ng-packs/packages/theme-shared/package.json

@ -1,13 +1,13 @@
{ {
"name": "@abp/ng.theme.shared", "name": "@abp/ng.theme.shared",
"version": "10.4.0", "version": "10.4.1",
"homepage": "https://abp.io", "homepage": "https://abp.io",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/abpframework/abp.git" "url": "https://github.com/abpframework/abp.git"
}, },
"dependencies": { "dependencies": {
"@abp/ng.core": "~10.4.0", "@abp/ng.core": "~10.4.1",
"@fortawesome/fontawesome-free": "^6.0.0", "@fortawesome/fontawesome-free": "^6.0.0",
"@ng-bootstrap/ng-bootstrap": "~20.0.0", "@ng-bootstrap/ng-bootstrap": "~20.0.0",
"@ngx-validate/core": "^0.2.0", "@ngx-validate/core": "^0.2.0",

4
npm/packs/anchor-js/package.json

@ -1,11 +1,11 @@
{ {
"version": "10.4.0", "version": "10.4.1",
"name": "@abp/anchor-js", "name": "@abp/anchor-js",
"publishConfig": { "publishConfig": {
"access": "public" "access": "public"
}, },
"dependencies": { "dependencies": {
"@abp/core": "~10.4.0", "@abp/core": "~10.4.1",
"anchor-js": "^5.0.0" "anchor-js": "^5.0.0"
}, },
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",

4
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", "name": "@abp/aspnetcore.components.server.basictheme",
"publishConfig": { "publishConfig": {
"access": "public" "access": "public"
}, },
"dependencies": { "dependencies": {
"@abp/aspnetcore.components.server.theming": "~10.4.0" "@abp/aspnetcore.components.server.theming": "~10.4.1"
}, },
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io", "homepage": "https://abp.io",

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

Loading…
Cancel
Save