From 3c7a7d2de21aeb322bef5f55a7a36a0fc2f7ee4f Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Wed, 18 Oct 2023 17:25:12 +0300 Subject: [PATCH 001/108] Make Blogs URL prefix customizable --- docs/en/Modules/Cms-Kit/Blogging.md | 11 ++++++++++- .../CmsKitWebUnifiedModule.cs | 2 ++ .../Pages/CmsKit/Blogs/CreateModal.cshtml | 3 ++- .../Pages/CmsKit/Blogs/UpdateModal.cshtml | 3 ++- .../Pages/CmsKit/Pages/Create.cshtml | 2 +- .../Pages/CmsKit/Pages/Update.cshtml | 2 +- .../src/Volo.CmsKit.Common.Web/CmsBlogsWebConsts.cs | 6 ++++++ .../Volo/CmsKit/Localization/Resources/ar.json | 1 + .../Volo/CmsKit/Localization/Resources/cs.json | 1 + .../Volo/CmsKit/Localization/Resources/de-DE.json | 1 + .../Volo/CmsKit/Localization/Resources/el.json | 1 + .../Volo/CmsKit/Localization/Resources/en.json | 1 + .../Volo/CmsKit/Localization/Resources/es.json | 1 + .../Volo/CmsKit/Localization/Resources/fi.json | 1 + .../Volo/CmsKit/Localization/Resources/fr.json | 1 + .../Volo/CmsKit/Localization/Resources/hi.json | 1 + .../Volo/CmsKit/Localization/Resources/hu.json | 1 + .../Volo/CmsKit/Localization/Resources/is.json | 3 ++- .../Volo/CmsKit/Localization/Resources/it.json | 1 + .../Volo/CmsKit/Localization/Resources/nl.json | 1 + .../Volo/CmsKit/Localization/Resources/pl-PL.json | 1 + .../Volo/CmsKit/Localization/Resources/pt-BR.json | 1 + .../Volo/CmsKit/Localization/Resources/ro-RO.json | 1 + .../Volo/CmsKit/Localization/Resources/ru.json | 1 + .../Volo/CmsKit/Localization/Resources/sk.json | 1 + .../Volo/CmsKit/Localization/Resources/sl.json | 1 + .../Volo/CmsKit/Localization/Resources/tr.json | 1 + .../Volo/CmsKit/Localization/Resources/vi.json | 1 + .../Volo/CmsKit/Localization/Resources/zh-Hans.json | 1 + .../Volo/CmsKit/Localization/Resources/zh-Hant.json | 1 + .../Volo.CmsKit.Public.Web/CmsKitPublicWebModule.cs | 12 +++++++++--- 31 files changed, 57 insertions(+), 9 deletions(-) create mode 100644 modules/cms-kit/src/Volo.CmsKit.Common.Web/CmsBlogsWebConsts.cs diff --git a/docs/en/Modules/Cms-Kit/Blogging.md b/docs/en/Modules/Cms-Kit/Blogging.md index d45598be52..eb6619a4bc 100644 --- a/docs/en/Modules/Cms-Kit/Blogging.md +++ b/docs/en/Modules/Cms-Kit/Blogging.md @@ -29,7 +29,16 @@ A screenshot from the new blog creation modal: ![blogs-edit](../../images/cmskit-module-blogs-edit.png) -**Slug** is the URL part of the blog. For this example, the root URL of the blog becomes *https://your-domain.com/blogs/technical-blog/*. +**Slug** is the URL part of the blog. For this example, the root URL of the blog becomes `your-domain.com/blogs/technical-blog/`. + +- You can change the default slug by using `CmsBlogsWebConsts.BlogRoutePrefix` constant. For example, if you set it to `foo`, the root URL of the blog becomes `your-domain.com/foo/technical-blog/`. + + ```csharp + public override void PreConfigureServices(ServiceConfigurationContext context) + { + CmsBlogsWebConsts.BlogsRoutePrefix = "foo"; + } + ``` #### Blog Features diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs index ec98cbcf78..aaadd40f84 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs @@ -116,6 +116,8 @@ public class CmsKitWebUnifiedModule : AbpModule { public override void PreConfigureServices(ServiceConfigurationContext context) { + CmsBlogsWebConsts.BlogsRoutePrefix = "foo"; + FeatureConfigurer.Configure(); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/CreateModal.cshtml b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/CreateModal.cshtml index 5aba4f2431..b348a63115 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/CreateModal.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/CreateModal.cshtml @@ -9,6 +9,7 @@ @using Volo.Abp.Data @using Volo.Abp.Localization @using Volo.Abp.ObjectExtending +@using Volo.CmsKit.Web @inject IStringLocalizerFactory StringLocalizerFactory @inherits CmsKitAdminPageBase @@ -25,7 +26,7 @@ - + @foreach (var propertyInfo in ObjectExtensionManager.Instance.GetProperties()) { diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/UpdateModal.cshtml b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/UpdateModal.cshtml index 65eccddef5..e3385e929b 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/UpdateModal.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/UpdateModal.cshtml @@ -8,6 +8,7 @@ @using Volo.Abp.Data @using Volo.Abp.Localization @using Volo.Abp.ObjectExtending +@using Volo.CmsKit.Web @inject IStringLocalizerFactory StringLocalizerFactory @inherits CmsKitAdminPageBase @@ -26,7 +27,7 @@ - + @foreach (var propertyInfo in ObjectExtensionManager.Instance.GetProperties()) { diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Create.cshtml b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Create.cshtml index e674c08600..afef4bdad5 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Create.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Create.cshtml @@ -59,7 +59,7 @@
- + diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml index f1bd33d212..08fc064226 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml @@ -64,7 +64,7 @@ - + diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Web/CmsBlogsWebConsts.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Web/CmsBlogsWebConsts.cs new file mode 100644 index 0000000000..7793856414 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Web/CmsBlogsWebConsts.cs @@ -0,0 +1,6 @@ +namespace Volo.CmsKit.Web; + +public static class CmsBlogsWebConsts +{ + public static string BlogsRoutePrefix { get; set; } = "blogs"; +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/ar.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/ar.json index b26a1fe2a8..9ef0948c80 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/ar.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/ar.json @@ -77,6 +77,7 @@ "PageId": "صفحة", "Pages": "الصفحات", "PageSlugInformation": "سبيكة تستخدم على url. سيكون عنوان url الخاص بك هو \"/{slug}}\".", + "BlogSlugInformation": "سبيكة تستخدم على url. سيكون عنوان url الخاص بك هو \"/{0}/{slug}}\".", "Permission:BlogManagement": "إدارة المدونة", "Permission:BlogManagement.Create": "إنشاء", "Permission:BlogManagement.Delete": "حذف", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/cs.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/cs.json index 8344a53ee2..383ba53bfc 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/cs.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/cs.json @@ -77,6 +77,7 @@ "PageId": "Strana", "Pages": "stránky", "PageSlugInformation": "Na adrese URL je použit Slug. Vaše adresa URL bude '/{{slug}}'.", + "BlogSlugInformation": "Na adrese URL je použit Slug. Vaše adresa URL bude '/{0}/{{slug}}'.", "Permission:BlogManagement": "Správa blogu", "Permission:BlogManagement.Create": "Vytvořit", "Permission:BlogManagement.Delete": "Vymazat", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/de-DE.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/de-DE.json index 3a4b0a5569..8a34408bab 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/de-DE.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/de-DE.json @@ -77,6 +77,7 @@ "PageId": "Buchseite", "Pages": "Seiten", "PageSlugInformation": "Slug wird auf URL verwendet. Ihre URL lautet '/{{slug}}'.", + "BlogSlugInformation": "Slug wird auf URL verwendet. Ihre URL lautet '/{0}/{{slug}}'.", "Permission:BlogManagement": "Blog-Verwaltung", "Permission:BlogManagement.Create": "Schaffen", "Permission:BlogManagement.Delete": "Löschen", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/el.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/el.json index c686723d33..7155c127a3 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/el.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/el.json @@ -77,6 +77,7 @@ "PageId": "Σελίδα", "Pages": "Σελίδες", "PageSlugInformation": "Το Slug χρησιμοποιείται στο url. Το url σας θα είναι '/{{slug}}'.", + "BlogSlugInformation": "Το Slug χρησιμοποιείται στο url. Το url σας θα είναι '/{0}/{{slug}}'.", "Permission:BlogManagement": "Διαχείριση ιστολογίου", "Permission:BlogManagement.Create": "Δημιουργώ", "Permission:BlogManagement.Delete": "Διαγράφω", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json index 40639fc46a..ba39b86848 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json @@ -76,6 +76,7 @@ "PageId": "Page", "Pages": "Pages", "PageSlugInformation": "Slug is used on url. Your url will be '/{{slug}}'.", + "BlogSlugInformation": "Slug is used on url. Your url will be '/{0}/{{slug}}'.", "Permission:BlogManagement": "Blog Management", "Permission:BlogManagement.Create": "Create", "Permission:BlogManagement.Delete": "Delete", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/es.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/es.json index ea9b318b93..fb8e963115 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/es.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/es.json @@ -77,6 +77,7 @@ "PageId": "Página", "Pages": "Paginas", "PageSlugInformation": "Slug se usa en la URL. Su URL será '/{{slug}}'.", + "BlogSlugInformation": "Slug se usa en la URL. Su URL será '/{0}/{{slug}}'.", "Permission:BlogManagement": "Gestión de blogs", "Permission:BlogManagement.Create": "Crear", "Permission:BlogManagement.Delete": "Borrar", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/fi.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/fi.json index 1ead360d61..54a0ea97a4 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/fi.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/fi.json @@ -76,6 +76,7 @@ "PageId": "Sivu", "Pages": "Sivut", "PageSlugInformation": "Etanaa käytetään URL-osoitteessa. URL-osoitteesi on '/{{slug}}'.", + "BlogSlugInformation": "Etanaa käytetään URL-osoitteessa. URL-osoitteesi on '/{0}/{{slug}}'.", "Permission:BlogManagement": "Blogin hallinta", "Permission:BlogManagement.Create": "Luonti", "Permission:BlogManagement.Delete": "Poisto", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/fr.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/fr.json index 445c7b3578..bbd4f67955 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/fr.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/fr.json @@ -77,6 +77,7 @@ "PageId": "Page", "Pages": "Pages", "PageSlugInformation": "Slug est utilisé sur l'url. Votre URL sera '/{{slug}}'.", + "BlogSlugInformation": "Slug est utilisé sur l'url. Votre URL sera '/{0}/{{slug}}'.", "Permission:BlogManagement": "Gestion de blog", "Permission:BlogManagement.Create": "Créer", "Permission:BlogManagement.Delete": "Effacer", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/hi.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/hi.json index fffe151260..b251ac8c18 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/hi.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/hi.json @@ -77,6 +77,7 @@ "PageId": "पृष्ठ", "Pages": "पृष्ठों", "PageSlugInformation": "स्लग का उपयोग url पर किया जाता है। आपका url '/{{slug}}' होगा।", + "BlogSlugInformation": "स्लग का उपयोग url पर किया जाता है। आपका url '/{0}/{{slug}}' होगा।", "Permission:BlogManagement": "ब्लॉग प्रबंधन", "Permission:BlogManagement.Create": "सृजन करना", "Permission:BlogManagement.Delete": "हटाएं", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/hu.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/hu.json index 4c1047e178..43afc9575c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/hu.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/hu.json @@ -76,6 +76,7 @@ "PageId": "oldal", "Pages": "Oldalak", "PageSlugInformation": "A Slug az url-en használatos. Az Ön URL-je a következő lesz: '/{{slug}}'.", + "BlogSlugInformation": "A Slug az url-en használatos. Az Ön URL-je a következő lesz: '/{0}/{{slug}}'.", "Permission:BlogManagement": "Blogkezelés", "Permission:BlogManagement.Create": "Teremt", "Permission:BlogManagement.Delete": "Töröl", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/is.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/is.json index 43c98adcc2..8b7bebc1ea 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/is.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/is.json @@ -76,7 +76,8 @@ "PageDeletionConfirmationMessage": "Ertu viss um að eyða þessari síðu?", "PageId": "Síða", "Pages": "Síður", - "PageSlugInformation": "Snigill er notaður á slóð. Slóðin þín verður '/síður/{{slug}}'.", + "PageSlugInformation": "Snigill er notaður á slóð. Slóðin þín verður '/{{slug}}'.", + "BlogSlugInformation": "Snigill er notaður á slóð. Slóðin þín verður '/{0}/{{slug}}'.", "Permission:BlogManagement": "Bloggstjórnun", "Permission:BlogManagement.Create": "Búa til", "Permission:BlogManagement.Delete": "Eyða", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/it.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/it.json index bddf4affc2..3575754a8c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/it.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/it.json @@ -77,6 +77,7 @@ "PageId": "Pagina", "Pages": "Pagine", "PageSlugInformation": "Lo slug viene utilizzato sull'URL. Il tuo URL sarà '/{{slug}}'.", + "BlogSlugInformation": "Lo slug viene utilizzato sull'URL. Il tuo URL sarà '/{0}/{{slug}}'.", "Permission:BlogManagement": "Gestione del blog", "Permission:BlogManagement.Create": "Crea", "Permission:BlogManagement.Delete": "Elimina", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/nl.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/nl.json index d06ba78bf4..ef370edf26 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/nl.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/nl.json @@ -77,6 +77,7 @@ "PageId": "Bladzijde", "Pages": "Pagina's", "PageSlugInformation": "Slug wordt gebruikt voor de url. Uw url wordt '/{{slug}}'.", + "BlogSlugInformation": "Slug wordt gebruikt voor de url. Uw url wordt '/{0}/{{slug}}'.", "Permission:BlogManagement": "Blogbeheer", "Permission:BlogManagement.Create": "Toevoegen", "Permission:BlogManagement.Delete": "Verwijderen", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/pl-PL.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/pl-PL.json index a775020f7a..0bdef5d26b 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/pl-PL.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/pl-PL.json @@ -77,6 +77,7 @@ "PageId": "Strona", "Pages": "Strony", "PageSlugInformation": "Slug jest używany na adresie URL. Twój adres URL to „/{{slug}}”.", + "BlogSlugInformation": "Slug jest używany na adresie URL. Twój adres URL to „/{0}/{{slug}}”.", "Permission:BlogManagement": "Zarządzanie blogiem", "Permission:BlogManagement.Create": "Tworzyć", "Permission:BlogManagement.Delete": "Kasować", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/pt-BR.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/pt-BR.json index c306e6f58c..9510e2a67d 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/pt-BR.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/pt-BR.json @@ -77,6 +77,7 @@ "PageId": "Página", "Pages": "Páginas", "PageSlugInformation": "Slug é usado na url. Sua url será '/{{slug}}'.", + "BlogSlugInformation": "Slug é usado na url. Sua url será '/{0}/{{slug}}'.", "Permission:BlogManagement": "Gerenciamento de blogs", "Permission:BlogManagement.Create": "Criar", "Permission:BlogManagement.Delete": "Excluir", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/ro-RO.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/ro-RO.json index 7712530ee7..21b9ac5a24 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/ro-RO.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/ro-RO.json @@ -77,6 +77,7 @@ "PageId": "Pagina", "Pages": "Pagini", "PageSlugInformation": "Slug este folosit pe url. Url-ul dumneavoastră va fi '/{{slug}}'.", + "BlogSlugInformation": "Slug este folosit pe url. Url-ul dumneavoastră va fi '/{0}/{{slug}}'.", "Permission:BlogManagement": "Administrare Blog", "Permission:BlogManagement.Create": "Creează", "Permission:BlogManagement.Delete": "Şterge", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/ru.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/ru.json index e30641ce50..a1a809f9fa 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/ru.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/ru.json @@ -77,6 +77,7 @@ "PageId": "Страница", "Pages": "Страницы", "PageSlugInformation": "Слаг используется для URL. Ваш URL-адрес будет '/{{slug}}'.", + "BlogSlugInformation": "Слаг используется для URL. Ваш URL-адрес будет '/{0}/{{slug}}'.", "Permission:BlogManagement": "Управление блогом", "Permission:BlogManagement.Create": "Создавать", "Permission:BlogManagement.Delete": "Удалить", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/sk.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/sk.json index 7fc0e7c254..af320c8a19 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/sk.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/sk.json @@ -77,6 +77,7 @@ "PageId": "Stránka", "Pages": "Stránky", "PageSlugInformation": "Slug sa používa v URL. Vaša URL bude '/{{slug}}'.", + "BlogSlugInformation": "Slug sa používa v URL. Vaša URL bude '/{0}/{{slug}}'.", "Permission:BlogManagement": "Správa blogov", "Permission:BlogManagement.Create": "Vytvoriť", "Permission:BlogManagement.Delete": "Zmazať", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/sl.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/sl.json index 0e0d12e2e6..972b7da430 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/sl.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/sl.json @@ -77,6 +77,7 @@ "PageId": "stran", "Pages": "strani", "PageSlugInformation": "Slug se uporablja na url-ju. Vaš url bo '/{{slug}}'.", + "BlogSlugInformation": "Slug se uporablja na url-ju. Vaš url bo '/{0}/{{slug}}'.", "Permission:BlogManagement": "Upravljanje blogov", "Permission:BlogManagement.Create": "Ustvari", "Permission:BlogManagement.Delete": "Izbriši", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json index c84cdc6312..78c5f9341e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json @@ -76,6 +76,7 @@ "PageId": "Sayfa", "Pages": "Sayfalar", "PageSlugInformation": "Etiket URL'de kullanılır. Url şöyle görünür: '/{{slug}}'.", + "BlogSlugInformation": "Etiket URL'de kullanılır. Url şöyle görünür: '/{0}/{{slug}}'.", "Permission:BlogManagement": "Blog Yönetimi", "Permission:BlogManagement.Create": "Oluşturma", "Permission:BlogManagement.Delete": "Silme", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/vi.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/vi.json index 3e0f36578d..09ae8f3a9c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/vi.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/vi.json @@ -77,6 +77,7 @@ "PageId": "Trang", "Pages": "Các trang", "PageSlugInformation": "Slug được sử dụng trên url. Url của bạn sẽ là '/{{slug}}'.", + "BlogSlugInformation": "Slug được sử dụng trên url. Url của bạn sẽ là '/{0}/{{slug}}'.", "Permission:BlogManagement": "Quản lý blog", "Permission:BlogManagement.Create": "Tạo ra", "Permission:BlogManagement.Delete": "Xóa bỏ", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json index 7e9089d426..516c57eefd 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json @@ -76,6 +76,7 @@ "PageId": "页", "Pages": "页面", "PageSlugInformation": "Slug用于url. 你的url将是 '/{{slug}}'.", + "BlogSlugInformation": "Slug用于url. 你的url将是 '/{0}/{{slug}}'.", "Permission:BlogManagement": "博客管理", "Permission:BlogManagement.Create": "创建", "Permission:BlogManagement.Delete": "删除", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hant.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hant.json index e6dd053052..5d3d2621fb 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hant.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hant.json @@ -77,6 +77,7 @@ "PageId": "頁", "Pages": "頁面", "PageSlugInformation": "Slug用於網址. 你的網址將是 '/{{slug}}'.", + "BlogSlugInformation": "Slug用於網址. 你的網址將是 '/{0}/{{slug}}'.", "Permission:BlogManagement": "部落格管理", "Permission:BlogManagement.Create": "創建", "Permission:BlogManagement.Delete": "刪除", diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPublicWebModule.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPublicWebModule.cs index 93a61efe2f..c7078acd98 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPublicWebModule.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPublicWebModule.cs @@ -1,4 +1,5 @@ -using Microsoft.AspNetCore.Mvc.RazorPages; +using System; +using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.AspNetCore.Mvc.Localization; @@ -91,8 +92,13 @@ public class CmsKitPublicWebModule : AbpModule { Configure(options => { - options.Conventions.AddPageRoute("/Public/CmsKit/Blogs/Index", @"/blogs/{blogSlug:minlength(1)}"); - options.Conventions.AddPageRoute("/Public/CmsKit/Blogs/BlogPost", @"/blogs/{blogSlug}/{blogPostSlug:minlength(1)}"); + options.Conventions.AddPageRoute( + "/Public/CmsKit/Blogs/Index", + CmsBlogsWebConsts.BlogsRoutePrefix.EnsureStartsWith('/') + @"/{blogSlug:minlength(1)}"); + + options.Conventions.AddPageRoute( + "/Public/CmsKit/Blogs/BlogPost", + CmsBlogsWebConsts.BlogsRoutePrefix.EnsureStartsWith('/') + @"/{blogSlug}/{blogPostSlug:minlength(1)}"); }); } From 1f2e5e74cf107d80c841f20456c78e70e69b104e Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Wed, 18 Oct 2023 17:59:56 +0300 Subject: [PATCH 002/108] Add filtered tags to UI --- .../Public/Blogs/IBlogPostPublicAppService.cs | 3 + .../Public/Blogs/BlogPostPublicAppService.cs | 14 +++- .../Public/Blogs/BlogPostPublicController.cs | 8 +++ .../Shared/Components/Tags/Default.cshtml | 4 +- .../Pages/Public/CmsKit/Blogs/BlogPost.cshtml | 5 +- .../Pages/Public/CmsKit/Blogs/Index.cshtml | 71 +++++++++++-------- .../Pages/Public/CmsKit/Blogs/Index.cshtml.cs | 9 ++- 7 files changed, 80 insertions(+), 34 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Blogs/IBlogPostPublicAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Blogs/IBlogPostPublicAppService.cs index dd21e2c903..c679420902 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Blogs/IBlogPostPublicAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Blogs/IBlogPostPublicAppService.cs @@ -17,5 +17,8 @@ public interface IBlogPostPublicAppService : IApplicationService Task> GetAuthorsHasBlogPostsAsync(BlogPostFilteredPagedAndSortedResultRequestDto input); Task GetAuthorHasBlogPostAsync(Guid id); + Task DeleteAsync(Guid id); + + Task GetTagNameAsync([NotNull] Guid tagId); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Blogs/BlogPostPublicAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Blogs/BlogPostPublicAppService.cs index cd346f9a21..4a9875990d 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Blogs/BlogPostPublicAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Blogs/BlogPostPublicAppService.cs @@ -12,6 +12,7 @@ using Volo.CmsKit.Blogs; using Volo.CmsKit.Contents; using Volo.CmsKit.Features; using Volo.CmsKit.GlobalFeatures; +using Volo.CmsKit.Tags; using Volo.CmsKit.Users; namespace Volo.CmsKit.Public.Blogs; @@ -24,12 +25,16 @@ public class BlogPostPublicAppService : CmsKitPublicAppServiceBase, IBlogPostPub protected IBlogPostRepository BlogPostRepository { get; } + protected ITagRepository TagRepository { get; } + public BlogPostPublicAppService( IBlogRepository blogRepository, - IBlogPostRepository blogPostRepository) + IBlogPostRepository blogPostRepository, + ITagRepository tagRepository) { BlogRepository = blogRepository; BlogPostRepository = blogPostRepository; + TagRepository = tagRepository; } public virtual async Task GetAsync( @@ -85,4 +90,11 @@ public class BlogPostPublicAppService : CmsKitPublicAppServiceBase, IBlogPostPub await BlogPostRepository.DeleteAsync(id); } + + public async Task GetTagNameAsync([NotNull] Guid tagId) + { + var tag = await TagRepository.GetAsync(tagId); + + return tag.Name; + } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Blogs/BlogPostPublicController.cs b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Blogs/BlogPostPublicController.cs index 4d2a336fca..d5b5768d34 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Blogs/BlogPostPublicController.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Blogs/BlogPostPublicController.cs @@ -1,5 +1,6 @@ using System; using System.Threading.Tasks; +using JetBrains.Annotations; using Microsoft.AspNetCore.Mvc; using Volo.Abp; using Volo.Abp.Application.Dtos; @@ -60,4 +61,11 @@ public class BlogPostPublicController : CmsKitPublicControllerBase, IBlogPostPub { return BlogPostPublicAppService.DeleteAsync(id); } + + [HttpGet] + [Route("tags/{id}")] + public Task GetTagNameAsync([NotNull] Guid tagId) + { + return BlogPostPublicAppService.GetTagNameAsync(tagId); + } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Tags/Default.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Tags/Default.cshtml index e9567b8b3e..27ad1fa5ac 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Tags/Default.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Tags/Default.cshtml @@ -10,14 +10,14 @@ { if (Model.UrlFormat.IsNullOrWhiteSpace()) { - + @tag.Name } else { var formattedUrl = Model.UrlFormat.Replace("{TagId}", tag.Id.ToString()).Replace("{TagName}", tag.Name); - @tag.Name + @tag.Name } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml index 319d6ad2f2..160a732359 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml @@ -10,6 +10,7 @@ @using Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Tags @using Volo.Abp.AspNetCore.Mvc.UI.Packages.HighlightJs @using Volo.CmsKit.Contents +@using Volo.CmsKit.Web @using Volo.CmsKit.Web.Pages.CmsKit.Components.Contents @inherits CmsKitPublicPageBase @@ -62,7 +63,7 @@

@Model.ViewModel.Title

- + @@@Model.ViewModel.Author?.UserName @Model.ViewModel.CreationTime @@ -89,7 +90,7 @@ { entityType = Volo.CmsKit.Blogs.BlogPostConsts.EntityType, entityId = Model.ViewModel.Id.ToString(), - urlFormat = $"/blogs/{Model.BlogSlug}?tagId={{TagId}}" + urlFormat = $"/{CmsBlogsWebConsts.BlogsRoutePrefix}/{Model.BlogSlug}?tagId={{TagId}}" }) } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml index 060f0c5c95..54211d7c40 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml @@ -2,18 +2,19 @@ @using Volo.CmsKit.Public.Web.Pages @using Volo.CmsKit.Public.Web.Pages.Public.CmsKit.Blogs +@using Volo.CmsKit.Web @inherits CmsKitPublicPageBase @model IndexModel -@section styles{ - +@section styles { + } @section scripts { - + } @@ -21,29 +22,43 @@ const string dummyImageSource = "https://dummyimage.com/320x180/a3a3a3/fff.png"; } - - -

- +@if (Model.AuthorId.HasValue) +{ + + +
+ - + + @if (Model.SelectedAuthor != null) + { + + } + +
+
+
+
+} + +@if (Model.TagId.HasValue) +{ +

@L["Tags"]

+ @Model.FilteredTagName + + +
+} - @if(Model.SelectedAuthor != null) - { - - } - -
- - @foreach (var blog in Model.Blogs.Items) { @@ -51,11 +66,11 @@ @if (blog.CoverImageMediaId != null) { - + } else { - + }
@blog.Title
@@ -65,7 +80,7 @@

@blog.ShortDescription

@@ -76,6 +91,6 @@
- + diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml.cs index 7feab76946..e47dd40816 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml.cs @@ -31,6 +31,8 @@ public class IndexModel : CmsKitPublicPageModelBase public CmsUserDto SelectedAuthor { get; protected set; } + public string FilteredTagName { get; protected set; } + protected IBlogPostPublicAppService BlogPostPublicAppService { get; } public IndexModel(IBlogPostPublicAppService blogPostPublicAppService) @@ -54,7 +56,12 @@ public class IndexModel : CmsKitPublicPageModelBase { SelectedAuthor = await BlogPostPublicAppService.GetAuthorHasBlogPostAsync(AuthorId.Value); } - + + if (TagId is not null) + { + FilteredTagName = await BlogPostPublicAppService.GetTagNameAsync(TagId.Value); + } + return Page(); } } From 2e29d194896829293c976be4afa888f9155f1a65 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Wed, 18 Oct 2023 18:04:42 +0300 Subject: [PATCH 003/108] Update Index.cshtml --- .../Pages/Public/CmsKit/Blogs/Index.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml index 54211d7c40..79f96e3cc1 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml @@ -52,7 +52,7 @@ @if (Model.TagId.HasValue) { -

@L["Tags"]

+

@L["Tags"]

@Model.FilteredTagName From 1c5789dd6a8b368d1787fa85dfd69755d3309a87 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Thu, 19 Oct 2023 11:15:51 +0300 Subject: [PATCH 004/108] Add readonly support to rating --- .../Pages/Index.cshtml | 7 +- .../Shared/Components/Rating/Default.cshtml | 91 ++++++++++--------- .../Components/Rating/RatingViewComponent.cs | 7 +- .../Shared/Components/Rating/default.js | 3 +- 4 files changed, 59 insertions(+), 49 deletions(-) diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml index 1b3f3ff94c..860c2350ac 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml @@ -48,7 +48,12 @@ @if (GlobalFeatureManager.Instance.IsEnabled()) { - @await Component.InvokeAsync(typeof(RatingViewComponent), new {entityType = "quote", entityId = "1"}) + @await Component.InvokeAsync(typeof(RatingViewComponent), new + { + entityType = "quote", + entityId = "1", + isReadOnly = false + }) } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml index 9b7f6e24f7..95879128a7 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml @@ -6,58 +6,59 @@ @inject IHtmlLocalizer L
-
-
- @if (CurrentUser.IsAuthenticated) +
+
+ + @if (CurrentUser.IsAuthenticated) + { + @if (!Model.IsReadOnly && Model.CurrentRating != null) { - @if (Model.CurrentRating != null) - { - - @L["Undo"] - - } - if (Model.Ratings != null) - { - - - + + @L["Undo"] + + } + if (Model.Ratings != null) + { + + + - "> + + }
-
\ No newline at end of file +
+
\ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs index b928f7e2af..7ab1df47b8 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs @@ -31,7 +31,7 @@ public class RatingViewComponent : AbpViewComponent CurrentUser = currentUser; } - public virtual async Task InvokeAsync(string entityType, string entityId) + public virtual async Task InvokeAsync(string entityType, string entityId, bool isReadOnly = false) { var ratings = await RatingPublicAppService.GetGroupedStarCountsAsync(entityType, entityId); var totalRating = ratings.Sum(x => x.Count); @@ -52,7 +52,8 @@ public class RatingViewComponent : AbpViewComponent LoginUrl = loginUrl, Ratings = ratings, CurrentRating = currentUserRating, - TotalRating = totalRating + TotalRating = totalRating, + IsReadOnly = isReadOnly }; return View("~/Pages/CmsKit/Shared/Components/Rating/Default.cshtml", viewModel); @@ -72,4 +73,6 @@ public class RatingViewModel public short? CurrentRating { get; set; } public int TotalRating { get; set; } + + public bool IsReadOnly { get; set; } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js index 22531b47f3..69bb1bac4f 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js @@ -15,6 +15,7 @@ function registerCreateOfNewRating() { $widget.find(".my-rating").each(function () { var authenticated = $(this).attr("data-authenticated"); + var readonly = $(this).attr("data-readonly"); $(this).starRating({ initialRating: 0, @@ -26,7 +27,7 @@ strokeWidth: 0, disableAfterRate: true, useFullStars: true, - readOnly: authenticated === "True", + readOnly: authenticated === "True" || readonly === "True", onHover: function (currentIndex, currentRating, $el) { $widget.find(".live-rating").text(currentIndex); }, From 0289e15a8f4fd51624e01ce3e3b744bb13de6642 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Thu, 19 Oct 2023 11:31:22 +0300 Subject: [PATCH 005/108] Add readonly support to CommentingViewComponent --- .../Pages/Index.cshtml | 8 +- .../Commenting/CommentingViewComponent.cs | 6 +- .../Components/Commenting/Default.cshtml | 176 +++++++++--------- 3 files changed, 103 insertions(+), 87 deletions(-) diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml index 860c2350ac..5302289fb3 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml @@ -65,7 +65,13 @@ @if (GlobalFeatureManager.Instance.IsEnabled()) { - @await Component.InvokeAsync(typeof(CommentingViewComponent), new {entityType = "quote", entityId = "1", referralLinks = new [] {"nofollow"}}) + @await Component.InvokeAsync(typeof(CommentingViewComponent), new + { + entityType = "quote", + entityId = "1", + isReadOnly = false, + referralLinks = new [] {"nofollow"} + }) } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/CommentingViewComponent.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/CommentingViewComponent.cs index 5810103ea9..32503ceab7 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/CommentingViewComponent.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/CommentingViewComponent.cs @@ -60,6 +60,7 @@ public class CommentingViewComponent : AbpViewComponent public virtual async Task InvokeAsync( string entityType, string entityId, + bool isReadOnly, IEnumerable referralLinks = null) { referralLinks ??= Enumerable.Empty(); @@ -74,7 +75,8 @@ public class CommentingViewComponent : AbpViewComponent EntityType = entityType, ReferralLinks = referralLinks, LoginUrl = loginUrl, - Comments = comments.OrderByDescending(i => i.CreationTime).ToList() + IsReadOnly = isReadOnly, + Comments = comments.OrderByDescending(i => i.CreationTime).ToList(), }; await ConvertMarkdownTextsToHtml(viewModel); @@ -144,6 +146,8 @@ public class CommentingViewComponent : AbpViewComponent public string Captcha { get; set; } public string CaptchaImageBase64 { get; set; } + + public bool IsReadOnly { get; set; } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml index 8829df73c5..29ab21223c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml @@ -20,16 +20,16 @@ @ @((string.IsNullOrWhiteSpace(author.Name) - ? author.UserName - : author.Name + " " + author.Surname).Trim()) + ? author.UserName + : author.Name + " " + author.Surname).Trim()) @creationTime.ToString() ; } @{ Func GetCommentArea(Guid? repliedCommentId, bool cancelButton = false) => @
+ data-reply-id="@(repliedCommentId?.ToString() ?? "")" + style="@(string.IsNullOrEmpty(repliedCommentId?.ToString() ?? "") ? "" : "display:none")">
@@ -43,31 +43,31 @@
@if (CmsKitCommentOptions.Value.IsRecaptchaEnabled) - { -
- -
-
- -
-
- -
- + { +
+ +
+
+ +
+
+
+
- } +
+ }
@L["Send"] @if (cancelButton) - { - - @L["Cancel"] - - } + { + + @L["Cancel"] + + }
@@ -86,32 +86,32 @@ Func GetCommentActionArea(Guid id, Guid authorId, bool isReply) => @
@if (!isReply) - { - @if (CurrentUser.IsAuthenticated) - { - - @L["Reply"] - + { + @if (CurrentUser.IsAuthenticated) + { + + @L["Reply"] + + + + @L["Delete"] + + } + else + { + + @L["LoginToReply"] + + } + } + - - @L["Delete"] - - } - else - { - - @L["LoginToReply"] - - } - } - - @if (authorId == CurrentUser.Id) - { - - @L["Edit"] - - } + { + + @L["Edit"] + + }
; } @{ @@ -128,26 +128,26 @@
- @L["MarkdownSupported"] + @L["MarkdownSupported"]
@if (CmsKitCommentOptions.Value.IsRecaptchaEnabled) - { - var output = await Model.GenerateCaptchaAsync(); + { + var output = await Model.GenerateCaptchaAsync(); -
- -
-
- -
-
- -
- +
+ +
+
+ +
+
+
+
- } +
+ }
@L["Update"] @@ -183,22 +183,25 @@ @GetCommentContentArea(comment.Id, comment.Text).Invoke(null) -
-
-
- @GetCommentActionArea(comment.Id, comment.Author.Id, false).Invoke(null) + @if (!Model.Input.IsReadOnly) + { +
+
+
+ @GetCommentActionArea(comment.Id, comment.Author.Id, false).Invoke(null) +
-
-
-
- @if (cmsKitUiOptions.Value.CommentsOptions.IsReactionsEnabled && GlobalFeatureManager.Instance.IsEnabled()) - { - @await Component.InvokeAsync(typeof(ReactionSelectionViewComponent), new { entityType = "comment", entityId = comment.Id.ToString() }) - } +
+
+ @if (cmsKitUiOptions.Value.CommentsOptions.IsReactionsEnabled && GlobalFeatureManager.Instance.IsEnabled()) + { + @await Component.InvokeAsync(typeof(ReactionSelectionViewComponent), new { entityType = "comment", entityId = comment.Id.ToString() }) + } +
-
- @GetEditArea(comment.Id, Model.Input.RawCommentTexts[comment.Id], comment.ConcurrencyStamp).Invoke(null) + @GetEditArea(comment.Id, Model.Input.RawCommentTexts[comment.Id], comment.ConcurrencyStamp).Invoke(null) + } @if (comment.Replies.Any()) { @@ -212,23 +215,26 @@ @GetCommentContentArea(reply.Id, reply.Text).Invoke(null) -
-
-
- @GetCommentActionArea(reply.Id, reply.Author.Id, true).Invoke(null) + @if (!Model.Input.IsReadOnly) + { +
+
+
+ @GetCommentActionArea(reply.Id, reply.Author.Id, true).Invoke(null) +
-
-
-
- @if (cmsKitUiOptions.Value.CommentsOptions.IsReactionsEnabled && GlobalFeatureManager.Instance.IsEnabled()) - { - @await Component.InvokeAsync(typeof(ReactionSelectionViewComponent), new { entityType = "comment", entityId = reply.Id.ToString() }) - } +
+
+ @if (cmsKitUiOptions.Value.CommentsOptions.IsReactionsEnabled && GlobalFeatureManager.Instance.IsEnabled()) + { + @await Component.InvokeAsync(typeof(ReactionSelectionViewComponent), new { entityType = "comment", entityId = reply.Id.ToString() }) + } +
-
- @GetEditArea(reply.Id, Model.Input.RawCommentTexts[reply.Id], reply.ConcurrencyStamp).Invoke(null) + @GetEditArea(reply.Id, Model.Input.RawCommentTexts[reply.Id], reply.ConcurrencyStamp).Invoke(null) + }
} From 8219b064e2c13db53961c8f79eaeedc39a093137 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Thu, 19 Oct 2023 11:33:38 +0300 Subject: [PATCH 006/108] Update CMSKit docs according to readonly support --- docs/en/Modules/Cms-Kit/Comments.md | 1 + docs/en/Modules/Cms-Kit/Ratings.md | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/en/Modules/Cms-Kit/Comments.md b/docs/en/Modules/Cms-Kit/Comments.md index cc8d01249b..ddd39fc675 100644 --- a/docs/en/Modules/Cms-Kit/Comments.md +++ b/docs/en/Modules/Cms-Kit/Comments.md @@ -53,6 +53,7 @@ The comment system provides a commenting [widget](../../UI/AspNetCore/Widgets.md { entityType = "Product", entityId = "...", + isReadOnly = false, referralLinks = new [] {"nofollow"} }) ``` diff --git a/docs/en/Modules/Cms-Kit/Ratings.md b/docs/en/Modules/Cms-Kit/Ratings.md index db58602c15..e6a2ba97fd 100644 --- a/docs/en/Modules/Cms-Kit/Ratings.md +++ b/docs/en/Modules/Cms-Kit/Ratings.md @@ -41,7 +41,8 @@ The ratings system provides a rating widget to allow users send ratings to resou @await Component.InvokeAsync(typeof(RatingViewComponent), new { entityType = "Product", - entityId = "entityId" + entityId = "entityId", + isReadOnly = false }) ``` From a2fcff32b5e2211c2054140c047dd6853366383e Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Thu, 19 Oct 2023 12:04:45 +0300 Subject: [PATCH 007/108] Update Client Proxies --- modules/cms-kit/README.md | 24 +++++++ .../cms-kit-admin-generate-proxy.json | 4 +- .../Blogs/BlogFeatureClientProxy.Generated.cs | 28 ++++++++ .../CmsKit/Blogs/BlogFeatureClientProxy.cs | 7 ++ .../MediaDescriptorClientProxy.Generated.cs | 28 ++++++++ .../MediaDescriptorClientProxy.cs | 7 ++ .../cms-kit-common-generate-proxy.json | 54 ++++++++++++++- .../BlogPostPublicClientProxy.Generated.cs | 8 +++ .../ClientProxies/cms-kit-generate-proxy.json | 66 +++++++++++++++++++ 9 files changed, 222 insertions(+), 4 deletions(-) create mode 100644 modules/cms-kit/README.md create mode 100644 modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/Volo/CmsKit/Blogs/BlogFeatureClientProxy.Generated.cs create mode 100644 modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/Volo/CmsKit/Blogs/BlogFeatureClientProxy.cs create mode 100644 modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/Volo/CmsKit/MediaDescriptors/MediaDescriptorClientProxy.Generated.cs create mode 100644 modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/Volo/CmsKit/MediaDescriptors/MediaDescriptorClientProxy.cs diff --git a/modules/cms-kit/README.md b/modules/cms-kit/README.md new file mode 100644 index 0000000000..0f04a38ab8 --- /dev/null +++ b/modules/cms-kit/README.md @@ -0,0 +1,24 @@ +# CMS Kit + +## Updating Client Proxies + +This project have 3 types of client proxies. Before updating client proxies, make sure `Volo.CmsKit.Web.Unified` project is running. +Then you can update Client proxies in 3 different projects. Execute the following commands in the directory of the each project. + +- CMS Kit Public (**Volo.CmsKit.Public.HttpApi.Client**) + ```bash + abp generate-proxy -t csharp -url https://localhost:44349 -m cms-kit --without-contracts + ``` + +- CMS Kit Common (**Volo.CmsKit.Common.HttpApi.Client**) + + ```bash + abp generate-proxy -t csharp -url https://localhost:44349 -m cms-kit-common --without-contracts + ``` + +- CMS Kit Admin (**Volo.CmsKit.Admin.HttpApi.Client**) + + ```bash + abp generate-proxy -t csharp -url https://localhost:44349 -m cms-kit-admin --without-contracts + ``` + diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/cms-kit-admin-generate-proxy.json b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/cms-kit-admin-generate-proxy.json index 73b1e7dfd4..cbb5992ebd 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/cms-kit-admin-generate-proxy.json +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/cms-kit-admin-generate-proxy.json @@ -2873,8 +2873,8 @@ "nameOnMethod": "input", "name": "Status", "jsonName": null, - "type": "Volo.CmsKit.Blogs.BlogPostStatus?", - "typeSimple": "Volo.CmsKit.Blogs.BlogPostStatus?", + "type": "System.String", + "typeSimple": "string", "isOptional": false, "defaultValue": null, "constraintTypes": null, diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/Volo/CmsKit/Blogs/BlogFeatureClientProxy.Generated.cs b/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/Volo/CmsKit/Blogs/BlogFeatureClientProxy.Generated.cs new file mode 100644 index 0000000000..77485c92db --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/Volo/CmsKit/Blogs/BlogFeatureClientProxy.Generated.cs @@ -0,0 +1,28 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; +using Volo.CmsKit.Blogs; + +// ReSharper disable once CheckNamespace +namespace Volo.CmsKit.Blogs; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IBlogFeatureAppService), typeof(BlogFeatureClientProxy))] +public partial class BlogFeatureClientProxy : ClientProxyBase, IBlogFeatureAppService +{ + public virtual async Task GetOrDefaultAsync(Guid blogId, string featureName) + { + return await RequestAsync(nameof(GetOrDefaultAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), blogId }, + { typeof(string), featureName } + }); + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/Volo/CmsKit/Blogs/BlogFeatureClientProxy.cs b/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/Volo/CmsKit/Blogs/BlogFeatureClientProxy.cs new file mode 100644 index 0000000000..e9752dfcc9 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/Volo/CmsKit/Blogs/BlogFeatureClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of BlogFeatureClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace Volo.CmsKit.Blogs; + +public partial class BlogFeatureClientProxy +{ +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/Volo/CmsKit/MediaDescriptors/MediaDescriptorClientProxy.Generated.cs b/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/Volo/CmsKit/MediaDescriptors/MediaDescriptorClientProxy.Generated.cs new file mode 100644 index 0000000000..67eaa76785 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/Volo/CmsKit/MediaDescriptors/MediaDescriptorClientProxy.Generated.cs @@ -0,0 +1,28 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Content; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; +using Volo.CmsKit.MediaDescriptors; + +// ReSharper disable once CheckNamespace +namespace Volo.CmsKit.MediaDescriptors; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IMediaDescriptorAppService), typeof(MediaDescriptorClientProxy))] +public partial class MediaDescriptorClientProxy : ClientProxyBase, IMediaDescriptorAppService +{ + public virtual async Task DownloadAsync(Guid id) + { + return await RequestAsync(nameof(DownloadAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), id } + }); + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/Volo/CmsKit/MediaDescriptors/MediaDescriptorClientProxy.cs b/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/Volo/CmsKit/MediaDescriptors/MediaDescriptorClientProxy.cs new file mode 100644 index 0000000000..028ccff1a2 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/Volo/CmsKit/MediaDescriptors/MediaDescriptorClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of MediaDescriptorClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace Volo.CmsKit.MediaDescriptors; + +public partial class MediaDescriptorClientProxy +{ +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/cms-kit-common-generate-proxy.json b/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/cms-kit-common-generate-proxy.json index 6b7b45220a..07e4bf762c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/cms-kit-common-generate-proxy.json +++ b/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/cms-kit-common-generate-proxy.json @@ -8,11 +8,32 @@ "controllerName": "MediaDescriptor", "controllerGroupName": "MediaDescriptor", "isRemoteService": true, + "isIntegrationService": false, "apiVersion": null, "type": "Volo.CmsKit.MediaDescriptors.MediaDescriptorController", "interfaces": [ { - "type": "Volo.CmsKit.MediaDescriptors.IMediaDescriptorAppService" + "type": "Volo.CmsKit.MediaDescriptors.IMediaDescriptorAppService", + "name": "IMediaDescriptorAppService", + "methods": [ + { + "name": "DownloadAsync", + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Content.RemoteStreamContent", + "typeSimple": "Volo.Abp.Content.RemoteStreamContent" + } + } + ] } ], "actions": { @@ -59,11 +80,40 @@ "controllerName": "BlogFeature", "controllerGroupName": "BlogFeature", "isRemoteService": true, + "isIntegrationService": false, "apiVersion": null, "type": "Volo.CmsKit.Blogs.BlogFeatureController", "interfaces": [ { - "type": "Volo.CmsKit.Blogs.IBlogFeatureAppService" + "type": "Volo.CmsKit.Blogs.IBlogFeatureAppService", + "name": "IBlogFeatureAppService", + "methods": [ + { + "name": "GetOrDefaultAsync", + "parametersOnMethod": [ + { + "name": "blogId", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "featureName", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.CmsKit.Blogs.BlogFeatureDto", + "typeSimple": "Volo.CmsKit.Blogs.BlogFeatureDto" + } + } + ] } ], "actions": { diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Blogs/BlogPostPublicClientProxy.Generated.cs b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Blogs/BlogPostPublicClientProxy.Generated.cs index f269125676..d185f22a27 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Blogs/BlogPostPublicClientProxy.Generated.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Blogs/BlogPostPublicClientProxy.Generated.cs @@ -60,4 +60,12 @@ public partial class BlogPostPublicClientProxy : ClientProxyBase GetTagNameAsync(Guid tagId) + { + return await RequestAsync(nameof(GetTagNameAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), tagId } + }); + } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/ClientProxies/cms-kit-generate-proxy.json b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/ClientProxies/cms-kit-generate-proxy.json index 477938b6de..31e3fb52f8 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/ClientProxies/cms-kit-generate-proxy.json +++ b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/ClientProxies/cms-kit-generate-proxy.json @@ -1512,6 +1512,23 @@ "type": "System.Void", "typeSimple": "System.Void" } + }, + { + "name": "GetTagNameAsync", + "parametersOnMethod": [ + { + "name": "tagId", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.String", + "typeSimple": "string" + } } ] } @@ -1825,6 +1842,55 @@ }, "allowAnonymous": null, "implementFrom": "Volo.CmsKit.Public.Blogs.IBlogPostPublicAppService" + }, + "GetTagNameAsyncByTagId": { + "uniqueName": "GetTagNameAsyncByTagId", + "name": "GetTagNameAsync", + "httpMethod": "GET", + "url": "api/cms-kit-public/blog-posts/tags/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "tagId", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "tagId", + "name": "tagId", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + }, + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": null, + "typeSimple": null, + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.String", + "typeSimple": "string" + }, + "allowAnonymous": null, + "implementFrom": "Volo.CmsKit.Public.Blogs.IBlogPostPublicAppService" } } } From 2c8f24861b4653c361e2d3a21ca2141bc20a05ae Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Thu, 19 Oct 2023 17:34:56 +0300 Subject: [PATCH 008/108] Update CmsKitWebUnifiedModule.cs --- .../host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs index aaadd40f84..ec98cbcf78 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs @@ -116,8 +116,6 @@ public class CmsKitWebUnifiedModule : AbpModule { public override void PreConfigureServices(ServiceConfigurationContext context) { - CmsBlogsWebConsts.BlogsRoutePrefix = "foo"; - FeatureConfigurer.Configure(); } From 939548a6a14b318486e48b400018e1774931d6e1 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Thu, 19 Oct 2023 19:34:52 +0300 Subject: [PATCH 009/108] Add tests for GetTagNameAsync --- .../Blogs/BlogPostPublicAppService_Tests.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Blogs/BlogPostPublicAppService_Tests.cs b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Blogs/BlogPostPublicAppService_Tests.cs index 677e1ac086..edbbe3e8de 100644 --- a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Blogs/BlogPostPublicAppService_Tests.cs +++ b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Blogs/BlogPostPublicAppService_Tests.cs @@ -179,4 +179,19 @@ public class BlogPostPublicAppService_Tests : CmsKitApplicationTestBase allItemsFromRepository.Any(x => x.Id == draftBlogPost2.Id).ShouldBeTrue(); allItemsFromRepository.Any(x => x.Id == publishedBlogPost1.Id).ShouldBeTrue(); } + + [Fact] + public async Task GetTagNameAsync_ShouldReturnCorrectName() + { + var tagName = await blogPostAppService.GetTagNameAsync(cmsKitTestData.TagId_1); + + tagName.ShouldBe(cmsKitTestData.TagName_1); + } + + [Fact] + public async Task GetTagNameAsync_WithNonExistingIdShouldReturnCorrectName() + { + await Should.ThrowAsync( + blogPostAppService.GetTagNameAsync(Guid.NewGuid())); + } } From 83e4c382a1dcec84463b079421eff4c0edd24747 Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 23 Oct 2023 11:10:20 +0800 Subject: [PATCH 010/108] Add `Raw SQL queries for unmapped types` article. --- .../POST.md | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 docs/en/Community-Articles/2023-10-23-NET-8-Feature-raw-sql-queries-for-unmapped-types/POST.md diff --git a/docs/en/Community-Articles/2023-10-23-NET-8-Feature-raw-sql-queries-for-unmapped-types/POST.md b/docs/en/Community-Articles/2023-10-23-NET-8-Feature-raw-sql-queries-for-unmapped-types/POST.md new file mode 100644 index 0000000000..7a783ec40d --- /dev/null +++ b/docs/en/Community-Articles/2023-10-23-NET-8-Feature-raw-sql-queries-for-unmapped-types/POST.md @@ -0,0 +1,53 @@ +# New Raw SQL queries for unmapped types feature with EF Core 8.0 + +## Introduction + +I would love to talk to you about the new feature in EF Core 8.0, specifically the `raw SQL queries for unmapped types`. +This feature was recently introduced by Microsoft and is aimed at providing more flexibility and customization in database queries. + +## What is the raw SQL queries for unmapped types feature? + +To give you a better understanding, let's look at a sample repository method with abp framework. +Here is an example of a raw SQL query using the new feature: + +````csharp +public interface IAuthorRepository : IRepository +{ + Task> GetAllAuthorNamesAsync(); +} + +public class AuthorIdWithNames +{ + public Guid Id { get; set; } + + public string Name { get; set; } +} + +public class EfCoreAuthorRepository : EfCoreRepository, IAuthorRepository +{ + public EfCoreAuthorRepository(IDbContextProvider dbContextProvider) + : base(dbContextProvider) + { + } + + public virtual async Task> GetAllAuthorNamesAsync() + { + return await (await GetDbContextAsync()).Database.SqlQuery(@$"SELECT Id, Name FROM Authors").ToListAsync(); + } +} +```` + +In this code, we can see that we are using the `SqlQuery` method to execute a raw SQL query on a custom type, in this case, `AuthorIdWithNames`. This allows us to retrieve data that may not be mapped to any of our entity classes in the context. + +## In summary + +This feature can be particularly useful in scenarios where we need to access data from tables or views that are not directly mapped to our entities. It also provides an alternative to using stored procedures for querying data. + +However, it's important to note that using raw SQL queries can increase the risk of SQL injection attacks. So, it's recommended to use parameterized queries to prevent this. Additionally, this feature may not work with certain database providers, so it's important to check for compatibility before implementing it. + +In conclusion, the raw SQL queries for unmapped types feature in EF Core 8.0 is a great addition for developers looking for more flexibility in database queries. It allows us to work with data that may not be directly mapped to our entities and can be a useful tool in certain scenarios. Just remember to use parameterized queries and check for compatibility before implementing it. + +## References + +- [Raw SQL queries for unmapped types](https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-8.0/whatsnew#raw-sql-queries-for-unmapped-types) +- [SQL Queries](https://learn.microsoft.com/en-us/ef/core/querying/sql-queries#querying-scalar-(non-entity)-types) From 5381c9e7222176f1ba77f382cc95e4a0ffb59b2f Mon Sep 17 00:00:00 2001 From: maliming Date: Tue, 24 Oct 2023 08:48:26 +0800 Subject: [PATCH 011/108] Add `AddMarginBottomClass` to remove the `mb` class. Resolve #17948 --- .../TagHelpers/Card/AbpCardTagHelper.cs | 2 ++ .../TagHelpers/Card/AbpCardTagHelperService.cs | 6 +++++- .../TagHelpers/Form/AbpInputTagHelper.cs | 2 ++ .../TagHelpers/Form/AbpInputTagHelperService.cs | 8 ++++++-- .../TagHelpers/Form/AbpSelectTagHelper.cs | 4 +++- .../TagHelpers/Form/AbpSelectTagHelperService.cs | 9 +++++++-- .../Form/DatePicker/AbpDatePickerBaseTagHelper.cs | 14 ++++++++------ .../AbpDatePickerBaseTagHelperService.cs | 14 +++++++++----- 8 files changed, 42 insertions(+), 17 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTagHelper.cs index 5b568e16a6..dee16585b7 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTagHelper.cs @@ -4,6 +4,8 @@ public class AbpCardTagHelper : AbpTagHelper public override void Process(TagHelperContext context, TagHelperOutput output) { output.TagName = "div"; - output.Attributes.AddClass("card mb-3"); + output.Attributes.AddClass("card"); + if (TagHelper.AddMarginBottomClass) + { + output.Attributes.AddClass("mb-3"); + } SetBorder(context, output); } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelper.cs index a426b50d33..62cae94413 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelper.cs @@ -52,6 +52,8 @@ public class AbpInputTagHelper : AbpTagHelper { output.Attributes.AddClass("form-floating"); } - output.Attributes.AddClass(isCheckBox ? "mb-2" : "mb-3"); + if (TagHelper.AddMarginBottomClass) + { + output.Attributes.AddClass(isCheckBox ? "mb-2" : "mb-3"); + } if (isCheckBox) { output.Attributes.AddClass("custom-checkbox"); @@ -110,7 +113,8 @@ public class AbpInputTagHelperService : AbpTagHelperService protected virtual string SurroundInnerHtmlAndGet(TagHelperContext context, TagHelperOutput output, string innerHtml, bool isCheckbox) { - return "
" + + var mb = TagHelper.AddMarginBottomClass ? (isCheckbox ? "mb-2" : "mb-3") : string.Empty; + return "
" + Environment.NewLine + innerHtml + Environment.NewLine + "
"; } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelper.cs index 7d11f69636..dbcf84437f 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelper.cs @@ -37,7 +37,7 @@ public class AbpSelectTagHelper : AbpTagHelper { output.Attributes.AddClass("form-floating"); } - output.Attributes.AddClass("mb-3"); + + if (TagHelper.AddMarginBottomClass) + { + output.Attributes.AddClass("mb-3"); + } output.TagMode = TagMode.StartTagAndEndTag; output.Content.SetHtmlContent(innerHtml); } @@ -79,7 +83,8 @@ public class AbpSelectTagHelperService : AbpTagHelperService protected virtual string SurroundInnerHtmlAndGet(TagHelperContext context, TagHelperOutput output, string innerHtml) { - return "
" + Environment.NewLine + innerHtml + Environment.NewLine + "
"; + var mb3 = TagHelper.AddMarginBottomClass ? "mb-3" : string.Empty; + return $"
" + Environment.NewLine + innerHtml + Environment.NewLine + "
"; } protected virtual async Task GetSelectTagAsync(TagHelperContext context, TagHelperOutput output, TagHelperContent childContent) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelper.cs index fed2981613..079431c9c6 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelper.cs @@ -21,20 +21,20 @@ public abstract class public bool LabelTooltipHtml { get; set; } = false; - [HtmlAttributeName("info")] + [HtmlAttributeName("info")] public string? InfoText { get; set; } - [HtmlAttributeName("disabled")] + [HtmlAttributeName("disabled")] public bool IsDisabled { get; set; } = false; - [HtmlAttributeName("readonly")] + [HtmlAttributeName("readonly")] public bool? IsReadonly { get; set; } = false; public bool AutoFocus { get; set; } public AbpFormControlSize Size { get; set; } = AbpFormControlSize.Default; - [HtmlAttributeName("required-symbol")] + [HtmlAttributeName("required-symbol")] public bool DisplayRequiredSymbol { get; set; } = true; public string? Name { get; set; } @@ -43,11 +43,13 @@ public abstract class public bool SuppressLabel { get; set; } + public bool AddMarginBottomClass { get; set; } = true; + protected AbpDatePickerBaseTagHelper(AbpDatePickerBaseTagHelperService service) : base(service) { _abpDatePickerOptionsImplementation = new AbpDatePickerOptions(); } - + public void SetDatePickerOptions(IAbpDatePickerOptions options) { _abpDatePickerOptionsImplementation = options; @@ -217,4 +219,4 @@ public abstract class get => _abpDatePickerOptionsImplementation.Options; set => _abpDatePickerOptionsImplementation.Options = value; } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs index 024fd4dd45..54e8720b17 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs @@ -22,7 +22,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form.DatePicker; public abstract class AbpDatePickerBaseTagHelperService : AbpTagHelperService where TTagHelper : AbpDatePickerBaseTagHelper { - protected readonly Dictionary> SupportedInputTypes = new() + protected readonly Dictionary> SupportedInputTypes = new() { { typeof(string), o => @@ -42,7 +42,7 @@ public abstract class AbpDatePickerBaseTagHelperService : AbpTagHelp { return dt.ToString("O"); } - + return string.Empty; } }, @@ -54,7 +54,7 @@ public abstract class AbpDatePickerBaseTagHelperService : AbpTagHelp { return dto.ToString("O"); } - + return string.Empty; } }, @@ -161,7 +161,10 @@ public abstract class AbpDatePickerBaseTagHelperService : AbpTagHelp output.TagMode = TagMode.StartTagAndEndTag; output.TagName = "div"; LeaveOnlyGroupAttributes(context, output); - output.Attributes.AddClass("mb-3"); + if (TagHelper.AddMarginBottomClass) + { + output.Attributes.AddClass("mb-3"); + } output.Content.AppendHtml(innerHtml); } @@ -224,7 +227,8 @@ public abstract class AbpDatePickerBaseTagHelperService : AbpTagHelp protected virtual string SurroundInnerHtmlAndGet(TagHelperContext context, TagHelperOutput output, string innerHtml) { - return "
" + + var mb = TagHelper.AddMarginBottomClass ? "mb-3" : string.Empty; + return $"
" + Environment.NewLine + innerHtml + Environment.NewLine + "
"; } From 6a9026a72273c28eeefc5e7af81c71bcb96b2c43 Mon Sep 17 00:00:00 2001 From: maliming Date: Tue, 24 Oct 2023 09:48:49 +0800 Subject: [PATCH 012/108] Add `New Containers feature with NET 8.0` article. --- .../POST.md | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 docs/en/Community-Articles/2023-10-23-NET-8-Feature-containers/POST.md diff --git a/docs/en/Community-Articles/2023-10-23-NET-8-Feature-containers/POST.md b/docs/en/Community-Articles/2023-10-23-NET-8-Feature-containers/POST.md new file mode 100644 index 0000000000..139b2f17b1 --- /dev/null +++ b/docs/en/Community-Articles/2023-10-23-NET-8-Feature-containers/POST.md @@ -0,0 +1,30 @@ +# New Containers feature with NET 8.0 + +This article will show you the new feature of containers with NET 8.0. + +## Non-root user + +The `Non-root user` feature on net 8 is a security measure that allows users to have limited access to the system without having full administrative privileges. Hosting containers as `non-root` aligns with principle of least privilege. +It’s free security provided by the operating system. If you run your app as root, your app process can do anything in the container, like modify files, install packages, or run arbitrary executables. +That’s a concern if your app is ever attacked. If you run your app as non-root, your app process cannot do much, greatly limiting what a bad actor could accomplish. + +## Default ASP.NET Core port changed from 80 to 8080 + +In .NET 8, there has been a change in the default port used by ASP.NET Core applications. Previously, the default port assigned to ASP.NET Core applications was `80`. However, starting from .NET 8, the default port has been changed to `8080`. +This change was made to avoid conflicts with other applications and services that commonly use port 80, such as web servers like IIS or Apache. By using port 8080 as the default, there is less potential for clashes and easier deployment of ASP.NET Core applications alongside other services. + +It's important to note that this change only affects the default port used when an ASP.NET Core application is run without explicitly specifying a port. + +If you want your application to continue using port 80, you can still specify it during the application launch or configure it in the application settings. + +* Recommended: Explicitly set the `ASPNETCORE_HTTP_PORTS`, `ASPNETCORE_HTTPS_PORTS``, and `ASPNETCORE_URLS` environment variables to the desired port. Example: `docker run --rm -it -p 9999:80 -e ASPNETCORE_HTTP_PORTS=80 `` +* Update existing commands and configuration that rely on the expected default port of port 80 to reference port 8080 instead. Example: `docker run --rm -it -p 9999:8080 `` + +> The `dockerfile` of abp templates has been updated to use port `80`. + +## References + +- [Secure your .NET cloud apps with rootless Linux Containers](https://devblogs.microsoft.com/dotnet/securing-containers-with-rootless/) +- [Containers breaking changes](https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-8#containers) +- [ASP.NET Core apps use port 8080 by default](https://learn.microsoft.com/en-us/dotnet/core/compatibility/8.0#containers) +- [Docker images for ASP.NET Core](https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/docker/building-net-docker-images?view=aspnetcore-8.0) From abdf2a320d5cb196a26546f82006958e23df5cf0 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 26 Oct 2023 11:26:58 +0800 Subject: [PATCH 013/108] Remove `Required` constraints of `EntityChange's EntityId`. --- .../AbpAuditLoggingDbContextModelBuilderExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingDbContextModelBuilderExtensions.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingDbContextModelBuilderExtensions.cs index 8a3cd7de23..e63d806993 100644 --- a/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingDbContextModelBuilderExtensions.cs +++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingDbContextModelBuilderExtensions.cs @@ -73,7 +73,7 @@ public static class AbpAuditLoggingDbContextModelBuilderExtensions b.ConfigureByConvention(); b.Property(x => x.EntityTypeFullName).HasMaxLength(EntityChangeConsts.MaxEntityTypeFullNameLength).IsRequired().HasColumnName(nameof(EntityChange.EntityTypeFullName)); - b.Property(x => x.EntityId).HasMaxLength(EntityChangeConsts.MaxEntityIdLength).IsRequired().HasColumnName(nameof(EntityChange.EntityId)); + b.Property(x => x.EntityId).HasMaxLength(EntityChangeConsts.MaxEntityIdLength).HasColumnName(nameof(EntityChange.EntityId)); b.Property(x => x.AuditLogId).IsRequired().HasColumnName(nameof(EntityChange.AuditLogId)); b.Property(x => x.ChangeTime).IsRequired().HasColumnName(nameof(EntityChange.ChangeTime)); b.Property(x => x.ChangeType).IsRequired().HasColumnName(nameof(EntityChange.ChangeType)); From eb1959d765c71f4df3f17b8c850c5543a6b9880a Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 26 Oct 2023 15:12:15 +0800 Subject: [PATCH 014/108] Update EF Core migrations. --- ...nitial.Designer.cs => 20231026071039_Initial.Designer.cs} | 5 ++--- .../{20231003031426_Initial.cs => 20231026071039_Initial.cs} | 2 +- .../Migrations/MyProjectNameDbContextModelSnapshot.cs | 3 +-- ...nitial.Designer.cs => 20231026071041_Initial.Designer.cs} | 5 ++--- .../Server/Migrations/20231026071041_Initial.cs} | 2 +- .../Server/Migrations/MyProjectNameDbContextModelSnapshot.cs | 3 +-- ...nitial.Designer.cs => 20231026071035_Initial.Designer.cs} | 5 ++--- .../{20231003031446_Initial.cs => 20231026071035_Initial.cs} | 2 +- .../Migrations/MyProjectNameDbContextModelSnapshot.cs | 3 +-- ...nitial.Designer.cs => 20231026071042_Initial.Designer.cs} | 5 ++--- .../{20231003031451_Initial.cs => 20231026071042_Initial.cs} | 2 +- .../Migrations/MyProjectNameDbContextModelSnapshot.cs | 3 +-- ...nitial.Designer.cs => 20231026070402_Initial.Designer.cs} | 5 ++--- .../{20231003030048_Initial.cs => 20231026070402_Initial.cs} | 2 +- .../Migrations/MyProjectNameDbContextModelSnapshot.cs | 3 +-- ...nitial.Designer.cs => 20231026071058_Initial.Designer.cs} | 5 ++--- .../Migrations/20231026071058_Initial.cs} | 2 +- .../Migrations/AuthServerDbContextModelSnapshot.cs | 3 +-- ...nitial.Designer.cs => 20231026071107_Initial.Designer.cs} | 5 ++--- .../{20231003031642_Initial.cs => 20231026071107_Initial.cs} | 2 +- .../Migrations/UnifiedDbContextModelSnapshot.cs | 3 +-- ...nitial.Designer.cs => 20231026071207_Initial.Designer.cs} | 5 ++--- .../{20231003031645_Initial.cs => 20231026071207_Initial.cs} | 2 +- .../Migrations/UnifiedDbContextModelSnapshot.cs | 3 +-- 24 files changed, 32 insertions(+), 48 deletions(-) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/{20231003031426_Initial.Designer.cs => 20231026071039_Initial.Designer.cs} (99%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/{20231003031426_Initial.cs => 20231026071039_Initial.cs} (99%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/{20231003031450_Initial.Designer.cs => 20231026071041_Initial.Designer.cs} (99%) rename templates/{module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231003031621_Initial.cs => app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231026071041_Initial.cs} (99%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/{20231003031446_Initial.Designer.cs => 20231026071035_Initial.Designer.cs} (99%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/{20231003031446_Initial.cs => 20231026071035_Initial.cs} (99%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/{20231003031451_Initial.Designer.cs => 20231026071042_Initial.Designer.cs} (99%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/{20231003031451_Initial.cs => 20231026071042_Initial.cs} (99%) rename templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/{20231003030048_Initial.Designer.cs => 20231026070402_Initial.Designer.cs} (99%) rename templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/{20231003030048_Initial.cs => 20231026070402_Initial.cs} (99%) rename templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/{20231003031621_Initial.Designer.cs => 20231026071058_Initial.Designer.cs} (99%) rename templates/{app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231003031450_Initial.cs => module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231026071058_Initial.cs} (99%) rename templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/{20231003031642_Initial.Designer.cs => 20231026071107_Initial.Designer.cs} (99%) rename templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/{20231003031642_Initial.cs => 20231026071107_Initial.cs} (99%) rename templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/{20231003031645_Initial.Designer.cs => 20231026071207_Initial.Designer.cs} (99%) rename templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/{20231003031645_Initial.cs => 20231026071207_Initial.cs} (99%) diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231003031426_Initial.Designer.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231026071039_Initial.Designer.cs similarity index 99% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231003031426_Initial.Designer.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231026071039_Initial.Designer.cs index e73ffc0d1d..f6131569e7 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231003031426_Initial.Designer.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231026071039_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations { [DbContext(typeof(MyProjectNameDbContext))] - [Migration("20231003031426_Initial")] + [Migration("20231026071039_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.0-rc.1.23419.6") + .HasAnnotation("ProductVersion", "8.0.0-rc.2.23480.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -218,7 +218,6 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnName("ChangeType"); b.Property("EntityId") - .IsRequired() .HasMaxLength(128) .HasColumnType("nvarchar(128)") .HasColumnName("EntityId"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231003031426_Initial.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231026071039_Initial.cs similarity index 99% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231003031426_Initial.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231026071039_Initial.cs index 8b6e1b81cf..10e01ba747 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231003031426_Initial.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231026071039_Initial.cs @@ -464,7 +464,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations ChangeTime = table.Column(type: "datetime2", nullable: false), ChangeType = table.Column(type: "tinyint", nullable: false), EntityTenantId = table.Column(type: "uniqueidentifier", nullable: true), - EntityId = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + EntityId = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), EntityTypeFullName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) }, diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs index cdb1b5bacf..97625b9411 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.0-rc.1.23419.6") + .HasAnnotation("ProductVersion", "8.0.0-rc.2.23480.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -215,7 +215,6 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnName("ChangeType"); b.Property("EntityId") - .IsRequired() .HasMaxLength(128) .HasColumnType("nvarchar(128)") .HasColumnName("EntityId"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231003031450_Initial.Designer.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231026071041_Initial.Designer.cs similarity index 99% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231003031450_Initial.Designer.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231026071041_Initial.Designer.cs index f2ed06d4cd..222393bd82 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231003031450_Initial.Designer.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231026071041_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Migrations { [DbContext(typeof(MyProjectNameDbContext))] - [Migration("20231003031450_Initial")] + [Migration("20231026071041_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.0-rc.1.23419.6") + .HasAnnotation("ProductVersion", "8.0.0-rc.2.23480.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -218,7 +218,6 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("ChangeType"); b.Property("EntityId") - .IsRequired() .HasMaxLength(128) .HasColumnType("nvarchar(128)") .HasColumnName("EntityId"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231003031621_Initial.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231026071041_Initial.cs similarity index 99% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231003031621_Initial.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231026071041_Initial.cs index d79d7169cb..193fa0b299 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231003031621_Initial.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231026071041_Initial.cs @@ -464,7 +464,7 @@ namespace MyCompanyName.MyProjectName.Migrations ChangeTime = table.Column(type: "datetime2", nullable: false), ChangeType = table.Column(type: "tinyint", nullable: false), EntityTenantId = table.Column(type: "uniqueidentifier", nullable: true), - EntityId = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + EntityId = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), EntityTypeFullName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) }, diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/MyProjectNameDbContextModelSnapshot.cs index 5697b4d5ef..2ab818fa36 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/MyProjectNameDbContextModelSnapshot.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/MyProjectNameDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.0-rc.1.23419.6") + .HasAnnotation("ProductVersion", "8.0.0-rc.2.23480.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -215,7 +215,6 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("ChangeType"); b.Property("EntityId") - .IsRequired() .HasMaxLength(128) .HasColumnType("nvarchar(128)") .HasColumnName("EntityId"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231003031446_Initial.Designer.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231026071035_Initial.Designer.cs similarity index 99% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231003031446_Initial.Designer.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231026071035_Initial.Designer.cs index cdefb06e34..e25c062a5d 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231003031446_Initial.Designer.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231026071035_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Host.Migrations { [DbContext(typeof(MyProjectNameDbContext))] - [Migration("20231003031446_Initial")] + [Migration("20231026071035_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.0-rc.1.23419.6") + .HasAnnotation("ProductVersion", "8.0.0-rc.2.23480.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -218,7 +218,6 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnName("ChangeType"); b.Property("EntityId") - .IsRequired() .HasMaxLength(128) .HasColumnType("nvarchar(128)") .HasColumnName("EntityId"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231003031446_Initial.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231026071035_Initial.cs similarity index 99% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231003031446_Initial.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231026071035_Initial.cs index 9eaa158d4b..3b285fc029 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231003031446_Initial.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231026071035_Initial.cs @@ -464,7 +464,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations ChangeTime = table.Column(type: "datetime2", nullable: false), ChangeType = table.Column(type: "tinyint", nullable: false), EntityTenantId = table.Column(type: "uniqueidentifier", nullable: true), - EntityId = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + EntityId = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), EntityTypeFullName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) }, diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs index 04ad8a488a..a38be819e5 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.0-rc.1.23419.6") + .HasAnnotation("ProductVersion", "8.0.0-rc.2.23480.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -215,7 +215,6 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnName("ChangeType"); b.Property("EntityId") - .IsRequired() .HasMaxLength(128) .HasColumnType("nvarchar(128)") .HasColumnName("EntityId"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231003031451_Initial.Designer.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231026071042_Initial.Designer.cs similarity index 99% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231003031451_Initial.Designer.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231026071042_Initial.Designer.cs index a3684f655c..cce37bd3dd 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231003031451_Initial.Designer.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231026071042_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Mvc.Migrations { [DbContext(typeof(MyProjectNameDbContext))] - [Migration("20231003031451_Initial")] + [Migration("20231026071042_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.0-rc.1.23419.6") + .HasAnnotation("ProductVersion", "8.0.0-rc.2.23480.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -218,7 +218,6 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnName("ChangeType"); b.Property("EntityId") - .IsRequired() .HasMaxLength(128) .HasColumnType("nvarchar(128)") .HasColumnName("EntityId"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231003031451_Initial.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231026071042_Initial.cs similarity index 99% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231003031451_Initial.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231026071042_Initial.cs index 03261fb7bd..2263582b8a 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231003031451_Initial.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231026071042_Initial.cs @@ -464,7 +464,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations ChangeTime = table.Column(type: "datetime2", nullable: false), ChangeType = table.Column(type: "tinyint", nullable: false), EntityTenantId = table.Column(type: "uniqueidentifier", nullable: true), - EntityId = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + EntityId = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), EntityTypeFullName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) }, diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs index b28dbf62b4..9e899c6051 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.0-rc.1.23419.6") + .HasAnnotation("ProductVersion", "8.0.0-rc.2.23480.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -215,7 +215,6 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnName("ChangeType"); b.Property("EntityId") - .IsRequired() .HasMaxLength(128) .HasColumnType("nvarchar(128)") .HasColumnName("EntityId"); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231003030048_Initial.Designer.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231026070402_Initial.Designer.cs similarity index 99% rename from templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231003030048_Initial.Designer.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231026070402_Initial.Designer.cs index d80788a40e..6ed09621a7 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231003030048_Initial.Designer.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231026070402_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Migrations { [DbContext(typeof(MyProjectNameDbContext))] - [Migration("20231003030048_Initial")] + [Migration("20231026070402_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.0-rc.1.23419.6") + .HasAnnotation("ProductVersion", "8.0.0-rc.2.23480.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -218,7 +218,6 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("ChangeType"); b.Property("EntityId") - .IsRequired() .HasMaxLength(128) .HasColumnType("nvarchar(128)") .HasColumnName("EntityId"); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231003030048_Initial.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231026070402_Initial.cs similarity index 99% rename from templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231003030048_Initial.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231026070402_Initial.cs index 00c66b2800..bef0c6b97d 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231003030048_Initial.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231026070402_Initial.cs @@ -485,7 +485,7 @@ namespace MyCompanyName.MyProjectName.Migrations ChangeTime = table.Column(type: "datetime2", nullable: false), ChangeType = table.Column(type: "tinyint", nullable: false), EntityTenantId = table.Column(type: "uniqueidentifier", nullable: true), - EntityId = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + EntityId = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), EntityTypeFullName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) }, diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs index 1198a563d4..f44d13227d 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.0-rc.1.23419.6") + .HasAnnotation("ProductVersion", "8.0.0-rc.2.23480.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -215,7 +215,6 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("ChangeType"); b.Property("EntityId") - .IsRequired() .HasMaxLength(128) .HasColumnType("nvarchar(128)") .HasColumnName("EntityId"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231003031621_Initial.Designer.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231026071058_Initial.Designer.cs similarity index 99% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231003031621_Initial.Designer.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231026071058_Initial.Designer.cs index e9ad539254..b6947fded4 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231003031621_Initial.Designer.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231026071058_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Migrations { [DbContext(typeof(AuthServerDbContext))] - [Migration("20231003031621_Initial")] + [Migration("20231026071058_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.0-rc.1.23419.6") + .HasAnnotation("ProductVersion", "8.0.0-rc.2.23480.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -218,7 +218,6 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("ChangeType"); b.Property("EntityId") - .IsRequired() .HasMaxLength(128) .HasColumnType("nvarchar(128)") .HasColumnName("EntityId"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231003031450_Initial.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231026071058_Initial.cs similarity index 99% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231003031450_Initial.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231026071058_Initial.cs index d79d7169cb..193fa0b299 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231003031450_Initial.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231026071058_Initial.cs @@ -464,7 +464,7 @@ namespace MyCompanyName.MyProjectName.Migrations ChangeTime = table.Column(type: "datetime2", nullable: false), ChangeType = table.Column(type: "tinyint", nullable: false), EntityTenantId = table.Column(type: "uniqueidentifier", nullable: true), - EntityId = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + EntityId = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), EntityTypeFullName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) }, diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs index b60bca4607..849e6894c2 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.0-rc.1.23419.6") + .HasAnnotation("ProductVersion", "8.0.0-rc.2.23480.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -215,7 +215,6 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("ChangeType"); b.Property("EntityId") - .IsRequired() .HasMaxLength(128) .HasColumnType("nvarchar(128)") .HasColumnName("EntityId"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20231003031642_Initial.Designer.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20231026071107_Initial.Designer.cs similarity index 99% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20231003031642_Initial.Designer.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20231026071107_Initial.Designer.cs index c4d7e314c4..34883896f8 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20231003031642_Initial.Designer.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20231026071107_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations { [DbContext(typeof(UnifiedDbContext))] - [Migration("20231003031642_Initial")] + [Migration("20231026071107_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.0-rc.1.23419.6") + .HasAnnotation("ProductVersion", "8.0.0-rc.2.23480.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -218,7 +218,6 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnName("ChangeType"); b.Property("EntityId") - .IsRequired() .HasMaxLength(128) .HasColumnType("nvarchar(128)") .HasColumnName("EntityId"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20231003031642_Initial.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20231026071107_Initial.cs similarity index 99% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20231003031642_Initial.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20231026071107_Initial.cs index c75c765e1a..b21456cc73 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20231003031642_Initial.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20231026071107_Initial.cs @@ -404,7 +404,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations ChangeTime = table.Column(type: "datetime2", nullable: false), ChangeType = table.Column(type: "tinyint", nullable: false), EntityTenantId = table.Column(type: "uniqueidentifier", nullable: true), - EntityId = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + EntityId = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), EntityTypeFullName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) }, diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/UnifiedDbContextModelSnapshot.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/UnifiedDbContextModelSnapshot.cs index 6172cec5c5..102de849e7 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/UnifiedDbContextModelSnapshot.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/UnifiedDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.0-rc.1.23419.6") + .HasAnnotation("ProductVersion", "8.0.0-rc.2.23480.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -215,7 +215,6 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnName("ChangeType"); b.Property("EntityId") - .IsRequired() .HasMaxLength(128) .HasColumnType("nvarchar(128)") .HasColumnName("EntityId"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20231003031645_Initial.Designer.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20231026071207_Initial.Designer.cs similarity index 99% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20231003031645_Initial.Designer.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20231026071207_Initial.Designer.cs index cb4ee3216d..db13e9c657 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20231003031645_Initial.Designer.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20231026071207_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Migrations { [DbContext(typeof(UnifiedDbContext))] - [Migration("20231003031645_Initial")] + [Migration("20231026071207_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.0-rc.1.23419.6") + .HasAnnotation("ProductVersion", "8.0.0-rc.2.23480.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -218,7 +218,6 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("ChangeType"); b.Property("EntityId") - .IsRequired() .HasMaxLength(128) .HasColumnType("nvarchar(128)") .HasColumnName("EntityId"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20231003031645_Initial.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20231026071207_Initial.cs similarity index 99% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20231003031645_Initial.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20231026071207_Initial.cs index ddeb81c91f..d19146cde5 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20231003031645_Initial.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20231026071207_Initial.cs @@ -404,7 +404,7 @@ namespace MyCompanyName.MyProjectName.Migrations ChangeTime = table.Column(type: "datetime2", nullable: false), ChangeType = table.Column(type: "tinyint", nullable: false), EntityTenantId = table.Column(type: "uniqueidentifier", nullable: true), - EntityId = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + EntityId = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), EntityTypeFullName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) }, diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs index bfffc80e3d..a8942a8d84 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.0-rc.1.23419.6") + .HasAnnotation("ProductVersion", "8.0.0-rc.2.23480.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -215,7 +215,6 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("ChangeType"); b.Property("EntityId") - .IsRequired() .HasMaxLength(128) .HasColumnType("nvarchar(128)") .HasColumnName("EntityId"); From 5aea62d0ce54f54ae19686f4942b65315997f01c Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Thu, 26 Oct 2023 18:17:25 +0300 Subject: [PATCH 015/108] resolves #2070 --- docs/en/UI/Angular/Service-Proxies.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/en/UI/Angular/Service-Proxies.md b/docs/en/UI/Angular/Service-Proxies.md index 6cd79505c2..992b393d5b 100644 --- a/docs/en/UI/Angular/Service-Proxies.md +++ b/docs/en/UI/Angular/Service-Proxies.md @@ -73,6 +73,17 @@ export const environment: Config.Environment = { > The destination the `proxy` folder is created and the paths above may change based on your project structure. +### Parameters of generate-proxy + +Parameters: +- module or -m: it is backend module name. the default is `app`. the object key of modules defined in response of `api/abp/api-definition`. For example, if you want to generate-proxy of PermissionManagement, you should pass `permissionManagement` as a value. +- apiName or -a: it is Backend api name, a.k.a. remoteServiceName. it defined in the selected module (in response of `api/abp/api-definition`). the property(key) name is `remoteServiceName`. for example for the PermissionManagement, you should pass `AbpPermissionManagement` +- source: Source Angular project for API definition URL & root namespace resolution. +- target: Target Angular project to place the generated code, for example, it is `permission-management`. (npm/ng-packs/packages/*permission-management*). it is folder name. +- entryPoint: Custom place to create generate proxy folder in the target. the place is `permission-management/proxy/src/lib/proxy`. `permission-management` is value of target. if you want to create proxy the place, there is a two option, one you should set value `proxy` as entryPoint. or go to project.json and change `sourceRoot` to `packages/permission-management/proxy/src` from `packages/permission-management/src`. with the property. No need to change sourceRoot of project. if you set empty, proxy generated into folder that defined in sourceRoot property. +- serviceType: the service type of will generate proxy. The options are `application`, `integration` and `all`, Default valueis `application`. A developer can mark a service "integration service". if you want to skip proxy generation for the service, the setting is for you. More info about [Integration Services](../../Integration-Services) + + ### Services The `generate-proxy` command generates one service per back-end controller and a method (property with a function value actually) for each action in the controller. These methods call backend APIs via [RestService](./Http-Requests#restservice). From b9632e5b10844257435a04651c234b6acc649814 Mon Sep 17 00:00:00 2001 From: Masum ULU <49063256+masumulu28@users.noreply.github.com> Date: Fri, 27 Oct 2023 08:26:44 +0300 Subject: [PATCH 016/108] Update Service-Proxies.md --- docs/en/UI/Angular/Service-Proxies.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/en/UI/Angular/Service-Proxies.md b/docs/en/UI/Angular/Service-Proxies.md index 992b393d5b..b577cadd8c 100644 --- a/docs/en/UI/Angular/Service-Proxies.md +++ b/docs/en/UI/Angular/Service-Proxies.md @@ -76,12 +76,12 @@ export const environment: Config.Environment = { ### Parameters of generate-proxy Parameters: -- module or -m: it is backend module name. the default is `app`. the object key of modules defined in response of `api/abp/api-definition`. For example, if you want to generate-proxy of PermissionManagement, you should pass `permissionManagement` as a value. -- apiName or -a: it is Backend api name, a.k.a. remoteServiceName. it defined in the selected module (in response of `api/abp/api-definition`). the property(key) name is `remoteServiceName`. for example for the PermissionManagement, you should pass `AbpPermissionManagement` -- source: Source Angular project for API definition URL & root namespace resolution. -- target: Target Angular project to place the generated code, for example, it is `permission-management`. (npm/ng-packs/packages/*permission-management*). it is folder name. -- entryPoint: Custom place to create generate proxy folder in the target. the place is `permission-management/proxy/src/lib/proxy`. `permission-management` is value of target. if you want to create proxy the place, there is a two option, one you should set value `proxy` as entryPoint. or go to project.json and change `sourceRoot` to `packages/permission-management/proxy/src` from `packages/permission-management/src`. with the property. No need to change sourceRoot of project. if you set empty, proxy generated into folder that defined in sourceRoot property. -- serviceType: the service type of will generate proxy. The options are `application`, `integration` and `all`, Default valueis `application`. A developer can mark a service "integration service". if you want to skip proxy generation for the service, the setting is for you. More info about [Integration Services](../../Integration-Services) +- **module or -m:** it is backend module name. the default is `app`. the object key of modules defined in response of `api/abp/api-definition`. For example, if you want to generate-proxy of PermissionManagement, you should pass `permissionManagement` as a value. +- **apiName or -a:** it is Backend api name, a.k.a. remoteServiceName. it defined in the selected module (in response of `api/abp/api-definition`). the property(key) name is `remoteServiceName`. for example for the PermissionManagement, you should pass `AbpPermissionManagement` +- **source:** Source Angular project for API definition URL & root namespace resolution. +- **target:** Target Angular project to place the generated code, for example, it is `permission-management`. (npm/ng-packs/packages/*permission-management*). it is folder name. +- **entryPoint:** Custom place to create generate proxy folder in the target. the place is `permission-management/proxy/src/lib/proxy`. `permission-management` is value of target. if you want to create proxy the place, there is a two option, one you should set value `proxy` as entryPoint. or go to project.json and change `sourceRoot` to `packages/permission-management/proxy/src` from `packages/permission-management/src`. with the property. No need to change sourceRoot of project. if you set empty, proxy generated into folder that defined in sourceRoot property. +- **serviceType:** the service type of will generate proxy. The options are `application`, `integration` and `all`, Default valueis `application`. A developer can mark a service "integration service". if you want to skip proxy generation for the service, the setting is for you. More info about [Integration Services](../../Integration-Services) ### Services From 37d7f0b992296dc49e63f74cd5e76b767bdeb3bc Mon Sep 17 00:00:00 2001 From: Masum ULU <49063256+masumulu28@users.noreply.github.com> Date: Fri, 27 Oct 2023 08:28:03 +0300 Subject: [PATCH 017/108] Update title of generate-proxy params --- docs/en/UI/Angular/Service-Proxies.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/en/UI/Angular/Service-Proxies.md b/docs/en/UI/Angular/Service-Proxies.md index b577cadd8c..58c731e44c 100644 --- a/docs/en/UI/Angular/Service-Proxies.md +++ b/docs/en/UI/Angular/Service-Proxies.md @@ -73,9 +73,8 @@ export const environment: Config.Environment = { > The destination the `proxy` folder is created and the paths above may change based on your project structure. -### Parameters of generate-proxy +## Parameters of generate-proxy -Parameters: - **module or -m:** it is backend module name. the default is `app`. the object key of modules defined in response of `api/abp/api-definition`. For example, if you want to generate-proxy of PermissionManagement, you should pass `permissionManagement` as a value. - **apiName or -a:** it is Backend api name, a.k.a. remoteServiceName. it defined in the selected module (in response of `api/abp/api-definition`). the property(key) name is `remoteServiceName`. for example for the PermissionManagement, you should pass `AbpPermissionManagement` - **source:** Source Angular project for API definition URL & root namespace resolution. From cde7446d325def8730552d53133d90db64bca7c3 Mon Sep 17 00:00:00 2001 From: Huang Tao Date: Fri, 27 Oct 2023 16:02:10 +0800 Subject: [PATCH 018/108] performance: multiple attach on Update with EfCore --- .../Repositories/EntityFrameworkCore/EfCoreRepository.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs index 3274360ba2..d73e18615d 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs +++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs @@ -161,16 +161,17 @@ public class EfCoreRepository : RepositoryBase, IE { var dbContext = await GetDbContextAsync(); - dbContext.Attach(entity); - - var updatedEntity = dbContext.Update(entity).Entity; + if (dbContext.Set().Local.All(e => e != entity)) + { + dbContext.Update(entity); + } if (autoSave) { await dbContext.SaveChangesAsync(GetCancellationToken(cancellationToken)); } - return updatedEntity; + return entity; } public async override Task UpdateManyAsync(IEnumerable entities, bool autoSave = false, CancellationToken cancellationToken = default) From 24ed11ac11d578779be526e6ad26d4e44ac1e87f Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Fri, 27 Oct 2023 16:48:50 +0800 Subject: [PATCH 019/108] Upgrade SixLabors.ImageSharp the latest --- .../Volo.Abp.Imaging.ImageSharp.csproj | 2 +- .../Volo.Blogging.Admin.Application.csproj | 2 +- .../Volo.Blogging.Application.csproj | 2 +- .../src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/framework/src/Volo.Abp.Imaging.ImageSharp/Volo.Abp.Imaging.ImageSharp.csproj b/framework/src/Volo.Abp.Imaging.ImageSharp/Volo.Abp.Imaging.ImageSharp.csproj index d523a292ba..bdc66961d2 100644 --- a/framework/src/Volo.Abp.Imaging.ImageSharp/Volo.Abp.Imaging.ImageSharp.csproj +++ b/framework/src/Volo.Abp.Imaging.ImageSharp/Volo.Abp.Imaging.ImageSharp.csproj @@ -18,7 +18,7 @@ - + \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Admin.Application/Volo.Blogging.Admin.Application.csproj b/modules/blogging/src/Volo.Blogging.Admin.Application/Volo.Blogging.Admin.Application.csproj index adc000a44b..cd75ef5233 100644 --- a/modules/blogging/src/Volo.Blogging.Admin.Application/Volo.Blogging.Admin.Application.csproj +++ b/modules/blogging/src/Volo.Blogging.Admin.Application/Volo.Blogging.Admin.Application.csproj @@ -11,7 +11,7 @@ - + diff --git a/modules/blogging/src/Volo.Blogging.Application/Volo.Blogging.Application.csproj b/modules/blogging/src/Volo.Blogging.Application/Volo.Blogging.Application.csproj index 9f1b8a1a00..5871e982dd 100644 --- a/modules/blogging/src/Volo.Blogging.Application/Volo.Blogging.Application.csproj +++ b/modules/blogging/src/Volo.Blogging.Application/Volo.Blogging.Application.csproj @@ -11,7 +11,7 @@ - + diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj index 7aaa2eda5e..7fe7ffbdad 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj @@ -18,8 +18,8 @@ - - + + From 20ccf333da066c989cddd6fc5a437faf32cbbb29 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Fri, 27 Oct 2023 12:02:07 +0300 Subject: [PATCH 020/108] Fix tags visibility --- .../Pages/CmsKit/Shared/Components/Tags/Default.cshtml | 4 ++-- .../Pages/Public/CmsKit/Blogs/Index.cshtml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Tags/Default.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Tags/Default.cshtml index 27ad1fa5ac..baa68ff0f4 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Tags/Default.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Tags/Default.cshtml @@ -10,14 +10,14 @@ { if (Model.UrlFormat.IsNullOrWhiteSpace()) { - + @tag.Name } else { var formattedUrl = Model.UrlFormat.Replace("{TagId}", tag.Id.ToString()).Replace("{TagName}", tag.Name); - @tag.Name + @tag.Name } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml index 79f96e3cc1..6f2a82e220 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml @@ -53,7 +53,7 @@ @if (Model.TagId.HasValue) {

@L["Tags"]

- @Model.FilteredTagName + @Model.FilteredTagName
From 21c218641ee7d480da864a8b428563e47c44fab3 Mon Sep 17 00:00:00 2001 From: htve Date: Fri, 27 Oct 2023 17:30:29 +0800 Subject: [PATCH 021/108] Fix error test caused by multiple attach --- .../Volo/Abp/Auditing/Auditing_Tests.cs | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/framework/test/Volo.Abp.Auditing.Tests/Volo/Abp/Auditing/Auditing_Tests.cs b/framework/test/Volo.Abp.Auditing.Tests/Volo/Abp/Auditing/Auditing_Tests.cs index 3aa0da5a9b..4ac434d96c 100644 --- a/framework/test/Volo.Abp.Auditing.Tests/Volo/Abp/Auditing/Auditing_Tests.cs +++ b/framework/test/Volo.Abp.Auditing.Tests/Volo/Abp/Auditing/Auditing_Tests.cs @@ -409,16 +409,13 @@ public class Auditing_Tests : AbpAuditingTestBase } #pragma warning disable 4014 - AuditingStore.Received().SaveAsync(Arg.Is(x => x.EntityChanges.Count == 2 && + AuditingStore.Received().SaveAsync(Arg.Is(x => x.EntityChanges.Count == 1 && x.EntityChanges[0].ChangeType == EntityChangeType.Updated && - x.EntityChanges[0].EntityTypeFullName == typeof(AppEntityWithValueObject).FullName && - - x.EntityChanges[1].ChangeType == EntityChangeType.Updated && - x.EntityChanges[1].EntityTypeFullName == typeof(AppEntityWithValueObjectAddress).FullName && - x.EntityChanges[1].PropertyChanges.Count == 1 && - x.EntityChanges[1].PropertyChanges[0].PropertyName == nameof(AppEntityWithValueObjectAddress.Country) && - x.EntityChanges[1].PropertyChanges[0].OriginalValue == "\"England\"" && - x.EntityChanges[1].PropertyChanges[0].NewValue == "\"Germany\"")); + x.EntityChanges[0].EntityTypeFullName == typeof(AppEntityWithValueObjectAddress).FullName && + x.EntityChanges[0].PropertyChanges.Count == 1 && + x.EntityChanges[0].PropertyChanges[0].PropertyName == nameof(AppEntityWithValueObjectAddress.Country) && + x.EntityChanges[0].PropertyChanges[0].OriginalValue == "\"England\"" && + x.EntityChanges[0].PropertyChanges[0].NewValue == "\"Germany\"")); #pragma warning restore 4014 } From 745fa41615941bc2c997ca630c94616f4e8c9e31 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Fri, 27 Oct 2023 18:18:50 +0800 Subject: [PATCH 022/108] Fix ImageSharp upgrade error --- .../Volo.Abp.Imaging.ImageSharp.csproj | 2 +- .../Volo/Abp/Imaging/ImageSharpCompressOptions.cs | 2 +- .../Imaging/ImageSharpImageCompressorContributor.cs | 6 +++--- .../Imaging/ImageSharpImageResizerContributor.cs | 6 +++--- .../Volo/Blogging/Files/ImageFormatHelper.cs | 4 ++-- .../Security/Captcha/SimpleMathsCaptchaGenerator.cs | 13 ++++++++----- 6 files changed, 18 insertions(+), 15 deletions(-) diff --git a/framework/src/Volo.Abp.Imaging.ImageSharp/Volo.Abp.Imaging.ImageSharp.csproj b/framework/src/Volo.Abp.Imaging.ImageSharp/Volo.Abp.Imaging.ImageSharp.csproj index bdc66961d2..50ebe11d50 100644 --- a/framework/src/Volo.Abp.Imaging.ImageSharp/Volo.Abp.Imaging.ImageSharp.csproj +++ b/framework/src/Volo.Abp.Imaging.ImageSharp/Volo.Abp.Imaging.ImageSharp.csproj @@ -4,7 +4,7 @@ - netstandard2.0; + net7.0 Volo.Abp.Imaging.ImageSharp $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; false diff --git a/framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpCompressOptions.cs b/framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpCompressOptions.cs index 3fc291da6f..b7c097324d 100644 --- a/framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpCompressOptions.cs +++ b/framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpCompressOptions.cs @@ -22,7 +22,7 @@ public class ImageSharpCompressOptions PngEncoder = new PngEncoder { CompressionLevel = PngCompressionLevel.BestCompression, - IgnoreMetadata = true + SkipMetadata = true }; WebpEncoder = new WebpEncoder { diff --git a/framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpImageCompressorContributor.cs b/framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpImageCompressorContributor.cs index a54d006b30..276b7aa6c0 100644 --- a/framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpImageCompressorContributor.cs +++ b/framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpImageCompressorContributor.cs @@ -34,14 +34,14 @@ public class ImageSharpImageCompressorContributor : IImageCompressorContributor, return new ImageCompressResult(stream, ImageProcessState.Unsupported); } - var (image, format) = await Image.LoadWithFormatAsync(stream, cancellationToken); + var image = await Image.LoadAsync(stream, cancellationToken); - if (!CanCompress(format.DefaultMimeType)) + if (!CanCompress(image.Metadata.DecodedImageFormat!.DefaultMimeType)) { return new ImageCompressResult(stream, ImageProcessState.Unsupported); } - var memoryStream = await GetStreamFromImageAsync(image, format, cancellationToken); + var memoryStream = await GetStreamFromImageAsync(image, image.Metadata.DecodedImageFormat, cancellationToken); if (memoryStream.Length < stream.Length) { diff --git a/framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpImageResizerContributor.cs b/framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpImageResizerContributor.cs index d2ac92eaf7..7710484449 100644 --- a/framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpImageResizerContributor.cs +++ b/framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpImageResizerContributor.cs @@ -24,9 +24,9 @@ public class ImageSharpImageResizerContributor : IImageResizerContributor, ITran return new ImageResizeResult(stream, ImageProcessState.Unsupported); } - var (image, format) = await Image.LoadWithFormatAsync(stream, cancellationToken); + var image = await Image.LoadAsync(stream, cancellationToken); - if (!CanResize(format.DefaultMimeType)) + if (!CanResize(image.Metadata.DecodedImageFormat!.DefaultMimeType)) { return new ImageResizeResult(stream, ImageProcessState.Unsupported); } @@ -44,7 +44,7 @@ public class ImageSharpImageResizerContributor : IImageResizerContributor, ITran try { - await image.SaveAsync(memoryStream, format, cancellationToken: cancellationToken); + await image.SaveAsync(memoryStream, image.Metadata.DecodedImageFormat, cancellationToken: cancellationToken); memoryStream.Position = 0; return new ImageResizeResult(memoryStream, ImageProcessState.Done); } diff --git a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Files/ImageFormatHelper.cs b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Files/ImageFormatHelper.cs index 9fccb1e03a..32060bf501 100644 --- a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Files/ImageFormatHelper.cs +++ b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Files/ImageFormatHelper.cs @@ -10,9 +10,9 @@ namespace Volo.Blogging.Areas.Blog.Helpers { public static IImageFormat GetImageRawFormat(Stream stream) { - using (var image = Image.Load(stream, out var imageFormat)) + using (var image = Image.Load(stream)) { - return imageFormat; + return image.Metadata.DecodedImageFormat; } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Security/Captcha/SimpleMathsCaptchaGenerator.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Security/Captcha/SimpleMathsCaptchaGenerator.cs index 220e24f892..7255b6b195 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Security/Captcha/SimpleMathsCaptchaGenerator.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Security/Captcha/SimpleMathsCaptchaGenerator.cs @@ -109,7 +109,7 @@ public class SimpleMathsCaptchaGenerator : ISingletonDependency var random = new Random(); var startWith = (byte)random.Next(5, 10); image.Mutate(ctx => ctx.BackgroundColor(Color.Transparent)); - var fontFamily = SystemFonts.Families.FirstOrDefault(x => x.IsStyleAvailable(options.FontStyle))?.Name ?? SystemFonts.Families.First().Name; + var fontFamily = SystemFonts.Families.FirstOrDefault(x => x.GetAvailableStyles().Contains(options.FontStyle)).Name ?? SystemFonts.Families.First().Name; var font = SystemFonts.CreateFont(fontFamily, options.FontSize, options.FontStyle); foreach (var character in stringText) @@ -118,7 +118,10 @@ public class SimpleMathsCaptchaGenerator : ISingletonDependency var color = options.TextColor[random.Next(0, options.TextColor.Length)]; var location = new PointF(startWith + position, random.Next(6, 13)); image.Mutate(ctx => ctx.DrawText(text, font, color, location)); - position += TextMeasurer.Measure(character.ToString(), new RendererOptions(font, location)).Width; + position += TextMeasurer.MeasureSize(character.ToString(), new TextOptions (font) + { + Origin = location + }).Width; } //add rotation @@ -126,7 +129,7 @@ public class SimpleMathsCaptchaGenerator : ISingletonDependency image.Mutate(ctx => ctx.Transform(rotation)); // add the dynamic image to original image - var size = (ushort)TextMeasurer.Measure(stringText, new RendererOptions(font)).Width; + var size = (ushort)TextMeasurer.MeasureSize(stringText, new TextOptions(font)).Width; var img = new Image(size + 15, options.Height); img.Mutate(ctx => ctx.BackgroundColor(Color.White)); @@ -139,7 +142,7 @@ public class SimpleMathsCaptchaGenerator : ISingletonDependency var y1 = random.Next(0, img.Height); img.Mutate(ctx => - ctx.DrawLines(options.TextColor[random.Next(0, options.TextColor.Length)], + ctx.DrawLine(options.TextColor[random.Next(0, options.TextColor.Length)], RandomTextGenerator.GenerateNextFloat(options.MinLineThickness, options.MaxLineThickness), new PointF[] { new PointF(x0, y0), new PointF(x1, y1) }) ); @@ -153,7 +156,7 @@ public class SimpleMathsCaptchaGenerator : ISingletonDependency var y0 = random.Next(0, img.Height); img.Mutate( ctx => ctx - .DrawLines(options.NoiseRateColor[random.Next(0, options.NoiseRateColor.Length)], + .DrawLine(options.NoiseRateColor[random.Next(0, options.NoiseRateColor.Length)], RandomTextGenerator.GenerateNextFloat(0.5, 1.5), new PointF[] { new Vector2(x0, y0), new Vector2(x0, y0) }) ); }); From 069dcd9c86c1d344d190f793e6b6c36a53286949 Mon Sep 17 00:00:00 2001 From: Sinan997 Date: Fri, 27 Oct 2023 15:08:04 +0300 Subject: [PATCH 023/108] Create function guards and mark class guards as deprecated --- .../account/src/lib/account-routing.module.ts | 10 ++-- .../lib/guards/authentication-flow.guard.ts | 12 ++++ .../src/lib/guards/extensions.guard.ts | 28 ++++++++++ .../core/src/lib/abstracts/auth.guard.ts | 9 +++ .../core/src/lib/guards/permission.guard.ts | 30 +++++++++- .../src/lib/guards/extensions.guard.ts | 55 ++++++++++++++++++ .../src/lib/identity-routing.module.ts | 10 ++-- .../oauth/src/lib/guards/oauth.guard.ts | 24 +++++++- .../packages/oauth/src/lib/oauth.module.ts | 8 +-- .../lib/setting-management-routing.module.ts | 6 +- .../src/lib/guards/extensions.guard.ts | 56 +++++++++++++++++++ .../lib/tenant-management-routing.module.ts | 10 ++-- 12 files changed, 234 insertions(+), 24 deletions(-) diff --git a/npm/ng-packs/packages/account/src/lib/account-routing.module.ts b/npm/ng-packs/packages/account/src/lib/account-routing.module.ts index 0b188f3751..6e651f5baa 100644 --- a/npm/ng-packs/packages/account/src/lib/account-routing.module.ts +++ b/npm/ng-packs/packages/account/src/lib/account-routing.module.ts @@ -1,8 +1,8 @@ import { NgModule } from '@angular/core'; -import { RouterModule, Routes, mapToCanActivate } from '@angular/router'; +import { RouterModule, Routes } from '@angular/router'; import { - AuthGuard, + AuthGuardFn, ReplaceableComponents, ReplaceableRouteContainerComponent, RouterOutletComponent, @@ -14,9 +14,9 @@ import { ManageProfileComponent } from './components/manage-profile/manage-profi import { RegisterComponent } from './components/register/register.component'; import { ResetPasswordComponent } from './components/reset-password/reset-password.component'; import { eAccountComponents } from './enums/components'; -import { AccountExtensionsGuard, AuthenticationFlowGuard } from './guards'; +import { AccountExtensionsGuardFn, AuthenticationFlowGuardFn } from './guards'; -const canActivate = mapToCanActivate([AuthenticationFlowGuard]); +const canActivate = [AuthenticationFlowGuardFn]; const routes: Routes = [ { path: '', pathMatch: 'full', redirectTo: 'login' }, @@ -73,7 +73,7 @@ const routes: Routes = [ { path: 'manage', component: ReplaceableRouteContainerComponent, - canActivate: mapToCanActivate([AuthGuard, AccountExtensionsGuard]), + canActivate: [AuthGuardFn, AccountExtensionsGuardFn], data: { replaceableComponent: { key: eAccountComponents.ManageProfile, diff --git a/npm/ng-packs/packages/account/src/lib/guards/authentication-flow.guard.ts b/npm/ng-packs/packages/account/src/lib/guards/authentication-flow.guard.ts index c00cee3156..c6134c8c23 100644 --- a/npm/ng-packs/packages/account/src/lib/guards/authentication-flow.guard.ts +++ b/npm/ng-packs/packages/account/src/lib/guards/authentication-flow.guard.ts @@ -1,6 +1,9 @@ import { AuthService, IAbpGuard } from '@abp/ng.core'; import { Injectable, inject } from '@angular/core'; +/** + * @deprecated Use `AuthenticationFlowGuardFn` instead. + */ @Injectable() export class AuthenticationFlowGuard implements IAbpGuard { protected readonly authService = inject(AuthService); @@ -12,3 +15,12 @@ export class AuthenticationFlowGuard implements IAbpGuard { return false; } } + +export const AuthenticationFlowGuardFn = () => { + const authService = inject(AuthService); + + if (authService.isInternalAuth) return true; + + authService.navigateToLogin(); + return false; +}; diff --git a/npm/ng-packs/packages/account/src/lib/guards/extensions.guard.ts b/npm/ng-packs/packages/account/src/lib/guards/extensions.guard.ts index 8df8aede51..185d2056f9 100644 --- a/npm/ng-packs/packages/account/src/lib/guards/extensions.guard.ts +++ b/npm/ng-packs/packages/account/src/lib/guards/extensions.guard.ts @@ -17,6 +17,9 @@ import { } from '../tokens/extensions.token'; import { eAccountComponents } from '../enums/components'; +/** + * @deprecated Use `AccountExtensionsGuardFn` instead. + */ @Injectable() export class AccountExtensionsGuard implements IAbpGuard { protected readonly configState = inject(ConfigStateService); @@ -44,3 +47,28 @@ export class AccountExtensionsGuard implements IAbpGuard { ); } } + +export const AccountExtensionsGuardFn = () => { + const configState = inject(ConfigStateService); + const extensions = inject(ExtensionsService); + + const config = { optional: true }; + + const editFormContributors = inject(ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS, config) || {}; + + return getObjectExtensionEntitiesFromStore(configState, 'Identity').pipe( + map(entities => ({ + [eAccountComponents.PersonalSettings]: entities.User, + })), + mapEntitiesToContributors(configState, 'AbpIdentity'), + tap(objectExtensionContributors => { + mergeWithDefaultProps( + extensions.editFormProps, + DEFAULT_ACCOUNT_FORM_PROPS, + objectExtensionContributors.editForm, + editFormContributors, + ); + }), + map(() => true), + ); +}; diff --git a/npm/ng-packs/packages/core/src/lib/abstracts/auth.guard.ts b/npm/ng-packs/packages/core/src/lib/abstracts/auth.guard.ts index 8fb4f4dc25..2da5d5d21a 100644 --- a/npm/ng-packs/packages/core/src/lib/abstracts/auth.guard.ts +++ b/npm/ng-packs/packages/core/src/lib/abstracts/auth.guard.ts @@ -2,7 +2,11 @@ import { Injectable } from '@angular/core'; import { UrlTree } from '@angular/router'; import { Observable } from 'rxjs'; import { IAbpGuard } from './abstract-guard'; +import { CanActivateFn } from '@angular/router'; +/** + * @deprecated Use `AuthGuardFn` instead. + */ @Injectable({ providedIn: 'root', }) @@ -12,3 +16,8 @@ export class AuthGuard implements IAbpGuard { return false; } } + +export const AuthGuardFn: CanActivateFn = () => { + console.error('You should add @abp/ng-oauth packages or create your own auth packages.'); + return false; +}; \ No newline at end of file diff --git a/npm/ng-packs/packages/core/src/lib/guards/permission.guard.ts b/npm/ng-packs/packages/core/src/lib/guards/permission.guard.ts index ae3fdb6e37..58293da594 100644 --- a/npm/ng-packs/packages/core/src/lib/guards/permission.guard.ts +++ b/npm/ng-packs/packages/core/src/lib/guards/permission.guard.ts @@ -1,5 +1,5 @@ import { Injectable, inject } from '@angular/core'; -import { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router'; +import { ActivatedRouteSnapshot, CanActivateFn, Router, RouterStateSnapshot } from '@angular/router'; import { HttpErrorResponse } from '@angular/common/http'; import { Observable, of } from 'rxjs'; @@ -11,6 +11,9 @@ import { IAbpGuard } from '../abstracts'; import { findRoute, getRoutePath } from '../utils/route-utils'; import { RoutesService, PermissionService, HttpErrorReporterService } from '../services'; +/** + * @deprecated Use `PermissionGuardFn` instead. + */ @Injectable({ providedIn: 'root', }) @@ -40,3 +43,28 @@ export class PermissionGuard implements IAbpGuard { ); } } + +export const PermissionGuardFn: CanActivateFn = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => { + const router = inject(Router); + const routesService = inject(RoutesService); + const oAuthService = inject(OAuthService); + const permissionService = inject(PermissionService); + const httpErrorReporter = inject(HttpErrorReporterService); + + let { requiredPolicy } = route.data || {}; + + if (!requiredPolicy) { + const routeFound = findRoute(routesService, getRoutePath(router, state.url)); + requiredPolicy = routeFound?.requiredPolicy; + } + + if (!requiredPolicy) return of(true); + + return permissionService.getGrantedPolicy$(requiredPolicy).pipe( + tap(access => { + if (!access && oAuthService.hasValidAccessToken()) { + httpErrorReporter.reportError({ status: 403 } as HttpErrorResponse); + } + }), + ); +} diff --git a/npm/ng-packs/packages/identity/src/lib/guards/extensions.guard.ts b/npm/ng-packs/packages/identity/src/lib/guards/extensions.guard.ts index 172b599f91..78916556c3 100644 --- a/npm/ng-packs/packages/identity/src/lib/guards/extensions.guard.ts +++ b/npm/ng-packs/packages/identity/src/lib/guards/extensions.guard.ts @@ -26,6 +26,9 @@ import { IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS, } from '../tokens/extensions.token'; +/** + * @deprecated Use `IdentityExtensionsGuardFn` instead. + */ @Injectable() export class IdentityExtensionsGuard implements IAbpGuard { protected readonly configState = inject(ConfigStateService); @@ -80,3 +83,55 @@ export class IdentityExtensionsGuard implements IAbpGuard { ); } } + +export const IdentityExtensionsGuardFn = () => { + const configState = inject(ConfigStateService); + const extensions = inject(ExtensionsService); + + const config = { optional: true }; + + const actionContributors = inject(IDENTITY_ENTITY_ACTION_CONTRIBUTORS, config) || {}; + const toolbarContributors = inject(IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS, config) || {}; + const propContributors = inject(IDENTITY_ENTITY_PROP_CONTRIBUTORS, config) || {}; + const createFormContributors = inject(IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS, config) || {}; + const editFormContributors = inject(IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS, config) || {}; + + return getObjectExtensionEntitiesFromStore(configState, 'Identity').pipe( + map(entities => ({ + [eIdentityComponents.Roles]: entities.Role, + [eIdentityComponents.Users]: entities.User, + })), + mapEntitiesToContributors(configState, 'AbpIdentity'), + tap(objectExtensionContributors => { + mergeWithDefaultActions( + extensions.entityActions, + DEFAULT_IDENTITY_ENTITY_ACTIONS, + actionContributors, + ); + mergeWithDefaultActions( + extensions.toolbarActions, + DEFAULT_IDENTITY_TOOLBAR_ACTIONS, + toolbarContributors, + ); + mergeWithDefaultProps( + extensions.entityProps, + DEFAULT_IDENTITY_ENTITY_PROPS, + objectExtensionContributors.prop, + propContributors, + ); + mergeWithDefaultProps( + extensions.createFormProps, + DEFAULT_IDENTITY_CREATE_FORM_PROPS, + objectExtensionContributors.createForm, + createFormContributors, + ); + mergeWithDefaultProps( + extensions.editFormProps, + DEFAULT_IDENTITY_EDIT_FORM_PROPS, + objectExtensionContributors.editForm, + editFormContributors, + ); + }), + map(() => true), + ); +}; diff --git a/npm/ng-packs/packages/identity/src/lib/identity-routing.module.ts b/npm/ng-packs/packages/identity/src/lib/identity-routing.module.ts index 33c8f53d5a..af4dea7732 100644 --- a/npm/ng-packs/packages/identity/src/lib/identity-routing.module.ts +++ b/npm/ng-packs/packages/identity/src/lib/identity-routing.module.ts @@ -1,9 +1,9 @@ import { NgModule } from '@angular/core'; -import { RouterModule, Routes, mapToCanActivate } from '@angular/router'; +import { RouterModule, Routes } from '@angular/router'; import { - AuthGuard, - PermissionGuard, + AuthGuardFn, + PermissionGuardFn, ReplaceableComponents, ReplaceableRouteContainerComponent, RouterOutletComponent, @@ -12,14 +12,14 @@ import { import { RolesComponent } from './components/roles/roles.component'; import { UsersComponent } from './components/users/users.component'; import { eIdentityComponents } from './enums/components'; -import { IdentityExtensionsGuard } from './guards'; +import { IdentityExtensionsGuardFn } from './guards'; const routes: Routes = [ { path: '', redirectTo: 'roles', pathMatch: 'full' }, { path: '', component: RouterOutletComponent, - canActivate: mapToCanActivate([AuthGuard, PermissionGuard, IdentityExtensionsGuard]), + canActivate: [AuthGuardFn, PermissionGuardFn, IdentityExtensionsGuardFn], children: [ { path: 'roles', diff --git a/npm/ng-packs/packages/oauth/src/lib/guards/oauth.guard.ts b/npm/ng-packs/packages/oauth/src/lib/guards/oauth.guard.ts index 2571a1756c..a0e0e03c09 100644 --- a/npm/ng-packs/packages/oauth/src/lib/guards/oauth.guard.ts +++ b/npm/ng-packs/packages/oauth/src/lib/guards/oauth.guard.ts @@ -1,11 +1,14 @@ import { Injectable, inject } from '@angular/core'; -import { UrlTree, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; +import { UrlTree, ActivatedRouteSnapshot, RouterStateSnapshot, CanActivateFn } from '@angular/router'; import { Observable } from 'rxjs'; import { OAuthService } from 'angular-oauth2-oidc'; import { AuthService, IAbpGuard } from '@abp/ng.core'; +/** + * @deprecated Use `AbpOAuthGuardFn` instead. + */ @Injectable({ providedIn: 'root', }) @@ -27,3 +30,22 @@ export class AbpOAuthGuard implements IAbpGuard { return false; } } + + +export const AbpOAuthGuardFn: CanActivateFn = ( + route: ActivatedRouteSnapshot, + state: RouterStateSnapshot, +) => { + const oAuthService = inject(OAuthService); + const authService = inject(AuthService); + + const hasValidAccessToken = oAuthService.hasValidAccessToken(); + + if (hasValidAccessToken) { + return true; + } + + const params = { returnUrl: state.url }; + authService.navigateToLogin(params); + return false; +}; \ No newline at end of file diff --git a/npm/ng-packs/packages/oauth/src/lib/oauth.module.ts b/npm/ng-packs/packages/oauth/src/lib/oauth.module.ts index ac800e7c8f..fb56c7fddd 100644 --- a/npm/ng-packs/packages/oauth/src/lib/oauth.module.ts +++ b/npm/ng-packs/packages/oauth/src/lib/oauth.module.ts @@ -4,7 +4,7 @@ import { OAuthModule, OAuthStorage } from 'angular-oauth2-oidc'; import { AbpLocalStorageService, ApiInterceptor, - AuthGuard, + AuthGuardFn, AuthService, CHECK_AUTHENTICATION_STATE_FN_KEY, noop, @@ -14,7 +14,7 @@ import { AbpOAuthService } from './services'; import { OAuthConfigurationHandler } from './handlers/oauth-configuration.handler'; import { HTTP_INTERCEPTORS } from '@angular/common/http'; import { OAuthApiInterceptor } from './interceptors/api.interceptor'; -import { AbpOAuthGuard } from './guards/oauth.guard'; +import { AbpOAuthGuardFn } from './guards/oauth.guard'; import { NavigateToManageProfileProvider } from './providers'; import { checkAccessToken, pipeToLogin } from './utils'; @@ -31,8 +31,8 @@ export class AbpOAuthModule { useClass: AbpOAuthService, }, { - provide: AuthGuard, - useClass: AbpOAuthGuard, + provide: AuthGuardFn, + useValue: AbpOAuthGuardFn, }, { provide: ApiInterceptor, diff --git a/npm/ng-packs/packages/setting-management/src/lib/setting-management-routing.module.ts b/npm/ng-packs/packages/setting-management/src/lib/setting-management-routing.module.ts index 1fc5fd7c7b..f77f862fef 100644 --- a/npm/ng-packs/packages/setting-management/src/lib/setting-management-routing.module.ts +++ b/npm/ng-packs/packages/setting-management/src/lib/setting-management-routing.module.ts @@ -1,7 +1,7 @@ import { NgModule } from '@angular/core'; -import { RouterModule, Routes, mapToCanActivate } from '@angular/router'; +import { RouterModule, Routes } from '@angular/router'; import { - AuthGuard, + AuthGuardFn, ReplaceableComponents, ReplaceableRouteContainerComponent, RouterOutletComponent, @@ -13,7 +13,7 @@ const routes: Routes = [ { path: '', component: RouterOutletComponent, - canActivate: mapToCanActivate([AuthGuard]), + canActivate: [AuthGuardFn], children: [ { path: '', diff --git a/npm/ng-packs/packages/tenant-management/src/lib/guards/extensions.guard.ts b/npm/ng-packs/packages/tenant-management/src/lib/guards/extensions.guard.ts index bdadb7e78a..896955cc86 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/guards/extensions.guard.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/guards/extensions.guard.ts @@ -25,7 +25,11 @@ import { TENANT_MANAGEMENT_ENTITY_PROP_CONTRIBUTORS, TENANT_MANAGEMENT_TOOLBAR_ACTION_CONTRIBUTORS, } from '../tokens/extensions.token'; +import { CanActivateFn } from '@angular/router'; +/** + * @deprecated Use `TenantManagementExtensionsGuardFn` instead. + */ @Injectable() export class TenantManagementExtensionsGuard implements IAbpGuard { protected readonly configState = inject(ConfigStateService); @@ -81,3 +85,55 @@ export class TenantManagementExtensionsGuard implements IAbpGuard { ); } } + +export const TenantManagementExtensionsGuardFn: CanActivateFn = () => { + const configState = inject(ConfigStateService); + const extensions = inject(ExtensionsService); + + const config = { optional: true }; + + const actionContributors = inject(TENANT_MANAGEMENT_ENTITY_ACTION_CONTRIBUTORS, config) || {}; + const toolbarContributors = inject(TENANT_MANAGEMENT_TOOLBAR_ACTION_CONTRIBUTORS, config) || {}; + const propContributors = inject(TENANT_MANAGEMENT_ENTITY_PROP_CONTRIBUTORS, config) || {}; + const createFormContributors = + inject(TENANT_MANAGEMENT_CREATE_FORM_PROP_CONTRIBUTORS, config) || {}; + const editFormContributors = inject(TENANT_MANAGEMENT_EDIT_FORM_PROP_CONTRIBUTORS, config) || {}; + + return getObjectExtensionEntitiesFromStore(configState, 'TenantManagement').pipe( + map(entities => ({ + [eTenantManagementComponents.Tenants]: entities.Tenant, + })), + mapEntitiesToContributors(configState, 'TenantManagement'), + tap(objectExtensionContributors => { + mergeWithDefaultActions( + extensions.entityActions, + DEFAULT_TENANT_MANAGEMENT_ENTITY_ACTIONS, + actionContributors, + ); + mergeWithDefaultActions( + extensions.toolbarActions, + DEFAULT_TENANT_MANAGEMENT_TOOLBAR_ACTIONS, + toolbarContributors, + ); + mergeWithDefaultProps( + extensions.entityProps, + DEFAULT_TENANT_MANAGEMENT_ENTITY_PROPS, + objectExtensionContributors.prop, + propContributors, + ); + mergeWithDefaultProps( + extensions.createFormProps, + DEFAULT_TENANT_MANAGEMENT_CREATE_FORM_PROPS, + objectExtensionContributors.createForm, + createFormContributors, + ); + mergeWithDefaultProps( + extensions.editFormProps, + DEFAULT_TENANT_MANAGEMENT_EDIT_FORM_PROPS, + objectExtensionContributors.editForm, + editFormContributors, + ); + }), + map(() => true), + ); +}; diff --git a/npm/ng-packs/packages/tenant-management/src/lib/tenant-management-routing.module.ts b/npm/ng-packs/packages/tenant-management/src/lib/tenant-management-routing.module.ts index 06e2f0369e..61b438b613 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/tenant-management-routing.module.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/tenant-management-routing.module.ts @@ -1,9 +1,9 @@ import { NgModule } from '@angular/core'; -import { RouterModule, Routes, mapToCanActivate } from '@angular/router'; +import { RouterModule, Routes } from '@angular/router'; import { - AuthGuard, - PermissionGuard, + AuthGuardFn, + PermissionGuardFn, ReplaceableComponents, ReplaceableRouteContainerComponent, RouterOutletComponent, @@ -11,14 +11,14 @@ import { import { TenantsComponent } from './components/tenants/tenants.component'; import { eTenantManagementComponents } from './enums/components'; -import { TenantManagementExtensionsGuard } from './guards'; +import { TenantManagementExtensionsGuardFn } from './guards'; const routes: Routes = [ { path: '', redirectTo: 'tenants', pathMatch: 'full' }, { path: '', component: RouterOutletComponent, - canActivate: mapToCanActivate([AuthGuard, PermissionGuard, TenantManagementExtensionsGuard]), + canActivate: [AuthGuardFn, PermissionGuardFn, TenantManagementExtensionsGuardFn], children: [ { path: 'tenants', From d443dff0509c836e171f8a6773cbec667db6b03d Mon Sep 17 00:00:00 2001 From: Engincan VESKE <43685404+EngincanV@users.noreply.github.com> Date: Sun, 29 Oct 2023 14:00:09 +0300 Subject: [PATCH 024/108] Initial commit for "ASP.NET Core Metrics" article --- .../POST.md | 123 ++++++++++++++++++ .../built-in-metric-response.png | Bin 0 -> 47699 bytes .../built-in-metrics.png | Bin 0 -> 12637 bytes .../metrics-endpoint.png | Bin 0 -> 180232 bytes 4 files changed, 123 insertions(+) create mode 100644 docs/en/Community-Articles/2023-10-30-NET-8-ASP-NET-Core-Metrics/POST.md create mode 100644 docs/en/Community-Articles/2023-10-30-NET-8-ASP-NET-Core-Metrics/built-in-metric-response.png create mode 100644 docs/en/Community-Articles/2023-10-30-NET-8-ASP-NET-Core-Metrics/built-in-metrics.png create mode 100644 docs/en/Community-Articles/2023-10-30-NET-8-ASP-NET-Core-Metrics/metrics-endpoint.png diff --git a/docs/en/Community-Articles/2023-10-30-NET-8-ASP-NET-Core-Metrics/POST.md b/docs/en/Community-Articles/2023-10-30-NET-8-ASP-NET-Core-Metrics/POST.md new file mode 100644 index 0000000000..f4645a207c --- /dev/null +++ b/docs/en/Community-Articles/2023-10-30-NET-8-ASP-NET-Core-Metrics/POST.md @@ -0,0 +1,123 @@ +# .NET 8 - ASP.NET Core Metrics + +In this article, I'll show you new built-in metrics of .NET 8, which are basically numerical measurements reported over time in your application and can be used to monitor the health of your application and generate reports according to those numerical values. We will see what the metrics are, why to use them, and how to use them in detail. So, let's dive in. + +## What Are Metrics? + +Metrics are numerical measurements reported over time. These measurements are crucial for monitoring the health of an application and generating alerts when necessary. In the context of a web service, various metrics can be tracked, such as: + +* Requests per second. +* Response time. +* Status code counts etc... + +These metrics are not just collected; they are reported to a monitoring system at regular intervals. By doing so, the development and operations teams can visualize these metrics on dashboards (we will see it in the _[Creating Custom Metrics in ASP.NET Core Applications](#creating-custom-metrics-in-aspnet-core-applications)_ section). These dashboards provide a real-time overview of the application's performance and health. + +## Pre-Built Metrics + +ASP.NET Core has many built-in metrics. You can see the following figure for a list of built-in metrics for ASP.NET Core: + +![](built-in-metrics.png) + +> See https://learn.microsoft.com/en-us/dotnet/core/diagnostics/built-in-metrics-aspnetcore and https://github.com/dotnet/aspnetcore/issues/47536 for all built-in metrics and their descriptions. + +For example, we have the `kestrel-current-connections` metric that shows _number of connections that are currently active on the server_ and `http-server-request-duration` metric that shows _the duration of HTTP requests on the server_. + +All of these and other built-in metrics are produced by using the [**System.Diagnostics.Metrics**](https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.metrics) API and with a small amount of code, we can use & view them. + +## Using Pre-Built Metrics + +Let's see the pre-built metrics in action. + +Create a new ASP.NET Core app with the following command and change the directory to the created application folder: + +```bash +dotnet new web -o MetricsDemo +cd MetricsDemo +``` + +After that open the application in your favourite IDE and add the following service registration code to your application: + +```csharp +var builder = WebApplication.CreateBuilder(args); + +builder.Services.AddOpenTelemetry() + .WithMetrics(builder => + { + builder.AddPrometheusExporter(); + + builder.AddMeter("Microsoft.AspNetCore.Hosting", + "Microsoft.AspNetCore.Server.Kestrel"); + builder.AddView("http.server.request.duration", + new ExplicitBucketHistogramConfiguration + { + Boundaries = new double[] { 0, 0.005, 0.01, 0.025, 0.05, + 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10 } + }); + }); +``` + +Here, we have done the following things: + +* `AddOpenTelemetry` method registers the required **OpenTelemetry** services into the DI container. +* `WithMetrics` method, we add pre-built metrics to the `OpenTelemetryBuilder` in the `AddMeter` method (_Microsoft.AspNetCore.Hosting_ and _Microsoft.AspNetCore.Server.Kestrel_ are pre-built metrics provided by ASP.NET Core). +* Also, we have used the `AddView` method to customize the output of the metrics by the SDK. Also, it can be used to customize which [Instruments](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/api.md#instrument) are to be processed or ignored. + +After making the related configurations, let's add the middlewares below and view the metrics: + +```csharp +app.MapPrometheusScrapingEndpoint(); + +app.MapGet("/", () => +{ + Thread.Sleep(2000); + + return "Hello, ABP Community member: " + DateTime.Now.Ticks.ToString()[^3..]; +}); +``` + +* `MapPrometheusScrapingEndpoint`: Adds OpenTelemetry Prometheus scraping endpoint middleware to the pipeline and then we can see the all metrics by navigating to the **/metrics** endpoints (optional): + +![](metrics-endpoint.png) + +### View Metrics + +You can use the `dotnet-counters` command-line tool, which allows you to view live metrics for .NET Core apps. You can run the following command to install the tool: + +```bash +dotnet tool update -g dotnet-counters +``` + +After the tool is installed, you can run the application and by running the `dotnet-counters` tool in a terminal, you can monitor for the specific metrics: + +```bash +dotnet-counters monitor -n Acme.BookStore --counters Microsoft.AspNetCore.Hosting +``` + +When you run the command, it will print a message like in the below and will wait an initial request to your application: + +```txt +Press p to pause, r to resume, q to quit. + Status: Waiting for initial payload... +``` + +If you send a request to your application, then the related built-in metrics that you have added will be collected and will be show in the terminal instantly: + +![](built-in-metric-response.png) + +Also, you can check for the other metric that we have used in the configuration, which is _Microsoft.AspNetCore.Server.Kestrel_ by setting it as a counter as in the command below, and when you send a request to your application, you will see different metrics: + +```bash +dotnet-counters monitor -n Acme.BookStore --counters Microsoft.AspNetCore.Server.Kestrel +``` + +## Creating Custom Metrics in ASP.NET Core Applications + +So far, we have seen what metrics are, which built-in metrics are provided by ASP.NET Core and see a sample application with the built-in metrics and also run the `dotnet-counters` global tool to view metrics. + +//TODO: create custom metrics by using the `IMeterFactory` interface and see it in prometheus or grafana!!! + +## References + +* https://learn.microsoft.com/en-us/aspnet/core/log-mon/metrics/metrics?view=aspnetcore-8.0 +* https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-5/ +* https://www.youtube.com/watch?v=A2pKhNQoQUU \ No newline at end of file diff --git a/docs/en/Community-Articles/2023-10-30-NET-8-ASP-NET-Core-Metrics/built-in-metric-response.png b/docs/en/Community-Articles/2023-10-30-NET-8-ASP-NET-Core-Metrics/built-in-metric-response.png new file mode 100644 index 0000000000000000000000000000000000000000..035e76de7dd10320a1dec53da0f093228693674f GIT binary patch literal 47699 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 literal 0 HcmV?d00001 diff --git a/docs/en/Community-Articles/2023-10-30-NET-8-ASP-NET-Core-Metrics/built-in-metrics.png b/docs/en/Community-Articles/2023-10-30-NET-8-ASP-NET-Core-Metrics/built-in-metrics.png new file mode 100644 index 0000000000000000000000000000000000000000..e36b37c395598bc5f0382f5e6b6928e50c895108 GIT binary patch literal 12637 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¬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 EAK3Ta+W-In literal 0 HcmV?d00001 From a692059ebaeff4aef81787dd01579a101bcd7056 Mon Sep 17 00:00:00 2001 From: Engincan VESKE <43685404+EngincanV@users.noreply.github.com> Date: Sun, 29 Oct 2023 15:08:45 +0300 Subject: [PATCH 025/108] Update POST.md --- .../POST.md | 85 +++++++++++++++++-- 1 file changed, 79 insertions(+), 6 deletions(-) diff --git a/docs/en/Community-Articles/2023-10-30-NET-8-ASP-NET-Core-Metrics/POST.md b/docs/en/Community-Articles/2023-10-30-NET-8-ASP-NET-Core-Metrics/POST.md index f4645a207c..c536613429 100644 --- a/docs/en/Community-Articles/2023-10-30-NET-8-ASP-NET-Core-Metrics/POST.md +++ b/docs/en/Community-Articles/2023-10-30-NET-8-ASP-NET-Core-Metrics/POST.md @@ -2,7 +2,7 @@ In this article, I'll show you new built-in metrics of .NET 8, which are basically numerical measurements reported over time in your application and can be used to monitor the health of your application and generate reports according to those numerical values. We will see what the metrics are, why to use them, and how to use them in detail. So, let's dive in. -## What Are Metrics? +## What are Metrics? Metrics are numerical measurements reported over time. These measurements are crucial for monitoring the health of an application and generating alerts when necessary. In the context of a web service, various metrics can be tracked, such as: @@ -10,7 +10,7 @@ Metrics are numerical measurements reported over time. These measurements are cr * Response time. * Status code counts etc... -These metrics are not just collected; they are reported to a monitoring system at regular intervals. By doing so, the development and operations teams can visualize these metrics on dashboards (we will see it in the _[Creating Custom Metrics in ASP.NET Core Applications](#creating-custom-metrics-in-aspnet-core-applications)_ section). These dashboards provide a real-time overview of the application's performance and health. +These metrics are not just collected; they are reported to a monitoring system at regular intervals. By doing so, the development and operations teams can visualize these metrics on dashboards. These dashboards provide a real-time overview of the application's performance and health. ## Pre-Built Metrics @@ -90,7 +90,7 @@ dotnet tool update -g dotnet-counters After the tool is installed, you can run the application and by running the `dotnet-counters` tool in a terminal, you can monitor for the specific metrics: ```bash -dotnet-counters monitor -n Acme.BookStore --counters Microsoft.AspNetCore.Hosting +dotnet-counters monitor -n MetricsDemo --counters Microsoft.AspNetCore.Hosting ``` When you run the command, it will print a message like in the below and will wait an initial request to your application: @@ -107,14 +107,87 @@ If you send a request to your application, then the related built-in metrics tha Also, you can check for the other metric that we have used in the configuration, which is _Microsoft.AspNetCore.Server.Kestrel_ by setting it as a counter as in the command below, and when you send a request to your application, you will see different metrics: ```bash -dotnet-counters monitor -n Acme.BookStore --counters Microsoft.AspNetCore.Server.Kestrel +dotnet-counters monitor -n MetricsDemo --counters Microsoft.AspNetCore.Server.Kestrel ``` ## Creating Custom Metrics in ASP.NET Core Applications -So far, we have seen what metrics are, which built-in metrics are provided by ASP.NET Core and see a sample application with the built-in metrics and also run the `dotnet-counters` global tool to view metrics. +So far, we have seen what metrics are, which built-in metrics are provided by ASP.NET Core and use the built-in metrics and run the `dotnet-counters` global tool to view these metrics. At this point, let's see how we can create custom metrics and view them via `dotnet-counters` tool. -//TODO: create custom metrics by using the `IMeterFactory` interface and see it in prometheus or grafana!!! +`IMeterFactory` is the recommended service to create *Meter* instances. ASP.NET Core registers `IMeterFactory` in dependency injection (DI) by default. The meter factory integrates metrics with DI, making isolating and collecting metrics easy. + +Assume that, we want to create a metric that holds the sold products in our application. For that purpose, as a first step, we can create a metric class as follows: + +```csharp +using System.Diagnostics.Metrics; + +namespace MetricsDemo; + +public class ProductMetrics +{ + private readonly Counter _soldProductsCount; + + public ProductMetrics(IMeterFactory meterFactory) + { + var meterInstance = meterFactory.Create("MetricsDemo.ProductStore"); + _soldProductsCount = meterInstance.CreateCounter("metricsdemo.productstore.sold_products_count"); + } + + public void IncreaseSoldProductCount(int quantity) + { + _soldProductsCount.Add(quantity); + } +} +``` + +In this class, we are creating a counter and defining metrics that we want to collect and view. `MetricsDemo.ProductStore` is the **counter name** and `metricsdemo.productstore.sold_products_count` is the **metric**, in our example. We need to register this class with a `Singleton` lifetime, because we don't want to reset the counter and want to keep it during the application runtime. + +> The [System.Diagnostics.Metrics.Meter](https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.metrics.meter) type is the entry point for a library to create a named group of instruments. Instruments record the numeric measurements that are needed to calculate metrics. Here we used [CreateCounter](https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.metrics.meter.createcounter) to create a Counter instrument named _metricsdemo.productstore.sold_products_count_. + +So, register the type with DI container in the `Program.cs` file (or you can implement the `ISingletonDependency` interface, if you are using an ABP based application): + +```csharp +builder.Services.AddSingleton(); +``` + +Then, we can inject this class and increase sold product count whenever it's needed. Since, we have registered it in DI, we can use it in minimal APIs like in the following example: + +```csharp +app.MapPost("/complete-sale", ([FromBody] ProductSoldModel model, ProductMetrics metrics) => +{ + // ... business logic such as saving the product to the database etc... ... + + metrics.IncreaseSoldProductCount(model.Quantity); +}); +``` + +Whenever a request made to this endpoint the metric that we defined (_metricsdemo.productstore.sold_products_count_) will be increased and we can see this metric via `dotnet-counters` global tool. You can run the following command to see the metrics: + +```bash +dotnet-counters monitor -n MetricsDemo --counters MetricsDemo.ProductStore +``` + +Here is an example output that you would see if you have made a POST requests to the `/complete-sale` endpoint: + +```txt +Press p to pause, r to resume, q to quit. + Status: Paused + +[MetricsDemo.ProductStore] + metricsdemo.productstore.sold_products_count (Count / 1 sec) 20 +``` + +### Advanced: View Metrics in Prometheus & Grafana - Building Dashboards + +It's a common requirement to build a dashboard and monitor the metrics and check the health of your applications. In that point, you can expose the metrics and scrape them using the [Prometheus](https://learn.microsoft.com/en-us/aspnet/core/log-mon/metrics/metrics?view=aspnetcore-8.0#set-up-and-configure-prometheus) and build dashboard by using the [Grafana](https://learn.microsoft.com/en-us/aspnet/core/log-mon/metrics/metrics?view=aspnetcore-8.0#show-metrics-on-a-grafana-dashboard). + +If you want to build a dashboard, you can see [this documentation of Microsoft](https://learn.microsoft.com/en-us/aspnet/core/log-mon/metrics/metrics?view=aspnetcore-8.0#view-metrics-in-grafana-with-opentelemetry-and-prometheus), which shows how to set up the **Prometheus server** and show metrics on a **Grafana** dashboard. + +Also, you can check [this video](https://www.youtube.com/watch?v=A2pKhNQoQUU) if you want to see it in action. + +## Conclusion + +In this article, I showed you the new built-in metrics of .NET8, describe what metrics are, which pre-built metrics are provided by ASP.NET Core, how to use & view these pre-built metrics and finally I have showed you how to create custom metrics and view it in a dashboard. If you want to learn more about the **Metrics System of .NET**, you can check out the references that I have shared below. ## References From e91c77fb942c81a98fb4083817a8613c1491996b Mon Sep 17 00:00:00 2001 From: Engincan VESKE <43685404+EngincanV@users.noreply.github.com> Date: Sun, 29 Oct 2023 15:25:57 +0300 Subject: [PATCH 026/108] Update POST.md --- .../POST.md | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/en/Community-Articles/2023-10-30-NET-8-ASP-NET-Core-Metrics/POST.md b/docs/en/Community-Articles/2023-10-30-NET-8-ASP-NET-Core-Metrics/POST.md index c536613429..07df71527d 100644 --- a/docs/en/Community-Articles/2023-10-30-NET-8-ASP-NET-Core-Metrics/POST.md +++ b/docs/en/Community-Articles/2023-10-30-NET-8-ASP-NET-Core-Metrics/POST.md @@ -20,7 +20,7 @@ ASP.NET Core has many built-in metrics. You can see the following figure for a l > See https://learn.microsoft.com/en-us/dotnet/core/diagnostics/built-in-metrics-aspnetcore and https://github.com/dotnet/aspnetcore/issues/47536 for all built-in metrics and their descriptions. -For example, we have the `kestrel-current-connections` metric that shows _number of connections that are currently active on the server_ and `http-server-request-duration` metric that shows _the duration of HTTP requests on the server_. +For example, we have the `kestrel-current-connections` metric that shows the _number of connections that are currently active on the server_ and the `http-server-request-duration` metric that shows _the duration of HTTP requests on the server_. All of these and other built-in metrics are produced by using the [**System.Diagnostics.Metrics**](https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.metrics) API and with a small amount of code, we can use & view them. @@ -35,7 +35,7 @@ dotnet new web -o MetricsDemo cd MetricsDemo ``` -After that open the application in your favourite IDE and add the following service registration code to your application: +After that open the application in your favorite IDE and add the following service registration code to your application: ```csharp var builder = WebApplication.CreateBuilder(args); @@ -58,11 +58,11 @@ builder.Services.AddOpenTelemetry() Here, we have done the following things: -* `AddOpenTelemetry` method registers the required **OpenTelemetry** services into the DI container. +* The `AddOpenTelemetry` method registers the required **OpenTelemetry** services into the DI container. * `WithMetrics` method, we add pre-built metrics to the `OpenTelemetryBuilder` in the `AddMeter` method (_Microsoft.AspNetCore.Hosting_ and _Microsoft.AspNetCore.Server.Kestrel_ are pre-built metrics provided by ASP.NET Core). * Also, we have used the `AddView` method to customize the output of the metrics by the SDK. Also, it can be used to customize which [Instruments](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/api.md#instrument) are to be processed or ignored. -After making the related configurations, let's add the middlewares below and view the metrics: +After making the related configurations, let's add the middleware below and view the metrics: ```csharp app.MapPrometheusScrapingEndpoint(); @@ -93,14 +93,14 @@ After the tool is installed, you can run the application and by running the `dot dotnet-counters monitor -n MetricsDemo --counters Microsoft.AspNetCore.Hosting ``` -When you run the command, it will print a message like in the below and will wait an initial request to your application: +When you run the command, it will print a message like in the one below and will wait for an initial request to your application: ```txt Press p to pause, r to resume, q to quit. Status: Waiting for initial payload... ``` -If you send a request to your application, then the related built-in metrics that you have added will be collected and will be show in the terminal instantly: +If you send a request to your application, then the related built-in metrics that you have added will be collected and will be shown in the terminal instantly: ![](built-in-metric-response.png) @@ -112,7 +112,7 @@ dotnet-counters monitor -n MetricsDemo --counters Microsoft.AspNetCore.Server.Ke ## Creating Custom Metrics in ASP.NET Core Applications -So far, we have seen what metrics are, which built-in metrics are provided by ASP.NET Core and use the built-in metrics and run the `dotnet-counters` global tool to view these metrics. At this point, let's see how we can create custom metrics and view them via `dotnet-counters` tool. +So far, we have seen what metrics are, which built-in metrics are provided by ASP.NET Core and use the built-in metrics and run the `dotnet-counters` global tool to view these metrics. At this point, let's see how we can create custom metrics and view them via the `dotnet-counters` tool. `IMeterFactory` is the recommended service to create *Meter* instances. ASP.NET Core registers `IMeterFactory` in dependency injection (DI) by default. The meter factory integrates metrics with DI, making isolating and collecting metrics easy. @@ -140,17 +140,17 @@ public class ProductMetrics } ``` -In this class, we are creating a counter and defining metrics that we want to collect and view. `MetricsDemo.ProductStore` is the **counter name** and `metricsdemo.productstore.sold_products_count` is the **metric**, in our example. We need to register this class with a `Singleton` lifetime, because we don't want to reset the counter and want to keep it during the application runtime. +In this class, we are creating a counter and defining metrics that we want to collect and view. `MetricsDemo.ProductStore` is the **counter name** and `metricsdemo.productstore.sold_products_count` is the **metric**, in our example. We need to register this class with a `Singleton` lifetime because we don't want to reset the counter and want to keep it during the application runtime. > The [System.Diagnostics.Metrics.Meter](https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.metrics.meter) type is the entry point for a library to create a named group of instruments. Instruments record the numeric measurements that are needed to calculate metrics. Here we used [CreateCounter](https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.metrics.meter.createcounter) to create a Counter instrument named _metricsdemo.productstore.sold_products_count_. -So, register the type with DI container in the `Program.cs` file (or you can implement the `ISingletonDependency` interface, if you are using an ABP based application): +So, register the type with the DI container in the `Program.cs` file (or you can implement the `ISingletonDependency` interface, if you are using an ABP based application): ```csharp builder.Services.AddSingleton(); ``` -Then, we can inject this class and increase sold product count whenever it's needed. Since, we have registered it in DI, we can use it in minimal APIs like in the following example: +Then, we can inject this class and increase sold product count whenever it's needed. Since we have registered it in DI, we can use it in minimal APIs like in the following example: ```csharp app.MapPost("/complete-sale", ([FromBody] ProductSoldModel model, ProductMetrics metrics) => @@ -161,13 +161,13 @@ app.MapPost("/complete-sale", ([FromBody] ProductSoldModel model, ProductMetrics }); ``` -Whenever a request made to this endpoint the metric that we defined (_metricsdemo.productstore.sold_products_count_) will be increased and we can see this metric via `dotnet-counters` global tool. You can run the following command to see the metrics: +Whenever a request is made to this endpoint the metric that we defined (_metricsdemo.productstore.sold_products_count_) will be increased and we can see this metric via the `dotnet-counters` global tool. You can run the following command to see the metrics: ```bash dotnet-counters monitor -n MetricsDemo --counters MetricsDemo.ProductStore ``` -Here is an example output that you would see if you have made a POST requests to the `/complete-sale` endpoint: +Here is an example output that you would see if you have made a POST request to the `/complete-sale` endpoint: ```txt Press p to pause, r to resume, q to quit. @@ -179,15 +179,15 @@ Press p to pause, r to resume, q to quit. ### Advanced: View Metrics in Prometheus & Grafana - Building Dashboards -It's a common requirement to build a dashboard and monitor the metrics and check the health of your applications. In that point, you can expose the metrics and scrape them using the [Prometheus](https://learn.microsoft.com/en-us/aspnet/core/log-mon/metrics/metrics?view=aspnetcore-8.0#set-up-and-configure-prometheus) and build dashboard by using the [Grafana](https://learn.microsoft.com/en-us/aspnet/core/log-mon/metrics/metrics?view=aspnetcore-8.0#show-metrics-on-a-grafana-dashboard). +It's a common requirement to build a dashboard and monitor the metrics and check the health of your applications. At that point, you can expose the metrics and scrape them using the [Prometheus](https://learn.microsoft.com/en-us/aspnet/core/log-mon/metrics/metrics?view=aspnetcore-8.0#set-up-and-configure-prometheus) and build a dashboard by using the [Grafana](https://learn.microsoft.com/en-us/aspnet/core/log-mon/metrics/metrics?view=aspnetcore-8.0#show-metrics-on-a-grafana-dashboard). -If you want to build a dashboard, you can see [this documentation of Microsoft](https://learn.microsoft.com/en-us/aspnet/core/log-mon/metrics/metrics?view=aspnetcore-8.0#view-metrics-in-grafana-with-opentelemetry-and-prometheus), which shows how to set up the **Prometheus server** and show metrics on a **Grafana** dashboard. +If you want to build a dashboard, you can see [this documentation from Microsoft](https://learn.microsoft.com/en-us/aspnet/core/log-mon/metrics/metrics?view=aspnetcore-8.0#view-metrics-in-grafana-with-opentelemetry-and-prometheus), which shows how to set up the **Prometheus server** and show metrics on a **Grafana** dashboard. Also, you can check [this video](https://www.youtube.com/watch?v=A2pKhNQoQUU) if you want to see it in action. ## Conclusion -In this article, I showed you the new built-in metrics of .NET8, describe what metrics are, which pre-built metrics are provided by ASP.NET Core, how to use & view these pre-built metrics and finally I have showed you how to create custom metrics and view it in a dashboard. If you want to learn more about the **Metrics System of .NET**, you can check out the references that I have shared below. +In this article, I showed you the new built-in metrics of .NET8, describe what metrics are, which pre-built metrics are provided by ASP.NET Core, how to use & view these pre-built metrics and finally, I have shown you how to create custom metrics and view them in a dashboard. If you want to learn more about the **Metrics System of .NET**, you can check out the references that I have shared below. ## References From eec314757646d1d523807dd3295571596bf6efb9 Mon Sep 17 00:00:00 2001 From: Engincan VESKE <43685404+EngincanV@users.noreply.github.com> Date: Sun, 29 Oct 2023 16:08:49 +0300 Subject: [PATCH 027/108] Update built-in-metrics.png --- .../built-in-metrics.png | Bin 12637 -> 24702 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/en/Community-Articles/2023-10-30-NET-8-ASP-NET-Core-Metrics/built-in-metrics.png b/docs/en/Community-Articles/2023-10-30-NET-8-ASP-NET-Core-Metrics/built-in-metrics.png index e36b37c395598bc5f0382f5e6b6928e50c895108..7cf3a1896db5acc2d1b22564f8c46c4e234f8923 100644 GIT binary patch literal 24702 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%0AX;?P$C9_6uWtq(EjIjM2l6`MB0?%65|bu^3MHcP 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 EAFaZujQ{`u literal 12637 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 t{QB!y0QargkD~$?|Jm^Y#LfqJ1voMAYALV# Date: Sun, 29 Oct 2023 16:59:17 +0300 Subject: [PATCH 028/108] Add `EF Core 8 Primitive collections` article --- .../POST.md | 118 ++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 docs/en/Community-Articles/2023-10-28-EF-Core-8-Primitive-Collections/POST.md diff --git a/docs/en/Community-Articles/2023-10-28-EF-Core-8-Primitive-Collections/POST.md b/docs/en/Community-Articles/2023-10-28-EF-Core-8-Primitive-Collections/POST.md new file mode 100644 index 0000000000..6d5d7cdea9 --- /dev/null +++ b/docs/en/Community-Articles/2023-10-28-EF-Core-8-Primitive-Collections/POST.md @@ -0,0 +1,118 @@ +# EF Core 8 Primitive collections + +What can we do when we want to store a list of primitive types? Before EF Core 8, there were two options: + +- Create a wrapper class and a related table, then add a foreign key linking each value to its owner of the collection. +- Use [value converter](https://learn.microsoft.com/en-us/ef/core/modeling/value-conversions) to serialize-deserialize as JSON. + +The first option covers most scenarios if we need to add some additional properties to this type but let's say we never gonna need this type additionality. + +## Which collection types supported ? + +EF Core has the capability to map `IEnumerable` public properties that have both a getter and a setter, with `T` representing a primitive type + +```csharp +public class PrimitiveCollections +{ + public IEnumerable Ints { get; set; } + public ICollection Strings { get; set; } + public ISet DateTimes { get; set; } + public IList Dates { get; set; } + public uint[] UnsignedInts { get; set; } + public List Booleans { get; set; } + public List Urls { get; set; } +} +``` + +> Some generic arguments are not considered primitive on the database side, such as `uint` and `Uri`. However, these types are also considered as primitive because there are [built-in value converters](https://learn.microsoft.com/en-us/ef/core/modeling/value-conversions?tabs=data-annotations#built-in-converters). + +## Demo + +In this sample, we have a `Car` class with a `Color` enum, and the `Car` class has a `Colors` property. + +```csharp +public enum Color +{ + Black, + White, + Red, + Blue +} + +public class Car +{ + public int Id { get; set; } + public string Brand { get; set; } + public string Model { get; set; } + public ISet Colors { get; set; } = new HashSet(); + + public Car(string brand, string model) + { + Brand = brand; + Model = model; + } +} +``` + +When we want to list cars if they have any of the specific colors. + +```csharp +var colors = new HashSet { Color.Blue, Color.White }; +var cars = await context + .Cars + .Where(x=> x.Colors.Intersect(colors).Any()) + .ToListAsync(); +``` + +The SQL result looks like this; as you can see, it sends colors as parameters instead of adding them inline. It also uses the `json_each` function to deserialize on the database side. + +```sql +SELECT "c"."Id", "c"."Brand", "c"."Colors", "c"."Model" + FROM "Cars" AS "c" + WHERE EXISTS ( + SELECT 1 + FROM ( + SELECT "c0"."value" + FROM json_each("c"."Colors") AS "c0" + INTERSECT + SELECT "c1"."value" + FROM json_each(@__colors_0) AS "c1" + ) AS "t") + +``` + +When we insert to car table. + +```csharp +var car = new Car("Maserati", "GranTurismo") +{ + Colors = new HashSet() + { + Color.Black, + Color.Blue + } +}; +context.Cars.Add(car); +await context.SaveChangesAsync(); +``` + +The SQL statement looks like this, and as you can see, it automatically serializes into the Colors parameter as JSON. + +```sql + Executed DbCommand (0ms) [Parameters= + [@p0='Maserati' (Nullable = false) (Size = 8), + @p1='[0,3]' (Nullable = false) (Size = 5), + @p2='Flow' (Nullable = false) (Size = 4) + ], CommandType='Text', CommandTimeout='30'] + INSERT INTO "Cars" ("Brand", "Colors", "Model") + VALUES (@p0, @p1, @p2) + RETURNING "Id"; +``` +## Conclusion + +We don't need to do anything if we just use a collection of primitive types. It serializes and deserializes as JSON automatically. Additionally, it sends the primitive collection as a parameter to cache the query. + +## References + +- [EF Core 8 Primitive collections](https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-8.0/whatsnew#primitive-collection-properties) +- [.NET Data Community Standup - Collections of primitive values in EF Core](https://www.youtube.com/watch?v=AUS2OZjsA2I) \ No newline at end of file From 6cb222461169481840845084cc730ca1829e78a1 Mon Sep 17 00:00:00 2001 From: htve Date: Mon, 30 Oct 2023 13:26:33 +0800 Subject: [PATCH 029/108] Fix missing Attach in EfCoreRepository.UpdateAsync --- .../Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs index d73e18615d..799397218c 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs +++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs @@ -163,6 +163,7 @@ public class EfCoreRepository : RepositoryBase, IE if (dbContext.Set().Local.All(e => e != entity)) { + dbContext.Set().Attach(entity); dbContext.Update(entity); } From 7c27d7f2b171d0c5d9d72b156b48f3c893767c1f Mon Sep 17 00:00:00 2001 From: voloagent Date: Mon, 30 Oct 2023 09:02:26 +0300 Subject: [PATCH 030/108] Update_NPM_Packages --- .../package.json | 2 +- .../package.json | 4 +- .../yarn.lock | 280 ++++++------- .../app/Volo.BloggingTestApp/package.json | 4 +- .../app/Volo.BloggingTestApp/yarn.lock | 318 +++++++------- .../Volo.ClientSimulation.Demo/package.json | 2 +- .../demo/Volo.ClientSimulation.Demo/yarn.lock | 258 ++++++------ modules/cms-kit/angular/package.json | 10 +- .../angular/projects/cms-kit/package.json | 4 +- .../Volo.CmsKit.IdentityServer/package.json | 2 +- .../host/Volo.CmsKit.IdentityServer/yarn.lock | 258 ++++++------ .../host/Volo.CmsKit.Web.Host/package.json | 2 +- .../host/Volo.CmsKit.Web.Host/yarn.lock | 258 ++++++------ .../host/Volo.CmsKit.Web.Unified/package.json | 4 +- .../host/Volo.CmsKit.Web.Unified/yarn.lock | 392 +++++++++--------- modules/docs/app/VoloDocs.Web/package.json | 4 +- modules/docs/app/VoloDocs.Web/yarn.lock | 318 +++++++------- .../app/OpenIddict.Demo.Server/package.json | 2 +- modules/openiddict/app/angular/package.json | 20 +- .../package.json | 2 +- .../yarn.lock | 258 ++++++------ .../package.json | 4 +- .../yarn.lock | 292 ++++++------- npm/lerna.json | 2 +- npm/ng-packs/package.json | 5 +- .../packages/account-core/package.json | 6 +- npm/ng-packs/packages/account/package.json | 6 +- npm/ng-packs/packages/components/package.json | 6 +- npm/ng-packs/packages/core/package.json | 4 +- .../packages/feature-management/package.json | 4 +- npm/ng-packs/packages/generators/package.json | 2 +- npm/ng-packs/packages/identity/package.json | 8 +- npm/ng-packs/packages/oauth/package.json | 6 +- .../permission-management/package.json | 4 +- npm/ng-packs/packages/schematics/package.json | 2 +- .../packages/setting-management/package.json | 6 +- .../packages/tenant-management/package.json | 6 +- .../packages/theme-basic/package.json | 6 +- .../packages/theme-shared/package.json | 4 +- npm/packs/anchor-js/package.json | 4 +- .../package.json | 4 +- .../package.json | 6 +- .../package.json | 4 +- .../package.json | 34 +- npm/packs/aspnetcore.mvc.ui/package-lock.json | 2 +- npm/packs/aspnetcore.mvc.ui/package.json | 2 +- npm/packs/blogging/package.json | 10 +- npm/packs/bootstrap-datepicker/package.json | 2 +- .../bootstrap-daterangepicker/package.json | 2 +- npm/packs/bootstrap/package.json | 4 +- npm/packs/chart.js/package.json | 2 +- npm/packs/clipboard/package.json | 4 +- npm/packs/cms-kit.admin/package.json | 12 +- npm/packs/cms-kit.public/package.json | 6 +- npm/packs/cms-kit/package.json | 6 +- npm/packs/codemirror/package.json | 4 +- npm/packs/core/package.json | 4 +- npm/packs/cropperjs/package.json | 4 +- npm/packs/datatables.net-bs4/package.json | 4 +- npm/packs/datatables.net-bs5/package.json | 4 +- npm/packs/datatables.net/package.json | 4 +- npm/packs/docs/package.json | 12 +- npm/packs/flag-icon-css/package.json | 2 +- npm/packs/flag-icons/package.json | 2 +- npm/packs/font-awesome/package.json | 4 +- npm/packs/highlight.js/package.json | 4 +- npm/packs/jquery-form/package.json | 4 +- .../package.json | 4 +- npm/packs/jquery-validation/package.json | 4 +- npm/packs/jquery/package.json | 4 +- npm/packs/jstree/package.json | 4 +- npm/packs/lodash/package.json | 4 +- npm/packs/luxon/package.json | 4 +- .../package.json | 4 +- npm/packs/markdown-it/package.json | 4 +- npm/packs/moment/package.json | 2 +- npm/packs/owl.carousel/package.json | 4 +- npm/packs/popper.js/package.json | 4 +- npm/packs/prismjs/package.json | 6 +- npm/packs/qrcode/package.json | 4 +- npm/packs/select2/package.json | 4 +- npm/packs/signalr/package.json | 4 +- npm/packs/slugify/package.json | 2 +- npm/packs/star-rating-svg/package.json | 4 +- npm/packs/sweetalert2/package.json | 4 +- npm/packs/timeago/package.json | 4 +- npm/packs/toastr/package.json | 4 +- npm/packs/tui-editor/package.json | 6 +- npm/packs/uppy/package.json | 4 +- npm/packs/utils/package.json | 2 +- npm/packs/vee-validate/package.json | 4 +- npm/packs/virtual-file-explorer/package.json | 6 +- npm/packs/vue/package.json | 2 +- .../Volo.Abp.Account.SourceCode.zip | Bin 217062 -> 217050 bytes .../Volo.Abp.AuditLogging.SourceCode.zip | Bin 77414 -> 77415 bytes .../Volo.Abp.BackgroundJobs.SourceCode.zip | Bin 63352 -> 63354 bytes .../Volo.Abp.BasicTheme.SourceCode.zip | Bin 492300 -> 492275 bytes ...lo.Abp.BlobStoring.Database.SourceCode.zip | Bin 67562 -> 67563 bytes .../Volo.Abp.FeatureManagement.SourceCode.zip | Bin 186006 -> 186003 bytes .../Volo.Abp.Identity.SourceCode.zip | Bin 372025 -> 372205 bytes .../Volo.Abp.IdentityServer.SourceCode.zip | Bin 163024 -> 163023 bytes .../Volo.Abp.OpenIddict.SourceCode.zip | Bin 2261243 -> 2261236 bytes ...lo.Abp.PermissionManagement.SourceCode.zip | Bin 177183 -> 177177 bytes .../Volo.Abp.SettingManagement.SourceCode.zip | Bin 274471 -> 274444 bytes .../Volo.Abp.TenantManagement.SourceCode.zip | Bin 163194 -> 163189 bytes .../Volo.Abp.Users.SourceCode.zip | Bin 32630 -> 32631 bytes ...olo.Abp.VirtualFileExplorer.SourceCode.zip | Bin 89374 -> 89352 bytes .../Volo.Blogging.SourceCode.zip | Bin 396735 -> 396711 bytes .../Volo.ClientSimulation.SourceCode.zip | Bin 81379 -> 81361 bytes .../Volo.CmsKit.SourceCode.zip | Bin 892888 -> 892880 bytes .../Volo.Docs.SourceCode.zip | Bin 678784 -> 678764 bytes templates/app-nolayers/angular/package.json | 20 +- .../package.json | 4 +- .../package.json | 4 +- .../Server.Mongo/package.json | 2 +- .../Server/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- templates/app/angular/package.json | 20 +- .../package.json | 2 +- .../package.json | 4 +- .../package.json | 4 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- templates/module/angular/package.json | 20 +- .../projects/my-project-name/package.json | 4 +- .../package.json | 2 +- .../package.json | 4 +- .../package.json | 2 +- .../package.json | 2 +- 133 files changed, 1571 insertions(+), 1572 deletions(-) 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 dd83d4934a..dd3cc1b622 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json @@ -3,7 +3,7 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~7.4.0", + "@abp/aspnetcore.mvc.ui.theme.shared": "~7.4.1", "@abp/prismjs": "^~7.3.2", "@abp/highlight.js": "^~7.3.2" }, 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 80700852b3..715a290a18 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": "~7.4.0", - "@abp/prismjs": "~7.4.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~7.4.1", + "@abp/prismjs": "~7.4.1" }, "devDependencies": {} } diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock index a61b076582..ec4f519955 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,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.4.0.tgz#5088dd82ce343e1123e025848f09b51df988b225" - integrity sha512-teT7I0kgjek/lHzpTg5VOVCQ3IL26nFB43Aa/45fuaSwh9FJd3IJNXGL6xwp85oKaptDYSBXIF4GbrUfp2Ugqg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~7.4.0" - -"@abp/aspnetcore.mvc.ui.theme.shared@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.4.0.tgz#e676444a46214e850b0d916daeeb912774ac381d" - integrity sha512-X+dgdgHGUTyf0zaSPsqQp2ZZWu2+9gIRT4r4/LDgxchHgfNvcKRF8jH/JICcVgGD1adJvZzzDpTefL8CuAIRJA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~7.4.0" - "@abp/bootstrap" "~7.4.0" - "@abp/bootstrap-datepicker" "~7.4.0" - "@abp/bootstrap-daterangepicker" "~7.4.0" - "@abp/datatables.net-bs5" "~7.4.0" - "@abp/font-awesome" "~7.4.0" - "@abp/jquery-form" "~7.4.0" - "@abp/jquery-validation-unobtrusive" "~7.4.0" - "@abp/lodash" "~7.4.0" - "@abp/luxon" "~7.4.0" - "@abp/malihu-custom-scrollbar-plugin" "~7.4.0" - "@abp/moment" "~7.4.0" - "@abp/select2" "~7.4.0" - "@abp/sweetalert2" "~7.4.0" - "@abp/timeago" "~7.4.0" - "@abp/toastr" "~7.4.0" - -"@abp/aspnetcore.mvc.ui@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.4.0.tgz#61e1b52d2a940e02242f57007bd3f0fcb583c09a" - integrity sha512-gdoxOBo10DWDYhUq1GVfguC0Ot8PYhoA3VLf88/RatL88BNUUlt0e71uMFcx/gk72fuAE+o9zXn/6nq1wtpSwQ== +"@abp/aspnetcore.mvc.ui.theme.basic@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.4.1.tgz#62df78aab8a0b374817fdbab6c6363529b43f925" + integrity sha512-KaPmBlwNjOl1+vwLj5O8J11YHBSRg4y0IIxtgZiculXQNFPHbYAXm8sfTw6Wcsx00STrhvUVJQxYMePNnOTCTg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~7.4.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.4.1.tgz#8f8679f5cf80137324ddbec9fcaa67332783e708" + integrity sha512-0uUKuTsi/ikLFUUNEqvrn7KimgsvuK+7m1yZD4o47FQlgGxTyt1zQY9w3K6YyhyC3lsT6qCwiAPIoFOzPkIg/Q== + dependencies: + "@abp/aspnetcore.mvc.ui" "~7.4.1" + "@abp/bootstrap" "~7.4.1" + "@abp/bootstrap-datepicker" "~7.4.1" + "@abp/bootstrap-daterangepicker" "~7.4.1" + "@abp/datatables.net-bs5" "~7.4.1" + "@abp/font-awesome" "~7.4.1" + "@abp/jquery-form" "~7.4.1" + "@abp/jquery-validation-unobtrusive" "~7.4.1" + "@abp/lodash" "~7.4.1" + "@abp/luxon" "~7.4.1" + "@abp/malihu-custom-scrollbar-plugin" "~7.4.1" + "@abp/moment" "~7.4.1" + "@abp/select2" "~7.4.1" + "@abp/sweetalert2" "~7.4.1" + "@abp/timeago" "~7.4.1" + "@abp/toastr" "~7.4.1" + +"@abp/aspnetcore.mvc.ui@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.4.1.tgz#49c13718a17569f97b71f978b50f367dff67b8f7" + integrity sha512-EvYrfk0mpSt1jAMZmfFcHoNWEJskzResKp0bflOYsYPsZPuJ5WraKsk4IEEpesYHCyHW5AAb5HBJHeoSbVLh4Q== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,175 +43,175 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.4.0.tgz#75edc2127ca26d86bfefaa6e37579b06e32de5de" - integrity sha512-HXUa+kLjKu8sKr+kCZeNye9Pv/swRfKGAt/uJ2WUEvCJ4IVIMM1p6iMnOEEk/+3OGE64/PWu3cdE9dLP6izOaA== +"@abp/bootstrap-datepicker@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.4.1.tgz#f8f35d0edf71368faaae4e40a72fa846b0084f9b" + integrity sha512-hsu8ty6c2oOevsNoyFTQ4yJAu27qnz82MgRNVS8MRfdzo05/LhBhy/tKFm+PFYJqZULYlpQ1GXUF2+uGyazIeg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.4.0.tgz#5058fc2a9354f0a71ac5393658e362779a3bdc46" - integrity sha512-EK0wzZUY9H3XPb9U3DvYVqh48fU+6IneNGYOk7dcda8CUYObd4Dl1nXligStCqgn2uePtwxDHRx40eV0GXmU/Q== +"@abp/bootstrap-daterangepicker@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.4.1.tgz#b133cefdbed0fa1b8f1bda916a9d46952237238a" + integrity sha512-NpmbsO4Xg48Zmr8OOlf1fxuNMnFIqmRrkHiKp9lP5c8am64+7rRzCwATw2UY0Ud+4n8/ws+Iki1dwPQF6db1zw== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.4.0.tgz#71be70660643d8f60d13d355b8c80b16e4854870" - integrity sha512-3Fa+fL5NH+0H2KK4MAaqNsiz0PYwK0+Oxjmd0NgKwcqV2vJzRrzS3WG5kITYjNz9QGdBV+FrhNX/NSRU8LDx3Q== +"@abp/bootstrap@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.4.1.tgz#b34a2fcc80e04212865652ee7f4f5498a6a61f6d" + integrity sha512-/qCgfrtNWZ2jui2iL6wd6MLrcxALSEFVBypaz1JK3WjEe7DvFAYvKLl7DugIv039/Sx3mbx/PJiQhx8CVZMsEA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" bootstrap "^5.1.3" -"@abp/clipboard@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.4.0.tgz#f1d147df94ddf3ab53eeeb05aec3d5556064c5d6" - integrity sha512-z/nB1RQN/tmShSRwc9Fv1DsJSNM7+Zg4GnAtvZNpOHJp8LTVmsJWxLoUM7hF896W9E0JKr8tRuCVqulyh3IqKg== +"@abp/clipboard@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.4.1.tgz#31329ad4565b5075b486e9ca63fb0ff8a070ff9e" + integrity sha512-/+ylBPs/TEZdwywSSTnj96WoRJPwQnR6vlI+sX7h9wDfSDbMwuSSdETSnDVT21lkl8gonPONFZTL8D1u/KKAhg== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" clipboard "^2.0.8" -"@abp/core@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.4.0.tgz#8505d446a3b4d80ce476bd3352c1639c7dc486ec" - integrity sha512-yxrnw6eAEIj/CcX5jAwb4xmCsdqWaG+KRcBA8GFvqXbsK94IjqLDiJ3flo+QhGn2DXo40ISxofZop0CgSbP7Ew== +"@abp/core@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.4.1.tgz#1d14899ad16aac038806504eb0a5be9318cdcc0c" + integrity sha512-p0BAe2kCtgZmq8pilahmuxmye8DeRXt2KmnFRbmYE3j4d0uComFZpC72QOD1iro8bkmbsHfsHJpiVg4Sp4licw== dependencies: - "@abp/utils" "~7.4.0" + "@abp/utils" "~7.4.1" -"@abp/datatables.net-bs5@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.4.0.tgz#52d22e12a2420b402e03148793707d063db0088d" - integrity sha512-VvQv5w0cUpdDD9jX8aUEaLxFrc4A95JlmFnhCYIV1etL8HNOdZvmOThxorsImk31JfpyVYrY/Ze/rnWi2uhVvQ== +"@abp/datatables.net-bs5@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.4.1.tgz#821ee4c5db116f9810d65184855cea1fa7d47360" + integrity sha512-jpUzb65lCGYAxs/1qV3pRP8agHwIgZA9gDrudvR8S/3X3kNQWtmeKoFDZ93mhnl3aWPjWFKVrT2LeQeJw5XO5A== dependencies: - "@abp/datatables.net" "~7.4.0" + "@abp/datatables.net" "~7.4.1" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.4.0.tgz#9f12a1bb2abd05cd753b5d937d8a0350b2ff74ae" - integrity sha512-StOkMmIkcBUWzD9ToZ5J/hISRWdxbAWjwn7RuFXsoHXcY03mmD86g2oztjrWC5UFnRdpFnsfspTpbNqXFB9Vag== +"@abp/datatables.net@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.4.1.tgz#a4501e92e9995da0759b9ce55756fe92c4e8db59" + integrity sha512-BZOOZLH7XrGlX3aFK97cwV9+npsTzALSBo87OgwO2U6UpeFq7yAOvmC0+L9dmIUDISeORn5IFc/zTsSSIQnpHQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" datatables.net "^1.11.4" -"@abp/font-awesome@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.4.0.tgz#50059083b88706a0f71f55118472b378e4c66163" - integrity sha512-hKoPyM41HHCK6dg+8pQvjYJWzKABBCXrYQAIneMPQZUZqa4JLObKCva9TR7pu6pUp+9OVzg4fQOBM+nwpHtw4g== +"@abp/font-awesome@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.4.1.tgz#f6175a989aa64367830723f1dd9c607906716296" + integrity sha512-/ybaz4KROwFdG4Xv0yMTUMXOreDmKy1lKQuntqHEUnIorhXmkgcd5AQQ5AolJ4NmNdPNt1VYrRcTEmdz3nw+FA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.4.0.tgz#7ab3be241ee09f1e2843bd1b4d0b0b86d4446e30" - integrity sha512-OmTRuZ7QK1oe2ayNLqEpRJk4Ogk0wt/hIFtJHwQkCtDuCggoR5sQz4vn1vgrD19MxGq07dow5IgjbbhHv1vtEg== +"@abp/jquery-form@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.4.1.tgz#67978c41cda204b4c2027d81fc66844379313fa6" + integrity sha512-JZ1D47s/kpTlfMcpD4Jrlh98bhEDsIlWJauvAYaS0EBPIU9V2zHGQ+h9GPFbSPrXe4sYxPSREcsc8KUVMhT5MQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.4.0.tgz#0c564e39c4997dd9b8af7d2023615a06d6fd9834" - integrity sha512-vFB3RKkDlDXbHlDJ64uo3jWW1IRXwiCaPf+mcB77Wpt5+0Dn7eWqjBT7KyHBrsV08ghIqY/Q4nXntFJrmLcuEA== +"@abp/jquery-validation-unobtrusive@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.4.1.tgz#fe5c90ade419e83505884dd50dd5988d766f177b" + integrity sha512-oHHV/ukap+vDvQ8CnEWnOrrsLkHXIcMk+SjNKe/dyK5VzOVLDpMatRFmloLs2igYVXTqDGjmDlTswTFdJUarcQ== dependencies: - "@abp/jquery-validation" "~7.4.0" + "@abp/jquery-validation" "~7.4.1" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.4.0.tgz#f2aaba8f4c023e93f0051cc9a05c6d82fa5c7254" - integrity sha512-vN4srLT5UXAKXpKHbZgySWT+N2DjRYivgtifpZHMTGFLMW14W+tfi5zhR4H4JvqJpuO6ZKNiz15zA1zwEBK0Tw== +"@abp/jquery-validation@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.4.1.tgz#c2c06bc28770832a9ad73eac000586faed3bdbe3" + integrity sha512-A5iFT2EWfGHXrBb/ov5f0grZ2o2xkDaYtps/FnDUwBYdIdD8E7bbJsWp6ytvZDciO0XmEqAoVOxmiij7ue/SOg== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" jquery-validation "^1.19.3" -"@abp/jquery@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.4.0.tgz#206891b20f250537d05d907d2b6cd682fec76496" - integrity sha512-DeYo02T6WVhdpLloSPb6ooqtpksu1HtcbbQhIP9E1P7jHSzZoNiJvoKXHiFUcj5PYiGKl9d/o89hM/apWzyreQ== +"@abp/jquery@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.4.1.tgz#b5e16834e6c7871ad6392612ac8e2de8617eb353" + integrity sha512-X3RcovvRYISHcsb6W3U3iVsofw6yomoiouoB1tSIy2/tvUbu9n7N/3MM0CUujFm/xib7s3z1tVxFssS9smT7sw== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" jquery "~3.6.0" -"@abp/lodash@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.4.0.tgz#93f20abee776dbfa7aa45e2e710f2768f262fda5" - integrity sha512-h4Fnjm+VLwp1F3r57B9MrHhwyOYMo5oP285a85zzAYLkhwcDy7f1nbHKHMQ3ZTaeJVmiRnVaH+3sdUdslCRt5g== +"@abp/lodash@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.4.1.tgz#d0f84b7b9cbd989d59ebde594ed7acb8bc720b61" + integrity sha512-RFjZCyAPZnpvT0SJbxXzzmMYbuocSWBlezvjAVA8MiTrOXdZO4VyaTFjIuQcAdSrZhtpFGeYWxAjHshVplxMbw== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" lodash "^4.17.21" -"@abp/luxon@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.4.0.tgz#2ba7ff307c8f7c24d818a9c33635b86fd6810db9" - integrity sha512-ROCx7aihM+agdYy7Tkz+GiScx68KY5qwGTnj8P7QabGFChzVUic6RuBG+2Obmfonc6uT7Rq0c8JDGrsGNe/w8A== +"@abp/luxon@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.4.1.tgz#e0c0947d2b77f98b9cdaf7d1143025879361c3c9" + integrity sha512-k1wh8tT1529MtNC2gSXEIKdimBXBwubXeLisgpIPx6lkJo1Op6pAz2ERwFXeyktqGdYyuFcnewJIxmS7EPtWhg== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.4.0.tgz#aba68877481f4339e048f2ae3cfbe93197145a0a" - integrity sha512-Ntodhi4k0HFQmImYTP5SYf/WDm7aUGJLaGsfePm77HJ6DhGgalIGqtM8NiFXzo/3GmMY0XSo8Wxrs1mSCdtsOA== +"@abp/malihu-custom-scrollbar-plugin@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.4.1.tgz#aa7ec247197a258277549052780b38fd9e748c6c" + integrity sha512-pm/wIaiRSgGxelOf8AiL4JKFNZOQ6s2WbR6pULiP2HSNCgCpWYJ2s8fvj7VP3lAHIa98v3m8PSMSUhqaANxZ/Q== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.4.0.tgz#2490d9c7cdcaeca8d0ba9ebef5e7298caf0c9e09" - integrity sha512-ftsUEgO17GbVawA1GplGFzEeIM4NX004AmS6/fPI3o5isX7o1buF9q9TXdnwUuFEJKZxS4KpveRqzTL5t9k0BQ== +"@abp/moment@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.4.1.tgz#1c28ccb13eecdd13695edf8641ca9867b318e37d" + integrity sha512-7vRJyAK5ER9z+LV1xUSAAtWlPlhv8yhM/nHjhC+IQSP/+V1D7VLA6EKxAEexGw7wX6HY8oMOWP9HxDHMb5hKQA== dependencies: moment "^2.9.0" -"@abp/prismjs@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.4.0.tgz#8572f36f853c7054d77d02f3098cd844ee321ed7" - integrity sha512-y/Iy6pddQeVazEITktPot8JOPdAEOVAfmYkTBP3DIIPvoYr3kf6rwfzBUalMw5CEjWZ9BaIszDgFCk5ucNHHwQ== +"@abp/prismjs@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.4.1.tgz#df4387dbc2f0c77ddb9b6bd0ade9a5db29b9cee2" + integrity sha512-bI7pEKWy32aRYSb2ZziiH6Teebyd8km+1TXADy1yks9i9G5eLWe4/CSdwWpI4M+8ggM8CsdhrZ6/U+55BpXPQA== dependencies: - "@abp/clipboard" "~7.4.0" - "@abp/core" "~7.4.0" + "@abp/clipboard" "~7.4.1" + "@abp/core" "~7.4.1" prismjs "^1.26.0" -"@abp/select2@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.4.0.tgz#2f455cc991b7bb4df9ed426097bc2996cac12697" - integrity sha512-DwprX4MIoqMzSdh7eFg7EjGIz4ftYZub6jG9Sk3r+sxabbhpbFTxKOpXnhBWYi7L7uTQ8YDFk/5NeXO+Rm50Ww== +"@abp/select2@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.4.1.tgz#d7ea53cfec285a06278db362131b7510d5b73900" + integrity sha512-0S66iy7HuB74qqOSDraoF7UvXqz2PrnOKy+3EYMTMskOn4pWaq03JMR8xxEgZ8CtmsrqlE1a4wt1Yt9b3FIc0w== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" select2 "^4.0.13" -"@abp/sweetalert2@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.4.0.tgz#db1b4bd45cbabd61172591abc8ce223b5f607c4e" - integrity sha512-XqHPRnTASaRtbJIZYKW1KSKIJ8tynL8DuPCSMjcp4iyUlk+gnzxvbqXeNVjc2ojxj78T/42M/vITNoiiTYuKUw== +"@abp/sweetalert2@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.4.1.tgz#6722a40e5115cc341b7543aa0fa3b5a7ae9515b2" + integrity sha512-9jAHrYqCp5qykYfNNbqgESL6egixofVwonjZlb+lLWHAkIX+gQ2ApUNDFSXPtKUh2n9sXhSfF8SSg+BHP/bkCA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" sweetalert2 "^11.3.6" -"@abp/timeago@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.4.0.tgz#245fe09370f38311a67a594c8a3c884aea59cc90" - integrity sha512-khxK6EICUaGCUM1HkACw/8rlPQNssoQvCK64bNqEHBCXgPUmTcqSj5MEGiNOYbgGyWeH2IAMtJEYPqX1g1wqSA== +"@abp/timeago@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.4.1.tgz#243d342ba131878ae7f892909c9cae07cf54902b" + integrity sha512-a0Vl2NFwTxzRmH5akWo8BRUxa6sK72z8OoXwUFkZOUqMWBCHK7ffNiN1/fbSgA+7HpSZdDvIthjYwBt57DxLdQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" timeago "^1.6.7" -"@abp/toastr@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.4.0.tgz#16ba0414a27c9a21bc7556a078b175445edcf608" - integrity sha512-oM4HT2m95cK/9sB4AEQAKUMSGBep6wZTgM/46+o2IvvMdMPrGR2mPu9V9wi3y817FRgY+/qQTfy5TZWyTuIpVQ== +"@abp/toastr@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.4.1.tgz#345545a41b6145e54477c6c376193a6dbd62bdda" + integrity sha512-OLCvPJYSrcT2spcq9nO838Q22VhJ63Kdzasz1HugdVNqgcFCCSsqaoXrJGUcf5GrZx7PNloz7uf1I3txYMeZtA== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" toastr "^2.1.4" -"@abp/utils@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.4.0.tgz#b31fb6e5dff07463535479a6bb62dc733d7119c8" - integrity sha512-CcR3tfuEsVM60DYL1A0cH6BkUTsasOoBDv/b63uLCoEOq/g8ntelD/SpRSgfDXK74P9M8OE5ZFxlXWDiYuzAFg== +"@abp/utils@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.4.1.tgz#2ce4c4d659c2ae9bc23b71b79fa3c6e120eaecaf" + integrity sha512-eFeoOXcz9cVkDKpOfd2VWmpAojASfsqfvACZqi1UmF16OcjsFIkxmIvhh1fpbT4A+eQLbaFFLIsf6gYb//tXhg== 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 1c94891ca1..1239d9b938 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/package.json +++ b/modules/blogging/app/Volo.BloggingTestApp/package.json @@ -3,7 +3,7 @@ "name": "volo.blogtestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~7.4.0", - "@abp/blogging": "~7.4.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~7.4.1", + "@abp/blogging": "~7.4.1" } } diff --git a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock index 4469115786..db39937c38 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock +++ b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.4.0.tgz#5088dd82ce343e1123e025848f09b51df988b225" - integrity sha512-teT7I0kgjek/lHzpTg5VOVCQ3IL26nFB43Aa/45fuaSwh9FJd3IJNXGL6xwp85oKaptDYSBXIF4GbrUfp2Ugqg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~7.4.0" - -"@abp/aspnetcore.mvc.ui.theme.shared@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.4.0.tgz#e676444a46214e850b0d916daeeb912774ac381d" - integrity sha512-X+dgdgHGUTyf0zaSPsqQp2ZZWu2+9gIRT4r4/LDgxchHgfNvcKRF8jH/JICcVgGD1adJvZzzDpTefL8CuAIRJA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~7.4.0" - "@abp/bootstrap" "~7.4.0" - "@abp/bootstrap-datepicker" "~7.4.0" - "@abp/bootstrap-daterangepicker" "~7.4.0" - "@abp/datatables.net-bs5" "~7.4.0" - "@abp/font-awesome" "~7.4.0" - "@abp/jquery-form" "~7.4.0" - "@abp/jquery-validation-unobtrusive" "~7.4.0" - "@abp/lodash" "~7.4.0" - "@abp/luxon" "~7.4.0" - "@abp/malihu-custom-scrollbar-plugin" "~7.4.0" - "@abp/moment" "~7.4.0" - "@abp/select2" "~7.4.0" - "@abp/sweetalert2" "~7.4.0" - "@abp/timeago" "~7.4.0" - "@abp/toastr" "~7.4.0" - -"@abp/aspnetcore.mvc.ui@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.4.0.tgz#61e1b52d2a940e02242f57007bd3f0fcb583c09a" - integrity sha512-gdoxOBo10DWDYhUq1GVfguC0Ot8PYhoA3VLf88/RatL88BNUUlt0e71uMFcx/gk72fuAE+o9zXn/6nq1wtpSwQ== +"@abp/aspnetcore.mvc.ui.theme.basic@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.4.1.tgz#62df78aab8a0b374817fdbab6c6363529b43f925" + integrity sha512-KaPmBlwNjOl1+vwLj5O8J11YHBSRg4y0IIxtgZiculXQNFPHbYAXm8sfTw6Wcsx00STrhvUVJQxYMePNnOTCTg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~7.4.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.4.1.tgz#8f8679f5cf80137324ddbec9fcaa67332783e708" + integrity sha512-0uUKuTsi/ikLFUUNEqvrn7KimgsvuK+7m1yZD4o47FQlgGxTyt1zQY9w3K6YyhyC3lsT6qCwiAPIoFOzPkIg/Q== + dependencies: + "@abp/aspnetcore.mvc.ui" "~7.4.1" + "@abp/bootstrap" "~7.4.1" + "@abp/bootstrap-datepicker" "~7.4.1" + "@abp/bootstrap-daterangepicker" "~7.4.1" + "@abp/datatables.net-bs5" "~7.4.1" + "@abp/font-awesome" "~7.4.1" + "@abp/jquery-form" "~7.4.1" + "@abp/jquery-validation-unobtrusive" "~7.4.1" + "@abp/lodash" "~7.4.1" + "@abp/luxon" "~7.4.1" + "@abp/malihu-custom-scrollbar-plugin" "~7.4.1" + "@abp/moment" "~7.4.1" + "@abp/select2" "~7.4.1" + "@abp/sweetalert2" "~7.4.1" + "@abp/timeago" "~7.4.1" + "@abp/toastr" "~7.4.1" + +"@abp/aspnetcore.mvc.ui@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.4.1.tgz#49c13718a17569f97b71f978b50f367dff67b8f7" + integrity sha512-EvYrfk0mpSt1jAMZmfFcHoNWEJskzResKp0bflOYsYPsZPuJ5WraKsk4IEEpesYHCyHW5AAb5HBJHeoSbVLh4Q== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,201 +43,201 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/blogging@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-7.4.0.tgz#9d674d055df1124d2624959472f9790d24d5c9e5" - integrity sha512-yqPFwSCzKTyJ6kZAj0TO/OH+bYFmro6PbnT+C/L7+FlaqSXM2VTzLUVuFQFoudNAanlobadF/Rm9RxE+LE1oWg== +"@abp/blogging@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-7.4.1.tgz#b2a781f154c98fe69ce2c2948b422f2aaca6fd12" + integrity sha512-OHEw0tiQsJb6y1S3YbRSnw438sZx/msu4vxsJPYKeigyxubyyN8Ndl0NKP6BukrslmtLbnYwh/e/7Kpi+/Bs1g== dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~7.4.0" - "@abp/owl.carousel" "~7.4.0" - "@abp/prismjs" "~7.4.0" - "@abp/tui-editor" "~7.4.0" + "@abp/aspnetcore.mvc.ui.theme.shared" "~7.4.1" + "@abp/owl.carousel" "~7.4.1" + "@abp/prismjs" "~7.4.1" + "@abp/tui-editor" "~7.4.1" -"@abp/bootstrap-datepicker@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.4.0.tgz#75edc2127ca26d86bfefaa6e37579b06e32de5de" - integrity sha512-HXUa+kLjKu8sKr+kCZeNye9Pv/swRfKGAt/uJ2WUEvCJ4IVIMM1p6iMnOEEk/+3OGE64/PWu3cdE9dLP6izOaA== +"@abp/bootstrap-datepicker@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.4.1.tgz#f8f35d0edf71368faaae4e40a72fa846b0084f9b" + integrity sha512-hsu8ty6c2oOevsNoyFTQ4yJAu27qnz82MgRNVS8MRfdzo05/LhBhy/tKFm+PFYJqZULYlpQ1GXUF2+uGyazIeg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.4.0.tgz#5058fc2a9354f0a71ac5393658e362779a3bdc46" - integrity sha512-EK0wzZUY9H3XPb9U3DvYVqh48fU+6IneNGYOk7dcda8CUYObd4Dl1nXligStCqgn2uePtwxDHRx40eV0GXmU/Q== +"@abp/bootstrap-daterangepicker@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.4.1.tgz#b133cefdbed0fa1b8f1bda916a9d46952237238a" + integrity sha512-NpmbsO4Xg48Zmr8OOlf1fxuNMnFIqmRrkHiKp9lP5c8am64+7rRzCwATw2UY0Ud+4n8/ws+Iki1dwPQF6db1zw== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.4.0.tgz#71be70660643d8f60d13d355b8c80b16e4854870" - integrity sha512-3Fa+fL5NH+0H2KK4MAaqNsiz0PYwK0+Oxjmd0NgKwcqV2vJzRrzS3WG5kITYjNz9QGdBV+FrhNX/NSRU8LDx3Q== +"@abp/bootstrap@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.4.1.tgz#b34a2fcc80e04212865652ee7f4f5498a6a61f6d" + integrity sha512-/qCgfrtNWZ2jui2iL6wd6MLrcxALSEFVBypaz1JK3WjEe7DvFAYvKLl7DugIv039/Sx3mbx/PJiQhx8CVZMsEA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" bootstrap "^5.1.3" -"@abp/clipboard@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.4.0.tgz#f1d147df94ddf3ab53eeeb05aec3d5556064c5d6" - integrity sha512-z/nB1RQN/tmShSRwc9Fv1DsJSNM7+Zg4GnAtvZNpOHJp8LTVmsJWxLoUM7hF896W9E0JKr8tRuCVqulyh3IqKg== +"@abp/clipboard@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.4.1.tgz#31329ad4565b5075b486e9ca63fb0ff8a070ff9e" + integrity sha512-/+ylBPs/TEZdwywSSTnj96WoRJPwQnR6vlI+sX7h9wDfSDbMwuSSdETSnDVT21lkl8gonPONFZTL8D1u/KKAhg== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" clipboard "^2.0.8" -"@abp/core@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.4.0.tgz#8505d446a3b4d80ce476bd3352c1639c7dc486ec" - integrity sha512-yxrnw6eAEIj/CcX5jAwb4xmCsdqWaG+KRcBA8GFvqXbsK94IjqLDiJ3flo+QhGn2DXo40ISxofZop0CgSbP7Ew== +"@abp/core@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.4.1.tgz#1d14899ad16aac038806504eb0a5be9318cdcc0c" + integrity sha512-p0BAe2kCtgZmq8pilahmuxmye8DeRXt2KmnFRbmYE3j4d0uComFZpC72QOD1iro8bkmbsHfsHJpiVg4Sp4licw== dependencies: - "@abp/utils" "~7.4.0" + "@abp/utils" "~7.4.1" -"@abp/datatables.net-bs5@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.4.0.tgz#52d22e12a2420b402e03148793707d063db0088d" - integrity sha512-VvQv5w0cUpdDD9jX8aUEaLxFrc4A95JlmFnhCYIV1etL8HNOdZvmOThxorsImk31JfpyVYrY/Ze/rnWi2uhVvQ== +"@abp/datatables.net-bs5@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.4.1.tgz#821ee4c5db116f9810d65184855cea1fa7d47360" + integrity sha512-jpUzb65lCGYAxs/1qV3pRP8agHwIgZA9gDrudvR8S/3X3kNQWtmeKoFDZ93mhnl3aWPjWFKVrT2LeQeJw5XO5A== dependencies: - "@abp/datatables.net" "~7.4.0" + "@abp/datatables.net" "~7.4.1" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.4.0.tgz#9f12a1bb2abd05cd753b5d937d8a0350b2ff74ae" - integrity sha512-StOkMmIkcBUWzD9ToZ5J/hISRWdxbAWjwn7RuFXsoHXcY03mmD86g2oztjrWC5UFnRdpFnsfspTpbNqXFB9Vag== +"@abp/datatables.net@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.4.1.tgz#a4501e92e9995da0759b9ce55756fe92c4e8db59" + integrity sha512-BZOOZLH7XrGlX3aFK97cwV9+npsTzALSBo87OgwO2U6UpeFq7yAOvmC0+L9dmIUDISeORn5IFc/zTsSSIQnpHQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" datatables.net "^1.11.4" -"@abp/font-awesome@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.4.0.tgz#50059083b88706a0f71f55118472b378e4c66163" - integrity sha512-hKoPyM41HHCK6dg+8pQvjYJWzKABBCXrYQAIneMPQZUZqa4JLObKCva9TR7pu6pUp+9OVzg4fQOBM+nwpHtw4g== +"@abp/font-awesome@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.4.1.tgz#f6175a989aa64367830723f1dd9c607906716296" + integrity sha512-/ybaz4KROwFdG4Xv0yMTUMXOreDmKy1lKQuntqHEUnIorhXmkgcd5AQQ5AolJ4NmNdPNt1VYrRcTEmdz3nw+FA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.4.0.tgz#7ab3be241ee09f1e2843bd1b4d0b0b86d4446e30" - integrity sha512-OmTRuZ7QK1oe2ayNLqEpRJk4Ogk0wt/hIFtJHwQkCtDuCggoR5sQz4vn1vgrD19MxGq07dow5IgjbbhHv1vtEg== +"@abp/jquery-form@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.4.1.tgz#67978c41cda204b4c2027d81fc66844379313fa6" + integrity sha512-JZ1D47s/kpTlfMcpD4Jrlh98bhEDsIlWJauvAYaS0EBPIU9V2zHGQ+h9GPFbSPrXe4sYxPSREcsc8KUVMhT5MQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.4.0.tgz#0c564e39c4997dd9b8af7d2023615a06d6fd9834" - integrity sha512-vFB3RKkDlDXbHlDJ64uo3jWW1IRXwiCaPf+mcB77Wpt5+0Dn7eWqjBT7KyHBrsV08ghIqY/Q4nXntFJrmLcuEA== +"@abp/jquery-validation-unobtrusive@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.4.1.tgz#fe5c90ade419e83505884dd50dd5988d766f177b" + integrity sha512-oHHV/ukap+vDvQ8CnEWnOrrsLkHXIcMk+SjNKe/dyK5VzOVLDpMatRFmloLs2igYVXTqDGjmDlTswTFdJUarcQ== dependencies: - "@abp/jquery-validation" "~7.4.0" + "@abp/jquery-validation" "~7.4.1" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.4.0.tgz#f2aaba8f4c023e93f0051cc9a05c6d82fa5c7254" - integrity sha512-vN4srLT5UXAKXpKHbZgySWT+N2DjRYivgtifpZHMTGFLMW14W+tfi5zhR4H4JvqJpuO6ZKNiz15zA1zwEBK0Tw== +"@abp/jquery-validation@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.4.1.tgz#c2c06bc28770832a9ad73eac000586faed3bdbe3" + integrity sha512-A5iFT2EWfGHXrBb/ov5f0grZ2o2xkDaYtps/FnDUwBYdIdD8E7bbJsWp6ytvZDciO0XmEqAoVOxmiij7ue/SOg== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" jquery-validation "^1.19.3" -"@abp/jquery@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.4.0.tgz#206891b20f250537d05d907d2b6cd682fec76496" - integrity sha512-DeYo02T6WVhdpLloSPb6ooqtpksu1HtcbbQhIP9E1P7jHSzZoNiJvoKXHiFUcj5PYiGKl9d/o89hM/apWzyreQ== +"@abp/jquery@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.4.1.tgz#b5e16834e6c7871ad6392612ac8e2de8617eb353" + integrity sha512-X3RcovvRYISHcsb6W3U3iVsofw6yomoiouoB1tSIy2/tvUbu9n7N/3MM0CUujFm/xib7s3z1tVxFssS9smT7sw== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" jquery "~3.6.0" -"@abp/lodash@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.4.0.tgz#93f20abee776dbfa7aa45e2e710f2768f262fda5" - integrity sha512-h4Fnjm+VLwp1F3r57B9MrHhwyOYMo5oP285a85zzAYLkhwcDy7f1nbHKHMQ3ZTaeJVmiRnVaH+3sdUdslCRt5g== +"@abp/lodash@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.4.1.tgz#d0f84b7b9cbd989d59ebde594ed7acb8bc720b61" + integrity sha512-RFjZCyAPZnpvT0SJbxXzzmMYbuocSWBlezvjAVA8MiTrOXdZO4VyaTFjIuQcAdSrZhtpFGeYWxAjHshVplxMbw== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" lodash "^4.17.21" -"@abp/luxon@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.4.0.tgz#2ba7ff307c8f7c24d818a9c33635b86fd6810db9" - integrity sha512-ROCx7aihM+agdYy7Tkz+GiScx68KY5qwGTnj8P7QabGFChzVUic6RuBG+2Obmfonc6uT7Rq0c8JDGrsGNe/w8A== +"@abp/luxon@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.4.1.tgz#e0c0947d2b77f98b9cdaf7d1143025879361c3c9" + integrity sha512-k1wh8tT1529MtNC2gSXEIKdimBXBwubXeLisgpIPx6lkJo1Op6pAz2ERwFXeyktqGdYyuFcnewJIxmS7EPtWhg== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.4.0.tgz#aba68877481f4339e048f2ae3cfbe93197145a0a" - integrity sha512-Ntodhi4k0HFQmImYTP5SYf/WDm7aUGJLaGsfePm77HJ6DhGgalIGqtM8NiFXzo/3GmMY0XSo8Wxrs1mSCdtsOA== +"@abp/malihu-custom-scrollbar-plugin@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.4.1.tgz#aa7ec247197a258277549052780b38fd9e748c6c" + integrity sha512-pm/wIaiRSgGxelOf8AiL4JKFNZOQ6s2WbR6pULiP2HSNCgCpWYJ2s8fvj7VP3lAHIa98v3m8PSMSUhqaANxZ/Q== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.4.0.tgz#2490d9c7cdcaeca8d0ba9ebef5e7298caf0c9e09" - integrity sha512-ftsUEgO17GbVawA1GplGFzEeIM4NX004AmS6/fPI3o5isX7o1buF9q9TXdnwUuFEJKZxS4KpveRqzTL5t9k0BQ== +"@abp/moment@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.4.1.tgz#1c28ccb13eecdd13695edf8641ca9867b318e37d" + integrity sha512-7vRJyAK5ER9z+LV1xUSAAtWlPlhv8yhM/nHjhC+IQSP/+V1D7VLA6EKxAEexGw7wX6HY8oMOWP9HxDHMb5hKQA== dependencies: moment "^2.9.0" -"@abp/owl.carousel@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-7.4.0.tgz#5b70c90659d9e5951780e2c7204cfb6884b808f9" - integrity sha512-qddfSyXJweA7eV+REtMKeghlviIME20pplW+cz9RxetZpwe4g0bhWjUkfA/7F7c20YNIBkAVO8yfeBzip19wqw== +"@abp/owl.carousel@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-7.4.1.tgz#9db15032e4639a1b50e08aa7eaaf779f2cf30f6c" + integrity sha512-GNktio3GJqWsu4CrynbTkLucOG97W2rB8LnDxhvINcGow6hrDP3RzcExCqeh+miU6I44VvtC4uySyIYaXJoQ3A== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" owl.carousel "^2.3.4" -"@abp/prismjs@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.4.0.tgz#8572f36f853c7054d77d02f3098cd844ee321ed7" - integrity sha512-y/Iy6pddQeVazEITktPot8JOPdAEOVAfmYkTBP3DIIPvoYr3kf6rwfzBUalMw5CEjWZ9BaIszDgFCk5ucNHHwQ== +"@abp/prismjs@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.4.1.tgz#df4387dbc2f0c77ddb9b6bd0ade9a5db29b9cee2" + integrity sha512-bI7pEKWy32aRYSb2ZziiH6Teebyd8km+1TXADy1yks9i9G5eLWe4/CSdwWpI4M+8ggM8CsdhrZ6/U+55BpXPQA== dependencies: - "@abp/clipboard" "~7.4.0" - "@abp/core" "~7.4.0" + "@abp/clipboard" "~7.4.1" + "@abp/core" "~7.4.1" prismjs "^1.26.0" -"@abp/select2@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.4.0.tgz#2f455cc991b7bb4df9ed426097bc2996cac12697" - integrity sha512-DwprX4MIoqMzSdh7eFg7EjGIz4ftYZub6jG9Sk3r+sxabbhpbFTxKOpXnhBWYi7L7uTQ8YDFk/5NeXO+Rm50Ww== +"@abp/select2@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.4.1.tgz#d7ea53cfec285a06278db362131b7510d5b73900" + integrity sha512-0S66iy7HuB74qqOSDraoF7UvXqz2PrnOKy+3EYMTMskOn4pWaq03JMR8xxEgZ8CtmsrqlE1a4wt1Yt9b3FIc0w== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" select2 "^4.0.13" -"@abp/sweetalert2@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.4.0.tgz#db1b4bd45cbabd61172591abc8ce223b5f607c4e" - integrity sha512-XqHPRnTASaRtbJIZYKW1KSKIJ8tynL8DuPCSMjcp4iyUlk+gnzxvbqXeNVjc2ojxj78T/42M/vITNoiiTYuKUw== +"@abp/sweetalert2@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.4.1.tgz#6722a40e5115cc341b7543aa0fa3b5a7ae9515b2" + integrity sha512-9jAHrYqCp5qykYfNNbqgESL6egixofVwonjZlb+lLWHAkIX+gQ2ApUNDFSXPtKUh2n9sXhSfF8SSg+BHP/bkCA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" sweetalert2 "^11.3.6" -"@abp/timeago@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.4.0.tgz#245fe09370f38311a67a594c8a3c884aea59cc90" - integrity sha512-khxK6EICUaGCUM1HkACw/8rlPQNssoQvCK64bNqEHBCXgPUmTcqSj5MEGiNOYbgGyWeH2IAMtJEYPqX1g1wqSA== +"@abp/timeago@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.4.1.tgz#243d342ba131878ae7f892909c9cae07cf54902b" + integrity sha512-a0Vl2NFwTxzRmH5akWo8BRUxa6sK72z8OoXwUFkZOUqMWBCHK7ffNiN1/fbSgA+7HpSZdDvIthjYwBt57DxLdQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" timeago "^1.6.7" -"@abp/toastr@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.4.0.tgz#16ba0414a27c9a21bc7556a078b175445edcf608" - integrity sha512-oM4HT2m95cK/9sB4AEQAKUMSGBep6wZTgM/46+o2IvvMdMPrGR2mPu9V9wi3y817FRgY+/qQTfy5TZWyTuIpVQ== +"@abp/toastr@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.4.1.tgz#345545a41b6145e54477c6c376193a6dbd62bdda" + integrity sha512-OLCvPJYSrcT2spcq9nO838Q22VhJ63Kdzasz1HugdVNqgcFCCSsqaoXrJGUcf5GrZx7PNloz7uf1I3txYMeZtA== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" toastr "^2.1.4" -"@abp/tui-editor@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-7.4.0.tgz#831efd947b5a255d73365248e443d43f834c5a75" - integrity sha512-G/aCeG0lrFjEdE/YRbpFWuhuaGDFDqO5+/otIQSOxcR/bkjE1kLrdH5KDYGIa9QUaq7GbKn7yFnjrv9s5ajxzQ== +"@abp/tui-editor@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-7.4.1.tgz#4adaffcc3d62c7f2159d6acbca71e14780270277" + integrity sha512-0wiLq03+EB6or9uBbz1ZEWnOAoUjJqqFDONVEv2LtuqWlaiDwzILrSMxihTyFsLGrSAUdezfk2L83DoJT6SsVg== dependencies: - "@abp/jquery" "~7.4.0" - "@abp/prismjs" "~7.4.0" + "@abp/jquery" "~7.4.1" + "@abp/prismjs" "~7.4.1" -"@abp/utils@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.4.0.tgz#b31fb6e5dff07463535479a6bb62dc733d7119c8" - integrity sha512-CcR3tfuEsVM60DYL1A0cH6BkUTsasOoBDv/b63uLCoEOq/g8ntelD/SpRSgfDXK74P9M8OE5ZFxlXWDiYuzAFg== +"@abp/utils@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.4.1.tgz#2ce4c4d659c2ae9bc23b71b79fa3c6e120eaecaf" + integrity sha512-eFeoOXcz9cVkDKpOfd2VWmpAojASfsqfvACZqi1UmF16OcjsFIkxmIvhh1fpbT4A+eQLbaFFLIsf6gYb//tXhg== dependencies: just-compare "^2.3.0" diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json index 93e2ccb7f5..9e72809edd 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json @@ -3,6 +3,6 @@ "name": "client-simulation-web", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~7.4.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~7.4.1" } } diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock index 9c4c145174..8c3619aab1 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.4.0.tgz#5088dd82ce343e1123e025848f09b51df988b225" - integrity sha512-teT7I0kgjek/lHzpTg5VOVCQ3IL26nFB43Aa/45fuaSwh9FJd3IJNXGL6xwp85oKaptDYSBXIF4GbrUfp2Ugqg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~7.4.0" - -"@abp/aspnetcore.mvc.ui.theme.shared@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.4.0.tgz#e676444a46214e850b0d916daeeb912774ac381d" - integrity sha512-X+dgdgHGUTyf0zaSPsqQp2ZZWu2+9gIRT4r4/LDgxchHgfNvcKRF8jH/JICcVgGD1adJvZzzDpTefL8CuAIRJA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~7.4.0" - "@abp/bootstrap" "~7.4.0" - "@abp/bootstrap-datepicker" "~7.4.0" - "@abp/bootstrap-daterangepicker" "~7.4.0" - "@abp/datatables.net-bs5" "~7.4.0" - "@abp/font-awesome" "~7.4.0" - "@abp/jquery-form" "~7.4.0" - "@abp/jquery-validation-unobtrusive" "~7.4.0" - "@abp/lodash" "~7.4.0" - "@abp/luxon" "~7.4.0" - "@abp/malihu-custom-scrollbar-plugin" "~7.4.0" - "@abp/moment" "~7.4.0" - "@abp/select2" "~7.4.0" - "@abp/sweetalert2" "~7.4.0" - "@abp/timeago" "~7.4.0" - "@abp/toastr" "~7.4.0" - -"@abp/aspnetcore.mvc.ui@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.4.0.tgz#61e1b52d2a940e02242f57007bd3f0fcb583c09a" - integrity sha512-gdoxOBo10DWDYhUq1GVfguC0Ot8PYhoA3VLf88/RatL88BNUUlt0e71uMFcx/gk72fuAE+o9zXn/6nq1wtpSwQ== +"@abp/aspnetcore.mvc.ui.theme.basic@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.4.1.tgz#62df78aab8a0b374817fdbab6c6363529b43f925" + integrity sha512-KaPmBlwNjOl1+vwLj5O8J11YHBSRg4y0IIxtgZiculXQNFPHbYAXm8sfTw6Wcsx00STrhvUVJQxYMePNnOTCTg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~7.4.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.4.1.tgz#8f8679f5cf80137324ddbec9fcaa67332783e708" + integrity sha512-0uUKuTsi/ikLFUUNEqvrn7KimgsvuK+7m1yZD4o47FQlgGxTyt1zQY9w3K6YyhyC3lsT6qCwiAPIoFOzPkIg/Q== + dependencies: + "@abp/aspnetcore.mvc.ui" "~7.4.1" + "@abp/bootstrap" "~7.4.1" + "@abp/bootstrap-datepicker" "~7.4.1" + "@abp/bootstrap-daterangepicker" "~7.4.1" + "@abp/datatables.net-bs5" "~7.4.1" + "@abp/font-awesome" "~7.4.1" + "@abp/jquery-form" "~7.4.1" + "@abp/jquery-validation-unobtrusive" "~7.4.1" + "@abp/lodash" "~7.4.1" + "@abp/luxon" "~7.4.1" + "@abp/malihu-custom-scrollbar-plugin" "~7.4.1" + "@abp/moment" "~7.4.1" + "@abp/select2" "~7.4.1" + "@abp/sweetalert2" "~7.4.1" + "@abp/timeago" "~7.4.1" + "@abp/toastr" "~7.4.1" + +"@abp/aspnetcore.mvc.ui@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.4.1.tgz#49c13718a17569f97b71f978b50f367dff67b8f7" + integrity sha512-EvYrfk0mpSt1jAMZmfFcHoNWEJskzResKp0bflOYsYPsZPuJ5WraKsk4IEEpesYHCyHW5AAb5HBJHeoSbVLh4Q== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,158 +43,158 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.4.0.tgz#75edc2127ca26d86bfefaa6e37579b06e32de5de" - integrity sha512-HXUa+kLjKu8sKr+kCZeNye9Pv/swRfKGAt/uJ2WUEvCJ4IVIMM1p6iMnOEEk/+3OGE64/PWu3cdE9dLP6izOaA== +"@abp/bootstrap-datepicker@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.4.1.tgz#f8f35d0edf71368faaae4e40a72fa846b0084f9b" + integrity sha512-hsu8ty6c2oOevsNoyFTQ4yJAu27qnz82MgRNVS8MRfdzo05/LhBhy/tKFm+PFYJqZULYlpQ1GXUF2+uGyazIeg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.4.0.tgz#5058fc2a9354f0a71ac5393658e362779a3bdc46" - integrity sha512-EK0wzZUY9H3XPb9U3DvYVqh48fU+6IneNGYOk7dcda8CUYObd4Dl1nXligStCqgn2uePtwxDHRx40eV0GXmU/Q== +"@abp/bootstrap-daterangepicker@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.4.1.tgz#b133cefdbed0fa1b8f1bda916a9d46952237238a" + integrity sha512-NpmbsO4Xg48Zmr8OOlf1fxuNMnFIqmRrkHiKp9lP5c8am64+7rRzCwATw2UY0Ud+4n8/ws+Iki1dwPQF6db1zw== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.4.0.tgz#71be70660643d8f60d13d355b8c80b16e4854870" - integrity sha512-3Fa+fL5NH+0H2KK4MAaqNsiz0PYwK0+Oxjmd0NgKwcqV2vJzRrzS3WG5kITYjNz9QGdBV+FrhNX/NSRU8LDx3Q== +"@abp/bootstrap@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.4.1.tgz#b34a2fcc80e04212865652ee7f4f5498a6a61f6d" + integrity sha512-/qCgfrtNWZ2jui2iL6wd6MLrcxALSEFVBypaz1JK3WjEe7DvFAYvKLl7DugIv039/Sx3mbx/PJiQhx8CVZMsEA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" bootstrap "^5.1.3" -"@abp/core@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.4.0.tgz#8505d446a3b4d80ce476bd3352c1639c7dc486ec" - integrity sha512-yxrnw6eAEIj/CcX5jAwb4xmCsdqWaG+KRcBA8GFvqXbsK94IjqLDiJ3flo+QhGn2DXo40ISxofZop0CgSbP7Ew== +"@abp/core@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.4.1.tgz#1d14899ad16aac038806504eb0a5be9318cdcc0c" + integrity sha512-p0BAe2kCtgZmq8pilahmuxmye8DeRXt2KmnFRbmYE3j4d0uComFZpC72QOD1iro8bkmbsHfsHJpiVg4Sp4licw== dependencies: - "@abp/utils" "~7.4.0" + "@abp/utils" "~7.4.1" -"@abp/datatables.net-bs5@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.4.0.tgz#52d22e12a2420b402e03148793707d063db0088d" - integrity sha512-VvQv5w0cUpdDD9jX8aUEaLxFrc4A95JlmFnhCYIV1etL8HNOdZvmOThxorsImk31JfpyVYrY/Ze/rnWi2uhVvQ== +"@abp/datatables.net-bs5@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.4.1.tgz#821ee4c5db116f9810d65184855cea1fa7d47360" + integrity sha512-jpUzb65lCGYAxs/1qV3pRP8agHwIgZA9gDrudvR8S/3X3kNQWtmeKoFDZ93mhnl3aWPjWFKVrT2LeQeJw5XO5A== dependencies: - "@abp/datatables.net" "~7.4.0" + "@abp/datatables.net" "~7.4.1" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.4.0.tgz#9f12a1bb2abd05cd753b5d937d8a0350b2ff74ae" - integrity sha512-StOkMmIkcBUWzD9ToZ5J/hISRWdxbAWjwn7RuFXsoHXcY03mmD86g2oztjrWC5UFnRdpFnsfspTpbNqXFB9Vag== +"@abp/datatables.net@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.4.1.tgz#a4501e92e9995da0759b9ce55756fe92c4e8db59" + integrity sha512-BZOOZLH7XrGlX3aFK97cwV9+npsTzALSBo87OgwO2U6UpeFq7yAOvmC0+L9dmIUDISeORn5IFc/zTsSSIQnpHQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" datatables.net "^1.11.4" -"@abp/font-awesome@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.4.0.tgz#50059083b88706a0f71f55118472b378e4c66163" - integrity sha512-hKoPyM41HHCK6dg+8pQvjYJWzKABBCXrYQAIneMPQZUZqa4JLObKCva9TR7pu6pUp+9OVzg4fQOBM+nwpHtw4g== +"@abp/font-awesome@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.4.1.tgz#f6175a989aa64367830723f1dd9c607906716296" + integrity sha512-/ybaz4KROwFdG4Xv0yMTUMXOreDmKy1lKQuntqHEUnIorhXmkgcd5AQQ5AolJ4NmNdPNt1VYrRcTEmdz3nw+FA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.4.0.tgz#7ab3be241ee09f1e2843bd1b4d0b0b86d4446e30" - integrity sha512-OmTRuZ7QK1oe2ayNLqEpRJk4Ogk0wt/hIFtJHwQkCtDuCggoR5sQz4vn1vgrD19MxGq07dow5IgjbbhHv1vtEg== +"@abp/jquery-form@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.4.1.tgz#67978c41cda204b4c2027d81fc66844379313fa6" + integrity sha512-JZ1D47s/kpTlfMcpD4Jrlh98bhEDsIlWJauvAYaS0EBPIU9V2zHGQ+h9GPFbSPrXe4sYxPSREcsc8KUVMhT5MQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.4.0.tgz#0c564e39c4997dd9b8af7d2023615a06d6fd9834" - integrity sha512-vFB3RKkDlDXbHlDJ64uo3jWW1IRXwiCaPf+mcB77Wpt5+0Dn7eWqjBT7KyHBrsV08ghIqY/Q4nXntFJrmLcuEA== +"@abp/jquery-validation-unobtrusive@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.4.1.tgz#fe5c90ade419e83505884dd50dd5988d766f177b" + integrity sha512-oHHV/ukap+vDvQ8CnEWnOrrsLkHXIcMk+SjNKe/dyK5VzOVLDpMatRFmloLs2igYVXTqDGjmDlTswTFdJUarcQ== dependencies: - "@abp/jquery-validation" "~7.4.0" + "@abp/jquery-validation" "~7.4.1" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.4.0.tgz#f2aaba8f4c023e93f0051cc9a05c6d82fa5c7254" - integrity sha512-vN4srLT5UXAKXpKHbZgySWT+N2DjRYivgtifpZHMTGFLMW14W+tfi5zhR4H4JvqJpuO6ZKNiz15zA1zwEBK0Tw== +"@abp/jquery-validation@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.4.1.tgz#c2c06bc28770832a9ad73eac000586faed3bdbe3" + integrity sha512-A5iFT2EWfGHXrBb/ov5f0grZ2o2xkDaYtps/FnDUwBYdIdD8E7bbJsWp6ytvZDciO0XmEqAoVOxmiij7ue/SOg== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" jquery-validation "^1.19.3" -"@abp/jquery@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.4.0.tgz#206891b20f250537d05d907d2b6cd682fec76496" - integrity sha512-DeYo02T6WVhdpLloSPb6ooqtpksu1HtcbbQhIP9E1P7jHSzZoNiJvoKXHiFUcj5PYiGKl9d/o89hM/apWzyreQ== +"@abp/jquery@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.4.1.tgz#b5e16834e6c7871ad6392612ac8e2de8617eb353" + integrity sha512-X3RcovvRYISHcsb6W3U3iVsofw6yomoiouoB1tSIy2/tvUbu9n7N/3MM0CUujFm/xib7s3z1tVxFssS9smT7sw== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" jquery "~3.6.0" -"@abp/lodash@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.4.0.tgz#93f20abee776dbfa7aa45e2e710f2768f262fda5" - integrity sha512-h4Fnjm+VLwp1F3r57B9MrHhwyOYMo5oP285a85zzAYLkhwcDy7f1nbHKHMQ3ZTaeJVmiRnVaH+3sdUdslCRt5g== +"@abp/lodash@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.4.1.tgz#d0f84b7b9cbd989d59ebde594ed7acb8bc720b61" + integrity sha512-RFjZCyAPZnpvT0SJbxXzzmMYbuocSWBlezvjAVA8MiTrOXdZO4VyaTFjIuQcAdSrZhtpFGeYWxAjHshVplxMbw== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" lodash "^4.17.21" -"@abp/luxon@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.4.0.tgz#2ba7ff307c8f7c24d818a9c33635b86fd6810db9" - integrity sha512-ROCx7aihM+agdYy7Tkz+GiScx68KY5qwGTnj8P7QabGFChzVUic6RuBG+2Obmfonc6uT7Rq0c8JDGrsGNe/w8A== +"@abp/luxon@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.4.1.tgz#e0c0947d2b77f98b9cdaf7d1143025879361c3c9" + integrity sha512-k1wh8tT1529MtNC2gSXEIKdimBXBwubXeLisgpIPx6lkJo1Op6pAz2ERwFXeyktqGdYyuFcnewJIxmS7EPtWhg== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.4.0.tgz#aba68877481f4339e048f2ae3cfbe93197145a0a" - integrity sha512-Ntodhi4k0HFQmImYTP5SYf/WDm7aUGJLaGsfePm77HJ6DhGgalIGqtM8NiFXzo/3GmMY0XSo8Wxrs1mSCdtsOA== +"@abp/malihu-custom-scrollbar-plugin@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.4.1.tgz#aa7ec247197a258277549052780b38fd9e748c6c" + integrity sha512-pm/wIaiRSgGxelOf8AiL4JKFNZOQ6s2WbR6pULiP2HSNCgCpWYJ2s8fvj7VP3lAHIa98v3m8PSMSUhqaANxZ/Q== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.4.0.tgz#2490d9c7cdcaeca8d0ba9ebef5e7298caf0c9e09" - integrity sha512-ftsUEgO17GbVawA1GplGFzEeIM4NX004AmS6/fPI3o5isX7o1buF9q9TXdnwUuFEJKZxS4KpveRqzTL5t9k0BQ== +"@abp/moment@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.4.1.tgz#1c28ccb13eecdd13695edf8641ca9867b318e37d" + integrity sha512-7vRJyAK5ER9z+LV1xUSAAtWlPlhv8yhM/nHjhC+IQSP/+V1D7VLA6EKxAEexGw7wX6HY8oMOWP9HxDHMb5hKQA== dependencies: moment "^2.9.0" -"@abp/select2@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.4.0.tgz#2f455cc991b7bb4df9ed426097bc2996cac12697" - integrity sha512-DwprX4MIoqMzSdh7eFg7EjGIz4ftYZub6jG9Sk3r+sxabbhpbFTxKOpXnhBWYi7L7uTQ8YDFk/5NeXO+Rm50Ww== +"@abp/select2@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.4.1.tgz#d7ea53cfec285a06278db362131b7510d5b73900" + integrity sha512-0S66iy7HuB74qqOSDraoF7UvXqz2PrnOKy+3EYMTMskOn4pWaq03JMR8xxEgZ8CtmsrqlE1a4wt1Yt9b3FIc0w== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" select2 "^4.0.13" -"@abp/sweetalert2@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.4.0.tgz#db1b4bd45cbabd61172591abc8ce223b5f607c4e" - integrity sha512-XqHPRnTASaRtbJIZYKW1KSKIJ8tynL8DuPCSMjcp4iyUlk+gnzxvbqXeNVjc2ojxj78T/42M/vITNoiiTYuKUw== +"@abp/sweetalert2@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.4.1.tgz#6722a40e5115cc341b7543aa0fa3b5a7ae9515b2" + integrity sha512-9jAHrYqCp5qykYfNNbqgESL6egixofVwonjZlb+lLWHAkIX+gQ2ApUNDFSXPtKUh2n9sXhSfF8SSg+BHP/bkCA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" sweetalert2 "^11.3.6" -"@abp/timeago@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.4.0.tgz#245fe09370f38311a67a594c8a3c884aea59cc90" - integrity sha512-khxK6EICUaGCUM1HkACw/8rlPQNssoQvCK64bNqEHBCXgPUmTcqSj5MEGiNOYbgGyWeH2IAMtJEYPqX1g1wqSA== +"@abp/timeago@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.4.1.tgz#243d342ba131878ae7f892909c9cae07cf54902b" + integrity sha512-a0Vl2NFwTxzRmH5akWo8BRUxa6sK72z8OoXwUFkZOUqMWBCHK7ffNiN1/fbSgA+7HpSZdDvIthjYwBt57DxLdQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" timeago "^1.6.7" -"@abp/toastr@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.4.0.tgz#16ba0414a27c9a21bc7556a078b175445edcf608" - integrity sha512-oM4HT2m95cK/9sB4AEQAKUMSGBep6wZTgM/46+o2IvvMdMPrGR2mPu9V9wi3y817FRgY+/qQTfy5TZWyTuIpVQ== +"@abp/toastr@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.4.1.tgz#345545a41b6145e54477c6c376193a6dbd62bdda" + integrity sha512-OLCvPJYSrcT2spcq9nO838Q22VhJ63Kdzasz1HugdVNqgcFCCSsqaoXrJGUcf5GrZx7PNloz7uf1I3txYMeZtA== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" toastr "^2.1.4" -"@abp/utils@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.4.0.tgz#b31fb6e5dff07463535479a6bb62dc733d7119c8" - integrity sha512-CcR3tfuEsVM60DYL1A0cH6BkUTsasOoBDv/b63uLCoEOq/g8ntelD/SpRSgfDXK74P9M8OE5ZFxlXWDiYuzAFg== +"@abp/utils@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.4.1.tgz#2ce4c4d659c2ae9bc23b71b79fa3c6e120eaecaf" + integrity sha512-eFeoOXcz9cVkDKpOfd2VWmpAojASfsqfvACZqi1UmF16OcjsFIkxmIvhh1fpbT4A+eQLbaFFLIsf6gYb//tXhg== dependencies: just-compare "^2.3.0" diff --git a/modules/cms-kit/angular/package.json b/modules/cms-kit/angular/package.json index 616089d5d9..ac8ba74119 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": "~7.4.0", - "@abp/ng.identity": "~7.4.0", - "@abp/ng.setting-management": "~7.4.0", - "@abp/ng.tenant-management": "~7.4.0", - "@abp/ng.theme.basic": "~7.4.0", + "@abp/ng.account": "~7.4.1", + "@abp/ng.identity": "~7.4.1", + "@abp/ng.setting-management": "~7.4.1", + "@abp/ng.tenant-management": "~7.4.1", + "@abp/ng.theme.basic": "~7.4.1", "@angular/animations": "~10.0.0", "@angular/common": "~10.0.0", "@angular/compiler": "~10.0.0", diff --git a/modules/cms-kit/angular/projects/cms-kit/package.json b/modules/cms-kit/angular/projects/cms-kit/package.json index 16e2158730..384a49000e 100644 --- a/modules/cms-kit/angular/projects/cms-kit/package.json +++ b/modules/cms-kit/angular/projects/cms-kit/package.json @@ -4,8 +4,8 @@ "peerDependencies": { "@angular/common": "^9.1.11", "@angular/core": "^9.1.11", - "@abp/ng.core": ">=7.4.0", - "@abp/ng.theme.shared": ">=7.4.0" + "@abp/ng.core": ">=7.4.1", + "@abp/ng.theme.shared": ">=7.4.1" }, "dependencies": { "tslib": "^2.0.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json index c98ab25773..afc96007fd 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~7.4.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~7.4.1" } } diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock index 9c4c145174..8c3619aab1 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.4.0.tgz#5088dd82ce343e1123e025848f09b51df988b225" - integrity sha512-teT7I0kgjek/lHzpTg5VOVCQ3IL26nFB43Aa/45fuaSwh9FJd3IJNXGL6xwp85oKaptDYSBXIF4GbrUfp2Ugqg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~7.4.0" - -"@abp/aspnetcore.mvc.ui.theme.shared@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.4.0.tgz#e676444a46214e850b0d916daeeb912774ac381d" - integrity sha512-X+dgdgHGUTyf0zaSPsqQp2ZZWu2+9gIRT4r4/LDgxchHgfNvcKRF8jH/JICcVgGD1adJvZzzDpTefL8CuAIRJA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~7.4.0" - "@abp/bootstrap" "~7.4.0" - "@abp/bootstrap-datepicker" "~7.4.0" - "@abp/bootstrap-daterangepicker" "~7.4.0" - "@abp/datatables.net-bs5" "~7.4.0" - "@abp/font-awesome" "~7.4.0" - "@abp/jquery-form" "~7.4.0" - "@abp/jquery-validation-unobtrusive" "~7.4.0" - "@abp/lodash" "~7.4.0" - "@abp/luxon" "~7.4.0" - "@abp/malihu-custom-scrollbar-plugin" "~7.4.0" - "@abp/moment" "~7.4.0" - "@abp/select2" "~7.4.0" - "@abp/sweetalert2" "~7.4.0" - "@abp/timeago" "~7.4.0" - "@abp/toastr" "~7.4.0" - -"@abp/aspnetcore.mvc.ui@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.4.0.tgz#61e1b52d2a940e02242f57007bd3f0fcb583c09a" - integrity sha512-gdoxOBo10DWDYhUq1GVfguC0Ot8PYhoA3VLf88/RatL88BNUUlt0e71uMFcx/gk72fuAE+o9zXn/6nq1wtpSwQ== +"@abp/aspnetcore.mvc.ui.theme.basic@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.4.1.tgz#62df78aab8a0b374817fdbab6c6363529b43f925" + integrity sha512-KaPmBlwNjOl1+vwLj5O8J11YHBSRg4y0IIxtgZiculXQNFPHbYAXm8sfTw6Wcsx00STrhvUVJQxYMePNnOTCTg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~7.4.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.4.1.tgz#8f8679f5cf80137324ddbec9fcaa67332783e708" + integrity sha512-0uUKuTsi/ikLFUUNEqvrn7KimgsvuK+7m1yZD4o47FQlgGxTyt1zQY9w3K6YyhyC3lsT6qCwiAPIoFOzPkIg/Q== + dependencies: + "@abp/aspnetcore.mvc.ui" "~7.4.1" + "@abp/bootstrap" "~7.4.1" + "@abp/bootstrap-datepicker" "~7.4.1" + "@abp/bootstrap-daterangepicker" "~7.4.1" + "@abp/datatables.net-bs5" "~7.4.1" + "@abp/font-awesome" "~7.4.1" + "@abp/jquery-form" "~7.4.1" + "@abp/jquery-validation-unobtrusive" "~7.4.1" + "@abp/lodash" "~7.4.1" + "@abp/luxon" "~7.4.1" + "@abp/malihu-custom-scrollbar-plugin" "~7.4.1" + "@abp/moment" "~7.4.1" + "@abp/select2" "~7.4.1" + "@abp/sweetalert2" "~7.4.1" + "@abp/timeago" "~7.4.1" + "@abp/toastr" "~7.4.1" + +"@abp/aspnetcore.mvc.ui@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.4.1.tgz#49c13718a17569f97b71f978b50f367dff67b8f7" + integrity sha512-EvYrfk0mpSt1jAMZmfFcHoNWEJskzResKp0bflOYsYPsZPuJ5WraKsk4IEEpesYHCyHW5AAb5HBJHeoSbVLh4Q== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,158 +43,158 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.4.0.tgz#75edc2127ca26d86bfefaa6e37579b06e32de5de" - integrity sha512-HXUa+kLjKu8sKr+kCZeNye9Pv/swRfKGAt/uJ2WUEvCJ4IVIMM1p6iMnOEEk/+3OGE64/PWu3cdE9dLP6izOaA== +"@abp/bootstrap-datepicker@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.4.1.tgz#f8f35d0edf71368faaae4e40a72fa846b0084f9b" + integrity sha512-hsu8ty6c2oOevsNoyFTQ4yJAu27qnz82MgRNVS8MRfdzo05/LhBhy/tKFm+PFYJqZULYlpQ1GXUF2+uGyazIeg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.4.0.tgz#5058fc2a9354f0a71ac5393658e362779a3bdc46" - integrity sha512-EK0wzZUY9H3XPb9U3DvYVqh48fU+6IneNGYOk7dcda8CUYObd4Dl1nXligStCqgn2uePtwxDHRx40eV0GXmU/Q== +"@abp/bootstrap-daterangepicker@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.4.1.tgz#b133cefdbed0fa1b8f1bda916a9d46952237238a" + integrity sha512-NpmbsO4Xg48Zmr8OOlf1fxuNMnFIqmRrkHiKp9lP5c8am64+7rRzCwATw2UY0Ud+4n8/ws+Iki1dwPQF6db1zw== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.4.0.tgz#71be70660643d8f60d13d355b8c80b16e4854870" - integrity sha512-3Fa+fL5NH+0H2KK4MAaqNsiz0PYwK0+Oxjmd0NgKwcqV2vJzRrzS3WG5kITYjNz9QGdBV+FrhNX/NSRU8LDx3Q== +"@abp/bootstrap@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.4.1.tgz#b34a2fcc80e04212865652ee7f4f5498a6a61f6d" + integrity sha512-/qCgfrtNWZ2jui2iL6wd6MLrcxALSEFVBypaz1JK3WjEe7DvFAYvKLl7DugIv039/Sx3mbx/PJiQhx8CVZMsEA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" bootstrap "^5.1.3" -"@abp/core@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.4.0.tgz#8505d446a3b4d80ce476bd3352c1639c7dc486ec" - integrity sha512-yxrnw6eAEIj/CcX5jAwb4xmCsdqWaG+KRcBA8GFvqXbsK94IjqLDiJ3flo+QhGn2DXo40ISxofZop0CgSbP7Ew== +"@abp/core@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.4.1.tgz#1d14899ad16aac038806504eb0a5be9318cdcc0c" + integrity sha512-p0BAe2kCtgZmq8pilahmuxmye8DeRXt2KmnFRbmYE3j4d0uComFZpC72QOD1iro8bkmbsHfsHJpiVg4Sp4licw== dependencies: - "@abp/utils" "~7.4.0" + "@abp/utils" "~7.4.1" -"@abp/datatables.net-bs5@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.4.0.tgz#52d22e12a2420b402e03148793707d063db0088d" - integrity sha512-VvQv5w0cUpdDD9jX8aUEaLxFrc4A95JlmFnhCYIV1etL8HNOdZvmOThxorsImk31JfpyVYrY/Ze/rnWi2uhVvQ== +"@abp/datatables.net-bs5@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.4.1.tgz#821ee4c5db116f9810d65184855cea1fa7d47360" + integrity sha512-jpUzb65lCGYAxs/1qV3pRP8agHwIgZA9gDrudvR8S/3X3kNQWtmeKoFDZ93mhnl3aWPjWFKVrT2LeQeJw5XO5A== dependencies: - "@abp/datatables.net" "~7.4.0" + "@abp/datatables.net" "~7.4.1" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.4.0.tgz#9f12a1bb2abd05cd753b5d937d8a0350b2ff74ae" - integrity sha512-StOkMmIkcBUWzD9ToZ5J/hISRWdxbAWjwn7RuFXsoHXcY03mmD86g2oztjrWC5UFnRdpFnsfspTpbNqXFB9Vag== +"@abp/datatables.net@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.4.1.tgz#a4501e92e9995da0759b9ce55756fe92c4e8db59" + integrity sha512-BZOOZLH7XrGlX3aFK97cwV9+npsTzALSBo87OgwO2U6UpeFq7yAOvmC0+L9dmIUDISeORn5IFc/zTsSSIQnpHQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" datatables.net "^1.11.4" -"@abp/font-awesome@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.4.0.tgz#50059083b88706a0f71f55118472b378e4c66163" - integrity sha512-hKoPyM41HHCK6dg+8pQvjYJWzKABBCXrYQAIneMPQZUZqa4JLObKCva9TR7pu6pUp+9OVzg4fQOBM+nwpHtw4g== +"@abp/font-awesome@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.4.1.tgz#f6175a989aa64367830723f1dd9c607906716296" + integrity sha512-/ybaz4KROwFdG4Xv0yMTUMXOreDmKy1lKQuntqHEUnIorhXmkgcd5AQQ5AolJ4NmNdPNt1VYrRcTEmdz3nw+FA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.4.0.tgz#7ab3be241ee09f1e2843bd1b4d0b0b86d4446e30" - integrity sha512-OmTRuZ7QK1oe2ayNLqEpRJk4Ogk0wt/hIFtJHwQkCtDuCggoR5sQz4vn1vgrD19MxGq07dow5IgjbbhHv1vtEg== +"@abp/jquery-form@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.4.1.tgz#67978c41cda204b4c2027d81fc66844379313fa6" + integrity sha512-JZ1D47s/kpTlfMcpD4Jrlh98bhEDsIlWJauvAYaS0EBPIU9V2zHGQ+h9GPFbSPrXe4sYxPSREcsc8KUVMhT5MQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.4.0.tgz#0c564e39c4997dd9b8af7d2023615a06d6fd9834" - integrity sha512-vFB3RKkDlDXbHlDJ64uo3jWW1IRXwiCaPf+mcB77Wpt5+0Dn7eWqjBT7KyHBrsV08ghIqY/Q4nXntFJrmLcuEA== +"@abp/jquery-validation-unobtrusive@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.4.1.tgz#fe5c90ade419e83505884dd50dd5988d766f177b" + integrity sha512-oHHV/ukap+vDvQ8CnEWnOrrsLkHXIcMk+SjNKe/dyK5VzOVLDpMatRFmloLs2igYVXTqDGjmDlTswTFdJUarcQ== dependencies: - "@abp/jquery-validation" "~7.4.0" + "@abp/jquery-validation" "~7.4.1" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.4.0.tgz#f2aaba8f4c023e93f0051cc9a05c6d82fa5c7254" - integrity sha512-vN4srLT5UXAKXpKHbZgySWT+N2DjRYivgtifpZHMTGFLMW14W+tfi5zhR4H4JvqJpuO6ZKNiz15zA1zwEBK0Tw== +"@abp/jquery-validation@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.4.1.tgz#c2c06bc28770832a9ad73eac000586faed3bdbe3" + integrity sha512-A5iFT2EWfGHXrBb/ov5f0grZ2o2xkDaYtps/FnDUwBYdIdD8E7bbJsWp6ytvZDciO0XmEqAoVOxmiij7ue/SOg== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" jquery-validation "^1.19.3" -"@abp/jquery@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.4.0.tgz#206891b20f250537d05d907d2b6cd682fec76496" - integrity sha512-DeYo02T6WVhdpLloSPb6ooqtpksu1HtcbbQhIP9E1P7jHSzZoNiJvoKXHiFUcj5PYiGKl9d/o89hM/apWzyreQ== +"@abp/jquery@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.4.1.tgz#b5e16834e6c7871ad6392612ac8e2de8617eb353" + integrity sha512-X3RcovvRYISHcsb6W3U3iVsofw6yomoiouoB1tSIy2/tvUbu9n7N/3MM0CUujFm/xib7s3z1tVxFssS9smT7sw== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" jquery "~3.6.0" -"@abp/lodash@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.4.0.tgz#93f20abee776dbfa7aa45e2e710f2768f262fda5" - integrity sha512-h4Fnjm+VLwp1F3r57B9MrHhwyOYMo5oP285a85zzAYLkhwcDy7f1nbHKHMQ3ZTaeJVmiRnVaH+3sdUdslCRt5g== +"@abp/lodash@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.4.1.tgz#d0f84b7b9cbd989d59ebde594ed7acb8bc720b61" + integrity sha512-RFjZCyAPZnpvT0SJbxXzzmMYbuocSWBlezvjAVA8MiTrOXdZO4VyaTFjIuQcAdSrZhtpFGeYWxAjHshVplxMbw== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" lodash "^4.17.21" -"@abp/luxon@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.4.0.tgz#2ba7ff307c8f7c24d818a9c33635b86fd6810db9" - integrity sha512-ROCx7aihM+agdYy7Tkz+GiScx68KY5qwGTnj8P7QabGFChzVUic6RuBG+2Obmfonc6uT7Rq0c8JDGrsGNe/w8A== +"@abp/luxon@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.4.1.tgz#e0c0947d2b77f98b9cdaf7d1143025879361c3c9" + integrity sha512-k1wh8tT1529MtNC2gSXEIKdimBXBwubXeLisgpIPx6lkJo1Op6pAz2ERwFXeyktqGdYyuFcnewJIxmS7EPtWhg== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.4.0.tgz#aba68877481f4339e048f2ae3cfbe93197145a0a" - integrity sha512-Ntodhi4k0HFQmImYTP5SYf/WDm7aUGJLaGsfePm77HJ6DhGgalIGqtM8NiFXzo/3GmMY0XSo8Wxrs1mSCdtsOA== +"@abp/malihu-custom-scrollbar-plugin@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.4.1.tgz#aa7ec247197a258277549052780b38fd9e748c6c" + integrity sha512-pm/wIaiRSgGxelOf8AiL4JKFNZOQ6s2WbR6pULiP2HSNCgCpWYJ2s8fvj7VP3lAHIa98v3m8PSMSUhqaANxZ/Q== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.4.0.tgz#2490d9c7cdcaeca8d0ba9ebef5e7298caf0c9e09" - integrity sha512-ftsUEgO17GbVawA1GplGFzEeIM4NX004AmS6/fPI3o5isX7o1buF9q9TXdnwUuFEJKZxS4KpveRqzTL5t9k0BQ== +"@abp/moment@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.4.1.tgz#1c28ccb13eecdd13695edf8641ca9867b318e37d" + integrity sha512-7vRJyAK5ER9z+LV1xUSAAtWlPlhv8yhM/nHjhC+IQSP/+V1D7VLA6EKxAEexGw7wX6HY8oMOWP9HxDHMb5hKQA== dependencies: moment "^2.9.0" -"@abp/select2@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.4.0.tgz#2f455cc991b7bb4df9ed426097bc2996cac12697" - integrity sha512-DwprX4MIoqMzSdh7eFg7EjGIz4ftYZub6jG9Sk3r+sxabbhpbFTxKOpXnhBWYi7L7uTQ8YDFk/5NeXO+Rm50Ww== +"@abp/select2@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.4.1.tgz#d7ea53cfec285a06278db362131b7510d5b73900" + integrity sha512-0S66iy7HuB74qqOSDraoF7UvXqz2PrnOKy+3EYMTMskOn4pWaq03JMR8xxEgZ8CtmsrqlE1a4wt1Yt9b3FIc0w== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" select2 "^4.0.13" -"@abp/sweetalert2@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.4.0.tgz#db1b4bd45cbabd61172591abc8ce223b5f607c4e" - integrity sha512-XqHPRnTASaRtbJIZYKW1KSKIJ8tynL8DuPCSMjcp4iyUlk+gnzxvbqXeNVjc2ojxj78T/42M/vITNoiiTYuKUw== +"@abp/sweetalert2@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.4.1.tgz#6722a40e5115cc341b7543aa0fa3b5a7ae9515b2" + integrity sha512-9jAHrYqCp5qykYfNNbqgESL6egixofVwonjZlb+lLWHAkIX+gQ2ApUNDFSXPtKUh2n9sXhSfF8SSg+BHP/bkCA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" sweetalert2 "^11.3.6" -"@abp/timeago@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.4.0.tgz#245fe09370f38311a67a594c8a3c884aea59cc90" - integrity sha512-khxK6EICUaGCUM1HkACw/8rlPQNssoQvCK64bNqEHBCXgPUmTcqSj5MEGiNOYbgGyWeH2IAMtJEYPqX1g1wqSA== +"@abp/timeago@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.4.1.tgz#243d342ba131878ae7f892909c9cae07cf54902b" + integrity sha512-a0Vl2NFwTxzRmH5akWo8BRUxa6sK72z8OoXwUFkZOUqMWBCHK7ffNiN1/fbSgA+7HpSZdDvIthjYwBt57DxLdQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" timeago "^1.6.7" -"@abp/toastr@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.4.0.tgz#16ba0414a27c9a21bc7556a078b175445edcf608" - integrity sha512-oM4HT2m95cK/9sB4AEQAKUMSGBep6wZTgM/46+o2IvvMdMPrGR2mPu9V9wi3y817FRgY+/qQTfy5TZWyTuIpVQ== +"@abp/toastr@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.4.1.tgz#345545a41b6145e54477c6c376193a6dbd62bdda" + integrity sha512-OLCvPJYSrcT2spcq9nO838Q22VhJ63Kdzasz1HugdVNqgcFCCSsqaoXrJGUcf5GrZx7PNloz7uf1I3txYMeZtA== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" toastr "^2.1.4" -"@abp/utils@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.4.0.tgz#b31fb6e5dff07463535479a6bb62dc733d7119c8" - integrity sha512-CcR3tfuEsVM60DYL1A0cH6BkUTsasOoBDv/b63uLCoEOq/g8ntelD/SpRSgfDXK74P9M8OE5ZFxlXWDiYuzAFg== +"@abp/utils@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.4.1.tgz#2ce4c4d659c2ae9bc23b71b79fa3c6e120eaecaf" + integrity sha512-eFeoOXcz9cVkDKpOfd2VWmpAojASfsqfvACZqi1UmF16OcjsFIkxmIvhh1fpbT4A+eQLbaFFLIsf6gYb//tXhg== 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 7fbc0569f6..212b67b1c1 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~7.4.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~7.4.1" } } diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock index 9c4c145174..8c3619aab1 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.4.0.tgz#5088dd82ce343e1123e025848f09b51df988b225" - integrity sha512-teT7I0kgjek/lHzpTg5VOVCQ3IL26nFB43Aa/45fuaSwh9FJd3IJNXGL6xwp85oKaptDYSBXIF4GbrUfp2Ugqg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~7.4.0" - -"@abp/aspnetcore.mvc.ui.theme.shared@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.4.0.tgz#e676444a46214e850b0d916daeeb912774ac381d" - integrity sha512-X+dgdgHGUTyf0zaSPsqQp2ZZWu2+9gIRT4r4/LDgxchHgfNvcKRF8jH/JICcVgGD1adJvZzzDpTefL8CuAIRJA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~7.4.0" - "@abp/bootstrap" "~7.4.0" - "@abp/bootstrap-datepicker" "~7.4.0" - "@abp/bootstrap-daterangepicker" "~7.4.0" - "@abp/datatables.net-bs5" "~7.4.0" - "@abp/font-awesome" "~7.4.0" - "@abp/jquery-form" "~7.4.0" - "@abp/jquery-validation-unobtrusive" "~7.4.0" - "@abp/lodash" "~7.4.0" - "@abp/luxon" "~7.4.0" - "@abp/malihu-custom-scrollbar-plugin" "~7.4.0" - "@abp/moment" "~7.4.0" - "@abp/select2" "~7.4.0" - "@abp/sweetalert2" "~7.4.0" - "@abp/timeago" "~7.4.0" - "@abp/toastr" "~7.4.0" - -"@abp/aspnetcore.mvc.ui@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.4.0.tgz#61e1b52d2a940e02242f57007bd3f0fcb583c09a" - integrity sha512-gdoxOBo10DWDYhUq1GVfguC0Ot8PYhoA3VLf88/RatL88BNUUlt0e71uMFcx/gk72fuAE+o9zXn/6nq1wtpSwQ== +"@abp/aspnetcore.mvc.ui.theme.basic@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.4.1.tgz#62df78aab8a0b374817fdbab6c6363529b43f925" + integrity sha512-KaPmBlwNjOl1+vwLj5O8J11YHBSRg4y0IIxtgZiculXQNFPHbYAXm8sfTw6Wcsx00STrhvUVJQxYMePNnOTCTg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~7.4.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.4.1.tgz#8f8679f5cf80137324ddbec9fcaa67332783e708" + integrity sha512-0uUKuTsi/ikLFUUNEqvrn7KimgsvuK+7m1yZD4o47FQlgGxTyt1zQY9w3K6YyhyC3lsT6qCwiAPIoFOzPkIg/Q== + dependencies: + "@abp/aspnetcore.mvc.ui" "~7.4.1" + "@abp/bootstrap" "~7.4.1" + "@abp/bootstrap-datepicker" "~7.4.1" + "@abp/bootstrap-daterangepicker" "~7.4.1" + "@abp/datatables.net-bs5" "~7.4.1" + "@abp/font-awesome" "~7.4.1" + "@abp/jquery-form" "~7.4.1" + "@abp/jquery-validation-unobtrusive" "~7.4.1" + "@abp/lodash" "~7.4.1" + "@abp/luxon" "~7.4.1" + "@abp/malihu-custom-scrollbar-plugin" "~7.4.1" + "@abp/moment" "~7.4.1" + "@abp/select2" "~7.4.1" + "@abp/sweetalert2" "~7.4.1" + "@abp/timeago" "~7.4.1" + "@abp/toastr" "~7.4.1" + +"@abp/aspnetcore.mvc.ui@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.4.1.tgz#49c13718a17569f97b71f978b50f367dff67b8f7" + integrity sha512-EvYrfk0mpSt1jAMZmfFcHoNWEJskzResKp0bflOYsYPsZPuJ5WraKsk4IEEpesYHCyHW5AAb5HBJHeoSbVLh4Q== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,158 +43,158 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.4.0.tgz#75edc2127ca26d86bfefaa6e37579b06e32de5de" - integrity sha512-HXUa+kLjKu8sKr+kCZeNye9Pv/swRfKGAt/uJ2WUEvCJ4IVIMM1p6iMnOEEk/+3OGE64/PWu3cdE9dLP6izOaA== +"@abp/bootstrap-datepicker@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.4.1.tgz#f8f35d0edf71368faaae4e40a72fa846b0084f9b" + integrity sha512-hsu8ty6c2oOevsNoyFTQ4yJAu27qnz82MgRNVS8MRfdzo05/LhBhy/tKFm+PFYJqZULYlpQ1GXUF2+uGyazIeg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.4.0.tgz#5058fc2a9354f0a71ac5393658e362779a3bdc46" - integrity sha512-EK0wzZUY9H3XPb9U3DvYVqh48fU+6IneNGYOk7dcda8CUYObd4Dl1nXligStCqgn2uePtwxDHRx40eV0GXmU/Q== +"@abp/bootstrap-daterangepicker@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.4.1.tgz#b133cefdbed0fa1b8f1bda916a9d46952237238a" + integrity sha512-NpmbsO4Xg48Zmr8OOlf1fxuNMnFIqmRrkHiKp9lP5c8am64+7rRzCwATw2UY0Ud+4n8/ws+Iki1dwPQF6db1zw== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.4.0.tgz#71be70660643d8f60d13d355b8c80b16e4854870" - integrity sha512-3Fa+fL5NH+0H2KK4MAaqNsiz0PYwK0+Oxjmd0NgKwcqV2vJzRrzS3WG5kITYjNz9QGdBV+FrhNX/NSRU8LDx3Q== +"@abp/bootstrap@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.4.1.tgz#b34a2fcc80e04212865652ee7f4f5498a6a61f6d" + integrity sha512-/qCgfrtNWZ2jui2iL6wd6MLrcxALSEFVBypaz1JK3WjEe7DvFAYvKLl7DugIv039/Sx3mbx/PJiQhx8CVZMsEA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" bootstrap "^5.1.3" -"@abp/core@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.4.0.tgz#8505d446a3b4d80ce476bd3352c1639c7dc486ec" - integrity sha512-yxrnw6eAEIj/CcX5jAwb4xmCsdqWaG+KRcBA8GFvqXbsK94IjqLDiJ3flo+QhGn2DXo40ISxofZop0CgSbP7Ew== +"@abp/core@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.4.1.tgz#1d14899ad16aac038806504eb0a5be9318cdcc0c" + integrity sha512-p0BAe2kCtgZmq8pilahmuxmye8DeRXt2KmnFRbmYE3j4d0uComFZpC72QOD1iro8bkmbsHfsHJpiVg4Sp4licw== dependencies: - "@abp/utils" "~7.4.0" + "@abp/utils" "~7.4.1" -"@abp/datatables.net-bs5@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.4.0.tgz#52d22e12a2420b402e03148793707d063db0088d" - integrity sha512-VvQv5w0cUpdDD9jX8aUEaLxFrc4A95JlmFnhCYIV1etL8HNOdZvmOThxorsImk31JfpyVYrY/Ze/rnWi2uhVvQ== +"@abp/datatables.net-bs5@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.4.1.tgz#821ee4c5db116f9810d65184855cea1fa7d47360" + integrity sha512-jpUzb65lCGYAxs/1qV3pRP8agHwIgZA9gDrudvR8S/3X3kNQWtmeKoFDZ93mhnl3aWPjWFKVrT2LeQeJw5XO5A== dependencies: - "@abp/datatables.net" "~7.4.0" + "@abp/datatables.net" "~7.4.1" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.4.0.tgz#9f12a1bb2abd05cd753b5d937d8a0350b2ff74ae" - integrity sha512-StOkMmIkcBUWzD9ToZ5J/hISRWdxbAWjwn7RuFXsoHXcY03mmD86g2oztjrWC5UFnRdpFnsfspTpbNqXFB9Vag== +"@abp/datatables.net@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.4.1.tgz#a4501e92e9995da0759b9ce55756fe92c4e8db59" + integrity sha512-BZOOZLH7XrGlX3aFK97cwV9+npsTzALSBo87OgwO2U6UpeFq7yAOvmC0+L9dmIUDISeORn5IFc/zTsSSIQnpHQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" datatables.net "^1.11.4" -"@abp/font-awesome@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.4.0.tgz#50059083b88706a0f71f55118472b378e4c66163" - integrity sha512-hKoPyM41HHCK6dg+8pQvjYJWzKABBCXrYQAIneMPQZUZqa4JLObKCva9TR7pu6pUp+9OVzg4fQOBM+nwpHtw4g== +"@abp/font-awesome@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.4.1.tgz#f6175a989aa64367830723f1dd9c607906716296" + integrity sha512-/ybaz4KROwFdG4Xv0yMTUMXOreDmKy1lKQuntqHEUnIorhXmkgcd5AQQ5AolJ4NmNdPNt1VYrRcTEmdz3nw+FA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.4.0.tgz#7ab3be241ee09f1e2843bd1b4d0b0b86d4446e30" - integrity sha512-OmTRuZ7QK1oe2ayNLqEpRJk4Ogk0wt/hIFtJHwQkCtDuCggoR5sQz4vn1vgrD19MxGq07dow5IgjbbhHv1vtEg== +"@abp/jquery-form@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.4.1.tgz#67978c41cda204b4c2027d81fc66844379313fa6" + integrity sha512-JZ1D47s/kpTlfMcpD4Jrlh98bhEDsIlWJauvAYaS0EBPIU9V2zHGQ+h9GPFbSPrXe4sYxPSREcsc8KUVMhT5MQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.4.0.tgz#0c564e39c4997dd9b8af7d2023615a06d6fd9834" - integrity sha512-vFB3RKkDlDXbHlDJ64uo3jWW1IRXwiCaPf+mcB77Wpt5+0Dn7eWqjBT7KyHBrsV08ghIqY/Q4nXntFJrmLcuEA== +"@abp/jquery-validation-unobtrusive@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.4.1.tgz#fe5c90ade419e83505884dd50dd5988d766f177b" + integrity sha512-oHHV/ukap+vDvQ8CnEWnOrrsLkHXIcMk+SjNKe/dyK5VzOVLDpMatRFmloLs2igYVXTqDGjmDlTswTFdJUarcQ== dependencies: - "@abp/jquery-validation" "~7.4.0" + "@abp/jquery-validation" "~7.4.1" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.4.0.tgz#f2aaba8f4c023e93f0051cc9a05c6d82fa5c7254" - integrity sha512-vN4srLT5UXAKXpKHbZgySWT+N2DjRYivgtifpZHMTGFLMW14W+tfi5zhR4H4JvqJpuO6ZKNiz15zA1zwEBK0Tw== +"@abp/jquery-validation@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.4.1.tgz#c2c06bc28770832a9ad73eac000586faed3bdbe3" + integrity sha512-A5iFT2EWfGHXrBb/ov5f0grZ2o2xkDaYtps/FnDUwBYdIdD8E7bbJsWp6ytvZDciO0XmEqAoVOxmiij7ue/SOg== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" jquery-validation "^1.19.3" -"@abp/jquery@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.4.0.tgz#206891b20f250537d05d907d2b6cd682fec76496" - integrity sha512-DeYo02T6WVhdpLloSPb6ooqtpksu1HtcbbQhIP9E1P7jHSzZoNiJvoKXHiFUcj5PYiGKl9d/o89hM/apWzyreQ== +"@abp/jquery@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.4.1.tgz#b5e16834e6c7871ad6392612ac8e2de8617eb353" + integrity sha512-X3RcovvRYISHcsb6W3U3iVsofw6yomoiouoB1tSIy2/tvUbu9n7N/3MM0CUujFm/xib7s3z1tVxFssS9smT7sw== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" jquery "~3.6.0" -"@abp/lodash@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.4.0.tgz#93f20abee776dbfa7aa45e2e710f2768f262fda5" - integrity sha512-h4Fnjm+VLwp1F3r57B9MrHhwyOYMo5oP285a85zzAYLkhwcDy7f1nbHKHMQ3ZTaeJVmiRnVaH+3sdUdslCRt5g== +"@abp/lodash@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.4.1.tgz#d0f84b7b9cbd989d59ebde594ed7acb8bc720b61" + integrity sha512-RFjZCyAPZnpvT0SJbxXzzmMYbuocSWBlezvjAVA8MiTrOXdZO4VyaTFjIuQcAdSrZhtpFGeYWxAjHshVplxMbw== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" lodash "^4.17.21" -"@abp/luxon@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.4.0.tgz#2ba7ff307c8f7c24d818a9c33635b86fd6810db9" - integrity sha512-ROCx7aihM+agdYy7Tkz+GiScx68KY5qwGTnj8P7QabGFChzVUic6RuBG+2Obmfonc6uT7Rq0c8JDGrsGNe/w8A== +"@abp/luxon@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.4.1.tgz#e0c0947d2b77f98b9cdaf7d1143025879361c3c9" + integrity sha512-k1wh8tT1529MtNC2gSXEIKdimBXBwubXeLisgpIPx6lkJo1Op6pAz2ERwFXeyktqGdYyuFcnewJIxmS7EPtWhg== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.4.0.tgz#aba68877481f4339e048f2ae3cfbe93197145a0a" - integrity sha512-Ntodhi4k0HFQmImYTP5SYf/WDm7aUGJLaGsfePm77HJ6DhGgalIGqtM8NiFXzo/3GmMY0XSo8Wxrs1mSCdtsOA== +"@abp/malihu-custom-scrollbar-plugin@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.4.1.tgz#aa7ec247197a258277549052780b38fd9e748c6c" + integrity sha512-pm/wIaiRSgGxelOf8AiL4JKFNZOQ6s2WbR6pULiP2HSNCgCpWYJ2s8fvj7VP3lAHIa98v3m8PSMSUhqaANxZ/Q== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.4.0.tgz#2490d9c7cdcaeca8d0ba9ebef5e7298caf0c9e09" - integrity sha512-ftsUEgO17GbVawA1GplGFzEeIM4NX004AmS6/fPI3o5isX7o1buF9q9TXdnwUuFEJKZxS4KpveRqzTL5t9k0BQ== +"@abp/moment@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.4.1.tgz#1c28ccb13eecdd13695edf8641ca9867b318e37d" + integrity sha512-7vRJyAK5ER9z+LV1xUSAAtWlPlhv8yhM/nHjhC+IQSP/+V1D7VLA6EKxAEexGw7wX6HY8oMOWP9HxDHMb5hKQA== dependencies: moment "^2.9.0" -"@abp/select2@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.4.0.tgz#2f455cc991b7bb4df9ed426097bc2996cac12697" - integrity sha512-DwprX4MIoqMzSdh7eFg7EjGIz4ftYZub6jG9Sk3r+sxabbhpbFTxKOpXnhBWYi7L7uTQ8YDFk/5NeXO+Rm50Ww== +"@abp/select2@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.4.1.tgz#d7ea53cfec285a06278db362131b7510d5b73900" + integrity sha512-0S66iy7HuB74qqOSDraoF7UvXqz2PrnOKy+3EYMTMskOn4pWaq03JMR8xxEgZ8CtmsrqlE1a4wt1Yt9b3FIc0w== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" select2 "^4.0.13" -"@abp/sweetalert2@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.4.0.tgz#db1b4bd45cbabd61172591abc8ce223b5f607c4e" - integrity sha512-XqHPRnTASaRtbJIZYKW1KSKIJ8tynL8DuPCSMjcp4iyUlk+gnzxvbqXeNVjc2ojxj78T/42M/vITNoiiTYuKUw== +"@abp/sweetalert2@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.4.1.tgz#6722a40e5115cc341b7543aa0fa3b5a7ae9515b2" + integrity sha512-9jAHrYqCp5qykYfNNbqgESL6egixofVwonjZlb+lLWHAkIX+gQ2ApUNDFSXPtKUh2n9sXhSfF8SSg+BHP/bkCA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" sweetalert2 "^11.3.6" -"@abp/timeago@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.4.0.tgz#245fe09370f38311a67a594c8a3c884aea59cc90" - integrity sha512-khxK6EICUaGCUM1HkACw/8rlPQNssoQvCK64bNqEHBCXgPUmTcqSj5MEGiNOYbgGyWeH2IAMtJEYPqX1g1wqSA== +"@abp/timeago@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.4.1.tgz#243d342ba131878ae7f892909c9cae07cf54902b" + integrity sha512-a0Vl2NFwTxzRmH5akWo8BRUxa6sK72z8OoXwUFkZOUqMWBCHK7ffNiN1/fbSgA+7HpSZdDvIthjYwBt57DxLdQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" timeago "^1.6.7" -"@abp/toastr@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.4.0.tgz#16ba0414a27c9a21bc7556a078b175445edcf608" - integrity sha512-oM4HT2m95cK/9sB4AEQAKUMSGBep6wZTgM/46+o2IvvMdMPrGR2mPu9V9wi3y817FRgY+/qQTfy5TZWyTuIpVQ== +"@abp/toastr@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.4.1.tgz#345545a41b6145e54477c6c376193a6dbd62bdda" + integrity sha512-OLCvPJYSrcT2spcq9nO838Q22VhJ63Kdzasz1HugdVNqgcFCCSsqaoXrJGUcf5GrZx7PNloz7uf1I3txYMeZtA== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" toastr "^2.1.4" -"@abp/utils@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.4.0.tgz#b31fb6e5dff07463535479a6bb62dc733d7119c8" - integrity sha512-CcR3tfuEsVM60DYL1A0cH6BkUTsasOoBDv/b63uLCoEOq/g8ntelD/SpRSgfDXK74P9M8OE5ZFxlXWDiYuzAFg== +"@abp/utils@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.4.1.tgz#2ce4c4d659c2ae9bc23b71b79fa3c6e120eaecaf" + integrity sha512-eFeoOXcz9cVkDKpOfd2VWmpAojASfsqfvACZqi1UmF16OcjsFIkxmIvhh1fpbT4A+eQLbaFFLIsf6gYb//tXhg== 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 a4a8e6fff1..6d059608f6 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json @@ -3,7 +3,7 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~7.4.0", - "@abp/cms-kit": "7.4.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~7.4.1", + "@abp/cms-kit": "7.4.1" } } diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock index 87286d8e3c..8e20f36041 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.4.0.tgz#5088dd82ce343e1123e025848f09b51df988b225" - integrity sha512-teT7I0kgjek/lHzpTg5VOVCQ3IL26nFB43Aa/45fuaSwh9FJd3IJNXGL6xwp85oKaptDYSBXIF4GbrUfp2Ugqg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~7.4.0" - -"@abp/aspnetcore.mvc.ui.theme.shared@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.4.0.tgz#e676444a46214e850b0d916daeeb912774ac381d" - integrity sha512-X+dgdgHGUTyf0zaSPsqQp2ZZWu2+9gIRT4r4/LDgxchHgfNvcKRF8jH/JICcVgGD1adJvZzzDpTefL8CuAIRJA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~7.4.0" - "@abp/bootstrap" "~7.4.0" - "@abp/bootstrap-datepicker" "~7.4.0" - "@abp/bootstrap-daterangepicker" "~7.4.0" - "@abp/datatables.net-bs5" "~7.4.0" - "@abp/font-awesome" "~7.4.0" - "@abp/jquery-form" "~7.4.0" - "@abp/jquery-validation-unobtrusive" "~7.4.0" - "@abp/lodash" "~7.4.0" - "@abp/luxon" "~7.4.0" - "@abp/malihu-custom-scrollbar-plugin" "~7.4.0" - "@abp/moment" "~7.4.0" - "@abp/select2" "~7.4.0" - "@abp/sweetalert2" "~7.4.0" - "@abp/timeago" "~7.4.0" - "@abp/toastr" "~7.4.0" - -"@abp/aspnetcore.mvc.ui@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.4.0.tgz#61e1b52d2a940e02242f57007bd3f0fcb583c09a" - integrity sha512-gdoxOBo10DWDYhUq1GVfguC0Ot8PYhoA3VLf88/RatL88BNUUlt0e71uMFcx/gk72fuAE+o9zXn/6nq1wtpSwQ== +"@abp/aspnetcore.mvc.ui.theme.basic@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.4.1.tgz#62df78aab8a0b374817fdbab6c6363529b43f925" + integrity sha512-KaPmBlwNjOl1+vwLj5O8J11YHBSRg4y0IIxtgZiculXQNFPHbYAXm8sfTw6Wcsx00STrhvUVJQxYMePNnOTCTg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~7.4.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.4.1.tgz#8f8679f5cf80137324ddbec9fcaa67332783e708" + integrity sha512-0uUKuTsi/ikLFUUNEqvrn7KimgsvuK+7m1yZD4o47FQlgGxTyt1zQY9w3K6YyhyC3lsT6qCwiAPIoFOzPkIg/Q== + dependencies: + "@abp/aspnetcore.mvc.ui" "~7.4.1" + "@abp/bootstrap" "~7.4.1" + "@abp/bootstrap-datepicker" "~7.4.1" + "@abp/bootstrap-daterangepicker" "~7.4.1" + "@abp/datatables.net-bs5" "~7.4.1" + "@abp/font-awesome" "~7.4.1" + "@abp/jquery-form" "~7.4.1" + "@abp/jquery-validation-unobtrusive" "~7.4.1" + "@abp/lodash" "~7.4.1" + "@abp/luxon" "~7.4.1" + "@abp/malihu-custom-scrollbar-plugin" "~7.4.1" + "@abp/moment" "~7.4.1" + "@abp/select2" "~7.4.1" + "@abp/sweetalert2" "~7.4.1" + "@abp/timeago" "~7.4.1" + "@abp/toastr" "~7.4.1" + +"@abp/aspnetcore.mvc.ui@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.4.1.tgz#49c13718a17569f97b71f978b50f367dff67b8f7" + integrity sha512-EvYrfk0mpSt1jAMZmfFcHoNWEJskzResKp0bflOYsYPsZPuJ5WraKsk4IEEpesYHCyHW5AAb5HBJHeoSbVLh4Q== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,257 +43,257 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.4.0.tgz#75edc2127ca26d86bfefaa6e37579b06e32de5de" - integrity sha512-HXUa+kLjKu8sKr+kCZeNye9Pv/swRfKGAt/uJ2WUEvCJ4IVIMM1p6iMnOEEk/+3OGE64/PWu3cdE9dLP6izOaA== +"@abp/bootstrap-datepicker@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.4.1.tgz#f8f35d0edf71368faaae4e40a72fa846b0084f9b" + integrity sha512-hsu8ty6c2oOevsNoyFTQ4yJAu27qnz82MgRNVS8MRfdzo05/LhBhy/tKFm+PFYJqZULYlpQ1GXUF2+uGyazIeg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.4.0.tgz#5058fc2a9354f0a71ac5393658e362779a3bdc46" - integrity sha512-EK0wzZUY9H3XPb9U3DvYVqh48fU+6IneNGYOk7dcda8CUYObd4Dl1nXligStCqgn2uePtwxDHRx40eV0GXmU/Q== +"@abp/bootstrap-daterangepicker@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.4.1.tgz#b133cefdbed0fa1b8f1bda916a9d46952237238a" + integrity sha512-NpmbsO4Xg48Zmr8OOlf1fxuNMnFIqmRrkHiKp9lP5c8am64+7rRzCwATw2UY0Ud+4n8/ws+Iki1dwPQF6db1zw== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.4.0.tgz#71be70660643d8f60d13d355b8c80b16e4854870" - integrity sha512-3Fa+fL5NH+0H2KK4MAaqNsiz0PYwK0+Oxjmd0NgKwcqV2vJzRrzS3WG5kITYjNz9QGdBV+FrhNX/NSRU8LDx3Q== +"@abp/bootstrap@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.4.1.tgz#b34a2fcc80e04212865652ee7f4f5498a6a61f6d" + integrity sha512-/qCgfrtNWZ2jui2iL6wd6MLrcxALSEFVBypaz1JK3WjEe7DvFAYvKLl7DugIv039/Sx3mbx/PJiQhx8CVZMsEA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" bootstrap "^5.1.3" -"@abp/clipboard@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.4.0.tgz#f1d147df94ddf3ab53eeeb05aec3d5556064c5d6" - integrity sha512-z/nB1RQN/tmShSRwc9Fv1DsJSNM7+Zg4GnAtvZNpOHJp8LTVmsJWxLoUM7hF896W9E0JKr8tRuCVqulyh3IqKg== +"@abp/clipboard@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.4.1.tgz#31329ad4565b5075b486e9ca63fb0ff8a070ff9e" + integrity sha512-/+ylBPs/TEZdwywSSTnj96WoRJPwQnR6vlI+sX7h9wDfSDbMwuSSdETSnDVT21lkl8gonPONFZTL8D1u/KKAhg== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" clipboard "^2.0.8" -"@abp/cms-kit.admin@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-7.4.0.tgz#89465edaf6ccb44d517ca999dff68a9382bb3b36" - integrity sha512-QnCJF9YgzpS76cX1CXgeKGX41a5tltqf5tX/zryWaXyQxGgc/2gmVIT5NBsOABLNePmtAYGnF2GtwOygikOJCw== +"@abp/cms-kit.admin@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-7.4.1.tgz#aab06e7741b5cd5717ca2d1b4966a3ac1882646e" + integrity sha512-6mNdNp1m8dt/LK6HBDbaLs0DUnrAgWZVYWGGAc/ajrQPoZhw0gptqf4raAYnt0yDx+/30/Lw2cwsQQl5uAr5mw== dependencies: - "@abp/codemirror" "~7.4.0" - "@abp/jstree" "~7.4.0" - "@abp/slugify" "~7.4.0" - "@abp/tui-editor" "~7.4.0" - "@abp/uppy" "~7.4.0" + "@abp/codemirror" "~7.4.1" + "@abp/jstree" "~7.4.1" + "@abp/slugify" "~7.4.1" + "@abp/tui-editor" "~7.4.1" + "@abp/uppy" "~7.4.1" -"@abp/cms-kit.public@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-7.4.0.tgz#c13c7e7f155a76f699d6a32f918e74d83ebcdff9" - integrity sha512-5+RJRAH2AK+Do2iNo0KDEqgqt+UwtMpCzIn/Rpcgn+WtiqyJ9XNqn9A8mISasPtXzXvrZplQrSmCAjAUSm1AeA== +"@abp/cms-kit.public@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-7.4.1.tgz#b140eb556985f18e2482cd9422b262fdcad5e6d1" + integrity sha512-5sPirQw6dtnKYTdZuMV9+rH1/W4ZUu3Apo3DwzCLs+VDw6KyaA3TlgYBmtwzXzaAU/e1MDMDjtTumMZos7DeeQ== dependencies: - "@abp/highlight.js" "~7.4.0" - "@abp/star-rating-svg" "~7.4.0" + "@abp/highlight.js" "~7.4.1" + "@abp/star-rating-svg" "~7.4.1" -"@abp/cms-kit@7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-7.4.0.tgz#a385f344d08fb95ec163d132f10dbb6e1cc6643d" - integrity sha512-TPWR5vB3p/Ki3iXgM+jk+cdGNhnyzpkziDb4hIL5pOkNFWL7npNNCjlZvppGMzuq/lo31KW5VTBoL4Qf369S6Q== +"@abp/cms-kit@7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-7.4.1.tgz#d04ceb79c8593dcd478df0c7293e4f31076250c6" + integrity sha512-VfInnERSq2o5nTvX6VRaFlWIx/tkz31ObRe1XRUU2tafK2W3CWgT85OXft9X0+CeSTyg3LTId9Gy8vtJ2yHm8w== dependencies: - "@abp/cms-kit.admin" "~7.4.0" - "@abp/cms-kit.public" "~7.4.0" + "@abp/cms-kit.admin" "~7.4.1" + "@abp/cms-kit.public" "~7.4.1" -"@abp/codemirror@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-7.4.0.tgz#a7b0805b6db3ed011bed044cc986bf6d48c7a969" - integrity sha512-4+c8jVKFK0O3XZTCh07AcUQCqQhKKEMdvS1KwYbMWD8ZMA9LGAL4Dj+uhkLDrYkwHvtmcQtbw7q37Xlb+uTKJA== +"@abp/codemirror@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-7.4.1.tgz#ed501eaa95ad81bc83336eaff244fc2f70e8b133" + integrity sha512-EyxMJb3puv9jA4xMfQjRe6ZfsupZgQRg7+gxNXWEM8HyTbvrCPgRgrxlbN0KM9jeSAO8GiKgrOPhGpAeZks7sw== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" codemirror "^5.65.1" -"@abp/core@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.4.0.tgz#8505d446a3b4d80ce476bd3352c1639c7dc486ec" - integrity sha512-yxrnw6eAEIj/CcX5jAwb4xmCsdqWaG+KRcBA8GFvqXbsK94IjqLDiJ3flo+QhGn2DXo40ISxofZop0CgSbP7Ew== +"@abp/core@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.4.1.tgz#1d14899ad16aac038806504eb0a5be9318cdcc0c" + integrity sha512-p0BAe2kCtgZmq8pilahmuxmye8DeRXt2KmnFRbmYE3j4d0uComFZpC72QOD1iro8bkmbsHfsHJpiVg4Sp4licw== dependencies: - "@abp/utils" "~7.4.0" + "@abp/utils" "~7.4.1" -"@abp/datatables.net-bs5@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.4.0.tgz#52d22e12a2420b402e03148793707d063db0088d" - integrity sha512-VvQv5w0cUpdDD9jX8aUEaLxFrc4A95JlmFnhCYIV1etL8HNOdZvmOThxorsImk31JfpyVYrY/Ze/rnWi2uhVvQ== +"@abp/datatables.net-bs5@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.4.1.tgz#821ee4c5db116f9810d65184855cea1fa7d47360" + integrity sha512-jpUzb65lCGYAxs/1qV3pRP8agHwIgZA9gDrudvR8S/3X3kNQWtmeKoFDZ93mhnl3aWPjWFKVrT2LeQeJw5XO5A== dependencies: - "@abp/datatables.net" "~7.4.0" + "@abp/datatables.net" "~7.4.1" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.4.0.tgz#9f12a1bb2abd05cd753b5d937d8a0350b2ff74ae" - integrity sha512-StOkMmIkcBUWzD9ToZ5J/hISRWdxbAWjwn7RuFXsoHXcY03mmD86g2oztjrWC5UFnRdpFnsfspTpbNqXFB9Vag== +"@abp/datatables.net@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.4.1.tgz#a4501e92e9995da0759b9ce55756fe92c4e8db59" + integrity sha512-BZOOZLH7XrGlX3aFK97cwV9+npsTzALSBo87OgwO2U6UpeFq7yAOvmC0+L9dmIUDISeORn5IFc/zTsSSIQnpHQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" datatables.net "^1.11.4" -"@abp/font-awesome@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.4.0.tgz#50059083b88706a0f71f55118472b378e4c66163" - integrity sha512-hKoPyM41HHCK6dg+8pQvjYJWzKABBCXrYQAIneMPQZUZqa4JLObKCva9TR7pu6pUp+9OVzg4fQOBM+nwpHtw4g== +"@abp/font-awesome@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.4.1.tgz#f6175a989aa64367830723f1dd9c607906716296" + integrity sha512-/ybaz4KROwFdG4Xv0yMTUMXOreDmKy1lKQuntqHEUnIorhXmkgcd5AQQ5AolJ4NmNdPNt1VYrRcTEmdz3nw+FA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/highlight.js@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-7.4.0.tgz#5e0e0a4ac26463450a8ac4453721fe7432f63fb5" - integrity sha512-AbFgsqRHcJUhjCPpYxJaM+cTNZCMCq7A8UAHfrVFH3bWqQAodYNqO4/qt9B2s0EDrG4QCD82ksX23cmdGk4O3g== +"@abp/highlight.js@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-7.4.1.tgz#33417a919b2bb1e5d0e001cade3441ef956a29a0" + integrity sha512-pCU6zORLDzOv4GS7+SMyXYR0yUaZXwkioBnLim5+FLGYoeXn4/Jus4wAGMTiMd0kq+oimMPzHlelUPqSzx92ZQ== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" "@highlightjs/cdn-assets" "~11.4.0" -"@abp/jquery-form@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.4.0.tgz#7ab3be241ee09f1e2843bd1b4d0b0b86d4446e30" - integrity sha512-OmTRuZ7QK1oe2ayNLqEpRJk4Ogk0wt/hIFtJHwQkCtDuCggoR5sQz4vn1vgrD19MxGq07dow5IgjbbhHv1vtEg== +"@abp/jquery-form@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.4.1.tgz#67978c41cda204b4c2027d81fc66844379313fa6" + integrity sha512-JZ1D47s/kpTlfMcpD4Jrlh98bhEDsIlWJauvAYaS0EBPIU9V2zHGQ+h9GPFbSPrXe4sYxPSREcsc8KUVMhT5MQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.4.0.tgz#0c564e39c4997dd9b8af7d2023615a06d6fd9834" - integrity sha512-vFB3RKkDlDXbHlDJ64uo3jWW1IRXwiCaPf+mcB77Wpt5+0Dn7eWqjBT7KyHBrsV08ghIqY/Q4nXntFJrmLcuEA== +"@abp/jquery-validation-unobtrusive@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.4.1.tgz#fe5c90ade419e83505884dd50dd5988d766f177b" + integrity sha512-oHHV/ukap+vDvQ8CnEWnOrrsLkHXIcMk+SjNKe/dyK5VzOVLDpMatRFmloLs2igYVXTqDGjmDlTswTFdJUarcQ== dependencies: - "@abp/jquery-validation" "~7.4.0" + "@abp/jquery-validation" "~7.4.1" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.4.0.tgz#f2aaba8f4c023e93f0051cc9a05c6d82fa5c7254" - integrity sha512-vN4srLT5UXAKXpKHbZgySWT+N2DjRYivgtifpZHMTGFLMW14W+tfi5zhR4H4JvqJpuO6ZKNiz15zA1zwEBK0Tw== +"@abp/jquery-validation@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.4.1.tgz#c2c06bc28770832a9ad73eac000586faed3bdbe3" + integrity sha512-A5iFT2EWfGHXrBb/ov5f0grZ2o2xkDaYtps/FnDUwBYdIdD8E7bbJsWp6ytvZDciO0XmEqAoVOxmiij7ue/SOg== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" jquery-validation "^1.19.3" -"@abp/jquery@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.4.0.tgz#206891b20f250537d05d907d2b6cd682fec76496" - integrity sha512-DeYo02T6WVhdpLloSPb6ooqtpksu1HtcbbQhIP9E1P7jHSzZoNiJvoKXHiFUcj5PYiGKl9d/o89hM/apWzyreQ== +"@abp/jquery@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.4.1.tgz#b5e16834e6c7871ad6392612ac8e2de8617eb353" + integrity sha512-X3RcovvRYISHcsb6W3U3iVsofw6yomoiouoB1tSIy2/tvUbu9n7N/3MM0CUujFm/xib7s3z1tVxFssS9smT7sw== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" jquery "~3.6.0" -"@abp/jstree@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-7.4.0.tgz#67fa92c9f043c422fe87bb97dcc64ae597901f91" - integrity sha512-vDC+ZdK9OCSthbmw9P8+ezNtRG1KM3+t1S/0t50La24Wo37QVJuA4IeIPbhYxvZ8Urh9ZYphUqsNXylcXDWuZQ== +"@abp/jstree@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-7.4.1.tgz#43dea84e32c07a29e4a7d770fedf03b2e6d0b07d" + integrity sha512-yf1r5vUF2bDl3MBW8ONY1COFYsLk0NMVS3XJzwVsaT99I+BfQ6Ll3EjWGYaieKNwWqzJfG2d8cJH/6Psn+MB0w== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" jstree "^3.3.12" -"@abp/lodash@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.4.0.tgz#93f20abee776dbfa7aa45e2e710f2768f262fda5" - integrity sha512-h4Fnjm+VLwp1F3r57B9MrHhwyOYMo5oP285a85zzAYLkhwcDy7f1nbHKHMQ3ZTaeJVmiRnVaH+3sdUdslCRt5g== +"@abp/lodash@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.4.1.tgz#d0f84b7b9cbd989d59ebde594ed7acb8bc720b61" + integrity sha512-RFjZCyAPZnpvT0SJbxXzzmMYbuocSWBlezvjAVA8MiTrOXdZO4VyaTFjIuQcAdSrZhtpFGeYWxAjHshVplxMbw== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" lodash "^4.17.21" -"@abp/luxon@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.4.0.tgz#2ba7ff307c8f7c24d818a9c33635b86fd6810db9" - integrity sha512-ROCx7aihM+agdYy7Tkz+GiScx68KY5qwGTnj8P7QabGFChzVUic6RuBG+2Obmfonc6uT7Rq0c8JDGrsGNe/w8A== +"@abp/luxon@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.4.1.tgz#e0c0947d2b77f98b9cdaf7d1143025879361c3c9" + integrity sha512-k1wh8tT1529MtNC2gSXEIKdimBXBwubXeLisgpIPx6lkJo1Op6pAz2ERwFXeyktqGdYyuFcnewJIxmS7EPtWhg== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.4.0.tgz#aba68877481f4339e048f2ae3cfbe93197145a0a" - integrity sha512-Ntodhi4k0HFQmImYTP5SYf/WDm7aUGJLaGsfePm77HJ6DhGgalIGqtM8NiFXzo/3GmMY0XSo8Wxrs1mSCdtsOA== +"@abp/malihu-custom-scrollbar-plugin@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.4.1.tgz#aa7ec247197a258277549052780b38fd9e748c6c" + integrity sha512-pm/wIaiRSgGxelOf8AiL4JKFNZOQ6s2WbR6pULiP2HSNCgCpWYJ2s8fvj7VP3lAHIa98v3m8PSMSUhqaANxZ/Q== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.4.0.tgz#2490d9c7cdcaeca8d0ba9ebef5e7298caf0c9e09" - integrity sha512-ftsUEgO17GbVawA1GplGFzEeIM4NX004AmS6/fPI3o5isX7o1buF9q9TXdnwUuFEJKZxS4KpveRqzTL5t9k0BQ== +"@abp/moment@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.4.1.tgz#1c28ccb13eecdd13695edf8641ca9867b318e37d" + integrity sha512-7vRJyAK5ER9z+LV1xUSAAtWlPlhv8yhM/nHjhC+IQSP/+V1D7VLA6EKxAEexGw7wX6HY8oMOWP9HxDHMb5hKQA== dependencies: moment "^2.9.0" -"@abp/prismjs@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.4.0.tgz#8572f36f853c7054d77d02f3098cd844ee321ed7" - integrity sha512-y/Iy6pddQeVazEITktPot8JOPdAEOVAfmYkTBP3DIIPvoYr3kf6rwfzBUalMw5CEjWZ9BaIszDgFCk5ucNHHwQ== +"@abp/prismjs@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.4.1.tgz#df4387dbc2f0c77ddb9b6bd0ade9a5db29b9cee2" + integrity sha512-bI7pEKWy32aRYSb2ZziiH6Teebyd8km+1TXADy1yks9i9G5eLWe4/CSdwWpI4M+8ggM8CsdhrZ6/U+55BpXPQA== dependencies: - "@abp/clipboard" "~7.4.0" - "@abp/core" "~7.4.0" + "@abp/clipboard" "~7.4.1" + "@abp/core" "~7.4.1" prismjs "^1.26.0" -"@abp/select2@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.4.0.tgz#2f455cc991b7bb4df9ed426097bc2996cac12697" - integrity sha512-DwprX4MIoqMzSdh7eFg7EjGIz4ftYZub6jG9Sk3r+sxabbhpbFTxKOpXnhBWYi7L7uTQ8YDFk/5NeXO+Rm50Ww== +"@abp/select2@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.4.1.tgz#d7ea53cfec285a06278db362131b7510d5b73900" + integrity sha512-0S66iy7HuB74qqOSDraoF7UvXqz2PrnOKy+3EYMTMskOn4pWaq03JMR8xxEgZ8CtmsrqlE1a4wt1Yt9b3FIc0w== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" select2 "^4.0.13" -"@abp/slugify@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-7.4.0.tgz#7a174b6b526bbfa4f4916ad9350ea373ab2aa95c" - integrity sha512-F1XEkEJbgVv044CdYJi0msiqtu0Om+SwQuuTC3pt3x52eLFeJHhoKnoc1+kNijsh291boP3fJc53Jkkfx7nLhA== +"@abp/slugify@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-7.4.1.tgz#6d3d64cb84cd9d9d2e2a9846aa5ea057df631630" + integrity sha512-aXB+N7TfqdJlTWYO79UmowCohB4k02QK0BWB0XUHyoBjqMDs2+776+ETNxGdvmPg+Xql48+YT9GS8dSwA+VBkg== dependencies: slugify "^1.6.5" -"@abp/star-rating-svg@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-7.4.0.tgz#6c43454f60b259b4dd243ccc260d01b3cfe881a7" - integrity sha512-UJ/DgF1rK0hj4gjaGV+F9wOd2htkWNyb83RBbob23sTByLuFcibF/TJTLBErYbvZ05+KOU3+7pTq46EBw5mdtg== +"@abp/star-rating-svg@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-7.4.1.tgz#ac8fe734e5395fd2fb0079ca4ad1170a5e345a3c" + integrity sha512-avIu/3wTIHCkJiWBBA1Mfr70PuSu9ebnrp9igWdm3PdR6vlM8OI9Nfk+3YKuAAiHyDkL9WniQL0f50tY1ToI0Q== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" star-rating-svg "^3.5.0" -"@abp/sweetalert2@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.4.0.tgz#db1b4bd45cbabd61172591abc8ce223b5f607c4e" - integrity sha512-XqHPRnTASaRtbJIZYKW1KSKIJ8tynL8DuPCSMjcp4iyUlk+gnzxvbqXeNVjc2ojxj78T/42M/vITNoiiTYuKUw== +"@abp/sweetalert2@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.4.1.tgz#6722a40e5115cc341b7543aa0fa3b5a7ae9515b2" + integrity sha512-9jAHrYqCp5qykYfNNbqgESL6egixofVwonjZlb+lLWHAkIX+gQ2ApUNDFSXPtKUh2n9sXhSfF8SSg+BHP/bkCA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" sweetalert2 "^11.3.6" -"@abp/timeago@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.4.0.tgz#245fe09370f38311a67a594c8a3c884aea59cc90" - integrity sha512-khxK6EICUaGCUM1HkACw/8rlPQNssoQvCK64bNqEHBCXgPUmTcqSj5MEGiNOYbgGyWeH2IAMtJEYPqX1g1wqSA== +"@abp/timeago@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.4.1.tgz#243d342ba131878ae7f892909c9cae07cf54902b" + integrity sha512-a0Vl2NFwTxzRmH5akWo8BRUxa6sK72z8OoXwUFkZOUqMWBCHK7ffNiN1/fbSgA+7HpSZdDvIthjYwBt57DxLdQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" timeago "^1.6.7" -"@abp/toastr@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.4.0.tgz#16ba0414a27c9a21bc7556a078b175445edcf608" - integrity sha512-oM4HT2m95cK/9sB4AEQAKUMSGBep6wZTgM/46+o2IvvMdMPrGR2mPu9V9wi3y817FRgY+/qQTfy5TZWyTuIpVQ== +"@abp/toastr@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.4.1.tgz#345545a41b6145e54477c6c376193a6dbd62bdda" + integrity sha512-OLCvPJYSrcT2spcq9nO838Q22VhJ63Kdzasz1HugdVNqgcFCCSsqaoXrJGUcf5GrZx7PNloz7uf1I3txYMeZtA== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" toastr "^2.1.4" -"@abp/tui-editor@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-7.4.0.tgz#831efd947b5a255d73365248e443d43f834c5a75" - integrity sha512-G/aCeG0lrFjEdE/YRbpFWuhuaGDFDqO5+/otIQSOxcR/bkjE1kLrdH5KDYGIa9QUaq7GbKn7yFnjrv9s5ajxzQ== +"@abp/tui-editor@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-7.4.1.tgz#4adaffcc3d62c7f2159d6acbca71e14780270277" + integrity sha512-0wiLq03+EB6or9uBbz1ZEWnOAoUjJqqFDONVEv2LtuqWlaiDwzILrSMxihTyFsLGrSAUdezfk2L83DoJT6SsVg== dependencies: - "@abp/jquery" "~7.4.0" - "@abp/prismjs" "~7.4.0" + "@abp/jquery" "~7.4.1" + "@abp/prismjs" "~7.4.1" -"@abp/uppy@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-7.4.0.tgz#015fc9966c2f6fa6ee77ecdf73a3e1a80cb625d3" - integrity sha512-/Hj5kCv+gRkylCvBlb3OHfI2cfLuI5+1o2C4L4HhoYmggrCuFf7L6vZGNaDa7LYOtENliLx3wAqpByv6Vd/onA== +"@abp/uppy@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-7.4.1.tgz#84f906e48711f28552f430239a5735184e589275" + integrity sha512-oCOxAzdYpc1QkwL2h+jBxL9xGF0aAYxcrmvzzYqHCyXC8NG/xEtLFCJvek6cCnSGS5W+v62ZuuyzM03N9ucGNg== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" uppy "^1.16.1" -"@abp/utils@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.4.0.tgz#b31fb6e5dff07463535479a6bb62dc733d7119c8" - integrity sha512-CcR3tfuEsVM60DYL1A0cH6BkUTsasOoBDv/b63uLCoEOq/g8ntelD/SpRSgfDXK74P9M8OE5ZFxlXWDiYuzAFg== +"@abp/utils@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.4.1.tgz#2ce4c4d659c2ae9bc23b71b79fa3c6e120eaecaf" + integrity sha512-eFeoOXcz9cVkDKpOfd2VWmpAojASfsqfvACZqi1UmF16OcjsFIkxmIvhh1fpbT4A+eQLbaFFLIsf6gYb//tXhg== dependencies: just-compare "^2.3.0" diff --git a/modules/docs/app/VoloDocs.Web/package.json b/modules/docs/app/VoloDocs.Web/package.json index c4e7f90755..9e3818c9b6 100644 --- a/modules/docs/app/VoloDocs.Web/package.json +++ b/modules/docs/app/VoloDocs.Web/package.json @@ -3,7 +3,7 @@ "name": "volo.docstestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~7.4.0", - "@abp/docs": "~7.4.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~7.4.1", + "@abp/docs": "~7.4.1" } } diff --git a/modules/docs/app/VoloDocs.Web/yarn.lock b/modules/docs/app/VoloDocs.Web/yarn.lock index dbd2162f5c..7c29d5a62d 100644 --- a/modules/docs/app/VoloDocs.Web/yarn.lock +++ b/modules/docs/app/VoloDocs.Web/yarn.lock @@ -2,47 +2,47 @@ # yarn lockfile v1 -"@abp/anchor-js@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-7.4.0.tgz#062faa10d670b70d16c8f6d208a24c63b4185489" - integrity sha512-Fmt97KeuzM8/QPaTdVGcgyBtNQc2oJT8ZoGbrZ9E0uTUUnzBSiIqEH2u2Voz5WaqfOrlAzpILHRjnVfwCMlErQ== +"@abp/anchor-js@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-7.4.1.tgz#d9323f8c943e6f02268b55daa0072294ef54b96d" + integrity sha512-72tE6OmE8aUeERGtgktF9bdZ6CFMc33obX8KMU5WL8FynzsJYCbLsggTUc8WCfi/AxuFAtqqxKU1TTjypWs2SQ== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" anchor-js "^4.3.1" -"@abp/aspnetcore.mvc.ui.theme.basic@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.4.0.tgz#5088dd82ce343e1123e025848f09b51df988b225" - integrity sha512-teT7I0kgjek/lHzpTg5VOVCQ3IL26nFB43Aa/45fuaSwh9FJd3IJNXGL6xwp85oKaptDYSBXIF4GbrUfp2Ugqg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~7.4.0" - -"@abp/aspnetcore.mvc.ui.theme.shared@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.4.0.tgz#e676444a46214e850b0d916daeeb912774ac381d" - integrity sha512-X+dgdgHGUTyf0zaSPsqQp2ZZWu2+9gIRT4r4/LDgxchHgfNvcKRF8jH/JICcVgGD1adJvZzzDpTefL8CuAIRJA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~7.4.0" - "@abp/bootstrap" "~7.4.0" - "@abp/bootstrap-datepicker" "~7.4.0" - "@abp/bootstrap-daterangepicker" "~7.4.0" - "@abp/datatables.net-bs5" "~7.4.0" - "@abp/font-awesome" "~7.4.0" - "@abp/jquery-form" "~7.4.0" - "@abp/jquery-validation-unobtrusive" "~7.4.0" - "@abp/lodash" "~7.4.0" - "@abp/luxon" "~7.4.0" - "@abp/malihu-custom-scrollbar-plugin" "~7.4.0" - "@abp/moment" "~7.4.0" - "@abp/select2" "~7.4.0" - "@abp/sweetalert2" "~7.4.0" - "@abp/timeago" "~7.4.0" - "@abp/toastr" "~7.4.0" - -"@abp/aspnetcore.mvc.ui@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.4.0.tgz#61e1b52d2a940e02242f57007bd3f0fcb583c09a" - integrity sha512-gdoxOBo10DWDYhUq1GVfguC0Ot8PYhoA3VLf88/RatL88BNUUlt0e71uMFcx/gk72fuAE+o9zXn/6nq1wtpSwQ== +"@abp/aspnetcore.mvc.ui.theme.basic@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.4.1.tgz#62df78aab8a0b374817fdbab6c6363529b43f925" + integrity sha512-KaPmBlwNjOl1+vwLj5O8J11YHBSRg4y0IIxtgZiculXQNFPHbYAXm8sfTw6Wcsx00STrhvUVJQxYMePNnOTCTg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~7.4.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.4.1.tgz#8f8679f5cf80137324ddbec9fcaa67332783e708" + integrity sha512-0uUKuTsi/ikLFUUNEqvrn7KimgsvuK+7m1yZD4o47FQlgGxTyt1zQY9w3K6YyhyC3lsT6qCwiAPIoFOzPkIg/Q== + dependencies: + "@abp/aspnetcore.mvc.ui" "~7.4.1" + "@abp/bootstrap" "~7.4.1" + "@abp/bootstrap-datepicker" "~7.4.1" + "@abp/bootstrap-daterangepicker" "~7.4.1" + "@abp/datatables.net-bs5" "~7.4.1" + "@abp/font-awesome" "~7.4.1" + "@abp/jquery-form" "~7.4.1" + "@abp/jquery-validation-unobtrusive" "~7.4.1" + "@abp/lodash" "~7.4.1" + "@abp/luxon" "~7.4.1" + "@abp/malihu-custom-scrollbar-plugin" "~7.4.1" + "@abp/moment" "~7.4.1" + "@abp/select2" "~7.4.1" + "@abp/sweetalert2" "~7.4.1" + "@abp/timeago" "~7.4.1" + "@abp/toastr" "~7.4.1" + +"@abp/aspnetcore.mvc.ui@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.4.1.tgz#49c13718a17569f97b71f978b50f367dff67b8f7" + integrity sha512-EvYrfk0mpSt1jAMZmfFcHoNWEJskzResKp0bflOYsYPsZPuJ5WraKsk4IEEpesYHCyHW5AAb5HBJHeoSbVLh4Q== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -51,194 +51,194 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.4.0.tgz#75edc2127ca26d86bfefaa6e37579b06e32de5de" - integrity sha512-HXUa+kLjKu8sKr+kCZeNye9Pv/swRfKGAt/uJ2WUEvCJ4IVIMM1p6iMnOEEk/+3OGE64/PWu3cdE9dLP6izOaA== +"@abp/bootstrap-datepicker@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.4.1.tgz#f8f35d0edf71368faaae4e40a72fa846b0084f9b" + integrity sha512-hsu8ty6c2oOevsNoyFTQ4yJAu27qnz82MgRNVS8MRfdzo05/LhBhy/tKFm+PFYJqZULYlpQ1GXUF2+uGyazIeg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.4.0.tgz#5058fc2a9354f0a71ac5393658e362779a3bdc46" - integrity sha512-EK0wzZUY9H3XPb9U3DvYVqh48fU+6IneNGYOk7dcda8CUYObd4Dl1nXligStCqgn2uePtwxDHRx40eV0GXmU/Q== +"@abp/bootstrap-daterangepicker@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.4.1.tgz#b133cefdbed0fa1b8f1bda916a9d46952237238a" + integrity sha512-NpmbsO4Xg48Zmr8OOlf1fxuNMnFIqmRrkHiKp9lP5c8am64+7rRzCwATw2UY0Ud+4n8/ws+Iki1dwPQF6db1zw== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.4.0.tgz#71be70660643d8f60d13d355b8c80b16e4854870" - integrity sha512-3Fa+fL5NH+0H2KK4MAaqNsiz0PYwK0+Oxjmd0NgKwcqV2vJzRrzS3WG5kITYjNz9QGdBV+FrhNX/NSRU8LDx3Q== +"@abp/bootstrap@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.4.1.tgz#b34a2fcc80e04212865652ee7f4f5498a6a61f6d" + integrity sha512-/qCgfrtNWZ2jui2iL6wd6MLrcxALSEFVBypaz1JK3WjEe7DvFAYvKLl7DugIv039/Sx3mbx/PJiQhx8CVZMsEA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" bootstrap "^5.1.3" -"@abp/clipboard@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.4.0.tgz#f1d147df94ddf3ab53eeeb05aec3d5556064c5d6" - integrity sha512-z/nB1RQN/tmShSRwc9Fv1DsJSNM7+Zg4GnAtvZNpOHJp8LTVmsJWxLoUM7hF896W9E0JKr8tRuCVqulyh3IqKg== +"@abp/clipboard@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.4.1.tgz#31329ad4565b5075b486e9ca63fb0ff8a070ff9e" + integrity sha512-/+ylBPs/TEZdwywSSTnj96WoRJPwQnR6vlI+sX7h9wDfSDbMwuSSdETSnDVT21lkl8gonPONFZTL8D1u/KKAhg== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" clipboard "^2.0.8" -"@abp/core@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.4.0.tgz#8505d446a3b4d80ce476bd3352c1639c7dc486ec" - integrity sha512-yxrnw6eAEIj/CcX5jAwb4xmCsdqWaG+KRcBA8GFvqXbsK94IjqLDiJ3flo+QhGn2DXo40ISxofZop0CgSbP7Ew== +"@abp/core@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.4.1.tgz#1d14899ad16aac038806504eb0a5be9318cdcc0c" + integrity sha512-p0BAe2kCtgZmq8pilahmuxmye8DeRXt2KmnFRbmYE3j4d0uComFZpC72QOD1iro8bkmbsHfsHJpiVg4Sp4licw== dependencies: - "@abp/utils" "~7.4.0" + "@abp/utils" "~7.4.1" -"@abp/datatables.net-bs5@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.4.0.tgz#52d22e12a2420b402e03148793707d063db0088d" - integrity sha512-VvQv5w0cUpdDD9jX8aUEaLxFrc4A95JlmFnhCYIV1etL8HNOdZvmOThxorsImk31JfpyVYrY/Ze/rnWi2uhVvQ== +"@abp/datatables.net-bs5@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.4.1.tgz#821ee4c5db116f9810d65184855cea1fa7d47360" + integrity sha512-jpUzb65lCGYAxs/1qV3pRP8agHwIgZA9gDrudvR8S/3X3kNQWtmeKoFDZ93mhnl3aWPjWFKVrT2LeQeJw5XO5A== dependencies: - "@abp/datatables.net" "~7.4.0" + "@abp/datatables.net" "~7.4.1" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.4.0.tgz#9f12a1bb2abd05cd753b5d937d8a0350b2ff74ae" - integrity sha512-StOkMmIkcBUWzD9ToZ5J/hISRWdxbAWjwn7RuFXsoHXcY03mmD86g2oztjrWC5UFnRdpFnsfspTpbNqXFB9Vag== +"@abp/datatables.net@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.4.1.tgz#a4501e92e9995da0759b9ce55756fe92c4e8db59" + integrity sha512-BZOOZLH7XrGlX3aFK97cwV9+npsTzALSBo87OgwO2U6UpeFq7yAOvmC0+L9dmIUDISeORn5IFc/zTsSSIQnpHQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" datatables.net "^1.11.4" -"@abp/docs@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-7.4.0.tgz#62a9c23a0d961838515cd30bcee22f16fd40e0a2" - integrity sha512-BfgB51s8qZuzeXydI+CJxC8ogTAmfI3OADN89LWUL5OPCyZa9YAtgaFOEKhYRZ+unY3Rn6wV+v67bMeMhFb5mw== +"@abp/docs@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-7.4.1.tgz#3dc2d04612baa7b414e9927853b8c50b5757553f" + integrity sha512-qaGvzmxiS0d1S9OOsCTK6qHeC+umKgCWS58F877eUHGOZWnnE7+ifChB27W1Y79Y87sQkqBYTOFIkq8iAXxwXg== dependencies: - "@abp/anchor-js" "~7.4.0" - "@abp/clipboard" "~7.4.0" - "@abp/malihu-custom-scrollbar-plugin" "~7.4.0" - "@abp/popper.js" "~7.4.0" - "@abp/prismjs" "~7.4.0" + "@abp/anchor-js" "~7.4.1" + "@abp/clipboard" "~7.4.1" + "@abp/malihu-custom-scrollbar-plugin" "~7.4.1" + "@abp/popper.js" "~7.4.1" + "@abp/prismjs" "~7.4.1" -"@abp/font-awesome@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.4.0.tgz#50059083b88706a0f71f55118472b378e4c66163" - integrity sha512-hKoPyM41HHCK6dg+8pQvjYJWzKABBCXrYQAIneMPQZUZqa4JLObKCva9TR7pu6pUp+9OVzg4fQOBM+nwpHtw4g== +"@abp/font-awesome@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.4.1.tgz#f6175a989aa64367830723f1dd9c607906716296" + integrity sha512-/ybaz4KROwFdG4Xv0yMTUMXOreDmKy1lKQuntqHEUnIorhXmkgcd5AQQ5AolJ4NmNdPNt1VYrRcTEmdz3nw+FA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.4.0.tgz#7ab3be241ee09f1e2843bd1b4d0b0b86d4446e30" - integrity sha512-OmTRuZ7QK1oe2ayNLqEpRJk4Ogk0wt/hIFtJHwQkCtDuCggoR5sQz4vn1vgrD19MxGq07dow5IgjbbhHv1vtEg== +"@abp/jquery-form@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.4.1.tgz#67978c41cda204b4c2027d81fc66844379313fa6" + integrity sha512-JZ1D47s/kpTlfMcpD4Jrlh98bhEDsIlWJauvAYaS0EBPIU9V2zHGQ+h9GPFbSPrXe4sYxPSREcsc8KUVMhT5MQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.4.0.tgz#0c564e39c4997dd9b8af7d2023615a06d6fd9834" - integrity sha512-vFB3RKkDlDXbHlDJ64uo3jWW1IRXwiCaPf+mcB77Wpt5+0Dn7eWqjBT7KyHBrsV08ghIqY/Q4nXntFJrmLcuEA== +"@abp/jquery-validation-unobtrusive@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.4.1.tgz#fe5c90ade419e83505884dd50dd5988d766f177b" + integrity sha512-oHHV/ukap+vDvQ8CnEWnOrrsLkHXIcMk+SjNKe/dyK5VzOVLDpMatRFmloLs2igYVXTqDGjmDlTswTFdJUarcQ== dependencies: - "@abp/jquery-validation" "~7.4.0" + "@abp/jquery-validation" "~7.4.1" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.4.0.tgz#f2aaba8f4c023e93f0051cc9a05c6d82fa5c7254" - integrity sha512-vN4srLT5UXAKXpKHbZgySWT+N2DjRYivgtifpZHMTGFLMW14W+tfi5zhR4H4JvqJpuO6ZKNiz15zA1zwEBK0Tw== +"@abp/jquery-validation@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.4.1.tgz#c2c06bc28770832a9ad73eac000586faed3bdbe3" + integrity sha512-A5iFT2EWfGHXrBb/ov5f0grZ2o2xkDaYtps/FnDUwBYdIdD8E7bbJsWp6ytvZDciO0XmEqAoVOxmiij7ue/SOg== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" jquery-validation "^1.19.3" -"@abp/jquery@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.4.0.tgz#206891b20f250537d05d907d2b6cd682fec76496" - integrity sha512-DeYo02T6WVhdpLloSPb6ooqtpksu1HtcbbQhIP9E1P7jHSzZoNiJvoKXHiFUcj5PYiGKl9d/o89hM/apWzyreQ== +"@abp/jquery@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.4.1.tgz#b5e16834e6c7871ad6392612ac8e2de8617eb353" + integrity sha512-X3RcovvRYISHcsb6W3U3iVsofw6yomoiouoB1tSIy2/tvUbu9n7N/3MM0CUujFm/xib7s3z1tVxFssS9smT7sw== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" jquery "~3.6.0" -"@abp/lodash@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.4.0.tgz#93f20abee776dbfa7aa45e2e710f2768f262fda5" - integrity sha512-h4Fnjm+VLwp1F3r57B9MrHhwyOYMo5oP285a85zzAYLkhwcDy7f1nbHKHMQ3ZTaeJVmiRnVaH+3sdUdslCRt5g== +"@abp/lodash@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.4.1.tgz#d0f84b7b9cbd989d59ebde594ed7acb8bc720b61" + integrity sha512-RFjZCyAPZnpvT0SJbxXzzmMYbuocSWBlezvjAVA8MiTrOXdZO4VyaTFjIuQcAdSrZhtpFGeYWxAjHshVplxMbw== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" lodash "^4.17.21" -"@abp/luxon@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.4.0.tgz#2ba7ff307c8f7c24d818a9c33635b86fd6810db9" - integrity sha512-ROCx7aihM+agdYy7Tkz+GiScx68KY5qwGTnj8P7QabGFChzVUic6RuBG+2Obmfonc6uT7Rq0c8JDGrsGNe/w8A== +"@abp/luxon@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.4.1.tgz#e0c0947d2b77f98b9cdaf7d1143025879361c3c9" + integrity sha512-k1wh8tT1529MtNC2gSXEIKdimBXBwubXeLisgpIPx6lkJo1Op6pAz2ERwFXeyktqGdYyuFcnewJIxmS7EPtWhg== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.4.0.tgz#aba68877481f4339e048f2ae3cfbe93197145a0a" - integrity sha512-Ntodhi4k0HFQmImYTP5SYf/WDm7aUGJLaGsfePm77HJ6DhGgalIGqtM8NiFXzo/3GmMY0XSo8Wxrs1mSCdtsOA== +"@abp/malihu-custom-scrollbar-plugin@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.4.1.tgz#aa7ec247197a258277549052780b38fd9e748c6c" + integrity sha512-pm/wIaiRSgGxelOf8AiL4JKFNZOQ6s2WbR6pULiP2HSNCgCpWYJ2s8fvj7VP3lAHIa98v3m8PSMSUhqaANxZ/Q== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.4.0.tgz#2490d9c7cdcaeca8d0ba9ebef5e7298caf0c9e09" - integrity sha512-ftsUEgO17GbVawA1GplGFzEeIM4NX004AmS6/fPI3o5isX7o1buF9q9TXdnwUuFEJKZxS4KpveRqzTL5t9k0BQ== +"@abp/moment@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.4.1.tgz#1c28ccb13eecdd13695edf8641ca9867b318e37d" + integrity sha512-7vRJyAK5ER9z+LV1xUSAAtWlPlhv8yhM/nHjhC+IQSP/+V1D7VLA6EKxAEexGw7wX6HY8oMOWP9HxDHMb5hKQA== dependencies: moment "^2.9.0" -"@abp/popper.js@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-7.4.0.tgz#523ec0341544947b8914bab1c9fdfbca1709cc16" - integrity sha512-A/d5SEbspqd5ixJe2dZELqSqMS/5K/WQ9orY5//mz3L0WS9YDqiRjJdyep9pR8jskD9q6Wg+q/rrdipG+LEgMQ== +"@abp/popper.js@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-7.4.1.tgz#db9ae010e87b0f2eb39cd277487100ffd4d08fd1" + integrity sha512-/tcVasfC5Tr0o2yBge7jxP2hfVcVYZoHjNnGAuIsFCvP4zpq65HkVam181QOoJXWMS6ibHJO6tRbYtIZ4ye4lQ== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" "@popperjs/core" "^2.11.2" -"@abp/prismjs@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.4.0.tgz#8572f36f853c7054d77d02f3098cd844ee321ed7" - integrity sha512-y/Iy6pddQeVazEITktPot8JOPdAEOVAfmYkTBP3DIIPvoYr3kf6rwfzBUalMw5CEjWZ9BaIszDgFCk5ucNHHwQ== +"@abp/prismjs@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.4.1.tgz#df4387dbc2f0c77ddb9b6bd0ade9a5db29b9cee2" + integrity sha512-bI7pEKWy32aRYSb2ZziiH6Teebyd8km+1TXADy1yks9i9G5eLWe4/CSdwWpI4M+8ggM8CsdhrZ6/U+55BpXPQA== dependencies: - "@abp/clipboard" "~7.4.0" - "@abp/core" "~7.4.0" + "@abp/clipboard" "~7.4.1" + "@abp/core" "~7.4.1" prismjs "^1.26.0" -"@abp/select2@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.4.0.tgz#2f455cc991b7bb4df9ed426097bc2996cac12697" - integrity sha512-DwprX4MIoqMzSdh7eFg7EjGIz4ftYZub6jG9Sk3r+sxabbhpbFTxKOpXnhBWYi7L7uTQ8YDFk/5NeXO+Rm50Ww== +"@abp/select2@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.4.1.tgz#d7ea53cfec285a06278db362131b7510d5b73900" + integrity sha512-0S66iy7HuB74qqOSDraoF7UvXqz2PrnOKy+3EYMTMskOn4pWaq03JMR8xxEgZ8CtmsrqlE1a4wt1Yt9b3FIc0w== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" select2 "^4.0.13" -"@abp/sweetalert2@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.4.0.tgz#db1b4bd45cbabd61172591abc8ce223b5f607c4e" - integrity sha512-XqHPRnTASaRtbJIZYKW1KSKIJ8tynL8DuPCSMjcp4iyUlk+gnzxvbqXeNVjc2ojxj78T/42M/vITNoiiTYuKUw== +"@abp/sweetalert2@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.4.1.tgz#6722a40e5115cc341b7543aa0fa3b5a7ae9515b2" + integrity sha512-9jAHrYqCp5qykYfNNbqgESL6egixofVwonjZlb+lLWHAkIX+gQ2ApUNDFSXPtKUh2n9sXhSfF8SSg+BHP/bkCA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" sweetalert2 "^11.3.6" -"@abp/timeago@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.4.0.tgz#245fe09370f38311a67a594c8a3c884aea59cc90" - integrity sha512-khxK6EICUaGCUM1HkACw/8rlPQNssoQvCK64bNqEHBCXgPUmTcqSj5MEGiNOYbgGyWeH2IAMtJEYPqX1g1wqSA== +"@abp/timeago@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.4.1.tgz#243d342ba131878ae7f892909c9cae07cf54902b" + integrity sha512-a0Vl2NFwTxzRmH5akWo8BRUxa6sK72z8OoXwUFkZOUqMWBCHK7ffNiN1/fbSgA+7HpSZdDvIthjYwBt57DxLdQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" timeago "^1.6.7" -"@abp/toastr@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.4.0.tgz#16ba0414a27c9a21bc7556a078b175445edcf608" - integrity sha512-oM4HT2m95cK/9sB4AEQAKUMSGBep6wZTgM/46+o2IvvMdMPrGR2mPu9V9wi3y817FRgY+/qQTfy5TZWyTuIpVQ== +"@abp/toastr@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.4.1.tgz#345545a41b6145e54477c6c376193a6dbd62bdda" + integrity sha512-OLCvPJYSrcT2spcq9nO838Q22VhJ63Kdzasz1HugdVNqgcFCCSsqaoXrJGUcf5GrZx7PNloz7uf1I3txYMeZtA== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" toastr "^2.1.4" -"@abp/utils@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.4.0.tgz#b31fb6e5dff07463535479a6bb62dc733d7119c8" - integrity sha512-CcR3tfuEsVM60DYL1A0cH6BkUTsasOoBDv/b63uLCoEOq/g8ntelD/SpRSgfDXK74P9M8OE5ZFxlXWDiYuzAFg== +"@abp/utils@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.4.1.tgz#2ce4c4d659c2ae9bc23b71b79fa3c6e120eaecaf" + integrity sha512-eFeoOXcz9cVkDKpOfd2VWmpAojASfsqfvACZqi1UmF16OcjsFIkxmIvhh1fpbT4A+eQLbaFFLIsf6gYb//tXhg== dependencies: just-compare "^2.3.0" diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/package.json b/modules/openiddict/app/OpenIddict.Demo.Server/package.json index 7fbc0569f6..212b67b1c1 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Server/package.json +++ b/modules/openiddict/app/OpenIddict.Demo.Server/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~7.4.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~7.4.1" } } diff --git a/modules/openiddict/app/angular/package.json b/modules/openiddict/app/angular/package.json index edbd2b95e3..67fe60fb32 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": "~7.4.0", - "@abp/ng.components": "~7.4.0", - "@abp/ng.core": "~7.4.0", - "@abp/ng.oauth": "~7.4.0", - "@abp/ng.identity": "~7.4.0", - "@abp/ng.setting-management": "~7.4.0", - "@abp/ng.tenant-management": "~7.4.0", - "@abp/ng.theme.shared": "~7.4.0", - "@abp/ng.theme.lepton-x": "~2.4.0-rc.4", + "@abp/ng.account": "~7.4.1", + "@abp/ng.components": "~7.4.1", + "@abp/ng.core": "~7.4.1", + "@abp/ng.oauth": "~7.4.1", + "@abp/ng.identity": "~7.4.1", + "@abp/ng.setting-management": "~7.4.1", + "@abp/ng.tenant-management": "~7.4.1", + "@abp/ng.theme.shared": "~7.4.1", + "@abp/ng.theme.lepton-x": "~2.4.1", "@angular/animations": "^15.0.1", "@angular/common": "^15.0.1", "@angular/compiler": "^15.0.1", @@ -36,7 +36,7 @@ "zone.js": "~0.11.4" }, "devDependencies": { - "@abp/ng.schematics": "~7.4.0", + "@abp/ng.schematics": "~7.4.1", "@angular-devkit/build-angular": "^15.0.1", "@angular-eslint/builder": "~15.1.0", "@angular-eslint/eslint-plugin": "~15.1.0", diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json index 90b3b47088..c8343aff2a 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json +++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json @@ -3,6 +3,6 @@ "name": "demo-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~7.4.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~7.4.1" } } diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock index 9c4c145174..8c3619aab1 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock +++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.4.0.tgz#5088dd82ce343e1123e025848f09b51df988b225" - integrity sha512-teT7I0kgjek/lHzpTg5VOVCQ3IL26nFB43Aa/45fuaSwh9FJd3IJNXGL6xwp85oKaptDYSBXIF4GbrUfp2Ugqg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~7.4.0" - -"@abp/aspnetcore.mvc.ui.theme.shared@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.4.0.tgz#e676444a46214e850b0d916daeeb912774ac381d" - integrity sha512-X+dgdgHGUTyf0zaSPsqQp2ZZWu2+9gIRT4r4/LDgxchHgfNvcKRF8jH/JICcVgGD1adJvZzzDpTefL8CuAIRJA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~7.4.0" - "@abp/bootstrap" "~7.4.0" - "@abp/bootstrap-datepicker" "~7.4.0" - "@abp/bootstrap-daterangepicker" "~7.4.0" - "@abp/datatables.net-bs5" "~7.4.0" - "@abp/font-awesome" "~7.4.0" - "@abp/jquery-form" "~7.4.0" - "@abp/jquery-validation-unobtrusive" "~7.4.0" - "@abp/lodash" "~7.4.0" - "@abp/luxon" "~7.4.0" - "@abp/malihu-custom-scrollbar-plugin" "~7.4.0" - "@abp/moment" "~7.4.0" - "@abp/select2" "~7.4.0" - "@abp/sweetalert2" "~7.4.0" - "@abp/timeago" "~7.4.0" - "@abp/toastr" "~7.4.0" - -"@abp/aspnetcore.mvc.ui@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.4.0.tgz#61e1b52d2a940e02242f57007bd3f0fcb583c09a" - integrity sha512-gdoxOBo10DWDYhUq1GVfguC0Ot8PYhoA3VLf88/RatL88BNUUlt0e71uMFcx/gk72fuAE+o9zXn/6nq1wtpSwQ== +"@abp/aspnetcore.mvc.ui.theme.basic@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.4.1.tgz#62df78aab8a0b374817fdbab6c6363529b43f925" + integrity sha512-KaPmBlwNjOl1+vwLj5O8J11YHBSRg4y0IIxtgZiculXQNFPHbYAXm8sfTw6Wcsx00STrhvUVJQxYMePNnOTCTg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~7.4.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.4.1.tgz#8f8679f5cf80137324ddbec9fcaa67332783e708" + integrity sha512-0uUKuTsi/ikLFUUNEqvrn7KimgsvuK+7m1yZD4o47FQlgGxTyt1zQY9w3K6YyhyC3lsT6qCwiAPIoFOzPkIg/Q== + dependencies: + "@abp/aspnetcore.mvc.ui" "~7.4.1" + "@abp/bootstrap" "~7.4.1" + "@abp/bootstrap-datepicker" "~7.4.1" + "@abp/bootstrap-daterangepicker" "~7.4.1" + "@abp/datatables.net-bs5" "~7.4.1" + "@abp/font-awesome" "~7.4.1" + "@abp/jquery-form" "~7.4.1" + "@abp/jquery-validation-unobtrusive" "~7.4.1" + "@abp/lodash" "~7.4.1" + "@abp/luxon" "~7.4.1" + "@abp/malihu-custom-scrollbar-plugin" "~7.4.1" + "@abp/moment" "~7.4.1" + "@abp/select2" "~7.4.1" + "@abp/sweetalert2" "~7.4.1" + "@abp/timeago" "~7.4.1" + "@abp/toastr" "~7.4.1" + +"@abp/aspnetcore.mvc.ui@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.4.1.tgz#49c13718a17569f97b71f978b50f367dff67b8f7" + integrity sha512-EvYrfk0mpSt1jAMZmfFcHoNWEJskzResKp0bflOYsYPsZPuJ5WraKsk4IEEpesYHCyHW5AAb5HBJHeoSbVLh4Q== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,158 +43,158 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.4.0.tgz#75edc2127ca26d86bfefaa6e37579b06e32de5de" - integrity sha512-HXUa+kLjKu8sKr+kCZeNye9Pv/swRfKGAt/uJ2WUEvCJ4IVIMM1p6iMnOEEk/+3OGE64/PWu3cdE9dLP6izOaA== +"@abp/bootstrap-datepicker@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.4.1.tgz#f8f35d0edf71368faaae4e40a72fa846b0084f9b" + integrity sha512-hsu8ty6c2oOevsNoyFTQ4yJAu27qnz82MgRNVS8MRfdzo05/LhBhy/tKFm+PFYJqZULYlpQ1GXUF2+uGyazIeg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.4.0.tgz#5058fc2a9354f0a71ac5393658e362779a3bdc46" - integrity sha512-EK0wzZUY9H3XPb9U3DvYVqh48fU+6IneNGYOk7dcda8CUYObd4Dl1nXligStCqgn2uePtwxDHRx40eV0GXmU/Q== +"@abp/bootstrap-daterangepicker@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.4.1.tgz#b133cefdbed0fa1b8f1bda916a9d46952237238a" + integrity sha512-NpmbsO4Xg48Zmr8OOlf1fxuNMnFIqmRrkHiKp9lP5c8am64+7rRzCwATw2UY0Ud+4n8/ws+Iki1dwPQF6db1zw== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.4.0.tgz#71be70660643d8f60d13d355b8c80b16e4854870" - integrity sha512-3Fa+fL5NH+0H2KK4MAaqNsiz0PYwK0+Oxjmd0NgKwcqV2vJzRrzS3WG5kITYjNz9QGdBV+FrhNX/NSRU8LDx3Q== +"@abp/bootstrap@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.4.1.tgz#b34a2fcc80e04212865652ee7f4f5498a6a61f6d" + integrity sha512-/qCgfrtNWZ2jui2iL6wd6MLrcxALSEFVBypaz1JK3WjEe7DvFAYvKLl7DugIv039/Sx3mbx/PJiQhx8CVZMsEA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" bootstrap "^5.1.3" -"@abp/core@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.4.0.tgz#8505d446a3b4d80ce476bd3352c1639c7dc486ec" - integrity sha512-yxrnw6eAEIj/CcX5jAwb4xmCsdqWaG+KRcBA8GFvqXbsK94IjqLDiJ3flo+QhGn2DXo40ISxofZop0CgSbP7Ew== +"@abp/core@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.4.1.tgz#1d14899ad16aac038806504eb0a5be9318cdcc0c" + integrity sha512-p0BAe2kCtgZmq8pilahmuxmye8DeRXt2KmnFRbmYE3j4d0uComFZpC72QOD1iro8bkmbsHfsHJpiVg4Sp4licw== dependencies: - "@abp/utils" "~7.4.0" + "@abp/utils" "~7.4.1" -"@abp/datatables.net-bs5@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.4.0.tgz#52d22e12a2420b402e03148793707d063db0088d" - integrity sha512-VvQv5w0cUpdDD9jX8aUEaLxFrc4A95JlmFnhCYIV1etL8HNOdZvmOThxorsImk31JfpyVYrY/Ze/rnWi2uhVvQ== +"@abp/datatables.net-bs5@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.4.1.tgz#821ee4c5db116f9810d65184855cea1fa7d47360" + integrity sha512-jpUzb65lCGYAxs/1qV3pRP8agHwIgZA9gDrudvR8S/3X3kNQWtmeKoFDZ93mhnl3aWPjWFKVrT2LeQeJw5XO5A== dependencies: - "@abp/datatables.net" "~7.4.0" + "@abp/datatables.net" "~7.4.1" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.4.0.tgz#9f12a1bb2abd05cd753b5d937d8a0350b2ff74ae" - integrity sha512-StOkMmIkcBUWzD9ToZ5J/hISRWdxbAWjwn7RuFXsoHXcY03mmD86g2oztjrWC5UFnRdpFnsfspTpbNqXFB9Vag== +"@abp/datatables.net@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.4.1.tgz#a4501e92e9995da0759b9ce55756fe92c4e8db59" + integrity sha512-BZOOZLH7XrGlX3aFK97cwV9+npsTzALSBo87OgwO2U6UpeFq7yAOvmC0+L9dmIUDISeORn5IFc/zTsSSIQnpHQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" datatables.net "^1.11.4" -"@abp/font-awesome@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.4.0.tgz#50059083b88706a0f71f55118472b378e4c66163" - integrity sha512-hKoPyM41HHCK6dg+8pQvjYJWzKABBCXrYQAIneMPQZUZqa4JLObKCva9TR7pu6pUp+9OVzg4fQOBM+nwpHtw4g== +"@abp/font-awesome@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.4.1.tgz#f6175a989aa64367830723f1dd9c607906716296" + integrity sha512-/ybaz4KROwFdG4Xv0yMTUMXOreDmKy1lKQuntqHEUnIorhXmkgcd5AQQ5AolJ4NmNdPNt1VYrRcTEmdz3nw+FA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.4.0.tgz#7ab3be241ee09f1e2843bd1b4d0b0b86d4446e30" - integrity sha512-OmTRuZ7QK1oe2ayNLqEpRJk4Ogk0wt/hIFtJHwQkCtDuCggoR5sQz4vn1vgrD19MxGq07dow5IgjbbhHv1vtEg== +"@abp/jquery-form@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.4.1.tgz#67978c41cda204b4c2027d81fc66844379313fa6" + integrity sha512-JZ1D47s/kpTlfMcpD4Jrlh98bhEDsIlWJauvAYaS0EBPIU9V2zHGQ+h9GPFbSPrXe4sYxPSREcsc8KUVMhT5MQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.4.0.tgz#0c564e39c4997dd9b8af7d2023615a06d6fd9834" - integrity sha512-vFB3RKkDlDXbHlDJ64uo3jWW1IRXwiCaPf+mcB77Wpt5+0Dn7eWqjBT7KyHBrsV08ghIqY/Q4nXntFJrmLcuEA== +"@abp/jquery-validation-unobtrusive@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.4.1.tgz#fe5c90ade419e83505884dd50dd5988d766f177b" + integrity sha512-oHHV/ukap+vDvQ8CnEWnOrrsLkHXIcMk+SjNKe/dyK5VzOVLDpMatRFmloLs2igYVXTqDGjmDlTswTFdJUarcQ== dependencies: - "@abp/jquery-validation" "~7.4.0" + "@abp/jquery-validation" "~7.4.1" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.4.0.tgz#f2aaba8f4c023e93f0051cc9a05c6d82fa5c7254" - integrity sha512-vN4srLT5UXAKXpKHbZgySWT+N2DjRYivgtifpZHMTGFLMW14W+tfi5zhR4H4JvqJpuO6ZKNiz15zA1zwEBK0Tw== +"@abp/jquery-validation@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.4.1.tgz#c2c06bc28770832a9ad73eac000586faed3bdbe3" + integrity sha512-A5iFT2EWfGHXrBb/ov5f0grZ2o2xkDaYtps/FnDUwBYdIdD8E7bbJsWp6ytvZDciO0XmEqAoVOxmiij7ue/SOg== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" jquery-validation "^1.19.3" -"@abp/jquery@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.4.0.tgz#206891b20f250537d05d907d2b6cd682fec76496" - integrity sha512-DeYo02T6WVhdpLloSPb6ooqtpksu1HtcbbQhIP9E1P7jHSzZoNiJvoKXHiFUcj5PYiGKl9d/o89hM/apWzyreQ== +"@abp/jquery@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.4.1.tgz#b5e16834e6c7871ad6392612ac8e2de8617eb353" + integrity sha512-X3RcovvRYISHcsb6W3U3iVsofw6yomoiouoB1tSIy2/tvUbu9n7N/3MM0CUujFm/xib7s3z1tVxFssS9smT7sw== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" jquery "~3.6.0" -"@abp/lodash@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.4.0.tgz#93f20abee776dbfa7aa45e2e710f2768f262fda5" - integrity sha512-h4Fnjm+VLwp1F3r57B9MrHhwyOYMo5oP285a85zzAYLkhwcDy7f1nbHKHMQ3ZTaeJVmiRnVaH+3sdUdslCRt5g== +"@abp/lodash@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.4.1.tgz#d0f84b7b9cbd989d59ebde594ed7acb8bc720b61" + integrity sha512-RFjZCyAPZnpvT0SJbxXzzmMYbuocSWBlezvjAVA8MiTrOXdZO4VyaTFjIuQcAdSrZhtpFGeYWxAjHshVplxMbw== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" lodash "^4.17.21" -"@abp/luxon@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.4.0.tgz#2ba7ff307c8f7c24d818a9c33635b86fd6810db9" - integrity sha512-ROCx7aihM+agdYy7Tkz+GiScx68KY5qwGTnj8P7QabGFChzVUic6RuBG+2Obmfonc6uT7Rq0c8JDGrsGNe/w8A== +"@abp/luxon@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.4.1.tgz#e0c0947d2b77f98b9cdaf7d1143025879361c3c9" + integrity sha512-k1wh8tT1529MtNC2gSXEIKdimBXBwubXeLisgpIPx6lkJo1Op6pAz2ERwFXeyktqGdYyuFcnewJIxmS7EPtWhg== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.4.0.tgz#aba68877481f4339e048f2ae3cfbe93197145a0a" - integrity sha512-Ntodhi4k0HFQmImYTP5SYf/WDm7aUGJLaGsfePm77HJ6DhGgalIGqtM8NiFXzo/3GmMY0XSo8Wxrs1mSCdtsOA== +"@abp/malihu-custom-scrollbar-plugin@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.4.1.tgz#aa7ec247197a258277549052780b38fd9e748c6c" + integrity sha512-pm/wIaiRSgGxelOf8AiL4JKFNZOQ6s2WbR6pULiP2HSNCgCpWYJ2s8fvj7VP3lAHIa98v3m8PSMSUhqaANxZ/Q== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.4.0.tgz#2490d9c7cdcaeca8d0ba9ebef5e7298caf0c9e09" - integrity sha512-ftsUEgO17GbVawA1GplGFzEeIM4NX004AmS6/fPI3o5isX7o1buF9q9TXdnwUuFEJKZxS4KpveRqzTL5t9k0BQ== +"@abp/moment@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.4.1.tgz#1c28ccb13eecdd13695edf8641ca9867b318e37d" + integrity sha512-7vRJyAK5ER9z+LV1xUSAAtWlPlhv8yhM/nHjhC+IQSP/+V1D7VLA6EKxAEexGw7wX6HY8oMOWP9HxDHMb5hKQA== dependencies: moment "^2.9.0" -"@abp/select2@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.4.0.tgz#2f455cc991b7bb4df9ed426097bc2996cac12697" - integrity sha512-DwprX4MIoqMzSdh7eFg7EjGIz4ftYZub6jG9Sk3r+sxabbhpbFTxKOpXnhBWYi7L7uTQ8YDFk/5NeXO+Rm50Ww== +"@abp/select2@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.4.1.tgz#d7ea53cfec285a06278db362131b7510d5b73900" + integrity sha512-0S66iy7HuB74qqOSDraoF7UvXqz2PrnOKy+3EYMTMskOn4pWaq03JMR8xxEgZ8CtmsrqlE1a4wt1Yt9b3FIc0w== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" select2 "^4.0.13" -"@abp/sweetalert2@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.4.0.tgz#db1b4bd45cbabd61172591abc8ce223b5f607c4e" - integrity sha512-XqHPRnTASaRtbJIZYKW1KSKIJ8tynL8DuPCSMjcp4iyUlk+gnzxvbqXeNVjc2ojxj78T/42M/vITNoiiTYuKUw== +"@abp/sweetalert2@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.4.1.tgz#6722a40e5115cc341b7543aa0fa3b5a7ae9515b2" + integrity sha512-9jAHrYqCp5qykYfNNbqgESL6egixofVwonjZlb+lLWHAkIX+gQ2ApUNDFSXPtKUh2n9sXhSfF8SSg+BHP/bkCA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" sweetalert2 "^11.3.6" -"@abp/timeago@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.4.0.tgz#245fe09370f38311a67a594c8a3c884aea59cc90" - integrity sha512-khxK6EICUaGCUM1HkACw/8rlPQNssoQvCK64bNqEHBCXgPUmTcqSj5MEGiNOYbgGyWeH2IAMtJEYPqX1g1wqSA== +"@abp/timeago@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.4.1.tgz#243d342ba131878ae7f892909c9cae07cf54902b" + integrity sha512-a0Vl2NFwTxzRmH5akWo8BRUxa6sK72z8OoXwUFkZOUqMWBCHK7ffNiN1/fbSgA+7HpSZdDvIthjYwBt57DxLdQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" timeago "^1.6.7" -"@abp/toastr@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.4.0.tgz#16ba0414a27c9a21bc7556a078b175445edcf608" - integrity sha512-oM4HT2m95cK/9sB4AEQAKUMSGBep6wZTgM/46+o2IvvMdMPrGR2mPu9V9wi3y817FRgY+/qQTfy5TZWyTuIpVQ== +"@abp/toastr@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.4.1.tgz#345545a41b6145e54477c6c376193a6dbd62bdda" + integrity sha512-OLCvPJYSrcT2spcq9nO838Q22VhJ63Kdzasz1HugdVNqgcFCCSsqaoXrJGUcf5GrZx7PNloz7uf1I3txYMeZtA== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" toastr "^2.1.4" -"@abp/utils@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.4.0.tgz#b31fb6e5dff07463535479a6bb62dc733d7119c8" - integrity sha512-CcR3tfuEsVM60DYL1A0cH6BkUTsasOoBDv/b63uLCoEOq/g8ntelD/SpRSgfDXK74P9M8OE5ZFxlXWDiYuzAFg== +"@abp/utils@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.4.1.tgz#2ce4c4d659c2ae9bc23b71b79fa3c6e120eaecaf" + integrity sha512-eFeoOXcz9cVkDKpOfd2VWmpAojASfsqfvACZqi1UmF16OcjsFIkxmIvhh1fpbT4A+eQLbaFFLIsf6gYb//tXhg== dependencies: just-compare "^2.3.0" diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json index 27a4565870..f051a7f998 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~7.4.0", - "@abp/virtual-file-explorer": "~7.4.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~7.4.1", + "@abp/virtual-file-explorer": "~7.4.1" } } diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/yarn.lock b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/yarn.lock index 7f768e6d3a..bb5e53de55 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/yarn.lock +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.4.0.tgz#5088dd82ce343e1123e025848f09b51df988b225" - integrity sha512-teT7I0kgjek/lHzpTg5VOVCQ3IL26nFB43Aa/45fuaSwh9FJd3IJNXGL6xwp85oKaptDYSBXIF4GbrUfp2Ugqg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~7.4.0" - -"@abp/aspnetcore.mvc.ui.theme.shared@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.4.0.tgz#e676444a46214e850b0d916daeeb912774ac381d" - integrity sha512-X+dgdgHGUTyf0zaSPsqQp2ZZWu2+9gIRT4r4/LDgxchHgfNvcKRF8jH/JICcVgGD1adJvZzzDpTefL8CuAIRJA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~7.4.0" - "@abp/bootstrap" "~7.4.0" - "@abp/bootstrap-datepicker" "~7.4.0" - "@abp/bootstrap-daterangepicker" "~7.4.0" - "@abp/datatables.net-bs5" "~7.4.0" - "@abp/font-awesome" "~7.4.0" - "@abp/jquery-form" "~7.4.0" - "@abp/jquery-validation-unobtrusive" "~7.4.0" - "@abp/lodash" "~7.4.0" - "@abp/luxon" "~7.4.0" - "@abp/malihu-custom-scrollbar-plugin" "~7.4.0" - "@abp/moment" "~7.4.0" - "@abp/select2" "~7.4.0" - "@abp/sweetalert2" "~7.4.0" - "@abp/timeago" "~7.4.0" - "@abp/toastr" "~7.4.0" - -"@abp/aspnetcore.mvc.ui@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.4.0.tgz#61e1b52d2a940e02242f57007bd3f0fcb583c09a" - integrity sha512-gdoxOBo10DWDYhUq1GVfguC0Ot8PYhoA3VLf88/RatL88BNUUlt0e71uMFcx/gk72fuAE+o9zXn/6nq1wtpSwQ== +"@abp/aspnetcore.mvc.ui.theme.basic@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.4.1.tgz#62df78aab8a0b374817fdbab6c6363529b43f925" + integrity sha512-KaPmBlwNjOl1+vwLj5O8J11YHBSRg4y0IIxtgZiculXQNFPHbYAXm8sfTw6Wcsx00STrhvUVJQxYMePNnOTCTg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~7.4.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.4.1.tgz#8f8679f5cf80137324ddbec9fcaa67332783e708" + integrity sha512-0uUKuTsi/ikLFUUNEqvrn7KimgsvuK+7m1yZD4o47FQlgGxTyt1zQY9w3K6YyhyC3lsT6qCwiAPIoFOzPkIg/Q== + dependencies: + "@abp/aspnetcore.mvc.ui" "~7.4.1" + "@abp/bootstrap" "~7.4.1" + "@abp/bootstrap-datepicker" "~7.4.1" + "@abp/bootstrap-daterangepicker" "~7.4.1" + "@abp/datatables.net-bs5" "~7.4.1" + "@abp/font-awesome" "~7.4.1" + "@abp/jquery-form" "~7.4.1" + "@abp/jquery-validation-unobtrusive" "~7.4.1" + "@abp/lodash" "~7.4.1" + "@abp/luxon" "~7.4.1" + "@abp/malihu-custom-scrollbar-plugin" "~7.4.1" + "@abp/moment" "~7.4.1" + "@abp/select2" "~7.4.1" + "@abp/sweetalert2" "~7.4.1" + "@abp/timeago" "~7.4.1" + "@abp/toastr" "~7.4.1" + +"@abp/aspnetcore.mvc.ui@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.4.1.tgz#49c13718a17569f97b71f978b50f367dff67b8f7" + integrity sha512-EvYrfk0mpSt1jAMZmfFcHoNWEJskzResKp0bflOYsYPsZPuJ5WraKsk4IEEpesYHCyHW5AAb5HBJHeoSbVLh4Q== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,185 +43,185 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.4.0.tgz#75edc2127ca26d86bfefaa6e37579b06e32de5de" - integrity sha512-HXUa+kLjKu8sKr+kCZeNye9Pv/swRfKGAt/uJ2WUEvCJ4IVIMM1p6iMnOEEk/+3OGE64/PWu3cdE9dLP6izOaA== +"@abp/bootstrap-datepicker@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.4.1.tgz#f8f35d0edf71368faaae4e40a72fa846b0084f9b" + integrity sha512-hsu8ty6c2oOevsNoyFTQ4yJAu27qnz82MgRNVS8MRfdzo05/LhBhy/tKFm+PFYJqZULYlpQ1GXUF2+uGyazIeg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.4.0.tgz#5058fc2a9354f0a71ac5393658e362779a3bdc46" - integrity sha512-EK0wzZUY9H3XPb9U3DvYVqh48fU+6IneNGYOk7dcda8CUYObd4Dl1nXligStCqgn2uePtwxDHRx40eV0GXmU/Q== +"@abp/bootstrap-daterangepicker@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.4.1.tgz#b133cefdbed0fa1b8f1bda916a9d46952237238a" + integrity sha512-NpmbsO4Xg48Zmr8OOlf1fxuNMnFIqmRrkHiKp9lP5c8am64+7rRzCwATw2UY0Ud+4n8/ws+Iki1dwPQF6db1zw== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.4.0.tgz#71be70660643d8f60d13d355b8c80b16e4854870" - integrity sha512-3Fa+fL5NH+0H2KK4MAaqNsiz0PYwK0+Oxjmd0NgKwcqV2vJzRrzS3WG5kITYjNz9QGdBV+FrhNX/NSRU8LDx3Q== +"@abp/bootstrap@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.4.1.tgz#b34a2fcc80e04212865652ee7f4f5498a6a61f6d" + integrity sha512-/qCgfrtNWZ2jui2iL6wd6MLrcxALSEFVBypaz1JK3WjEe7DvFAYvKLl7DugIv039/Sx3mbx/PJiQhx8CVZMsEA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" bootstrap "^5.1.3" -"@abp/clipboard@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.4.0.tgz#f1d147df94ddf3ab53eeeb05aec3d5556064c5d6" - integrity sha512-z/nB1RQN/tmShSRwc9Fv1DsJSNM7+Zg4GnAtvZNpOHJp8LTVmsJWxLoUM7hF896W9E0JKr8tRuCVqulyh3IqKg== +"@abp/clipboard@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.4.1.tgz#31329ad4565b5075b486e9ca63fb0ff8a070ff9e" + integrity sha512-/+ylBPs/TEZdwywSSTnj96WoRJPwQnR6vlI+sX7h9wDfSDbMwuSSdETSnDVT21lkl8gonPONFZTL8D1u/KKAhg== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" clipboard "^2.0.8" -"@abp/core@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.4.0.tgz#8505d446a3b4d80ce476bd3352c1639c7dc486ec" - integrity sha512-yxrnw6eAEIj/CcX5jAwb4xmCsdqWaG+KRcBA8GFvqXbsK94IjqLDiJ3flo+QhGn2DXo40ISxofZop0CgSbP7Ew== +"@abp/core@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.4.1.tgz#1d14899ad16aac038806504eb0a5be9318cdcc0c" + integrity sha512-p0BAe2kCtgZmq8pilahmuxmye8DeRXt2KmnFRbmYE3j4d0uComFZpC72QOD1iro8bkmbsHfsHJpiVg4Sp4licw== dependencies: - "@abp/utils" "~7.4.0" + "@abp/utils" "~7.4.1" -"@abp/datatables.net-bs5@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.4.0.tgz#52d22e12a2420b402e03148793707d063db0088d" - integrity sha512-VvQv5w0cUpdDD9jX8aUEaLxFrc4A95JlmFnhCYIV1etL8HNOdZvmOThxorsImk31JfpyVYrY/Ze/rnWi2uhVvQ== +"@abp/datatables.net-bs5@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.4.1.tgz#821ee4c5db116f9810d65184855cea1fa7d47360" + integrity sha512-jpUzb65lCGYAxs/1qV3pRP8agHwIgZA9gDrudvR8S/3X3kNQWtmeKoFDZ93mhnl3aWPjWFKVrT2LeQeJw5XO5A== dependencies: - "@abp/datatables.net" "~7.4.0" + "@abp/datatables.net" "~7.4.1" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.4.0.tgz#9f12a1bb2abd05cd753b5d937d8a0350b2ff74ae" - integrity sha512-StOkMmIkcBUWzD9ToZ5J/hISRWdxbAWjwn7RuFXsoHXcY03mmD86g2oztjrWC5UFnRdpFnsfspTpbNqXFB9Vag== +"@abp/datatables.net@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.4.1.tgz#a4501e92e9995da0759b9ce55756fe92c4e8db59" + integrity sha512-BZOOZLH7XrGlX3aFK97cwV9+npsTzALSBo87OgwO2U6UpeFq7yAOvmC0+L9dmIUDISeORn5IFc/zTsSSIQnpHQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" datatables.net "^1.11.4" -"@abp/font-awesome@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.4.0.tgz#50059083b88706a0f71f55118472b378e4c66163" - integrity sha512-hKoPyM41HHCK6dg+8pQvjYJWzKABBCXrYQAIneMPQZUZqa4JLObKCva9TR7pu6pUp+9OVzg4fQOBM+nwpHtw4g== +"@abp/font-awesome@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.4.1.tgz#f6175a989aa64367830723f1dd9c607906716296" + integrity sha512-/ybaz4KROwFdG4Xv0yMTUMXOreDmKy1lKQuntqHEUnIorhXmkgcd5AQQ5AolJ4NmNdPNt1VYrRcTEmdz3nw+FA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.4.0.tgz#7ab3be241ee09f1e2843bd1b4d0b0b86d4446e30" - integrity sha512-OmTRuZ7QK1oe2ayNLqEpRJk4Ogk0wt/hIFtJHwQkCtDuCggoR5sQz4vn1vgrD19MxGq07dow5IgjbbhHv1vtEg== +"@abp/jquery-form@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.4.1.tgz#67978c41cda204b4c2027d81fc66844379313fa6" + integrity sha512-JZ1D47s/kpTlfMcpD4Jrlh98bhEDsIlWJauvAYaS0EBPIU9V2zHGQ+h9GPFbSPrXe4sYxPSREcsc8KUVMhT5MQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.4.0.tgz#0c564e39c4997dd9b8af7d2023615a06d6fd9834" - integrity sha512-vFB3RKkDlDXbHlDJ64uo3jWW1IRXwiCaPf+mcB77Wpt5+0Dn7eWqjBT7KyHBrsV08ghIqY/Q4nXntFJrmLcuEA== +"@abp/jquery-validation-unobtrusive@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.4.1.tgz#fe5c90ade419e83505884dd50dd5988d766f177b" + integrity sha512-oHHV/ukap+vDvQ8CnEWnOrrsLkHXIcMk+SjNKe/dyK5VzOVLDpMatRFmloLs2igYVXTqDGjmDlTswTFdJUarcQ== dependencies: - "@abp/jquery-validation" "~7.4.0" + "@abp/jquery-validation" "~7.4.1" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.4.0.tgz#f2aaba8f4c023e93f0051cc9a05c6d82fa5c7254" - integrity sha512-vN4srLT5UXAKXpKHbZgySWT+N2DjRYivgtifpZHMTGFLMW14W+tfi5zhR4H4JvqJpuO6ZKNiz15zA1zwEBK0Tw== +"@abp/jquery-validation@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.4.1.tgz#c2c06bc28770832a9ad73eac000586faed3bdbe3" + integrity sha512-A5iFT2EWfGHXrBb/ov5f0grZ2o2xkDaYtps/FnDUwBYdIdD8E7bbJsWp6ytvZDciO0XmEqAoVOxmiij7ue/SOg== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" jquery-validation "^1.19.3" -"@abp/jquery@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.4.0.tgz#206891b20f250537d05d907d2b6cd682fec76496" - integrity sha512-DeYo02T6WVhdpLloSPb6ooqtpksu1HtcbbQhIP9E1P7jHSzZoNiJvoKXHiFUcj5PYiGKl9d/o89hM/apWzyreQ== +"@abp/jquery@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.4.1.tgz#b5e16834e6c7871ad6392612ac8e2de8617eb353" + integrity sha512-X3RcovvRYISHcsb6W3U3iVsofw6yomoiouoB1tSIy2/tvUbu9n7N/3MM0CUujFm/xib7s3z1tVxFssS9smT7sw== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" jquery "~3.6.0" -"@abp/lodash@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.4.0.tgz#93f20abee776dbfa7aa45e2e710f2768f262fda5" - integrity sha512-h4Fnjm+VLwp1F3r57B9MrHhwyOYMo5oP285a85zzAYLkhwcDy7f1nbHKHMQ3ZTaeJVmiRnVaH+3sdUdslCRt5g== +"@abp/lodash@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.4.1.tgz#d0f84b7b9cbd989d59ebde594ed7acb8bc720b61" + integrity sha512-RFjZCyAPZnpvT0SJbxXzzmMYbuocSWBlezvjAVA8MiTrOXdZO4VyaTFjIuQcAdSrZhtpFGeYWxAjHshVplxMbw== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" lodash "^4.17.21" -"@abp/luxon@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.4.0.tgz#2ba7ff307c8f7c24d818a9c33635b86fd6810db9" - integrity sha512-ROCx7aihM+agdYy7Tkz+GiScx68KY5qwGTnj8P7QabGFChzVUic6RuBG+2Obmfonc6uT7Rq0c8JDGrsGNe/w8A== +"@abp/luxon@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.4.1.tgz#e0c0947d2b77f98b9cdaf7d1143025879361c3c9" + integrity sha512-k1wh8tT1529MtNC2gSXEIKdimBXBwubXeLisgpIPx6lkJo1Op6pAz2ERwFXeyktqGdYyuFcnewJIxmS7EPtWhg== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.4.0.tgz#aba68877481f4339e048f2ae3cfbe93197145a0a" - integrity sha512-Ntodhi4k0HFQmImYTP5SYf/WDm7aUGJLaGsfePm77HJ6DhGgalIGqtM8NiFXzo/3GmMY0XSo8Wxrs1mSCdtsOA== +"@abp/malihu-custom-scrollbar-plugin@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.4.1.tgz#aa7ec247197a258277549052780b38fd9e748c6c" + integrity sha512-pm/wIaiRSgGxelOf8AiL4JKFNZOQ6s2WbR6pULiP2HSNCgCpWYJ2s8fvj7VP3lAHIa98v3m8PSMSUhqaANxZ/Q== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.4.0.tgz#2490d9c7cdcaeca8d0ba9ebef5e7298caf0c9e09" - integrity sha512-ftsUEgO17GbVawA1GplGFzEeIM4NX004AmS6/fPI3o5isX7o1buF9q9TXdnwUuFEJKZxS4KpveRqzTL5t9k0BQ== +"@abp/moment@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.4.1.tgz#1c28ccb13eecdd13695edf8641ca9867b318e37d" + integrity sha512-7vRJyAK5ER9z+LV1xUSAAtWlPlhv8yhM/nHjhC+IQSP/+V1D7VLA6EKxAEexGw7wX6HY8oMOWP9HxDHMb5hKQA== dependencies: moment "^2.9.0" -"@abp/prismjs@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.4.0.tgz#8572f36f853c7054d77d02f3098cd844ee321ed7" - integrity sha512-y/Iy6pddQeVazEITktPot8JOPdAEOVAfmYkTBP3DIIPvoYr3kf6rwfzBUalMw5CEjWZ9BaIszDgFCk5ucNHHwQ== +"@abp/prismjs@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.4.1.tgz#df4387dbc2f0c77ddb9b6bd0ade9a5db29b9cee2" + integrity sha512-bI7pEKWy32aRYSb2ZziiH6Teebyd8km+1TXADy1yks9i9G5eLWe4/CSdwWpI4M+8ggM8CsdhrZ6/U+55BpXPQA== dependencies: - "@abp/clipboard" "~7.4.0" - "@abp/core" "~7.4.0" + "@abp/clipboard" "~7.4.1" + "@abp/core" "~7.4.1" prismjs "^1.26.0" -"@abp/select2@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.4.0.tgz#2f455cc991b7bb4df9ed426097bc2996cac12697" - integrity sha512-DwprX4MIoqMzSdh7eFg7EjGIz4ftYZub6jG9Sk3r+sxabbhpbFTxKOpXnhBWYi7L7uTQ8YDFk/5NeXO+Rm50Ww== +"@abp/select2@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.4.1.tgz#d7ea53cfec285a06278db362131b7510d5b73900" + integrity sha512-0S66iy7HuB74qqOSDraoF7UvXqz2PrnOKy+3EYMTMskOn4pWaq03JMR8xxEgZ8CtmsrqlE1a4wt1Yt9b3FIc0w== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" select2 "^4.0.13" -"@abp/sweetalert2@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.4.0.tgz#db1b4bd45cbabd61172591abc8ce223b5f607c4e" - integrity sha512-XqHPRnTASaRtbJIZYKW1KSKIJ8tynL8DuPCSMjcp4iyUlk+gnzxvbqXeNVjc2ojxj78T/42M/vITNoiiTYuKUw== +"@abp/sweetalert2@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.4.1.tgz#6722a40e5115cc341b7543aa0fa3b5a7ae9515b2" + integrity sha512-9jAHrYqCp5qykYfNNbqgESL6egixofVwonjZlb+lLWHAkIX+gQ2ApUNDFSXPtKUh2n9sXhSfF8SSg+BHP/bkCA== dependencies: - "@abp/core" "~7.4.0" + "@abp/core" "~7.4.1" sweetalert2 "^11.3.6" -"@abp/timeago@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.4.0.tgz#245fe09370f38311a67a594c8a3c884aea59cc90" - integrity sha512-khxK6EICUaGCUM1HkACw/8rlPQNssoQvCK64bNqEHBCXgPUmTcqSj5MEGiNOYbgGyWeH2IAMtJEYPqX1g1wqSA== +"@abp/timeago@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.4.1.tgz#243d342ba131878ae7f892909c9cae07cf54902b" + integrity sha512-a0Vl2NFwTxzRmH5akWo8BRUxa6sK72z8OoXwUFkZOUqMWBCHK7ffNiN1/fbSgA+7HpSZdDvIthjYwBt57DxLdQ== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" timeago "^1.6.7" -"@abp/toastr@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.4.0.tgz#16ba0414a27c9a21bc7556a078b175445edcf608" - integrity sha512-oM4HT2m95cK/9sB4AEQAKUMSGBep6wZTgM/46+o2IvvMdMPrGR2mPu9V9wi3y817FRgY+/qQTfy5TZWyTuIpVQ== +"@abp/toastr@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.4.1.tgz#345545a41b6145e54477c6c376193a6dbd62bdda" + integrity sha512-OLCvPJYSrcT2spcq9nO838Q22VhJ63Kdzasz1HugdVNqgcFCCSsqaoXrJGUcf5GrZx7PNloz7uf1I3txYMeZtA== dependencies: - "@abp/jquery" "~7.4.0" + "@abp/jquery" "~7.4.1" toastr "^2.1.4" -"@abp/utils@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.4.0.tgz#b31fb6e5dff07463535479a6bb62dc733d7119c8" - integrity sha512-CcR3tfuEsVM60DYL1A0cH6BkUTsasOoBDv/b63uLCoEOq/g8ntelD/SpRSgfDXK74P9M8OE5ZFxlXWDiYuzAFg== +"@abp/utils@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.4.1.tgz#2ce4c4d659c2ae9bc23b71b79fa3c6e120eaecaf" + integrity sha512-eFeoOXcz9cVkDKpOfd2VWmpAojASfsqfvACZqi1UmF16OcjsFIkxmIvhh1fpbT4A+eQLbaFFLIsf6gYb//tXhg== dependencies: just-compare "^2.3.0" -"@abp/virtual-file-explorer@~7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@abp/virtual-file-explorer/-/virtual-file-explorer-7.4.0.tgz#c118e86b4dd31c590d59f11239687d1108c555c3" - integrity sha512-DcNKiqfXR/VzUzfZSSZlUwxOOQyEIKJZNNCb9bUR021XxUK3tmPQTjFU+6ptq1ebRxByz8239zPcXYIjW4im+A== +"@abp/virtual-file-explorer@~7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@abp/virtual-file-explorer/-/virtual-file-explorer-7.4.1.tgz#f08e4d397749c44c0d7e2cbfd6e26641a9c77904" + integrity sha512-Rx10rm9cBtqP7VWWFhIeYO0/gZED6XphxUoN58OLZzKpTHrkNW4gf1P0emVVuxWD/j7M933rXjzSV8CT0Vtt+Q== dependencies: - "@abp/clipboard" "~7.4.0" - "@abp/prismjs" "~7.4.0" + "@abp/clipboard" "~7.4.1" + "@abp/prismjs" "~7.4.1" "@fortawesome/fontawesome-free@^5.15.4": version "5.15.4" diff --git a/npm/lerna.json b/npm/lerna.json index 9b754ccca7..b5395f7a89 100644 --- a/npm/lerna.json +++ b/npm/lerna.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "packages": [ "packs/*" ], diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json index 376fc1daa5..429c80552c 100644 --- a/npm/ng-packs/package.json +++ b/npm/ng-packs/package.json @@ -44,8 +44,8 @@ }, "private": true, "devDependencies": { - "@abp/ng.theme.lepton-x": "~2.4.0", - "@abp/utils": "~7.4.0", + "@abp/ng.theme.lepton-x": "~2.4.1", + "@abp/utils": "~7.4.1", "@angular-devkit/build-angular": "~16.2.0", "@angular-devkit/core": "~16.2.0", "@angular-devkit/schematics": "~16.2.0", @@ -136,4 +136,3 @@ }, "dependencies": {} } - diff --git a/npm/ng-packs/packages/account-core/package.json b/npm/ng-packs/packages/account-core/package.json index 9f2cba366f..b4bf728796 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": "7.4.0", + "version": "7.4.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "peerDependencies": { - "@abp/ng.core": "~7.4.0", - "@abp/ng.theme.shared": "~7.4.0", + "@abp/ng.core": "~7.4.1", + "@abp/ng.theme.shared": "~7.4.1", "@angular/common": ">=12.0.0", "@angular/core": ">=12.0.0" }, diff --git a/npm/ng-packs/packages/account/package.json b/npm/ng-packs/packages/account/package.json index 3f33e750fb..b3b2528d23 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": "7.4.0", + "version": "7.4.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.account.core": "~7.4.0", - "@abp/ng.theme.shared": "~7.4.0", + "@abp/ng.account.core": "~7.4.1", + "@abp/ng.theme.shared": "~7.4.1", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/components/package.json b/npm/ng-packs/packages/components/package.json index 1dab4b4b6e..e9084eb9c0 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": "7.4.0", + "version": "7.4.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "peerDependencies": { - "@abp/ng.core": ">=7.4.0", - "@abp/ng.theme.shared": ">=7.4.0" + "@abp/ng.core": ">=7.4.1", + "@abp/ng.theme.shared": ">=7.4.1" }, "dependencies": { "chart.js": "^3.5.1", diff --git a/npm/ng-packs/packages/core/package.json b/npm/ng-packs/packages/core/package.json index 1261fe6ee8..214e672d8f 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": "7.4.0", + "version": "7.4.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/utils": "~7.4.0", + "@abp/utils": "~7.4.1", "angular-oauth2-oidc": "^15.0.1", "just-clone": "^6.1.1", "just-compare": "^2.3.0", diff --git a/npm/ng-packs/packages/feature-management/package.json b/npm/ng-packs/packages/feature-management/package.json index b07018c81e..de497ea449 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": "7.4.0", + "version": "7.4.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~7.4.0", + "@abp/ng.theme.shared": "~7.4.1", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/generators/package.json b/npm/ng-packs/packages/generators/package.json index 0a6721043d..eefbafd941 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": "7.4.0", + "version": "7.4.1", "homepage": "https://abp.io", "generators": "./generators.json", "type": "commonjs", diff --git a/npm/ng-packs/packages/identity/package.json b/npm/ng-packs/packages/identity/package.json index 8b00379187..8df039e253 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": "7.4.0", + "version": "7.4.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.components": "~7.4.0", - "@abp/ng.permission-management": "~7.4.0", - "@abp/ng.theme.shared": "~7.4.0", + "@abp/ng.components": "~7.4.1", + "@abp/ng.permission-management": "~7.4.1", + "@abp/ng.theme.shared": "~7.4.1", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/oauth/package.json b/npm/ng-packs/packages/oauth/package.json index 04580b0c1e..b9dda531bb 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": "7.4.0", + "version": "7.4.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.core": "~7.4.0", - "@abp/utils": "~7.4.0", + "@abp/ng.core": "~7.4.1", + "@abp/utils": "~7.4.1", "angular-oauth2-oidc": "^15.0.1", "just-clone": "^6.1.1", "just-compare": "^2.3.0", diff --git a/npm/ng-packs/packages/permission-management/package.json b/npm/ng-packs/packages/permission-management/package.json index 692bb6c2be..ee9c2ebfaa 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": "7.4.0", + "version": "7.4.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~7.4.0", + "@abp/ng.theme.shared": "~7.4.1", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/schematics/package.json b/npm/ng-packs/packages/schematics/package.json index e8655768b9..7d613dee16 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": "7.4.0", + "version": "7.4.1", "author": "", "schematics": "./collection.json", "dependencies": { diff --git a/npm/ng-packs/packages/setting-management/package.json b/npm/ng-packs/packages/setting-management/package.json index 47658075b7..919d96f13d 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": "7.4.0", + "version": "7.4.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.components": "~7.4.0", - "@abp/ng.theme.shared": "~7.4.0", + "@abp/ng.components": "~7.4.1", + "@abp/ng.theme.shared": "~7.4.1", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/tenant-management/package.json b/npm/ng-packs/packages/tenant-management/package.json index 6e3035220f..7b98e6c2af 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": "7.4.0", + "version": "7.4.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.feature-management": "~7.4.0", - "@abp/ng.theme.shared": "~7.4.0", + "@abp/ng.feature-management": "~7.4.1", + "@abp/ng.theme.shared": "~7.4.1", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/theme-basic/package.json b/npm/ng-packs/packages/theme-basic/package.json index 09644b6e90..66fb3a6686 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": "7.4.0", + "version": "7.4.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.account.core": "~7.4.0", - "@abp/ng.theme.shared": "~7.4.0", + "@abp/ng.account.core": "~7.4.1", + "@abp/ng.theme.shared": "~7.4.1", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/theme-shared/package.json b/npm/ng-packs/packages/theme-shared/package.json index 5c0fc9610d..b3118175e5 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": "7.4.0", + "version": "7.4.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.core": "~7.4.0", + "@abp/ng.core": "~7.4.1", "@fortawesome/fontawesome-free": "^5.15.4", "@ng-bootstrap/ng-bootstrap": "^15.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 8b3542378a..1784f53c7a 100644 --- a/npm/packs/anchor-js/package.json +++ b/npm/packs/anchor-js/package.json @@ -1,11 +1,11 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/anchor-js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~7.4.0", + "@abp/core": "~7.4.1", "anchor-js": "^4.3.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/aspnetcore.components.server.basictheme/package.json b/npm/packs/aspnetcore.components.server.basictheme/package.json index ee04c0e990..13bac6c467 100644 --- a/npm/packs/aspnetcore.components.server.basictheme/package.json +++ b/npm/packs/aspnetcore.components.server.basictheme/package.json @@ -1,11 +1,11 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/aspnetcore.components.server.basictheme", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.components.server.theming": "~7.4.0" + "@abp/aspnetcore.components.server.theming": "~7.4.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/aspnetcore.components.server.theming/package.json b/npm/packs/aspnetcore.components.server.theming/package.json index a55a897a9c..4086c1969b 100644 --- a/npm/packs/aspnetcore.components.server.theming/package.json +++ b/npm/packs/aspnetcore.components.server.theming/package.json @@ -1,12 +1,12 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/aspnetcore.components.server.theming", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/bootstrap": "~7.4.0", - "@abp/font-awesome": "~7.4.0" + "@abp/bootstrap": "~7.4.1", + "@abp/font-awesome": "~7.4.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json index 69a53526b2..00cb45e009 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": "7.4.0", + "version": "7.4.1", "name": "@abp/aspnetcore.mvc.ui.theme.basic", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~7.4.0" + "@abp/aspnetcore.mvc.ui.theme.shared": "~7.4.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json index 86a227a968..6cf45992d6 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": "7.4.0", + "version": "7.4.1", "name": "@abp/aspnetcore.mvc.ui.theme.shared", "repository": { "type": "git", @@ -10,22 +10,22 @@ "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui": "~7.4.0", - "@abp/bootstrap": "~7.4.0", - "@abp/bootstrap-datepicker": "~7.4.0", - "@abp/bootstrap-daterangepicker": "~7.4.0", - "@abp/datatables.net-bs5": "~7.4.0", - "@abp/font-awesome": "~7.4.0", - "@abp/jquery-form": "~7.4.0", - "@abp/jquery-validation-unobtrusive": "~7.4.0", - "@abp/lodash": "~7.4.0", - "@abp/luxon": "~7.4.0", - "@abp/malihu-custom-scrollbar-plugin": "~7.4.0", - "@abp/moment": "~7.4.0", - "@abp/select2": "~7.4.0", - "@abp/sweetalert2": "~7.4.0", - "@abp/timeago": "~7.4.0", - "@abp/toastr": "~7.4.0" + "@abp/aspnetcore.mvc.ui": "~7.4.1", + "@abp/bootstrap": "~7.4.1", + "@abp/bootstrap-datepicker": "~7.4.1", + "@abp/bootstrap-daterangepicker": "~7.4.1", + "@abp/datatables.net-bs5": "~7.4.1", + "@abp/font-awesome": "~7.4.1", + "@abp/jquery-form": "~7.4.1", + "@abp/jquery-validation-unobtrusive": "~7.4.1", + "@abp/lodash": "~7.4.1", + "@abp/luxon": "~7.4.1", + "@abp/malihu-custom-scrollbar-plugin": "~7.4.1", + "@abp/moment": "~7.4.1", + "@abp/select2": "~7.4.1", + "@abp/sweetalert2": "~7.4.1", + "@abp/timeago": "~7.4.1", + "@abp/toastr": "~7.4.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/aspnetcore.mvc.ui/package-lock.json b/npm/packs/aspnetcore.mvc.ui/package-lock.json index 74d3620b9c..ea60b590ab 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": "7.4.0", + "version": "7.4.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/npm/packs/aspnetcore.mvc.ui/package.json b/npm/packs/aspnetcore.mvc.ui/package.json index 9d89144d7e..00113c20bb 100644 --- a/npm/packs/aspnetcore.mvc.ui/package.json +++ b/npm/packs/aspnetcore.mvc.ui/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/aspnetcore.mvc.ui", "repository": { "type": "git", diff --git a/npm/packs/blogging/package.json b/npm/packs/blogging/package.json index b09ebe3751..237ebc11c3 100644 --- a/npm/packs/blogging/package.json +++ b/npm/packs/blogging/package.json @@ -1,14 +1,14 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/blogging", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~7.4.0", - "@abp/owl.carousel": "~7.4.0", - "@abp/prismjs": "~7.4.0", - "@abp/tui-editor": "~7.4.0" + "@abp/aspnetcore.mvc.ui.theme.shared": "~7.4.1", + "@abp/owl.carousel": "~7.4.1", + "@abp/prismjs": "~7.4.1", + "@abp/tui-editor": "~7.4.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/bootstrap-datepicker/package.json b/npm/packs/bootstrap-datepicker/package.json index 58865a1ac5..7d29b8b0a3 100644 --- a/npm/packs/bootstrap-datepicker/package.json +++ b/npm/packs/bootstrap-datepicker/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/bootstrap-datepicker", "repository": { "type": "git", diff --git a/npm/packs/bootstrap-daterangepicker/package.json b/npm/packs/bootstrap-daterangepicker/package.json index 4eafb5a8a0..d92025f1bd 100644 --- a/npm/packs/bootstrap-daterangepicker/package.json +++ b/npm/packs/bootstrap-daterangepicker/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/bootstrap-daterangepicker", "repository": { "type": "git", diff --git a/npm/packs/bootstrap/package.json b/npm/packs/bootstrap/package.json index 7ff316b0ac..09787d790b 100644 --- a/npm/packs/bootstrap/package.json +++ b/npm/packs/bootstrap/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/bootstrap", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~7.4.0", + "@abp/core": "~7.4.1", "bootstrap": "^5.1.3" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/chart.js/package.json b/npm/packs/chart.js/package.json index b54cbd56c4..39a4844efd 100644 --- a/npm/packs/chart.js/package.json +++ b/npm/packs/chart.js/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/chart.js", "publishConfig": { "access": "public" diff --git a/npm/packs/clipboard/package.json b/npm/packs/clipboard/package.json index c762093a23..069870a9f9 100644 --- a/npm/packs/clipboard/package.json +++ b/npm/packs/clipboard/package.json @@ -1,11 +1,11 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/clipboard", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~7.4.0", + "@abp/core": "~7.4.1", "clipboard": "^2.0.8" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/cms-kit.admin/package.json b/npm/packs/cms-kit.admin/package.json index e61d6cb878..316d70c1e2 100644 --- a/npm/packs/cms-kit.admin/package.json +++ b/npm/packs/cms-kit.admin/package.json @@ -1,15 +1,15 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/cms-kit.admin", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/codemirror": "~7.4.0", - "@abp/jstree": "~7.4.0", - "@abp/slugify": "~7.4.0", - "@abp/tui-editor": "~7.4.0", - "@abp/uppy": "~7.4.0" + "@abp/codemirror": "~7.4.1", + "@abp/jstree": "~7.4.1", + "@abp/slugify": "~7.4.1", + "@abp/tui-editor": "~7.4.1", + "@abp/uppy": "~7.4.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/cms-kit.public/package.json b/npm/packs/cms-kit.public/package.json index cd298f3501..2a37ba8b99 100644 --- a/npm/packs/cms-kit.public/package.json +++ b/npm/packs/cms-kit.public/package.json @@ -1,12 +1,12 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/cms-kit.public", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/highlight.js": "~7.4.0", - "@abp/star-rating-svg": "~7.4.0" + "@abp/highlight.js": "~7.4.1", + "@abp/star-rating-svg": "~7.4.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/cms-kit/package.json b/npm/packs/cms-kit/package.json index efaeabf662..91d48ce1f8 100644 --- a/npm/packs/cms-kit/package.json +++ b/npm/packs/cms-kit/package.json @@ -1,12 +1,12 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/cms-kit", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/cms-kit.admin": "~7.4.0", - "@abp/cms-kit.public": "~7.4.0" + "@abp/cms-kit.admin": "~7.4.1", + "@abp/cms-kit.public": "~7.4.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/codemirror/package.json b/npm/packs/codemirror/package.json index f29943e59d..0ecb2d825f 100644 --- a/npm/packs/codemirror/package.json +++ b/npm/packs/codemirror/package.json @@ -1,11 +1,11 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/codemirror", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~7.4.0", + "@abp/core": "~7.4.1", "codemirror": "^5.65.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/core/package.json b/npm/packs/core/package.json index de7df5edeb..db2a5f8eba 100644 --- a/npm/packs/core/package.json +++ b/npm/packs/core/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/core", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/utils": "~7.4.0" + "@abp/utils": "~7.4.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/cropperjs/package.json b/npm/packs/cropperjs/package.json index 07b45d4d4b..1c3adff63b 100644 --- a/npm/packs/cropperjs/package.json +++ b/npm/packs/cropperjs/package.json @@ -1,11 +1,11 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/cropperjs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~7.4.0", + "@abp/core": "~7.4.1", "cropperjs": "^1.5.12" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/datatables.net-bs4/package.json b/npm/packs/datatables.net-bs4/package.json index 4b821168e7..6139027d97 100644 --- a/npm/packs/datatables.net-bs4/package.json +++ b/npm/packs/datatables.net-bs4/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/datatables.net-bs4", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/datatables.net": "~7.4.0", + "@abp/datatables.net": "~7.4.1", "datatables.net-bs4": "^1.11.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/datatables.net-bs5/package.json b/npm/packs/datatables.net-bs5/package.json index 108be39b57..4ef0aa47c9 100644 --- a/npm/packs/datatables.net-bs5/package.json +++ b/npm/packs/datatables.net-bs5/package.json @@ -1,11 +1,11 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/datatables.net-bs5", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/datatables.net": "~7.4.0", + "@abp/datatables.net": "~7.4.1", "datatables.net-bs5": "^1.11.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/datatables.net/package.json b/npm/packs/datatables.net/package.json index 160b0117c1..c40a7549cb 100644 --- a/npm/packs/datatables.net/package.json +++ b/npm/packs/datatables.net/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/datatables.net", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery": "~7.4.0", + "@abp/jquery": "~7.4.1", "datatables.net": "^1.11.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/docs/package.json b/npm/packs/docs/package.json index 2e50895ed0..c6b03d5474 100644 --- a/npm/packs/docs/package.json +++ b/npm/packs/docs/package.json @@ -1,15 +1,15 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/docs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/anchor-js": "~7.4.0", - "@abp/clipboard": "~7.4.0", - "@abp/malihu-custom-scrollbar-plugin": "~7.4.0", - "@abp/popper.js": "~7.4.0", - "@abp/prismjs": "~7.4.0" + "@abp/anchor-js": "~7.4.1", + "@abp/clipboard": "~7.4.1", + "@abp/malihu-custom-scrollbar-plugin": "~7.4.1", + "@abp/popper.js": "~7.4.1", + "@abp/prismjs": "~7.4.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/flag-icon-css/package.json b/npm/packs/flag-icon-css/package.json index 9f3b32c495..904fa65c97 100644 --- a/npm/packs/flag-icon-css/package.json +++ b/npm/packs/flag-icon-css/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/flag-icon-css", "publishConfig": { "access": "public" diff --git a/npm/packs/flag-icons/package.json b/npm/packs/flag-icons/package.json index 9a0463a798..026485667e 100644 --- a/npm/packs/flag-icons/package.json +++ b/npm/packs/flag-icons/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/flag-icons", "publishConfig": { "access": "public" diff --git a/npm/packs/font-awesome/package.json b/npm/packs/font-awesome/package.json index f8c2507180..770e319e26 100644 --- a/npm/packs/font-awesome/package.json +++ b/npm/packs/font-awesome/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/font-awesome", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~7.4.0", + "@abp/core": "~7.4.1", "@fortawesome/fontawesome-free": "^5.15.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/highlight.js/package.json b/npm/packs/highlight.js/package.json index 13e2c741f5..acc04e595a 100644 --- a/npm/packs/highlight.js/package.json +++ b/npm/packs/highlight.js/package.json @@ -1,11 +1,11 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/highlight.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~7.4.0", + "@abp/core": "~7.4.1", "@highlightjs/cdn-assets": "~11.4.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/jquery-form/package.json b/npm/packs/jquery-form/package.json index c1eaadedfa..910dda8881 100644 --- a/npm/packs/jquery-form/package.json +++ b/npm/packs/jquery-form/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/jquery-form", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery": "~7.4.0", + "@abp/jquery": "~7.4.1", "jquery-form": "^4.3.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/jquery-validation-unobtrusive/package.json b/npm/packs/jquery-validation-unobtrusive/package.json index d07bc08406..795087d7dd 100644 --- a/npm/packs/jquery-validation-unobtrusive/package.json +++ b/npm/packs/jquery-validation-unobtrusive/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/jquery-validation-unobtrusive", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery-validation": "~7.4.0", + "@abp/jquery-validation": "~7.4.1", "jquery-validation-unobtrusive": "^3.2.12" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/jquery-validation/package.json b/npm/packs/jquery-validation/package.json index 803d556ce5..5178919e18 100644 --- a/npm/packs/jquery-validation/package.json +++ b/npm/packs/jquery-validation/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/jquery-validation", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery": "~7.4.0", + "@abp/jquery": "~7.4.1", "jquery-validation": "^1.19.3" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/jquery/package.json b/npm/packs/jquery/package.json index ed35001c5b..631e7c0cb4 100644 --- a/npm/packs/jquery/package.json +++ b/npm/packs/jquery/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/jquery", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~7.4.0", + "@abp/core": "~7.4.1", "jquery": "~3.6.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/jstree/package.json b/npm/packs/jstree/package.json index c6794062ae..2d94ce38b8 100644 --- a/npm/packs/jstree/package.json +++ b/npm/packs/jstree/package.json @@ -1,11 +1,11 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/jstree", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~7.4.0", + "@abp/jquery": "~7.4.1", "jstree": "^3.3.12" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/lodash/package.json b/npm/packs/lodash/package.json index cbaa5a3f4c..e253bf5026 100644 --- a/npm/packs/lodash/package.json +++ b/npm/packs/lodash/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/lodash", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~7.4.0", + "@abp/core": "~7.4.1", "lodash": "^4.17.21" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/luxon/package.json b/npm/packs/luxon/package.json index 07d9393f9d..3cc35bc828 100644 --- a/npm/packs/luxon/package.json +++ b/npm/packs/luxon/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/luxon", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~7.4.0", + "@abp/core": "~7.4.1", "luxon": "^2.3.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/malihu-custom-scrollbar-plugin/package.json b/npm/packs/malihu-custom-scrollbar-plugin/package.json index da0d25f81e..72b953d34b 100644 --- a/npm/packs/malihu-custom-scrollbar-plugin/package.json +++ b/npm/packs/malihu-custom-scrollbar-plugin/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/malihu-custom-scrollbar-plugin", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~7.4.0", + "@abp/core": "~7.4.1", "malihu-custom-scrollbar-plugin": "^3.1.5" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/markdown-it/package.json b/npm/packs/markdown-it/package.json index 911e9a83fc..21409a9704 100644 --- a/npm/packs/markdown-it/package.json +++ b/npm/packs/markdown-it/package.json @@ -1,11 +1,11 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/markdown-it", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~7.4.0", + "@abp/core": "~7.4.1", "markdown-it": "^12.3.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/moment/package.json b/npm/packs/moment/package.json index 91c919eabe..56d5123a88 100644 --- a/npm/packs/moment/package.json +++ b/npm/packs/moment/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/moment", "repository": { "type": "git", diff --git a/npm/packs/owl.carousel/package.json b/npm/packs/owl.carousel/package.json index ed5825da6c..cbba8f8c5b 100644 --- a/npm/packs/owl.carousel/package.json +++ b/npm/packs/owl.carousel/package.json @@ -1,11 +1,11 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/owl.carousel", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~7.4.0", + "@abp/core": "~7.4.1", "owl.carousel": "^2.3.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/popper.js/package.json b/npm/packs/popper.js/package.json index 38c9f317a7..5aa46044ea 100644 --- a/npm/packs/popper.js/package.json +++ b/npm/packs/popper.js/package.json @@ -1,11 +1,11 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/popper.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~7.4.0", + "@abp/core": "~7.4.1", "@popperjs/core": "^2.11.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/prismjs/package.json b/npm/packs/prismjs/package.json index 7f70f7f662..a76d8b4d48 100644 --- a/npm/packs/prismjs/package.json +++ b/npm/packs/prismjs/package.json @@ -1,12 +1,12 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/prismjs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/clipboard": "~7.4.0", - "@abp/core": "~7.4.0", + "@abp/clipboard": "~7.4.1", + "@abp/core": "~7.4.1", "prismjs": "^1.26.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/qrcode/package.json b/npm/packs/qrcode/package.json index b342e54584..83cdc72c28 100644 --- a/npm/packs/qrcode/package.json +++ b/npm/packs/qrcode/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/qrcode", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~7.4.0" + "@abp/core": "~7.4.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/select2/package.json b/npm/packs/select2/package.json index 138587f583..da628403c1 100644 --- a/npm/packs/select2/package.json +++ b/npm/packs/select2/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/select2", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~7.4.0", + "@abp/core": "~7.4.1", "select2": "^4.0.13" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/signalr/package.json b/npm/packs/signalr/package.json index 4630102fab..7934a12406 100644 --- a/npm/packs/signalr/package.json +++ b/npm/packs/signalr/package.json @@ -1,11 +1,11 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/signalr", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~7.4.0", + "@abp/core": "~7.4.1", "@microsoft/signalr": "~6.0.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/slugify/package.json b/npm/packs/slugify/package.json index 8d106275b1..5a66ee22f5 100644 --- a/npm/packs/slugify/package.json +++ b/npm/packs/slugify/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/slugify", "publishConfig": { "access": "public" diff --git a/npm/packs/star-rating-svg/package.json b/npm/packs/star-rating-svg/package.json index 49484a3cf3..a7923aadc7 100644 --- a/npm/packs/star-rating-svg/package.json +++ b/npm/packs/star-rating-svg/package.json @@ -1,11 +1,11 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/star-rating-svg", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~7.4.0", + "@abp/jquery": "~7.4.1", "star-rating-svg": "^3.5.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/sweetalert2/package.json b/npm/packs/sweetalert2/package.json index bdae361897..7508409375 100644 --- a/npm/packs/sweetalert2/package.json +++ b/npm/packs/sweetalert2/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/sweetalert2", "publishConfig": { "access": "public" @@ -10,7 +10,7 @@ "directory": "npm/packs/sweetalert2" }, "dependencies": { - "@abp/core": "~7.4.0", + "@abp/core": "~7.4.1", "sweetalert2": "^11.3.6" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/timeago/package.json b/npm/packs/timeago/package.json index f361de4194..828a8a2ba4 100644 --- a/npm/packs/timeago/package.json +++ b/npm/packs/timeago/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/timeago", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery": "~7.4.0", + "@abp/jquery": "~7.4.1", "timeago": "^1.6.7" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/toastr/package.json b/npm/packs/toastr/package.json index 758df70b38..7a9fb784cd 100644 --- a/npm/packs/toastr/package.json +++ b/npm/packs/toastr/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/toastr", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery": "~7.4.0", + "@abp/jquery": "~7.4.1", "toastr": "^2.1.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/tui-editor/package.json b/npm/packs/tui-editor/package.json index cda42125cc..ea66914086 100644 --- a/npm/packs/tui-editor/package.json +++ b/npm/packs/tui-editor/package.json @@ -1,12 +1,12 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/tui-editor", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~7.4.0", - "@abp/prismjs": "~7.4.0" + "@abp/jquery": "~7.4.1", + "@abp/prismjs": "~7.4.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/uppy/package.json b/npm/packs/uppy/package.json index 16e3e9d676..0a914395c4 100644 --- a/npm/packs/uppy/package.json +++ b/npm/packs/uppy/package.json @@ -1,11 +1,11 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/uppy", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~7.4.0", + "@abp/core": "~7.4.1", "uppy": "^1.16.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/utils/package.json b/npm/packs/utils/package.json index 5976e26e37..fa6dbe0af0 100644 --- a/npm/packs/utils/package.json +++ b/npm/packs/utils/package.json @@ -1,6 +1,6 @@ { "name": "@abp/utils", - "version": "7.4.0", + "version": "7.4.1", "scripts": { "prepublishOnly": "yarn install --ignore-scripts && node prepublish.js", "ng": "ng", diff --git a/npm/packs/vee-validate/package.json b/npm/packs/vee-validate/package.json index a4a716df49..acc479df3f 100644 --- a/npm/packs/vee-validate/package.json +++ b/npm/packs/vee-validate/package.json @@ -1,11 +1,11 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/vee-validate", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/vue": "~7.4.0", + "@abp/vue": "~7.4.1", "vee-validate": "~3.4.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/virtual-file-explorer/package.json b/npm/packs/virtual-file-explorer/package.json index 87e42e5fd2..4c33fd06e8 100644 --- a/npm/packs/virtual-file-explorer/package.json +++ b/npm/packs/virtual-file-explorer/package.json @@ -1,12 +1,12 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/virtual-file-explorer", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/clipboard": "~7.4.0", - "@abp/prismjs": "~7.4.0" + "@abp/clipboard": "~7.4.1", + "@abp/prismjs": "~7.4.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/vue/package.json b/npm/packs/vue/package.json index 310f4eb33f..3c5fcad26f 100644 --- a/npm/packs/vue/package.json +++ b/npm/packs/vue/package.json @@ -1,5 +1,5 @@ { - "version": "7.4.0", + "version": "7.4.1", "name": "@abp/vue", "publishConfig": { "access": "public" 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 f4ae508c1b2fb6bc357d0999428bf2e78410f219..84f047a17cff837d06b634d66bf72c0a47da27d2 100644 GIT binary patch delta 16840 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 delta 16777 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 IgC)W8e}ZQ=ivR!s 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 3212963ba9bebd4d28f7ad3fd03e01ac41759c5f..159c8e04fdef9b288b76201145585c3ef65f2134 100644 GIT binary patch delta 6567 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 J&}Nvc{|CB9&td=o delta 6592 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 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 3f3a3196f878efd061d8f0150e2bd89fa2804aaa..26fe756069c4e3cf9e80432c782b7dd53aa52201 100644 GIT binary patch delta 8196 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 diff --git a/source-code/Volo.Abp.BasicTheme.SourceCode/Volo.Abp.BasicTheme.SourceCode.zip b/source-code/Volo.Abp.BasicTheme.SourceCode/Volo.Abp.BasicTheme.SourceCode.zip index 3051a256ab72145b719cc214f0faa6eca1dec8b5..686fb5c846cb34b30fe40674c338c43b10dd21c6 100644 GIT binary patch delta 68076 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

BsES$j! z%(iJDzIYS1q$XCw;DuwEj02L&7iJ`rQk$o$U+gn$ZsP2eMas*3ole%ftvOz>XwOfU zB+^4r+~xCQc6GyXfI9khxT`DcQd+|ivyBOWChfHpNYfFBx6Jz;R)0pX^N4?D8JMZD z1pM=K<~TtD#^E@OOW7Vv6X42#sKbJYgSK7J3Go=v(}28wedbxYkd@_8A!Tua+uNzl z&$k(}MlXW}cJTF`F!QE%ztm~U_q|C!Hr1%7$sQ8)m7?8GZOaq)fnB%ix6)Gj{&4H(ulm zt>&dr)}o4cB%MfDcBw@tkag*Y$;CR?Ll8`} z9)^Lkvc+w2i=jwxw_n_z+W{}HL#3F|^yIwLRsQ3w(mvtZfov83W z+p`%TF(JT8o@vr3Vva^tP;?M%tK=>+Vn-2e_OA87250xW#iE z+?l|!(0?8S0#uA(Z6KNexcqu`aVgf*j+8zh>?iJd6<{GZObwi>Qn!dbuvX$+WhU%>7dqK?pGIKmM!h z2lHtg{O9vF_|_uh-G{$&DsF%HmTh8s?pvwWe}6VljJu4jtAzdk9JlF0+r0VE0srG4 z?T>?Bp1HQ!khksEc8|5@8USh0It5>39saNz)P1(w#cf`;H0&+#aDmgle&#IKhtYly5e*nROs{ zK}-vT*89-#149?PVtWeP?eNa1u{%&#FI zM+=yNs0Ugp^M80= zIHSwpte}Xvt&d9%WKw6ln6i;`^6k3DFGHJJEk~lJSC@4Py272gk$MMjIWu@$IIWl> zCW&vn*za;V+YRFmAm3ep#=>n1m6b%d-Q;)jqdraB+V{iQQh<|MBo93~?xszQfZWs`efv)BCjEIMIPg+*j1m701 z(GPKYCDubf6G{TTNa3{BMv@qadrzO#<&N1C&fJ<#Yg_+WLGjyo)A#NvPxhUCABB9s zC=l^OrOT&j-`n@CtnXd-g3%ss(mdI8sDWJo+v-;qT$?DdQxpT!DvoN2- zSs3~c%+gKyuu6CQr+=NUd*%aI;!-R~RBetkEgO_a7?1-VWwvYq1GHTW<-HJLZZPL6 z>;_<&06z!=YkEz$>_JfmOE~2*dYI65q1t1qK<&^NAUk`pBI`-GE!R^y8m31#&)+IeQ-CvM-Y-1#z)K$Gv@MP5O8dt9vu3bBhy+TBy0L z%7*svtfKB3InEB4DsH%0Jl$f~^ppcH7%`gvpDP{O;$c zNmxVZ9)8H(d96tOK1clF2A#?Pf;adI*M>Li-^siGG=FV-K|YK!wHL=^D%$PD(8@AVKgI%xx8Kn;_}>+vm_Y0 z^8Uo_ugOe67iz{X^W|W*o@sm3GI|EU@axUwDB284Ehkb|2FTlv*8S?JDaPGkClB@9 z-v{cxn1A}oQ18Z{!8#a-QcnCf161Ul28u(@HDmn+0{u z9b7=&1ATReKH8rw2=j1CW6q{8$cg9o6%eDS3jAp4(3!c3hv?w!V5P~g_1z#D*w}JN z`~8)3B?#??t=~?(xx`O_%ZIVQZ??AyTVuT)J%491fY1eFC<>Iha94ALM?l~QYl-B6 z*aCMN*a@mhtNhwTOSTNwhao%^=lOQ!IWne7Bc;C?*%ASv^ISVSl|++$d&^x<@z~j= z*vL9?gk94VLiDHw0oxuyOzGp&bMYk-$|zocS4=)_Y6Sp7;e4zM-qa^F!#@!qGoWAp zfPcJoC!VBDV~t-*e*7@$lYMU^&&iK~Oaa2l1A^>;t_-wPHczrZ)5DVo)X<;>W=scv zRYM9Spyq{#5g}>7i{At1`8^Y03 zZ*al}Zv@sPYd6iKJO?&8hHT`*rU@JosE0Y1z-Z#d6WS<8H0^IR)imwvem*&$w%6m( z9tKVn4$w8=DfD_xmQqO5?35u z4(5{XcwFY!5)NXpi$>c6TS67-$bVhG?JCtmquu@6-rIMs`Ua@CBF@`=&ECVjGEI{V zG{b;a=57Y(pVtvQ!;kr&rfI~7U7+~upRKUrD?P=Js(->%t;uhC!CS#k&V*o#hSvgzGO=LbpDp^*>1a(=3>UcOM`+w;2I`p(~ zW*4kQkI}j?E9AV$(oje@@~Avtb?fNb)68Nfy95tL7PjK61}34R+ai4mhMRs|pZ30{ zw*QZo-P43%ho_@I?Nl8s=9(VgC<7X6I1XTBP1``u<824#y)Io%@FZhCc0~F`KE0>_$CC;xEP58Z_7F~7z{Qz z3mys}sPI6##l6tljvYcX`qRNt4|nX?nqIto$f0p19kro`k4cc{M?6=6bxw^LoMLHD405OQuEG!?;l8~17s+PDp)$PEeF0rX-*Gek|dT(14ldMrQ9_LHtb#XdvR7ZWUK)xB!#3f~(^J63~&Iv#B6O;wdP;T)o}raU7k zl31d_c_`||s==pjpJQ_-QP4Gj&gxF6R`hU`sCBhr+?{L~Sbxv$QGh}Zc3Xw)_r?Yn zry0&_{gLBnSh(*Mq=?lAozxlBJ|aw$z?_Zya>V4e7 z*&jaS+G!v5Y$xavae12ZcoH{V%cL<5B5_c?d7!z4zzMT4h{+io2h)9Rw%jbufrl;( zXS2^{Yky@YE{jw*@n9K9fXi8dq~iUlld9oXBtoHbFRG){bRI88wZy8|v~*6EFu_jx z$eWwF=+w%f>nzx;z~YY;Cibz#6n~>W@biqVEgpwYHG?rA+j)4RI~WdD;eq|aNXKy? zc(hRE7aSFZ2y3h z=s6^(t0g`~GH<^e@+bD9O(p77?N?l8uIBDcbMGA|n;+apG;ex~4X$FL#*d3yGfA z5`RrcsJ;+QZyrgMwjHn$Axv;;EZd_xEvPe!A2HDS9;81gg>?l|ak)E*#vY6`&gSpxlRpS_+A}Rc)iq~_2y?d(tJNVmEx8}M zJ#X{9w_7_=w_+*K!MLnVGr&r?IDgg1H_WE0i^K2?1)@)fXcAmsxId$!p2u4SJqzM` zqtE4YwW>gOiyRZW+J=+CfVn2xl$~w4%14a8z^P7nsNCfOu`?wr`sW}SYTFv69J#Ri zhaMFqO8DAQw#+tUhs*ugDje4;_aB-7eqY(}+g<5nIf*whLsDkIX>^Srn}4Pp%%?a0 zJoF^Z2kt+nyj9!11OK1@;IHoUAFnn2vuuOU^ETJ~)8LH7DOIi=&4Vt3{&~)0T;qB!md?p?syJS zMi*pI5yA-d=s8+&7eq1@Cx3G$y*w+GYvQ9)8knJV>V30Y0fEvrjCmy0b%HYh_kz}u zOJX2vKU4vE0suc06MwSI{mn;HCYbVl*5mt6Hy7*^+|~^JY-f8n=lhG*0hW#OtM!LW zk6{>$HX)2RX_Ei|&h~I{5;+qd`M|hxB-ny}0e;wvU^EB9MXIKw$$y?&Nt=~jQ$e^` zY?*Adm-k+2Oc$U`EajYx1zfabt+xBg^vtrC(IjQAxHeU%bML|k{8$z_Y!IyP{?OY` z?iTR}p=LAmqh#yHeDCeiPSg=rCPo6r;o$H%bqM&^HE{|;HwaTris39+z7WdVFL1G$ zl||FJtgW2k<}#5g$A6w)RRM`r-{nS{p{{kcW{?R>=SO89lk-Hy21bwD#Uqp5r(AI= zW~8+6@MDxQg`*{Ed!)@1hU|FsOI}@jU8?;pR4jhoY08FnkFnZXzE-WvuPK6 zK^NyK8e@QK#vpiqVFhP3#|DF)X8KxzVrV)*Cpo#9MD%(*J%5CyV_@Q@jv{|IVqB$1 zlZ(yFkF_IqjaNHM!)jIA{u zhw$vb>y3boGcCZNIS<@lU`HUNvM~(oLy}Dy5ECcBS$6ps7C9=sGqtL?UWwXl5|#t8 zCW)=M)Jk%`XMg*AZtd729|3Br9w(<*_DO%3?e>m*SntYHWa~N-O7t2JW33>^>{ZFn zk@1=oY0m-JC$K zDRZ{b*V`@*5)Tu@03~8L67;7oWl~^oj-(+LA#jF#;eR)v#X8%~1$MER;IY=*Ur5T= z(vx1+(=jqwi_>*H(Pm>R8`S%Nx|C?)?V}S83X{q5yu6-`eL^X-dKDm9V9$=m@k|Bx zwk}`V_NB(~hxg)qm#Me3;Up~H=7{fP_bkNk~bj6h?1#dxI#DRXQ;@&(HxY;g=WlwkRal0aP`mu!SpBMdb(AD^%$3W(?AvOY)b(Mt$hPm zURF2xSseL1WoMJe@l&}M2IzC%24#Zfc@R>-bAezy2Q=&!h$cO<>3-{3FUyg!#D9=S z%9%~DasfASDvJfbk(B^q@tK@Q1FK(|Ty)uL!f}nU-s(CW%R4y0^zDubQ|!PjfncEQ zDH&}`qax-*GRIy=lix>)Pv!sLM*^MD*}eE?nHRrPwDJ9%t$m*do{Kixj%jla2&-KW zxL|l9!gCgUKigw$5`^qHfw?qj4u8Kku!Ww?6FLt25`8gGc%4Z+dL7yIaVaPIO%Gj~=;w>ETIVpYi9$&OGCipd<>z?))Af z{MgA0tdRa``euH3Ry=2_{q@h^=wb1G&bKRYA9(6y!9&mvR1Ua$;D0XDuy9EX*bNr| zH`o~|*f&iNgV6Ow-fE1l{J0tf%t*AXjaPw!3)v=zV05jJoRb%_*tf46cj0O2U^+V| zvo+=ycu4KeeZdO2blR)j;n0bXV!f!>3pBbez4Pnc@pHQ0!-Sn>Z{A(Erk{uYHst#@ z-_4rc!IMMHm?TGg7Jmm=y2I0Og9B4WJDAIvpb}|OOOSXuugd>#{4!dtto~`RUT`U4 z%%lT_X@|bBp^%ERwAC=xEJ`{o_uC_%TBq@df^~dgq@lSF9Et0ESKO$3HkUJ-s^SKddh3B$Ozsuf{aO9s zz8kZB!k+JJ_`h$q$ApcE9!G6$i5p^IdmPA2n$D*{aDRhMVBvvi3!E5^u}IIsAp8K@ z{>AQRj@F_V9nQg3Rze7aoqQZ6J(&u{!weJZAhEXQDA2d7aKPG=OYU!h4^=EqvUDL@ zGFJpMhKn8InEDhz1s|=-^ZGkwaLzo}-hXBYnzyNScNEGy6G!IW18`L}$IE*m(Lcp&n zs8?@ReM2dB)G|ZW;u5okqQv2{XKB8AS*v_GPq52Io{0VEbfQo`HA@=svObYk$397u z`V6hl%U*5g_AJ?H_h|Q?8rLZ4i{DD~{4gol<$uG-Q;H|Be=aC_9FHJD*F@MHI6v@& zpsl7r3=ht8(-e=OUnCUkpyJu+2$%&Fyyd*+Q>jz-_i%9`EpP+N?ej3EySiw-FYM-CM6d%=)H4 zcz-`YJ`KDoL-Zqc>V39nQ@4}c3VMMZVH>kZ9BymdVjWnAJkvB)CrFTySp+B%3Huce z7-h@E;V!4NhfKuPtR4$0k#nns7zl%*t4>#LiXTq1ojcToa6TFnYVIS{NMpwQ#yzD* zJl>+KlAEbxo7zcnKxezvYiR3JihNgG;(rTMclUH#rwd};rf$)1lr?$G*BJBd;7LN& zG$*7@P`v#<}Rjl8Bf zFx25_(5!!;uRsCorOTM3y~8Y`YEumBK+_Pv(y)p>VO+AQxQufvtXL+DRqgM0Gk^SC z;Euc0!cR4IVd$rZfXQxFfLCogVMp+oo*#u#7I0v^cYm-ftW{$M2 z7x3LEINApVNXOuS<$)wpn>pneB+V_BWHK0>sErfiNUnfz<%*-oR3B$#X@Jk???lv} zv6k%H>vUnI;Z&p7?t!wXgY|kv9e+-xn*l)ZfBtv-p!>)F>Nv#4Tyg!!je_EJr^_EN zp2v)>;U0%iHLh_7H$mdyG!?FG3Zy3t*s9IDF`K^PnA_A?qh6(5D}82g#C!Y&B4Ifh zp9EUi=rK-^`)ysg1WwPDHN8k_6RQg<4u{DcH@2>DPGgXo9T%cLXRv@`1Al)MgB)VH zI4tE;2Q`C5l1ClsCcEaP+xw&F_v5UMWj+kGyVWfU2B^~mDKPJ{6d(jZA6h)PAvDOx zZO?m;YzAikEV4J^_M%n9^#BfZ=|xuyy7yGC6MDmm~fou zdphHfqGOijW?~svjg$Aj#bsA1<=*N0uCe`+SNkDC@P5wDd`|;U`Y~92 z7)Z!0zVVY?8jJ;=9RrqhnmY9~kKq*VSmX;I*)X<>CmgiosOy8VK1vPOpH7a(>BQrG zTbqqe=ptZcI-sWUMSpjES?WoE@?SYi*pdk+9`JKnUK7dQk^^sZH5bgLRK5+;x~8!o zh|70*;_ce(63;&yw+RhCWkz7XYut9i?&fDG&W2#j1i2IE@Em704hqh>4lGX^!V+*@ zc*1?*4l?wD4X%t%*TW3A&-T7jFP1eqv)Yl|&uiM5IE4X(Wq;+)PCm$x7sxC?#S2r^ z5~d6-gcu8T>ejqf<@wNF^F=)yu++^j{v9CaF<*BXZU;|Lj%V{koCnz!V2LkS7DSy~Np@DVrY%!L**O!7r9yK2Jb!j&8gV#^DuV1dPAO+0T_^N> z$PycVo?D|75hlCo!1N6YH#QjUD}}x2sah}M(bo(4%K|AyV#0ZMyDRm1cl}ZIj&82j zR?UlcH|?r*G_3|Km!Uk^Pca)HR*nU%3$&q*#knAq1~~}r;oOTn+1aFK*%2Kh`IRbM zPmV_OxPP#xj5xza6?w$hgII}124-pK*sdlMuV&maQL$Gwl7rpeG{at?RV-Z;qihk= zz(m!ju3gZ-^d#{+=Jlwv{|Tl3p@`;IV*gfM|1O&0D6VPJ#{;9}nWRfo04srj7W9C; zO*KVd!0QHZ@CAv9&~ZWcdNG81^=-Gjqwn;*VT(+*t!p6mF=EnG`%Q#3arWVFuS=5zH&RVJU$ z@Ou|_BH^1{#nk&_kKfFSh&vXl{eWNpONG1tjw6YWDqHg{6u)(UO@9CI;B~bV0VX#O zaU|2)^ycT$hb+#6uhwU7Hkyy=jf3Msh%=+ACLO3*Im`+k-JXun&r6u z)!khI&RX0HPygE&qxXEmhfi9X|AhyswOQq6oyKlLue(A4PUbM92lQ~jJ4--2al+O@l1 z-a4Ln_GNXx_Qu=!wo;PMegAXr&@}i|SpWI-*wFWvgx?ERJRVf#W-b~GdwR#N%&AP# zr#gC3cz(w#uMQE(-7bqX>yO*4;@8|MWH4pwb(3|n4JHMr{>}Swr$_C|VByZO3%d6G zx8C&LV!h14x}ekZw>^>Jo;UvHxLnpI(_-sW-R~KW^4vMs9CsBj!8b91%#tZQZCX zYFEw+s!-oJx6~9RS|1-#a54J$p=(sl{lM7ZHEu1h>Ozg%DpwTkuG{KW(>=#JtLeC! zo|o3drmh#YP7A~KCkQ_96ik*ZRL{)Gux^nwpB-qbfOomb199kw6v!UZC_tL-1IOhMRiJ2<58t{!lEUvdXl;Nw2s(qd(5&s zD%XaXoRuh#y=ol1F7uz1sfV8Z*l^+1^HJ(lXrp+<`)vzWjY!?77Mgrx-RXwna6b*B z8&4A9-)>!X`O55B7cNd)G(!8zrxh>To{rO+_unzDXSdellq@%+XujNd8xw&xH>uBy zW_)q>J+W(d&9<&q(+^bs^O7-~6T9+MFFw}vEYpdN`*A6J`Gy^;UxHO#I4{Y)+BwH- zJ6EV&OwnAKk)g^zkUvr1#cJ!fZIUg9UrLKJA8ji+urlRc)7!#P{NB&2*4BjF&R)sQ{qKC1Mat-&sDS)~ zhj)L!78W&cFE8nQ%&Xj}Fv)AgF&ia|Qw9m=&DtJlb)3oCP)!j^L^TO&xPDMwQa zLhKG++k8FT^qlP7-IYiB*1UecSN9C})O+%D`1COr{t~l$rCkrY>b)s??VFgRymNM= z40kgBOA{rZr=MPp?b~&EUGfTz#g>%z|3U->pZf@}v%l^Tmhh=mBz465ai)6G=2e29 zMz@Jv^l!TDb<;AZuDH9&y(H*LfNW2e*`a^i&2lsE`XpTU@=!Q+|HW;$mJ6b)fg5Z! zxY_>&l*=#9QMGS*viql}o1@`YCC*sRT~qfRRq2AJIX_)O+w#h{_tjSz^_s?4nT<)x ze4LPX)W$H9SQ)a&tyBE|sMzYu=aOv`gw<8ogpWUW&UT#RYWZ@7HI9z6rL$x|-Fb1U zPo;K+nulYZ#-i#P3Dzu>MMHxEgd^j5C?s28spwJ@Oi30&6gN=%nZ>pa!%ZFA0K_P5~n7gLv&!9lzE zg7N;ki|sUgqHNq|D)t!ZIVQxlPP$qV+UA?fuQ^)NU^ zrd`qYXkPH+uKue#!tbwqa!BRuBC|U;j>Y#)TC@7`qp#P$b*Oc>Ju252+iDP0dnY*E zQ!p#<$ax1D`9bUYH0t9mt*&0ng7|%W!AWy8AMf`ZIMDv2ENf@gajv^({q3a#lJC+p zS|6`{oU%e9ez`Yy!O^q^UmuO1y8~kbPxV-3H5^ybc=WwwyS;`^ntxxsmPeLixy5On z9R&iH$B)_Vc0Iw@tT#dapU~a*M7@XK&g_Pi`mwelm%p!Ub8Wi0*ZTPE#E(62zLDSK zWgz$db$wCndClYZHr94}E)RM;b>~!-t3jS+-@6w|-LkKkiRLSEdm~zugnR2_+`lDl zC^oTgJ^4-J!^V<-LyS5c%XEb-Hx&ja4TjW5$;?{pJs{=UbXn>7e=Qn(3)}ma*B|>i zKQ28$tm^gP%1hrueH)hSuZsB|b-|7=FUokfmcH_mg#1<6?awQ>oE9OfgoM}c?h|jV zUl%mDKq$KVs^{Y^YkG~9xHq+0@7=3bQ2yS-*`@kKPfj7z`i|vU27{HPd6GWq|&5#jUD)Z;#3C94o=y5<0_l zqGHpk;42dqFU=4tSoUO9o?=8zUYwTAj&99~J1+U5?b&6O|LbY}D4g?cZuy6GC(93> zZI!Y?hCA ziuzgWb--4TvvSn7cU`33IVI})C_%dvu4KRQ!-to4M;jZG!DV$RTPM2sHHeZ__(dPNq>()t>~OJbEa*ZV!CHz-ZOz}lTmLM{#UzjnP1m|rT@yW zYHvRJb^g1Oy^VFX@taaxnp0n1jE}nYXm^ZW5_fQ?`yw;G6xEe6C*=8Zyh=q3#6%8I z{ag=#BR5JKLm2C0%QpUKVMOO3FT8mNQBjR1rG6NauEDYQNVqPldCS_7vaY z4nF)+RrGT1xfAJG$@8IIqGK1jz^J=Qc>Emhr$Z;BzFAM9n$GsYIe)m|MOZ?uUlq!$?0WZ zcF*ma+WDwiV9%q0n@$6t)%{Hb&+7GmEt*rT*GtTnxTxut*~m>1nW1?{%WN(8iPYJ( zqh3ul`ZRS*Z*|=T>%v;cHU6plst%aW-r3ymGUi2g$x*}6Pa{P|caAUJf2Mqn-r=j} z0#2uwB^)1oyXnnIvn$=inVPbt_p?vsXdQp-nQYa1&*y1(zjND#>RcCT%Y@jRW;%#z=`Z!JIT}abk`<$P@&uAt8uG^bFuc{B&d~;Cy zu(YsP>id(4w{ILoC5fLLn%|CCvEK3Vt9fRbddzdv7UYCpx_vr6Y&$;kUt`W9}UCNnWQb5z3V%#Onx-F(H%VO+i2x1^RB zNs@f+Z)znkDxW`3B;6|U3%@u*0(t6)*EqLHJ zMz$L3##MCe>!?tWs6+BPZHcB^+}66zIU2@IE!Z0~rtW{^`(oA>zdXKwzrLu?k^SG~ zw2e>6R5TH51n%rlzqH=Z+XIEvFCP_e(a?Ia zsa$ZaR;1&e^K0OGchL=PuJy+qvRA||!{1UmyXt*SY-xmZQoX~8X;J8!y6%+gPYBf+%1T z>@}BY!UKQ)2ET2k1wzwQN7_oIZ#2^-1mrKYq%!-Y~MkYGrO~iYqrHhCS3`qSJLV_`ReJgPX ztM1!IG>;IX2SMoU@R)0;VJ61~Rk~1QVG%(g1uu>a>Mkdm@GzNwQQ>-~03Y8qZRFv` zaYF5*DX}W4?Zid_3@~{|<-1k}faW0nJ;Vd7Co(-O@IOe6lK=|7ML40w`w8hP$GyaT z#w)G;ge}vWcYs(XfZck2gqTcV<=~~CKD)zEek{x=UvsBKs?v`V!Ax)+$3YnjI**;Y z`WbllRu@Uxfp;Aqlql-Zg})2B?j+H}z@}6ac8saI8e$fSP05~vIgMMM=ZQ0dxFy#7 zYpyC@Bg`pGn{|t@WGrc;GxH-TKE5|rsBtt{ighAk3XBI!?{5Di@9 zQ9eHYBdG5PM1R4MlByDTOjL_v*t4&R$NV?|lTBwUUW)MXUEGW+cZ1-x0T?<0{Y1YA z7X193IL+AavB}F-6653R@L?h~oI{CLN&FzjiD5xY5suCXjCg3on>9{Ce0&XFj9{)i zDOz<-lH)Ce1yz+f{LEm7|C03HSYbZC_J8PVbGCx8N3D|pl&i*>D2!!Kj^;4c3pI}6 zT*0KAu^crfg@?v-teF({8gdMnRBIS>%ov)V38$Hn8*9ZeW@w?-obAkrCG9xTOjrf& zy)7~@dn(15v>IAa5>+?sIcog4_$b$XPi}$Yw=bAu$%eo zb;*FSmr9`()}+pmj9Qh@a)B%+s=`(9H@Y$4gOS_+%ZHp%NYV}pc7`1#ii&g(&46+l^_!Lqb>BWGU+jaq03|YKgK%MFQy1fF)Og2pq3GfC<)KLL(ChJR2 z2)HrXynIq10k<+Os|2bnt46%TNvkqaAtj_SroBGd#>i@nCl#2MxglB1wC))J4fn>` zYdSg0q3)c9l+HnKiv=8!lRIS7cOto#k+?|pZYcrRZ^Pp|B%y#3oJnaEWK3?x_C6Vt zY)0Lsl?3 zpJ{Ra61|CVgiv@n|LIRDpa4JeIyN}opWMKReq1oExfn$0O%SgG;cw)~(%mD1CIym3 zxSJoyB~^O?SP*ox4>AfRolvDYC0Jz;M9ybiD+(spFgcw5$WAKoR}P)&A|i-pgp*=b z*`ee-CL_uMc?C$_iOvX*dm6hX5;9f_P%1lde9=VZe6-SYhOzTMWukPf=ki6A9 zFP3a&xS{Y6gn7#>@Fj-nAXG!Qjd_LeVW+WTk8UexCH94^oH5Js(w4UgbCktCpm{7hqGZ1 z3Hxtdxs-lMUXY_y8k^xLBsGcqzv~BaoU$iY}Nh93JRm~U3BnI8#61k8G z`OKAHErV;M3_lLu;W`<^gsjmgDYqBwj)&DGj0su%26>rLZNEj{WsIG;Luxa?_wSL8 z3{9(@%x8i+{g8yc8{NMHkH}YyiSDPQ4?}Z!P99@gUtf@?2!1~p&&N7R8+tyWkDcU1 zS`+DZk<&3H)@>gI6rsTYiMzhR6m)7v-eLwK+Mr*+->hC zWwF(_H1)7HGI~c^qUmo*TTIP;3)BNTG}WmVUq5z2`#%hY>h z_>PRi>P7EB-F_ScTGC63p^R6gIL>izqDO@|*Fz2nV}RX_3TqfS&~p4n6u; ztQIVFU*lim66oQtp^^0ofEr90PPN5ol>3>aHVaUS*o@j|;65~GaTS;(Buh>|4_;P4 zm-w*EEVB3|u8%Z+nKAeRKnE@JZM0E5G%aXA}Glg_(pAI{cL!g;8b+PM`PyGHwem4&E%3ayu+q z@XBrs>gDh{^_aj1nJHjU3OdM+CH~ft5ufZNgU);-nK96QUre|f#KwZ39xU+<&Ww1w zv!?DJo_g=NwO{QXNKXST2bNY93jI!cVaM$%y1!ZjGaQ~jJaOT9;wpm_2Y8;eCRM-I z1H6~uybB96&vi(=;Ek)$UwJDZfV^qDVveS~K+Ji|XRPexSl2dRirS7c~6=|CTSg+XLKEC;PY zPqc9kF`>Y1rVuLo!7F2je}HStW-%ZGKS&Miu=-D+e&tbPf0FWe7Wq7mlrM&~EQbD! zWkLI)il1aEt-4u*QsHFyV7!7>A7hk9@kWDw>KfHV&`yD*vWqh5i^Vtpq%5&@Yl14m zW&NCfHeLJ0x`))vJ(*@y-i)DX1+Q^}zvGO1X9C#B}urY2Ta^t7Q;G}Hu zoRUqKl}31MS(-KBza&M`Eq+Q8i|^3AmdORNjqup8#5Y9H;suW)n3Vv#^?M~`OUI!^ z0m|dA&bDMhw#~yH4E6Ob$$#C}fCT;KYsHdmkHV5^BPgb;4_*wM{1Y;I3c8v-DypLq zF_D~9ATj^9t|myxjC3r<@FXdDoUZvaF(D3!3+Xiq`)c2?dj~-BL8|$pSRU++2f?|U zOL=*k)SPR+3>+AME~Tf|@NYr_2nHi%K}wp*Xz8tWM;rL~-rpep80-2Au|r%zN^T^* z#jPE9P$dVL3V^9Q3?JV#KnJm5NYG zm{(2nx^0Jf(nwJBSC?J8YPTB<27qDq((%>~y;Y`6QJ_7cg>pe2cYBE_1SjSN`S zVw5Ik>5BnN(eXD{i6bF{Hx8IzOY=*e&=XZ^5)u=q%y0+WWO#>}f^j+Mwppymy|;;(+S~WPi-VXNY#Zcgb&0SpRjfHIz7*; zVAUBsU@uG&u53*+9D|D_fbMkrjRgnkO6c&fU0NN@4{#si%OW^TH$alFcvX|uC+?$A zDT-NN!bdb-r|XLl*mq<_U*L&W$Wlh=t0y6kekSrFA14j?u`?MKoW1MfDAb&kdg5Wy z?brIVO67XdqNYPf?*b^#pSO=2I-v*C?Da1I8OiYca~|QVU;us@!9%Zu!@t$uL&!pU zf3B@{*YaYo0`4T}RQq8aXo>sKYGx?a2TsWMO7VP2f9AM;4sdtEGmRy0fih$%Z=Cyf zS;*Zd`u|Tvf&Q?!)>P!F&mQw`TQ9_aM*PoSOht)u)Lceg4pR3hm^MF(KBbaELlw=5{ts{``yV zF%PnO57L4w;?8zE)79WDluy1%@C^SXqIkssPT&NQt`g5>XJ~LZzR2T=#enb&Y6(CS*mhz2bNhb>fjUOB6RSIJ2X zt0##NXVqN#ooR=#?t^wf>-lR}unl#n@^%HTY5?dQfD|Twtz;$CV}IiTc$ke>|?->5bCJ73i%x z<&Ms1P|W-0RhlZhil#cC;MFh;%r$u>{`i|X6B}^0j)ao~7V67kc}aBUm%PjAlOAJ0 zP6r-#aD{7Wd^;qTNl5$^;Rm(glu}T62oJlE>!Q$+R5(tY*{!mSJ>bhfaFXB;g2TVb z>zJ-OJc?39R%*OnoG}W*^3NV(>EaYTps8Uw4AmnMR_|~B;|1G%S#(!97`OwS$~F*| zOUpCMNu?I0kC8gG04a6jFehUZd_JXzHg=b*v?G5xpf!QJ0mHsROJdWoPNOzufYIJ+ z1KJ2Q%mFkpGerxq&>e{=k^e*HMXC`r^3BT#Gg@8Ot^-PT51 z@`rHf^>O$&vzo0WiDF0d`goZhbRw!5;xp?kcA_pkWm5}){GFcOv%ksHPUD_DTf={G zCd{N4P?gvPNf&L@=M|(reX!SgmDaZ_oJoy9UIx5(gjfUMylciBggvm&QIMdu;HgtuP^i%@c)k2!rI zlk6;Jj%VcNkPL{eGBi|PVpI;=sI24*<$-{HE1iXTo zY`!q6`^9gj`K?|IU)PFKz@6Q_xokYWSGWcbJC7Sss1+56qd02?s@nn>RZVMN*w)bC zTn=WaHX-m)|A;lumwK8d7)rBDQFbJJ5zh|gh~pPf9AJ)M`S*3@gYYxMm=P#(}dq z1ao`no%GaUfw7oeLz5F$4U=V%wgV-J4GrBlfP}H9a@m$)1yQusfl|c^oi(%Mj3Hkl1D_oJ;D^fs#q9`-t6vW=&Z=17gkvOV%~bLmAf1j1$y z$nPL)R3zXr{Ng-x;Q{2?dyG0X#fb{R?_PO+x0+VM%x{Cr!#<;xDFx$^ln#n76_7*U z;id$BzZ0Gcx$3D9U{0!j-HZ@J!BcrTUH}4|CEF3jZ7Q5;(eInD zXg=EeCtrM@fHd--#sir@4TPi)v4v!Zm#Igm9v|2TIS_|Me>yA4c7@KAFE$k53>aP~ zXbfll`HTJ>a(Z5~mH8kw58+|&a(AFUXDR~cdu%h|kR49&ZHOTL*jUI{;l8m$xm5xp ze;t!wpANP~RFIShyaeM*F9)Z?{>;#YQpLV`xBy>GpXNKz+g}ZQ#lq;$S3S7aK*@8y z8Vs>y&;}=7nSM4aX&QZOF94CVU6wJV8tyk4~_a`>tT+m=VLWa-&9KYN#7f zn$;{&izoKVW#YMZQ4O%0Z$Yp%Bu* z-fjA#${AE7#(O!3)Y=6g^rsUjD!=_ESjg-+?1os1C;{&A;q!ld{{>A6 zqU1Q54vYZoAsJn4tLVMqVtN6(0}uO)z{SW&>->bO`e!z72qlW@qhD4Qco^Utavt8@m1M){f zp8bk@q|lq1k1fS{gC#k4M0ityc${PESDG5-!GOa4Z3GJTfpa9fdZhXQ%iNRA5*zBv zLSJA{pUJQvjpYcTL$gTn;UsLFt0i6zKGCCs{i3Wpi>)MudkNc=@&i!E+32Vr@~F~}nuk@D{XumMTxz7}Iot`7#d8g_N@-TJ?+{B1C+!F6{%#Z` z>@z&<8);=V}d17WN=`5zbQzflFF+ z1;SZr4F{^ekgPXNm8}v7wx8VR5k$~PNQ4^3&1SP9U ze{{K`q28koZ%+S;|M_u$K_V?W7L`O$YIt?7i=Y#ggeoFo@ueauB@D1la-_y2uubm@ zC$hY`y@U~si=<@nm!kj+w@i9Lje&>#an28wM^diXN?#l;CDXU3)94`;3!~KX8fjl zC<@jBTC0U-eONif()g?6Y@$KJYYiiDWDTi|N~3uu57DfSOonB-j@0~1S#v%}T*+c2 z%Ckud>1Tt}LrIn1HDhlC1ic&{o8jQ0<&Zt3r1BSRKMhN+rzJG#E3D=t>1$yzq)o~R zP}PTIvRAK9IVAGjOghlF*I?sJf6AfnGWEp3hEF4Jn1^q+X&~`9*fh|HBa;m~L;-C) zjP+QSdnu?amP*AaYH{F#2ntH1bTsMYXt~=|o(8a2 z@UXWbVikpHlpD&c;02AH6JH2vvfPe2a9eLA&N7|^yY(oO$B^Onzm9mNb~5!swGEBYS1Se-SPMIS$H1x5DuVg4Srk|Od*qQvoNuU-T`nD1lw<@?A<7!R{t7Xxd_ z!6BC6u+{^bm3Ww8=|cU&3L!~A-F}3j9!a7`;aOjjwXll57C#qu@9ceSH0n>HB5=Ts z!Rnq;;P-Z@eC!h5cY?+e;2i`!_6u`j6)kFso>swD=-RKeuMy&{T@t`lAp`7}oZS}~QL&3qY3Q&p zO2RTgQNP5n8kSKOct{P<)PgH`NR?kFB~Vf-rHsdBRNL)Q8GwHT(w4$XgW$Da;^UA= z9K3zdL%CffJ?AEf&4L)ySmNr}e~C|Eol4MJtUH-3t@Y^Vaw-we^$UI)LNfq%19-zO zAtz8?8k7(^bz||owwrx(FOl;ek{9@a-ZQHhO+s=2+ocDhBzP(njuC<@tdv!ha zRMq}t_kAE_EWc@ct=#RffIHUmZzefBNl>grW zW$1m-zXlgP%YSq25i|drf`okc7Xe4H{tt2aN%z-?FGi1n`ezZf3QjE8=Xe2(KmY-* z@QSorim-8xp_L<_>8eJgwd43?W?uJJlj;RHUkC!!K~L*8XEF(O5xTl!x-efPUWPHW z6KZG2>Y3)8<-H(IVSle(&cd?!RY8-Ao_n_;mx{TAtydE$gg75<1c3zdbK{Uwds7he z2yHsD?ST6kAqub5o^+?^z;Oh82LLf)TZr4y*vf{f!XB(&t0b^_@YKgUU85u^hLiCD zIX6ZBdy*TyXZgm;Bl}2 zWv>p;;y?1N36MdM{(VKbyC@&*p9q2cb6dvSld#6u5U|F-5h4FY-CgcJ$XFFx)EK)Io(bh}ICXow#ccvyiQ7n21aL@rY0HyVQqx z@&|NfGinvVa4BXNlP%*n8iqNct#l;K5U;Fa*V4_A$R>Dn=%?|a#T*`Io?=1QH+8KM z52ty}YW7l)d720p$tNaJC$Kl+dZVxhil_EZ7=6E*mW+IHk=;twy#Lsrs&tO5vF(Cyge&k@{9{GR(uf&@?ZV6lf3<W z6{w#7&XA&Z_-~+_HVyLMzJRRNLrYI?^&p={rG_GCKpZuO-? zu<-C zGp$O9CB}h&anr;yGeKfLf|@T_?fw{F(7YJ83D7cEQRy&XxZC&*arU3i@SA&08seh;6_)m*#O#hSO9xSJS2{d6f{12I6 z$NrDWGtT(GdK~=%b?*O1i@E;4-{*(&|WJ56igUcP@f+ybI zhL8<8yR55T`ExF_@6<9DQ8Og}({o+KFlVaV<;Z6=z6>?}AWb$R3wVI4zp7o#O{Z7P> zH1Z0q`^~A7bC+&RtrY_5Bw{=MfxGWtN8(#~=KeYq#cKfaw?v7!uVqNazw#>sqWl<8 zH`8Ab0!YL643OCyM<+xgN6jLz)NCwTi9k9FIwuCYv#D|-#P&@fckTblDxYaMJb~Ee zh&f+=*#yCGZiD*WFwPP5O}Xa%)=ExQ(<`$d7+g_sNr5}MzlJRt*aT^rB=tgrtt$*N zQ>o1ja$;jSKXN1k!O!aP5NvM&XvVNu5lXm6S|LOsVv^u4RL*sdVtz7EJYHQzq)h?^ zsm!&3$~%FN#CTuUPLy1PBiJRgW~GybQpT__E55*&VC0&{#$cd;NX)ut>)xf%++QZe z0^|A44qa-|#yiie*ypd6sMhVlP%p5oZZIRa>zIs9_V0sN!fPUxPcfh>@#{pai@<~SW2hglET zr?$FVukl=;T31)-|0i)F|4rQbTtTS+lCx4s?!QLzC7SV{kts>?A2cAv{?~~Al1~2{ zoeY_{{{|T4PX2}sNB-mQ6I+}!bm8cgw;iU;e01{F&`_X+0|V&q@YoWHYR-uKsG&VzR&#_U#KaaJzuv(h z5YJ0?IGiUG%cQO}=dT%;S#4NY2mo+?a!~f!Vg$`CAlf z+Gq5iYYBu|x$qXzzPr>^KclC8l5w)Z`O8Ai z^T}-4N8V60@JRoW1Qq^uA~QciXEBeff$pJGK52<)ky-7oV_3eHa7FeIm&(G7JNm>E z;wnhJ8kYIgIln5@GyYRE#Y#;ZK9UIMAC<*JYi0e7$km{xw(011m3jG%oDgOIS`U~+O}BBXfm zxYgzU9u#xY?LP)ZQQxIBN7gx|D>KpUKleLKX8_i0{&t+n)L#{)=t$4zXShD;qOiOV zXJKSiH}&))eIs~$b}dC(-A=Bn@+NWRA2~n)lNFXAF5x;kzS{4MKfg(@hNsf9xxe^I z;*#C4DuYitpS8u}bmUMxO5+Jrs7rmkHNYR%eVz(g)+mx@EJH{$_2Rfdx73eAoo+{RdZCz7L9WsJo$9=@Gj{pzy+agTltG-v;>9IUU_7602Y;$ICW{edwOs)+uEd8DgC5uXDqQSjw+BW--LkJC!9Et06vs9bXY`n zPhinE1|{nA(ZglpH}Q?IEsBP)aa@gpIw&t3Rdnz1_lVC-d|eKdD|jBAb62sFWi$Rx z=*^B0K~I|0x(1vTTEA@lZ@-4kRsMcrd6=r^=Y0~R7jjp$_twPnO zhkb8ZV>|!UQs%knn;K@mo~XHvIfY7voAcU&vsD=~GBX+6aiGbN+%UuPD6YAjf)AcG^2B?}Wo= zf_3x7Q)zTi7st{E51P_L9*5gA^PG^fe9*937u?SCV6G^ugn|?+G4r)?6ApCe;DPl& zAr{gyYbV{SOCy?&jn*sKwZgU%@W|(m@^aoD#~rhxgXv($esET0vV2=NYWt|%JfpA1 zuS^42J|0^;bFO{8U4Osnc5B;V0Y1?NlCIr=UoS^Ko&hS~pVQYXGFTkaL~&a7Qr>~$ z=W4s3W7^1Zx@1#4=g;57UwhuO^resC-_zfp+ux7tw&HOnIyj$C*}?2(PYFi$b|g=> z-}d)BqhHrz#H8HxT#fZBnn4=0=y zY8`%&PHWUpK|5nzq!}MybQYZp?71M0+~^ zjXQm_D!z6S|9CwT|2pW258v%lFBqb@>-4I9-)u7kQpZW137zgEO5;SxkxYgRptWS|9RnY`pdNa>@9QqVet_ZpF2DS zo}38H(NBPZICO=PH1)|tw*Ol0|+g`K?vr1O=JS4Z*f`yz_+t?%*5b61ijI9ua!Zq40C?M{jB){du-{0&RAa_mpnp7|Gw*l5)}V;L!tnK` zK#sEGuj50<>F8u|zhUspiXMlwIQBcL90yd8ZacFof2 zR1l5t-;mbNaX`udGP+0vYwx>0g+xE>DPdy^ZR>v!7JkD7a=-1V9PT3C*~h0qM;D8^<q=#!2%7o!h z{48znSjjMYpYD8CV^?-9{rx<$+{6E}{0;Sh-*u$~K;}kQ5fw)+rrs`9YNHPg}QnF>Q{aevFF15O2bS2=Z&4(3??Mmd~)V3z5h4- z1;UOHfPqL~JkK0nYXrR6*q+BwKOT*+2h|K_K48Cg5CCT*ZvG3MX+vZoVhc@lb+u?R zF^_ibvjsmabMVxPiGpsSbu=Vh+t!d4dFlRA17M}$&d$Yx3c>icig}^Z$(>d~E3DE# zj~_shX!zxz?cOQblLk>S3%aDbLuwK+51_OIc(Ed=cXxdSu$t;eF(Ogh^GqA~Cc6)V zQ!qh)?L>dhifR^qYfVx*ajHo;M~! zhd#b`F84{U=lC|8(r&%aXw>eX_E>D2Qz!NDb5FaP-^Bb*JaWWZ;es&SRC9UyI4etp+Rf6*_4NU31 zi0`1aq8rJB=1l8fcKe?mUjqm5vwPnG#v};p0)DI_%c3Y8{fIr5#Tb z{kFkzE_*yMefUJSI9*YEoD}Pb&W_Sf?AmWaF0GD^0wKFtx}bhj`#QX7KbiF$ERh=s`&`!qX7BQ}^VUc64BJBbF-Bwf0X{}(Mtbo;}t!EMc zsE0&un&WcfwV}EvHQaZAcW?oF_qMC^@^iY&uV0^%jSY9#Z+nCqU#@L?fL)jza=a=& zQWHoRL<}M$NeP!2px8)~*|kBw{@4lVkAIn)O|GyvgQ#md5C#DsuT@Lq$0FyQ}JH zzhLZ2M~VkJkB=m;7q$0YzbVl%br(FN`h|o#^YX?yB+;veK zjY>wnRuKWF<#W)(Xe?%cI|MQ#D#BbhiYyU?RFfv3z7&y=)(G~Zu1!Q52e;5(UR96UM`tPVJZZ+I!3xC!{GBKx;K~hgJGB`3rm2Z z_N!C-a-pbqGSzQ>z=Q2mFZK=o40xU3PT5akf{Oi_ihhS8VrE23LI@u8alI%M+1WR& z%NBh)i2l-+c+UqBXRTM8@O-+-(V*j?TfPy}-c$}yzFb0LB^iEPQR>N5yd-k(y`waP zslHKTIZ|Q$)A3t|6v#-{&t&wtbKE}eljNHzd+pU}0K|4Vz`E!8ZI8IiZvZHnfKVnJ zUPys6_ebg=O_FF9TltA(ko?TF-;%vRTCs^`{#A>S)9lii)Df2F7t47|s&5;$`A-(Z zZEcCQq8)IYVQ2cuteIbuWYwmb`37)Ml?YPKLM!t$aqZMgu)K%Wd!C*B)P>|<2C3o! z)Ne1kAT3PVfL*Q6_fn2Pca(7T22La5t%ML-Wc3i)&|~Ur_;E&kLLLtg+w^Q>7@o9j zDcczL2PZf^EQ0}>g}T*+C>s8F+3>_#spDU5*Rsg`PR9nTmd-OK&2wnd)upc|) zn6w(^?YUMT&Ti${74hrO<5$lM@7kBuOA^p8r`?Pt+% zgXCYs02bQb-n@emKY}`*y&s{F$Q4yZdc8)3>IYT>Bf9(E2LVTl_%NY-V{+7W&dr8Y z+_^s$e`L1_#40w8(bkVY3=PUX&nfF6-~R?Xlo3A*!68Ex#)sb!nt-5$4vI{_UqdXB=8cv18ID^x*ndmRK^t*A1x|!o{*ek1j zb&f@a+y)NBCIKExR{WamZFaOB@;f)YRmpf8wLdHB8XML*qpwR>+_ta{P)uwyluK+= z4d4sBhCi~NZE#a0;xR!K2`r*OMv+9WNrTn?DJz1ptLqw|^5!)mK*1*JbS7m7N(08S9bWzt*BK)E5&iwh~+G!!aivt?C_8$GeR!8 z`$EK~*^OG6F}in0xba>W24*)`^p+X48VSqNom5ZxWrNM?h(?n=Bz*9@$ z1|~R|?1PTwigDFik-;7vQI{8(xPl}#n(hiAO`1=C+C!0$kvLFc1Z~(lyQxPcE?#`? zj2%H(xhPq^EQP_ArM)D^nGrQR!TRlB^4>X93VeI zX6YZ#=AND$I--1tfEi{huwuYcJlTr3giULqUmOey{=b;LvXC{3}v|IN`<%y|vqFVeDU zbSV&^yGK0c4E&`F(%Pi0|GWDI5>N}p*bFq=96(bvMd91jO9T4A7;e4;h5;Pn8N}Ef z)N+dOFWS>p@JCP84D7 zx)l8TH%~MDpSUdXH@UH9^g~;t#AVNl1wPh0=+U_|gRMT6?w7$w|!#cl|nfWHMW0RLDF zc6;Y0yL;wFc*UDjbGV!Ce+6tdZ-i_Q7bTyo{a!_aIddiIPXqC%g;GHOK~O1U6k10L zv(m&ceZRrHlxZb=dUELr$4)sPG^4j5Xt-&XKA~}bVue~6zK{W?0|%L@~wf6TqAh)A($`r79dY_#&F>1@S}Kp=a)jA==lb44iYu zk(r5z4qG*4H<{lXz$a_XyS{jN(=f5Cn51=}xi@pn4z->lEE{#jeF`J23d!$INsqJ3 zgCA%1AMaOn1$~;yDwrUwA{9f}m*+?2r<;h|3@z04q;G(p{=mFi!7=M8BZQd9$5?i@Z z7tfQ|CK3f=ek?iY4XM{r)T33j!A8c)%48jKkVt?C<49y=(R6mACg2WH#r$sCq=xN? z+dS;huY4K7&5CzU*MRBToMZ{LD@<mVmBpOTU#Ybz76 z{CqG4p9#JNeFn%)b?Y7~Tq7BNBO5e!avMDk!n}uJn#Cac@q`FW=`bDzkb%HxlERnm zijd?e`8$QwXD{$1ecCk0T%=eKQz_C*DPRnDZ0@0a72t`nQ7(pa`}^3MWJYI_m>p+` zpYAzvDF$;JI3KQP(; zp@C)b+=E4X6Dg#T06*X)r3f=?B;_Zq8PN?t&CCc(uE7`zMWT0Pggs^czQi3iuD@Al zf;M#i92QH7p^~KLteXK&rt`61LdH}6MZvldmjGPbagZe8AOuYb6E>;-ZxaDGW9-(S zkPuRynE=&fO{{05h#CIDU5m<~-M70!HiyVY8WeS-DZ#u54y_@98I1@t2Z3)6WRaE{ zlU@Qs`3#usc=MuDDaZM9R&M53KPEu$bj;=q?w@!ZMbpIJC5jnQ^P_0=gpT`rv+C<1 z@4pO#y%{74BTumOehWvCcuA_U|q7So1KhF0brLC)mmV%JPgq;-;%|dr`x2_N;=0QNs z))Sw=ig1r|@7`IP-bOY&((3~0;EXw$xB}~K3WgM$BhAGy;llWt%;$H&SVDXnropA%AtR&I=MRXcyhN|2^F`^V`&}Em9eb}1RC4p9_P)ywF^ABDnH(5`> zYB@32HgBys!jn7w``QsmG%i^P9B&dLe#={ zn!DhiOQribS4xbsx>nQnWs6_)pN{<9-{p;1e&^Ea$JZ1qAmj`UBb;Chz&WTu&#?L6 zw>2MzU=wV%T6u%@@(L?e?`Z>95gN^sGS-_tagj=Lw|Bo5nLN6;GlrOnA>$@7TmjGN zt1g{=#e*8s$E#bL=%dDPf~~9Tm3>{@zaiq$8jCf)ugZ3ZxpaWS1}$*BG*8NlvSoAB zJlRRA(48yXGP!U-w)()Sq6v{t*!3R|1;$LqldM%5{mKYvm|!X3y9R{x(=Q9F@HQgU z!}HJ1p*7gK^Rr^C*UGEvD5UTUga9Snrf9t-jPv4s7;pk_rC@CBR1-6z4&DzCu9emCGH;eJ1-6shHPat`2Z7t>T@)+Dw&h5HSTmu=~rY&bhvWeFhq98C|kEGGBPH! zY^NbiM!`>W>FG-1kf!4+H*3=-OBc952MJY05@~kI2)v_Lw3R=I2P_=fC(f4X8&fUi zV196G4uPrD?@9EG11YHRVnK^V0p0Pf4&20=mKgUR2(3B#n?%b5mjH%-LH{zf+kw$X ze_r6xpgO!@SrJ+xq&3Mb#gu=F$91GxMQYX&yNgRVKYmITly+o>Zl<;*tZ*@yoLmqP zXad5b4oOd0u6?LFjoO zpH%?<0mu4GQbObTjs)mts3B3R^ZM?XkQ*K3C zPq5oj>j67pxJ|S0ZhE%>!JmqA7b_V*b$HZrb?X=z=f&aCm;&&rZpm~JIkbD*@e%L^ zOl1EQAt8>fje({5feqc;AW*s~(nP_(E0{*r3`g>cfdp_qC&_2ohoDBI4%`6B zthb5F^}L{WxwE1~?wn6h>-|_Mp3}!3$lkrGC?3&y>FSs#QIowCmV=3(ocJQMEw?3t z;R*LzdDt_iS42u{RR8XJ*tUoB+4rnt%j*WQFuwjdd$w1|=2TfJ5CdN(2qp+Zf5Wz5 zt|2D|k6^(DUIw7Xne06fIgzvulvyM?o|m0Lui?@T2|6j4WXM3E*AYj#&?%M_vT=cy z6J|Pnu`+bjDZ1J?OuoDDTlaXLOL<5Nvau*`b0 z<%Ja<@gW6K5gf6Ufe~S;Bj$>t^kuFWz%cWr1J@eUjHb%%?_)-e%k8s2@eiQx7*3{c{_B&;P3;b$3#oOjG*-a8`7u6+p189?2ku$j|TL08`E6$>2~d_R9RI z{9zP=VW1iHr%uBPDWqQL-ZV7>OBOUYt0uuy$yNlt*k*xuJhOl{BWN=` zAH99%VSV144Ci6N&hy7-17((2xEU~L@4j>B z%`?3p&Y&#RMPn+SwsdLG9lO$_EH2kpBCa)=FmquyhSpqEKaTp^fG-j3?U5a~ zN?NCL!BK{bswIwspT;)}$&brb{bUhxg$`&e?uN(4Ll&@mq8T{J*j~LuN+Gk8*y~lj7D!kPEiwU>dAl|84r)G2TVW zmhyp(I^ANzzjf}WC9C44wjORTF_m%3+zT>`KI73u@z}ckI33~pvYDf;vdA@r>J%Vk z6$`5h;V{KJ4(L6ld#{mvus93M(1umXS#RjBnRdcO}Nx=<08&(Cz;r&l^@35oPt~2uLIiq66r6dof`pre3 zBxs4*1gZ@hJbJ^@6tqTip#}&2$uxmVE;BtaFL&#*c~qh zU;)yt;WfDL@yg(inI4o7$}Ee;vf3d@gON-Shnk!BgH%Ls&$ly|b{ERICCfU4toezv z)kv&U$Ew&`c7-Ev>e6K*v?+1bYc1Tx^tQ(G5+c z#E?09>C6;@~Wsv&r7c*>7Ci@M|%$o3!gd@ z(v<5(to*&}yND>GumlC~?-o!&&PvaV3e7(>f7N3dQZff!ySZ=HeR1#4xX)e$d)#{$ z-n1XvFfy+rYz1~dMYkcTs0(0qp*6x9vIqQXKlb9W&W-0&gg&JzdcXc=+D0yn&i`?= zBY)LVr)*8sIhAYyvJ4Bqz$r*&CKL!9rUrlG9szY#zBV&r2WGF3Qe!OX(Pxr64@OA3h4c_FRx3_+`l?{W!daro5{zT7m3&W3mduBUVyji&s2=ZS@ z_HiT_5oECz`cAK-4FyC2-EtHRkTEdi5zJ3x@S@U>SV++iTM9an!_sV~Ta9Sn=#w6K zR->mJyN{=k@p_buCrGhnaH`z|spdJ#9hq=urxs=OMbWVVI#zVza9l9-HRrFJY?~_5c z_&HseTo5KzInY7k#H0gEW$xLB2BLcWW25e0dTWXcyYFB7RuAi2zIU~P0{;MScG3=4~$Ur z;>yokN(q2@v#Y8bMeR>34->ArF%3@iYZ9F6?%y@j;=L}Bjfwe``9Am<`@KCB^p#&?VEUVZ(#VEI zuoxcXk&LG7E&yngqsN%cX`;_&VbLm6J+Fje->xfq{SWy0wTVj^m>n-%_&vUKhD1N5 z1h?>J#yXN&5rOVmf;*#Ca!S8Nys4oCM?Zjs1Es9gC_XGVF0$u?-xF82` z$;i{1bgG&rKd~7^^ESQ1ePtvxsMC4Krs}d*MbE$Jk2bYEBH_I;}%pxG?9q zMv$P%{a$Nno)2DX0>v5>eontMx!!L>fNA;h$~#rPYnO<-wX}b>q+ePJ4!XdLPtQ-P z#a|#-)pT`Z5@Xl-i;Muy(dvL9!}uN$0_>L|-~;u;5M1~X<(C_Tuwc-iIJ@0YYcWrE zvdO0>lR<5nis&G#ZvQ9MeB9=yA}Xqug+Ly$arYyusno);^2vr#Pul9r!mmQxGpKe9 zbG9Q2*$-6EzJpltjzP_fcgNNpbO=GOHqn>o6sV=zox&$m1h01hJEJNz zKeR^_*ufFimc?sNw+KhAQcSQ~chnbY=hxyoHoc?-vU^onG{Qyl3Xyb+XN(oT z-)Xi2KA;490EOQZ0UlE%5^<3?TXTzy^I9I#boiY;5!snSw8}lvQ0M{BaS{pC9jyaN zyuH*nF4y6-0OMWC`T0a7QlzMUZ2!;U2D+emV`ly2%5ZIVOr2>iPtgHjjg@(!xoPm3 z^j>zJvT_J}XiKJ^6__Ymzuz@$>O=QzQ(R#b=d>Y))x7t_w#)ND@vOm z6fZ*O4fPcFGOWzI>aY-iPMx0j+t%3u;rSm>D}w1+K^d&ZtJ2&jWEaYC&&7@HBAquK z?GtUYJ*|}%wx#R*N;ls1YMJE^9=8lEX0RWfJ&cHdn39a37axTDgau4NYD;LL;cv7R za=nNaFg2f;&S;#B&F>?txYDzgRGsBNeFw@9;+p8+-RUv1SaoUut&@5iodHg{Zv7#A z>G|faSUx>YSu)9Z<8PRN3OM1eH}y4l3t2v*R7n#aLg8Xzvws2YVNdpYjKd zs}Rf&>5d)VUvvf)9bcc56|{OCPpw!{5u=~#E=DZt27$0$wan*9P(h45T!E1vaEDA_fAWfCX)I)r4}3mq5`FA z-5^rXHTgUQ3M}e9vmI23=FGv1Ur`kUX9tJs8-=fX zR{P#fW$3Oe4DtUWrnhVVWQ~fFrUmh8xq6GFrmp}2r%uDVyJig2t%pAmWe zv*H??9Cgxl`(}jQ_fcH+r7`EhSFv4;viXnfMgMLYUS4d}qDC3)<~QJ9VEOe$QWa#*0xQujAEOCVju$mPITK35kUW z<=}w?aPU~FE%#t)GKY~45etbGtR>~)#Jpi}Hf@<*4NtAvkm3zB+Voo{8+EJ5lvZ>p zC8C`lbs-8sB4y8aoH^s_Fj2tHYpT09;O909=cKnP8gfD;E0D;aP4Ut#E>ZJC0NrQq z)@(KYI(I&)>}^)aE&K3H1V*3rO1 zi1ntVaY{QfVC(EC0O2eH*}ATNQnN*zye|bfkM)RU0)kDxL{!#6-nG;Nore+cVQU3P zl`aX-(v{cil>L(A3ba&HL?Ml{8*F};CArr0r@lwea0|WD^-bD1!tOt=;zX(mLEdcu z)i1$3RL^Sz63idVbp~Dg;m=6I)IrJ|MW|_{DJTDYm?}&K_28i3fc0gquKLsMaoR= z$rCLm`11X=bBP0j%_-0j)NJ%z%bVE%&n6z2%_dpe!{ZSh$D!nS)9$v~zchLDb{snVL4n9|dx)aC7~>}!s7T2~i#OKfxiU#2;b z_qu!dQ!7;o<|ulyK^hcV{*3rpRSq_u!0zhRM}(@Q5B`EXcZQcR@js715O!X_NS7c^ zITd_k0RG8=t(P-VmxylTu_B77SwDU434dRR)}iFlJh~+H2L76l+q};@QFbNB)b0vT z19i@Dd<$aW4bqYISsB_D)CxKUq~1QC?^Qg!tr^rIZ_u)j63s;L_1RZ`FazrEbkjWo zcPgI{>JW>=wqK;wo>V+uCdOQu{JkRigG_-3`FLE({Sr)VD80Sj3g+a zOa%1|rP18uSZgk$l<68z-8~UcX`3;R?8|@dC>J)kpzVb`RQ z`zJehOy8#QllZn$E96DITf7wp=GfrIsZ8f_`UrMt!9isqxChWm}TdA z6qkf$ea~39nxBOXj~^#hxY^}EZ5B_pMn<9uH2TV)K9F%joY-CgU$=UfMWPlFHJ%Bv zTv%MD=L5Fy%HuVvldr~3YUTV!XOAW^fC2r^dX4_Om7AR=hTaBYm?)$A9GE1t8Imv_ zaz}|hcld-0fhWC~ZC=boukcMPv{3#?5T?uei8^XBGs$#qQf4e{ex^8m<_jBoLB_;5 z6g4U{3QWPZi*zc$^6G^GMMC6j!G0yzRNQ0(;iN+O7CZOiHk9HOV=ziF{p~58rh6qM z@21#YEY|BVVRdB}M5m31PbU>JF_K0EP&Fd8zupM=WD{v^-H-lXd5jEFXx??2U?>1L znsuWMt1Gq5EJ56WUvg;vK>idWvnInGPV1JbcWvm_>xFRu6XcL%{c+ym_`!vf+A7b2 z=ni?^m2jpb1Do1t^emo@bF6yC6(rg7+D-*y@>f-G1(}c8(ocfH6z`2iSwB%tCTy?-x@yeLp^B zb9uwlwN2iOQ4{#F@Opm|v={+Six5NrbIw2z;*T&1nsEWQ2%m$b9G8JUWD{OYcSmev zk(o4QHshpX|JrF9TH3h+-g9oHHv3gE7<%Leu{9yUZo`P@uu2)#RStt9)%@T<0otW# zz1jR4o6Xn*nv}Bp6ZlML!;`1B#(N6Vcf!mcRyAUWZXd4~xsx?y@Wm|JuqaxI9*$6^ z8u}Orm>5RAwIj|pu5Mv3m$d;RUI!PKHnaF5l=jVn1VIm@JeyFo(=unXrxz!Umd)0X zO&$h7bHCXizS^QS%xQmK2G2`b1Y6kCgvX1OD;(Kv+@RoRh2P0D78#J)pYb>SGncam z*hK8R_SRQizCHnd$a%1$q60NO<4{Dlz#^)jzhU9eR-z{L9*oW*sh`rgUG26!#kQVj zm$<~>rr068{VD%B%WNN}!95m$WP=}Xh_22HaFwhUyXP6S#zm28r7w9O=mH|qHWbnnI_WBXswDYKiAXQ#!i?*A zdOBIizYdtulC+klcO~Lo)@Q@*Jv3M}!s6H*^jy7!M#x(svT5aK^0Tf(FVB&KVk9f1prgF4X0-f;J7TiK-`_ z@iK_bsBK{SGe5-@1)a0Vp-A?r^Pb1<`XX}hGv3=HS#^2Tj-K2i>5Urrxg;;A`6Q1l zUOn89!04A*5X`;W2R13@JVli=fP+iw`o4`W@0M(A_CKEK>CYOc3m)NZ~bK0&XT4m9h2aA7710NMgc_4ZQ3$ah2# z*$HC2eafW3L9Q(~=nKmW#?6&ROqEp6VTFrCs`_wiQ;#dS`LE>WOcH2Q?{hDKx6hrL zAvzCF(|dHMlHBaTK+Kj4gQ93|SBL1+Gjq~iviHA!)C|zLEY|(9UH9x1!oR0Q+v9!} zM^r7MIw%9^p7D2w0j8{i65WD=5s?HLLa6X1KwUw+eaf@$K|t*6q9)=Y!9&I+qv;ma`jrPtU7y>wiB;OTbC1NreHf)to z#k8yl{}5AG1JJd1Uy7O6Y_YR62qqZh9C&CgvDtb?DddvqEf^YCPhbZ8hnQG$QAxC0 ztnB{-H9*S0b69OPN{S(i?OwXeble$)nOuox56j_EIqVMEGV(`#DH|3vkkN4p)$j9U z-0?dkqRZ}OCy+!@TZm2eYoC{*UB8{)*VXqsvi}*f=!4N3pLZ>P4^)u_dQ}E7631a1 z)`jZ>I88x<^%tZ_jDy6O8G$ub79aYPK3eZ*QNLjJy|h)gNEHxvP7D z#r5O{?>6S;vLo+~{AlYklp40yFx^w%6NZXD$~7Di`kb>gdG4XU+KGO@wHg};sVWKb zKXKaIXS)wLzBRsoKLJi+L5wD{*cN5TpacwpJ`kS(bAR~Ny>=mK+Z4V9$1lp2+#EUdkZ!A!Xf(RP227z-p zP^8cf3xtTo$xr2e=i>or@~*Q47FRjWPQ&H;)QI-3tx1Nv8FE3NHr0Nij?;uK5;>Yh zxaH*OC=Zh*E)O;nQ>!gk?#dN~kNMba&8WbB?%gXb+Fb_lkP~KKvy?u$T;I7@{yzu_ zuHNsH4C5|;E%-}-R|mj-XsLbPHA}M)h)f9xdL&Y5$N*p&N)r|j3k1zon=U~90|K)r zhnvh(QEBZp10W&msWOZcK^gh}TnT%O!gbHGyKaa^v7fCbZ0ak^LuX14jFHigOl6-K z+jzk2R%dBEA8TuWOG3*WFP6{2hAij};&%tde!}s8A99d?fa9Bk6a`2=Fm@mU!BAEM z9bT2;N+8FBu*5V8%yh@3$+H9ajpcUO(X%9%_eM6(EIpPotHB56OqDfy!bi=~&ZM@s z%<$d_6?T&;I=cmGN?Y|T2&;APKr>QHS$ASW#51)!?{?(R9Jf5P#fI2G)VaeO-^ z%;tE1C`DGt2|Q=QvI5I5_(c&a*9>ioG?ey%JeHp@DErfpU9CAQnkA;y6{+=HnGcu7 zY^BGi(?*fZvd2$mLSfS}QO=j`tmqmmMHSs~u}f6D2w_lIWy_QRc3tf_Cm-B+xRBj#1hH0#i zZW%1jTS;`*2eequg_Po~E=evu-_obr;>JbUB(I!dwFmH@ny9Y^Yb;)`9?!g_LFiAmzQoi~Yv?#phG1mx^F zFx%>fbA22Y;tzR~ySWOA`)e2%)x+a|uaAY|Y==iMr35H8gGX^Bh&LP?;$8`g5e$t? z350l0qFh=mrQ*n*#+L=p_(QkF3^RK(*zvk1FU^PW~n4;hZS%jV_A&+aiM?zF8U4Nil zR^ni>_s(P`208SC}1oQ?RVu<-9A*PBG<3;`6dZxvAUG&QNWn;69XN@T< z$~m=c@u^NtROYmwt`^H_MlFfhnI1*OoruSUd~U@3i#wX}vpLhF5?51ydZ1u^iu>zH zKHMG7G=-8wb)b12G5_6Bdb3u+b$j_RLQN>QaS(b-3=QQ;%Z4#ZSdMi#Rs!`3_zIw? z9L9W-^@(<;Hwh18gApc{X^@x*n_y-~4sF$frR9>(6g7Ebus z!hbFqK^5+2xLyrbuwGxi+>G4LnW~;f!N^#!F<(7Y64?yIIi_hzvOp7_n4F9u4*we0 zW^Z(eXg_eIX6P4~{AZ#PlDOz6C#Lc-L zG!Fcxk#T-J?={oiP${TOw=WFTCh-b%NG)^Vo|bHv%p2{^+PMUCU$PTzJ%~r`jyt5r z1!5-8$NP1E(%ag01^ccqzan}f*nc}U`HNcWj{&?}yg_)sd>F7MI13QALeR!q77e8t z0FQuj#B?lwo``m}T?sKZ|0G;U_##AXZ@Qc^{){?_vw75{_(0>3A%sOSF8X7~IkqN} z(d4>Tv>!FsLfKv9iK#65W1nlO%CU`c=n}ScFRIzlHk(ZO3j>zB@8bK3U%8FtYFEGg zQf=b#NhPbUpYZfqP5iT{;l0rc|MxAm!uT3Fn4q42Mm&L($|8t%1XCcD6h%TN%>ls< zVp@)q1@=iv`_zcb>2NMjO&=X%oopLWh7rb{9Lq{Po>OIE3v_5lX5@{n=6POp2A5XO zj_gf?;S^@2G|9oIRz5XqIjiItcZW&x%@bAYqRCD9ivHBTm2Y>tCvoPTUn~~`ER~q6 z-rZAw@1=TsQb+}Q^*EF${;1M>y0!hw9qP9pfWo(3YsRk;%qEELM>(^edtW&__AL<*D<(p zNNg_!@o{jeHnqR2HP;bN?Z`exjpEPp?OS96Ykd8uSGfnIGa!4kXh1j%+u$Ie1AbnY=p2BEddm+ew z;zr*xNtvaK{XvmOt#*57HyguC(hugmJhw(gZ~GjkTN$2(Uw?Dz*P(ySWBwUZ;+@GW zTyNKpDqK*5a*o8&P|su#FId3KFp?-kG0HJn6IM+~OeFS+U#IO}tG`jji#Te9s@n(> zCf@qtQA9(QSAf>i`m~rzq!TB;E;!%t~T?4Y6>b&5DYs410#%qbj>tnNwx)(v3N+3 z>1Ri~tI;wK&XZX2S{B+Jwk+N%dglz|M)z=5bl9OZCcJJ=q&V*lm#bm(w4ddFlVqMX zQgda5;_$31c(NB~3~nSm+cnq4x5>x#Mk?mv9W(tAM0EFNpPT>gVH|&i?c3oTRm}-p znge`{iK+)qGpq=-gUAU`{w^H`RD*+AH!Wq%iWEHTzgL*mcl>Ar&)=VT~*;du)D{xsvy z+il+g|IXV%^V6;4e*xJyMBk8fBohjwf(deF#xZS)m<&f_$B}q=gJxu6RgZdfo~V)> z5L2kUY_&x7q6@V?#a_27(WhlGEA|^+rmZFq13F^qHoIzna*Kwp%-08Z z<2b-qk0!eXwbSfbzwd?DQ>*IxuQnoIr|qXG37UQgKxOQTK)qqQHgV0QY?^imXIr3f z1gRqeu2}>J#xOS2jzEwFOJ%i>Cgr=Zv{Prj-nkmbvgN5$}v9Rj(b|&$M{K_+S zP8+UUs10Jbtt!MV%5<%NC6x~ZE0F9k+u7PV(gQ2KNPgDrH%G}IJ#OI3gMPk0H1R`J zSg#&$55)TZkRS+r>L-xbCwe@P6aQSqzWw4<{~yM zOVtxh9i9hS9;{q6W)W!fK)hs|K(h0YobZnIBzgAbxa|fPi|(XOsEM_RBDN$09q`qa%W9uYKm`#EYKp zFZXJSskLShMw7UeC4;xcBBt7Bz3w z4htO>o1R=qV%h3A*T;VVIv-Ab{QaMZvpyQF!1>Vhcmh6u3{nxKjg@v3wAvDf!2NPC zSQ&yui1C4-un>B72pnzXRE9?48dy*7q#LY^mASXxj?SVt?na>7md^+|X0x$J`?9%280)M zW%VEg5dQ&x<1Ikx+6KlKRN26USs*L6kmNj>#cL}WE%i!DxFl(@+wUcUD3X~wD)Sd; zEEAqv6?5dNq~98E)X_3idXl?blr3%5*a!_FM`Y_yhq19B4m%50!iw2Ej{?5+u#ZnY zc|3CAcHG+Q*=W@claGG%_1v$@pWkNjLs!(NfxYj4iu(a!f4eJcL)Q&aa>WK?(Gq!w zAjxDccqtN|0Z}G`K`CR)w(+wk@*SqJ+@b98Dpc8#1%e-QeT;^K^K!OVLux)x2)An$ z-L&*aV%S~>4ST;`6ztU2*cnDNJK^Gkzu3uMD(vw{AF!*%I(gm|pOE9<)}cyzRXp23 z`ooQX-Zx`4X7#IwGrr%$Iv*^UGtHN!Gbon*%V>_u)07oQ+w?ryQFd?~Cf#Y#y)?#U z)84oey`ztWr@q-TTKgcV!)C9=%GaY`yvX-|>X;++>f@E)l%mx=!!1`w+59t7wFiSY zNN-mU;xrktkXdn(R6Uu80aPVPfW^ID$&~o>*mQDTYvv z2l;t|0^kd)j@f8u-YObnG8nt$w02_MIC$pVpPpw?7(?bx85iE&W7E+rVK7=?_nV4; z&qJaA=^;Fir?z}}oasFTeg*Ian3H!Y#Jeu|Cytm6hwk$!oXrqOZJmT2X0Nr!KrIOHO-x-A*be04<0scwJ3Q}n2&6C(8~JGagv`` zg=^1A&KwLY8}AP$ndM4GhPD#5F5^aj|FSU)powSm(f03k!Q(kdf29k^vkfIbl*`nn zuCSA8W65181L=ziV-xh3m^C>OSQr78MBsE;aKs{mV8C-2J==k4Y+HxfsC#btEw^Pf z_eRsC;ub^g=~Us`bh6p7kC}$%&Ya6SX5?T%smD!!a&V45 zWwJ>_x}N*>WEp%TDL-sM|GGqv{;)*<@NRV|^X-Hk`duVkb@0PsSGT?iFv!g8O6Hp2 z)3aFjr)%YVqg8*sZ+X}f1Z58*IKW-Vwr$H6tdiK0FfW60TVN!Cu1+<=Cii5j1QXnw ztS=$nhdvGUx@IIf>y@%%nt6+V4Eu*+ymo!=tSF-Ia)PhB>rkGY3i!j#h@b7&0DWw{9(#PHlo9V%nm6XJPQ9%~l#BB@l z)=Y99+&(P~bU!e&nLjxqW9ZN1X4yz7W~{4t94|Chnn^sxY$2?9o~r#|!|e5Fvj3m9 z_gYe2UAjc?Pei}Nj=rT=BX1&3cl>}HNFYE6qdQrU7qUpv(a(NTm@3LJ_o}_>>=k=X zq^g-!8v0D;$njYf#gBQXGzKQp_8nnt_a=Oe z=~Cx2tICpXowWth6&>A$4wVs>FQG4$_{j&7NGj(-;OPP4ZUvb#iCHyGu`lmzg zlhq!?Pq&^1VSgYI*j0#B5!8n06}%%DhAaaS0sMhdEDp*F5N5xSa@Cr{dbtiv+jfGj zjf1D)!eoqP_>tI*Po^H{#V*n+rw~CgGp+P`JjPaYbZfZd(k9rI(B#>mSt&VJ;DgJB zJ5I^t>#zxbC@9^N0G4dH92;7{GTdN+`GYC7q~}L8Bk%F{gMZd^pL`RD8u`*wfxVP zyl0a=me1EuZiv|@>sSYOP26U|6JcngFRTmsCmQ4{j?2PU!m#8E-mRUc^{AWg3APZJ zLqsy3HrdU{qSlnk^sVJ(znTe3JXWnuHOaw$M?+ zjiR!I(`s9JJ(>jQI-VKh)jqN|^HaHhm>$Djs7vQTaEOgs_E3V~p?o?^lE8{n$q$g# ze^m7PWIhs^40I2 z=&-%g5D(L~NrUDLsB-XmA>(727(!qWA;0RSt0aiN;-ZU$j?D~|cjB`2=t*^dSTt+H z!;a0QTAr;|q_Q!y^I{?E&UQ;&%8@ym>!)OK4(9U4pDYa#OXnN>pj{XpyNUMzn)kxZ zzth6#$zTu0`_)sMA{NpsApC)~jB#LMVwOW71m3sRu^h+*J06Qr;KIG=tH(2=aEJ{Y z<3M>y7p>_*3XW;aMmw&f#+HJiGH@>P zMbL!o%%~c9-2PFu{|ygz-SWYqO3e6U3H$34KfF2WE1=YW1n8S1_jL8w)zocH!zOEk zR{_f$?piExkBr0M5VpfihO{~)vS`Zz$<_COR&z@cM@wA8Oiq<_&U4a#gY8V+r9Sc6 z!Wucqbd>J4hUJR-FkP$|vyir0aZnKnrBr#dl@;?2)l zhC9Ucb5Z-(HO2eFmHkmI=kaPjoD`DM>FM{5fZv74=+jr@ z6v(wQH~pxu_*(#(^IVgE@F^$qC_?`D?Vj1{d!OwO2WxJ@!1Z~Xp4aP3%JunxFRiYA zSYYVc;$!UGFaNq4ySWu61WYbPfM14zp9Taq18xLlpCO&+k~T>82q1!-7kqW68b?v& zrDYfyi@;c!1_+Z;pBAt~!w*W0G^Ct6S>s8F7iD9f60!!Rfe?>>XNHs>oT^w;Yt&M- zJq)gPI6m2BBX`YzR;~W2>*!m5jC*zdPv8IN5foIA7zXVp1k(4DBY(3B{h!Y8+=L|8 z0S^1m+r_7?2gGzg^pb9plIy#@{^OgQvF~?EXIw89&;*zpM8fPk|%l&@|$IA+80XBd}o%C}SNOvwHv4 zWEk+!C=%i&_k|Z*$X&*V5Mqg$DpU<(bU_!F#F)^HCQxk=e7xnd&b`ycRs`#eG+A-X z)bk~~lo!FDhy+)PEIz09>#ZeVspz;hZN27$?oW~BAo;m`S_1*z1{}7uc`Ur>%M`^2 z+;7HSh7Uh~Vje%3d`JCu{lr58y#-^;Pr zL|y-WdJh++^WKv3#M=e^`X)gUKGW=j&@wcOS$gcz%cto-;t?c#!dQ`l`8o z)l-C}V2AJ9INSFUYG1%RraROcIP7^SO&e=_Fgk?rdC@VET z7J|K@xBQG?k~n8Yb6qYfWWSM3TTsMgyd2GcsgajfulMlBLHqk!efNIenZ3Jq2X@Ji z_jLx(u2-)yhIa~V0i10T_vX8Jsx~$blSXV{BH%I=xqS)u~_J^g3AJ%##?jNu1 zEARayY{bDC#Kl0agaO-0x&#fZ6mah#V?`Mca=~a{fcAy|*oota^rRHwWo=(bT~K5| z-;on_;T|V3!{;iwIw5)|bRpIf<-G2Hl-()i(s0CCX6_kl1j z*)J;H9Cotu=~(k0y0=BXSEio#S<2D-O90U)*EsG2m!fpi>hnYQKd@~7I_158aP!mG zKqVISU1RUN&}Sj88^h=W0VycST=1<6v-Atk?}N0v{OLK7UNe2Vx<}}}oX5ZZ1q1SW zuXmd7>n&h&TPr>-v)5Zc9pI0_ef`JxPQW-tqJ52R5J6FW+cE@%Jdh*7A!F{5pfs}( z$e6!y$DEokFj|`!CFX-a#a<47$2e)4$-%fdm(yxEP=sA%jdn~+2PMTQLy82|pwi)k ziQFP;P2_4ZSn%tZJJW~AFuAin{X=nq=iu%xCwmOY$DF;s=yyOXu#lH#_@!rH?I-O$ z!}17jZeZWF(ZApl-;CWMzv-gi+R?xYN;m`w9HeVo;0-V+WJ6(b1wD^{4T%H_!&uLI z)mP~hQwt`^WBhyGP6Fvb(vIOUD(q|pAl|Y<>#uhH)2z?D!Lb)KcxD;^fY{&VSS=`Z>Zw` zFw^j4@DAkt>M6ruSu`k037mi!0r+#50f`w#dcdoBkcTm0F<|_h6&+=3;X3scN@Jttk^_cxH5c z(`rX%4$HuRnRqZyk4nnX94FDFdC3@xU(sx_NBAm6T;UnieFBozrUfMLj0J}w~K3;`P&H(3gm5&G9?`r z5{4jqvjA6r3}ILkd|3iQPX-bc7EQlc3ulam*u1l=R@Rwghr=>5F8;ilFXGFXSw?(Q zADZe?Y~nR4lIy+hF8TdXnv%|-3sFWW+5T=s+x&Sa;TF1`Yu0u#^P6p+b1mE z2OQ*}5R1Y+*TztSg3Z9BV1uP0k4jP)zC zy4@++XoA;=WKkvhT2Df8yU_;m6e;3uu``#gvmO^bejKDBePSsjn4DB57VKRlnSU%8 z_w6}__ll(tvFsJfU)v$>;Jxn%G|0Qb1@vr4n3}K<5`AR}2iz6HMNkx0Kp@cjGsxeg z1_|naT1B=xrMdyV4tFy#cTa)U%}0Tdk;ARL%*b++?WS8|CP{{j4#yWuSeM?g@JE=o z+kiaBh81&L9uD1(pIT#$_yceLDv=5ped3LNCwc$bYLDKhThCAuka_^c(d|?f?xK*& zqEHVu85@QqtbY(?lfYts52dTc@s1}gVGtR`jr5 z*1md%?BHgBI>Bms&i5@Fl1ILDlx53MvtZp6i#b~+oc*Vh2)&v&GmD~m)H%72wzRk= z6#U+C@zNKyHJG2(@BU=;isOene_c)9SRl`{5zAvu47CxEQL^x#2O&Adf>sX5iM~F6 zmxsSPwH9Bd+{j{;BBr=hozWL*Ko0gqiz@n%kbDwR*a=xoi$=z0ovvtv)r6=}2hR9d zAJ&A`ZHThcSN;Sg1s?NA$x>hyysc>uBL6nHzEs2gVY>Zc4ZwJOybh*Yvb`^C3&Khi z_(TK)kuJhoHj5%AIKPl<2U4B1NXmJCg+j<;)1iehXQHWv!ro7m`s@|bBoA_dZvB0+ zs;1j|%hL-6+u;NAoOPA%j4ki9v)iFytnnexW?nQu%8FXlOD-2Dv)6;^n*>GQ9W(g7$i8yCX}UNKlNh8)FK`~#qPZuAhseZtT|1xDo0YmhxKpVx!O->D z{p-2iTXS#F%mCeokrrgx5z51V37Vo!0vJCRXCXtwnjXf$a`xh}XWL<09k*E3?MQ#V z)_h~sa^=byB$rZ80#_+P2fc6_mI-AgudDU89WzK-ta+8E+gjWn&FExM>&1Q&^HQkG zWBKB~O|m;H)IU7&T`j;L`3-O8t`OWmUuyu~qe+Sc4VnePI%peB8iJsIYguWRK`}@i z!{{KueKpY+i4*h46Dx0wDPhJ|(@8>)N9VM#8$vUdY`EdE)5RC2craeZ`Ktf>do90i2LVfe;wqWjN4aw z2A&;v7~4Tf8t!-uk&NThK{JQIwGBLL6~I2?6l$S^V|ZLwlI&v(ec0&a9yNr{Id~GrCZWGD3IUHZLY?6f(WdPD!iXRzh30Y7y7CBqS(!`o)fqCfe^<3chh4{zJAqVrP69GR(dc+G&@yY| zT@WFjd7UKCSrbheF5HQ!G#j_tvHU?ekUnep}u^Pi0~*3>gzVO#0f{6va&#P?*J- z4k(s?UC(lvR~n6l?TnNr+lQN&H0s(4>9kRGt=`sSnLEl$a_BbRp6`-)C3pp4tYb4# zU3t6-*4rR7@s*G+sQqlf3b?MFJ?XqLb@JhJ6_8EL-Mg5l_ruw*=~ncIlFyGuZ*gyik6w*TE&K6)xn^!>r+~ zJRM7OYhYKv(}&z{(MlJZ!_&o>ys)`Nrbjz0<`c4!CJ>qL)0Co*+k7~{MWNMBpgbTt zpUVGGS?_~l`wCv)(Cf=S`cK)vuXb-3e!BU@1|lG`x=J7!#>H$%kzfqw(ku?slmsq+ z%*H+NSs-lu9>zh#a%2^0>39*v4Xa8Cu46TcYHd1kkdr&G#`t9(QCR8+r@Y86X%py! z(bVP+$O8BInWgjL7$v9Ce59?4%fUa^`{Pgd&o5B^(%$*EpnTsmL8k*A2#%o+;?kz$ zAUMk+1OoX}_#b4QtbX+ek;L~<2G)9i-=acXj?zi63b*le3ruQt<^aSM;hSkQ2CT_`PgXc+c$6>Tfl96z57p3C;$1qyld0o9gr+dK!%i}kp7&m$H2zj zmmP-)1rjtKFl!9uzKHoT*DuI_-FYQ$>C8=2u2td%ztr=rU61Im z3#yMC&vj*yT4;R~_7oqi8q)7}+$DGIoy?BrG?rJ#MUHHQ$eF7?;sw+!9CWTcEs={D z5H|0vrnB-yG`K47)EVIoM#8&a@C?ceO8pl>d3Q5Snt)xObqS23aiAkm3;yq-C`n=z z;o>GvBCxbrFI)onf&2M?Wdn-tR8C>!DTWhAi+1L4oY!JC;_U+=iqnu7_)HZIDbTQN zk1lJS<}{&Zi{)xL7xhibmEAzzo9HreXBYLSJuz;g)7t|+3NSv6wf9?JN~!)w1MRM% zf4{iatG=VjFu=%cB576wapVvWnTF%(mUz}O3nR`y{Q_*;4JCrM2YR~lR)yb4_4SsXa zuPUb&lG2gY_)@v+>ZKwh;eQM?Kh6a-HqMw zyAHAU<8ZWPlGmmnD2OPCzK}osXR#EEfue#Y81Uo4xqo$kcvTlNj?0(FId#qwVKE)# zr(uR$x_M?#vSKV4Yp(CQOKc~`R>RZSBc@AvFwWg3N_K&Y?qa=|A1W=7PlP_Jw!}a= z$A2g<@-|66lzV#v>qXf;{GWk!HE~<=2@hmT1dv@8gn^K;MrgDT3?cD_0n3286zP!2 ztJaSfH`2_1R+4baIP$cyJ4HU7?Qr6>uoe-c1~n;f<8a0ir?JD~<%!vNAzL5JLYWWZ z{Z2JbLU=U1%Sq9ayjkZ2*wc=GAFMYH@%i-8ug%zJqc`xL?>q~^ARlIdd+C^r-E*_R z)si#`YZ^`2AZ$bt&vkL?RbP3#+i$nYaK*>R+6_Q|4TOvhh@EPEI&fp;a-N?tEg7s5 zd!j6eEO$Y3xz5PnDHir-?heOo zvcDG!!wAozFa!nnfx+O>5t8aD83cnR-m_^31@<0A*%x9%2))zEd74GOG>AvF0E*?n zSP|iWQMPeIKdrVoF4a3rJCSF6Ct)@Gh;p#O4(Q3zNznnP>oT+z-&+OeiKWn1)+Ng3 z$8p~Suiq$m`8{6mq4Eu-12Z*bgJC}!(I3&0j7Mv`?Aw32*Hm5(fjIbnlS`e)f z9{TEl9f3}KFFaB%vuPtOb3o|fD%<(F*2es{+mxkL^J@ z$xAMhSzD|Z8MQEWhCYrgaeug6lJ^<(>`}eviod(xr;NY5|4(aOe=>Rl@%heE9vQPy z3b%02^eoism8oo>F~S%RA#Kb=ZJcotNNKzv3{K=SJMP1sU&1$z$Mb{PY!36?OcIRQ zHW{BQfhXw;P{Ly-n+d)^9gTsd4|eT;bl9HvzOW`^M=6eng}HQ@%1kM}X4OBf=-;%Y z`~u-Ml>K^m7x`TXuO@Gj2LiOVBw|{4FZ5u+Uv*8|Au;#}o)?I>2#8u^~t`4 zX`)$iKH8Hhzr3|$yF&BGul?FK_b_;avFtrE8N;?-VewwULCyLN?Y0 zcOF7Uj6z-{AmnDac4fprH?mtH^XWzrssIVBTbPp`DXHqLKUa%REr}F`m zIU&7{hR#N|B%B!T$HLq?a)dvBpPiJICH^r20&UjgH1P-b^Kt*zkb4-sA@{g?Chuq* zz=9kE2*X*B%wRT7Vx|LpJLo!KWdn62hS{%DH*qdzTLw>_l?)M#7JWY2a8*N~j5Ss*47B{|M|3VI|H+BaRK0OyDvk(WCe(>cH!a*$@q%Z{HLe{Wvfdf>L z2O4qOpPX1brQ(oY-BDgT8-GBr^@=@MS)wR7(@@RA! zt`S26#7|E>Dr=UczP zG2ZRn5V~JHpFoBr1LDF8#iA}~M;I5<%$N-ceGp2(c%fhjSr+&bX?Ra+t3tETxX@HNITWhM8DVF|%1GV`<4c;eNF( zHp7X!oxZ_yP4C`+YRvc0+%Es`?+l)+u`4LIb9V0o#Q+r)a3 z&ncSmR+cS~Q!2qGGhRT7E)|Evwmc3ta%3{>=$1q15pgen?(fu+zM8r|KK%VuKN@BO zOc$DPY!Y%$9>Wqn_3zjgLef~TZ1f;ffjci!deUXCWNehkk|?c{BfAn#>&e_YfKDn) zD7J_-(LO^yi@F5I?RK|01;qKRSQ{le(=fr9@xYs|P`;Y*;uMSIqFuSuH&XN2NBo-R z{OR*Qc{Xoq8mp;A{0fEoM@S>WxLH` z5FEr~At}c{?cvuE{5}hwvATCF`gr5h9`t@%^B;hJcQta`h5DwDF59!?KvLr1UxPv& z6f8F5ptfz<9&pAqIR(c3>6l+qe?|0tV_l5Sx313Bw9!K_NvF;2#sL{UW=2#w&9>;dhRr z9`wnSax&0odPCZt32LDqo$O5INNHY5aYZg>TBvrZ*Y08>$kb{^9xhI-pu&_~tq13U zG^TJ#Qp8)S*>A_v?GgU<-~adj>Knt|+?o4-W5sDzxXsCRqyPHf|EqtvPlB^+<&z&V zZC?z(WB7jWN>$!#I)dUA!SPIA{Cz%6fd3n(!ZH>8vJS-|{JCkRZ%X%Vqco8mx#U+>pE0Y~-TWZ(GWIQ#T!rLb9L?3WuG2Kjmm<{7_L)K>H;c9RW=g~2vD{m%sES|_(_3wuy zfJnZb68`e2w;_w(N=kqE>VMt7_&>h>yQ_qV{dz$z=rGKwnI~}PBO2&j6J5s$?}ZGYoBxN?LmQvx+;7DX`;S3zv*Q`}J|i7cwe{R^Ms*(#sl4K zy}yX7fqOq=*x+rH>5G4(efNNWzW!KGB9fTp(KZI|56~E|sz%fp!|zyb#|c?ybF51G z?QDO<*Ep=PF~1>arzDtlE8Un&YE1#Ns!gRcgNpniTP_Sq9PIZ};c2mpCzot^N*tND ziwF1x43naKRD$!9qwlrgwwI^0D*x)g3fI4r(*0XMsz>kdeBVfVG1;EPRF#lpgac5A#}D4IaI(>({%H_&+XA z@@%n(>gn>SNQnt7hHayN4$6Wq6{j!|D1jUkQXMX^v@8S35CF+BUyzJcaZ1;;#BBy% z=PCGcY@RM?V2Jo>r{t&Q$OE*JNn@TkXT$EfGA+hzI28~h@AQmZ9T;b}^B^5S=1H+U z7gp^>+(VQ4q1fEZrawQ2aJetGvhM;7pr1NC;63^0btHWz)7rKx7VqI$?v* zk^=QE>AZ3i&zZeWZ70-YZ=i1$MjM$g=R4&GB8_nw~r<6j@H@ekKu%G>m}ezd9IjR8>i zPuGq5uKYn=vj+!%LU2%FLCz5(a*XI@S}bn5fP)M1s7<|KRu}4yU9I->)DVxu^qg!L z>0+~)3jEY}P>5!B6VKDfGv1kB4x{W$gD!}kWL;%Xm-fI|9Wiowaszrg)8ajTQU|FO zspTJ!#@?i}_XD2&_W6Y6ZzPDmV)dRJ!Vsn}K7~Wd3no3b!fZC3f%4j#q}2IjfmFfaIH=cExzKzyU@fU{ zkwP$Qr-cJ#1OA=X<c{&FMvkE1No8(Yn20k3l*f?T;f%mLC4n6DjKk5>~bu* z8C)=C=$@3L!^Zr=#Fe7vHf0y%bvx!&dcDlbdc+M%g4k{MrXFm@Ydg;bSBNIeZjx8} znjop$aQbimPt-S#%&VK{`rT^%BPZZt4M2E&d@A}5IYv-|fZn0+X=T%_P16|4f((=e zAuWM_TdoD_Ba?iQXw-+>OP%eB#V{A@WtZb;k>pE7=99$~apQWr8skIP=9_xJh?1$x z)^yC&ml{<~pA<#{;vhM#?4^^UxTHL6C#RScUoSxS!l!+kq5f3Zt>x!)aVfW;{%Tw^ z{3|veb*FAAw8-q*f71iwhoC;}U15D(Jo!j}eSZ}OM-d9^&-M^VudH>!`F8+j%j_%R zVkWo=FHU1vEFt;}X|-sn*KhXxje zc$t~*632(Czn=_tH3$tax@#pKnOLt^tM5t^---bPbhdx*?)6V8+1^qQ7yR{no)2Mv zfT}lP0s^DVfPN72{1#zR9%iwyuJ`3|P>aD|g!~6z3?+(B#GDh)3S`p~G1!-4yeNZo z->}+N?`$(InDyAFmj$vNw^4W=)T(`8S3H@eidiftYldJeThPM@(L23W|J42Hem?U< zE-eE1ehDJ5)I-$QmVVOHfB@KI*}lVn83-&{#{oqR&`K;xv4~5uu!vDWiV!cdKGRIw zPC|Bcs1+$C?b4p^FX}j(?{s%SY~%&LUG7G*Zq58Kj0-VCwz)QEre(Rcag3v8#7-~# zB~O{WuwKN|R2Uv1!|=Kk#FtiAcdTw))4f>S@5tWn#(KnVpPpoIeGdx?Tn3MSMPNiB z6hgZ$&BB0kXasS9|HW*`U^_2*UUSiO8O`)?vPGs@fps31&6Y@&@aYB(o5RWXm%1q6 z#V{x@n@Q053nlfp+tVO8@6??u_*5J>E7DtB>XF_q!3pNP^!T%)wUilhWi8T zT?Ctzr>(mes(jsA>;OYRyuaWy8ahVj<_409n+t(;gLY69m$A9sViAp$Xk4Aif2kv% z5<)NSRMZdb=m%Yf9>CsefAkOdshHlqoc!PFOWJ?2kK(hxtn{&z-`AQ zy|hwe;{2pP!+FvG|Z2CW04oDfg)@~X?xiQ_I_EQv~seH zt>`+VSgX?h4VaL7BG4D4ROgqkEU(uha)Vn`RJD2fAH@B)#WpQf95_Ve8ZSs#-nbtR23c@SFzeN4%@?dcpA@y@p@>YvB1UZ zg&c{0&>??!KBX_rf2#hnf$m7-zY04~qsTIISXe6vByT&~r=zOZTR#KyPe0>|?w`Kl zy8qqiXYf4%RGS0`0pwXAbnB&Cj%Se$W>GGJIur$NsQZF_iJBd*e;lWS$%30NlO@4( zSY%S^;j){DlYNw&+{>WAno3np0w;)x7_X|$YU`|J)~Y!ryA&u=h>^$VTgU;lEQE%~ z*}qExJSByCw*Q)fx+8yYZ}+CS`E=(~p!jHk_XF7P=B^0eKVNk>w+RiNkZC!H<@Bi( zhlN}@Nm>Of^w+X6c`CiK>@p-mD+QoXbaR*D4 z0ZGz1uXD>;D0rj2 zxjPWo&(DW1Y{!P_i$b!KfHV@~p%!TY!v{2HU#o_7SjhWYf6NOYh?cIznz0;g=giqU zTNVClkrJqqpo{ucbL(nbA|W<2Rs*+NV3oOY3pz4fW3XE3lB%pmC1;Lj1G<@5{=l?` zvQP|OPvU#x`uYqX9QH?T;@?qPJgi+IyM27pTiAUOA5fRT_+T8+BUw14AHWx7EX%gA zzK1+bf)M4!f8laPIBqRdno9HYWL-^+)|-^NdS-`8(w%(TKx9GZG4I5Y#9+3-0_B9C zCJ44x!n0Y;aGfYpos!TQUV6cB+=jH6^1*A@)Q3eg` z3M`H@mvzKUM=DwSoZmHC*ZBh9>RpOm@;pk%6fxqgjmK0Yre2@VWyx*S*#1KUS&+#5 z<@nb!PP3TQu?Eaf9;iHg5c_{)bXb-7`Hg>FL=TzN}H#n z68A4Yb!2+XkB<#zufM{3E$pvu#`VycnY>N4zH&DEq6PSSQMao^^{*uTTvNSB%*=sb z;2KaM|C4!cBlVEAzMuAZ9%C=+o|C^Z#IA;JX@Ao_fsYK? ze{$3U|ByvqNoTluJK)zgzr)Uqfi2U)Zn3W#+$ImEt_cAQF0q)MJwBrKpf0DCAgh#- z%e6f%ofbB#Mwns?v^?V70%A9FwHcTT=k?y z(4Y&BZyIz*`#3!qx6@qRspNjO8g&M~Rc!@XE?TR}ym&iYAY>F45 zAd}{Kyi%u9^Jf_Uy0)6R!STc*#Qp`GSjX+R=4+p=uNC%w2;9To6}iX7wcg$xe>xOH zECP2xi4K@C;L5pu1xM0?Eg1v3hV6k@LsBnB;BK9A$#59&$NmhJ2qZt7cr77i>Mk3t z5Fv};Pm^7=X*F}8R|L?r2VJ|ESdGf(k*}0>lxv;IU(OnOEJKzWv0crN{$7*p#|Zpz zQ2RqMu{iA)o)=YPF!pC!i<_|?f5z*Fzit+8p@w6*2<)&hd0pB@EuhsvR_yf!!)O}E z7?vU+501Rxx=CfiYU(A>Y)lfUTE!-9wc!?i%{ys_P3v|x69a0`a5KaeTCeDMWaabD zz~9H?T3_Nj>7oUKG_0q^2;mp7xgT@pvAGui^(#I`FRqS@XMX~yMM%&(f1cfoODG7g z`dR>_$1)U3GmPUR4$0E?i$~sM8HFsVsXpU2m3khM24g!#*v+cIYtEj!3G-&!KxTG5 z)v_dXT)-{OvHIA1QXzZVGANbq<$zzB}@AkgnUH!?+rG7DZYO<*rV`%^;{GH z-m(7H zzvv-uCMqN+)q~(qmyJBckb2U|6RDNcDzbd;fNCV(ahP?{v&&*Qoeeh0KJe;6%ef4=LH}$NfGGd~{_J(c^uxVJP!ci0w`5F|!Fu(g3wc!%e+A{DO;awUT1}K? zU!6wBjLor(kYrYz=eP?cxurjNut zbx6>#KiQ!r8$S1};c2jEiS53dQbaBb(qS6!wc2S!aS}J`c{2J%ckv&1hJW+{zf^+6 z{^%V3|K|kWHjM>Y|=c;^`qwT`H8vjyRW!ze=iy9`BB>SFa|b|zEdyD zf>4Mh2%rr~_r?5~>>b^oxv^C&f@+hl>WkSf4T0UBPbGbFo1$*9Lfx63Qu~V&eS>5)Xze9ug0^-eyp&0#g{##ophm&NT!7y$9qiqj5Fh${P%HaFt;L?pf8qTfe?<(!#e_1znquf2NByIlc+h#^EDj}!x!r}bk zID0aAMdj)G>W1D%83-srv%`Rhi>3$&qe0YcTNDFmATCRI1a8|F3VP@7L6OCJh1g>n z8Lhk{iqQMI7z$Q3aKzY1H|tr3ZOkP+=qkpC^s;pIc7cs2$B>c7^QAb}_lC1=+MULD zf80cbywf;FS$*|)iqYTrh7ZMYe#cq;V6q49`TEIWg`s0n2xgHufng?z0sChHZw&$g z9K9;V!EZxQ^o9D12&~fBFGhuDSR={z&w;WW`;!Qz99~1aDIsNDcWEe4GY_Iv7!+e} zEML&+M3&`ddS20UBo-2M6Nd}ht+d46e;p%NuW%j$qXnqp4|0g$JwYo)V0 z)92D44P-33FXz?Q*9B1}3JNfq1cd~Hf|!|bS(bS*j%ZdnB-D0fQFwPO<5B5u)m_SN zoq$FSklf%)t8fR~^M%X!C4=v)DwyZuS(-MZ{fwLr%{kKPv@>m|qm%D#H_Lo6fBl0F z_4>PisrZMybkllg>#=)$EOK(I6MBavbldBh+%LPtk0p0c2Hz3yubzZ=s7=rw2DxGQ zgZ6L>bxhEtpcG9zFrk5a=ug5^$g7&O)ri-0RiEe4bgz1n+;NnZEi2#`O8im>3uirD z4Fq?CL<@_MncbR3CMI_|Rf}V#e_?xZAO>MOZ`7_>kVaTeWAF4>&YrU-zcVSHExrTt zo?5yg;=xJ=-X0D(*d$K(Ck#9nXPv&_JAonuh9lMBXTBCUdxSVr*c!CJUVORu1ps=HI(@rf92Yfz*5~G zn3!+dOx;~`vnc!{tY^fH&Hr-u%arbK{fLYCVDb&o`*knFxDzvd^%xscOh9gdKhifo zL@dZ$!oEP@pzI_dRY%j{XMYbV8ee1&1ZIp?w}Cb(<->s})-LOp>kwbgvU4?419uvB z3`0)r&Ylv}dN$(}h~u#|e{Cx5G|0vmU0AExez4I8gVW_?{9#%{1IHBSD z?~LKYjeKgT_f-D(DgW2cybnEz?r`1Zq>nyWZ*S`P{yz_ZJ{f&~TaPjK0YyW?;q~!+f5#-|Ua!X0>9U@9 zBE1{5Ld)>BALzqei_K2e9dtk9c?i`fh+6Frgrv*CW>(V|>oT36olE}52pU3V7b4m( zt!}SvZF`^mQzY8+m+3d!wAXV9a?roI2KDyd-$0+>eqVoVkHJAK0XYZ{{3wV=Jpv;U z7u+Yt!mVqaOW^qMe;4Nq@IgG9RoGJT5^XC=&2(2;nJOrSJsT~?ay1@OBVuwH7bWOk z&dut82s^vTvZ^HlofNe(OSZg5&LnL*!12+p(unX69{cx5evsaL$ap`o26txtZMZ+~ zeUU@Ga|=JixHtF?a({K@+iydhxfU9>2^$3;3xohJ$e}$Ff5>-;jwlp_1RzjxXyOIR z<=GtS^L97^@+%Go5_z@}`dn)Y>zwUkxHI^LfzGUQH;zV|<-p&nE=@B>o|!|A}-y*X!VOj^nO4MzmCnf3-tK{ zd%yVS9f*2MJ=nKXYmdG|B-59~hQtNQQmE5+nZZpPf9<_860uCz>*d!J&{HpTQwwtj zvMFpu>g&}wv~6CNHY;^$0#S8I41e?1$|VR{MkkM!2-M#ryH8ncHvV7JMTcT zR-+P=kjzlzl??xb!sTN#uQYdD7&AcXflT%$fhc}yfPQ1Shwhu(&mAcs{|KZMDE-i0 zHboH-f2%t%Qb7*t(5_9Hu(|>@^1{b8V5!i83!alUVvK3ao}H)1>3UCEmo+^iOs%V@ zmU(fIbQA8z6E&5+N|by#ppc2Q)sIJXd5Xz)ZggX(WcKHELF4nEo`JXnTl^KJ;Gg`~ zz42qTt;YqMGih0olIOHjK?)E1K&2ydQKVZjo@4XT z!mBnT=C$skKhE)C9^XXFy+HfDxY#!*nSYeW{b&#XT6sv=}80e_qiz#X<}^lr6tbfJQ+xfcE=sIc1E_< zEOLuYvyh0qh}XtI%;nK?Mp{a?zVO=I)duSb*-oT&J;wfcqVmz<>dP{D7a`u`*EiMo zwIEq~<@g_U&mWNYy78WV`jR$(SCan-f9~Gi8`M|T{ngMdSnHe25C{YkuE!uW?Ar`M z!5+kVko$y8m`9Q(0kX*NVP36=qG-yK@YIB;yId^}+*&>uc--i0n-%hDjO<$>QC3bG zxBNN8U8c!)_?Dby4AWT`nMg=&gC^&6aAbk_&tRW9y@uJ%bJ&Znd5){=^MqN_e^;2k z1NA#gE_6shKL zc9f`jlH~{)ELoQmF_O?V)(tUIX{Q$>;-+PW`LnWV&Hc(E>1cdVoDDutn@|@H{1)2- zpLLinBVMa#(VYr-?nU}L`qF2Me{Zt>8rq*ue4yP_p#kWb^BT~R(ZJWg}wIX=8cSYlI@zjI>f08;7mcSl> zAQZTJp4->)CLGMUWywf~W>MNhUmOwNOM9;xw(4r#vh_hNb#6OfP>9OUf*oWb#8kCJ zG#y-;)g~LWpgZ0V$H9JHI6D+KxMf}mr^6vZMk0na$mO`2Hxa(Liz}{ck>lry8Nc>} zf4I!QTfE}&e)+V-L;4r?e?h_lpTdO|$0ULK2cZ*A*_4Z87K>5{g|O}mE$2w-7R#(% zoY~QNKOYBf8&3m)8-*i5La11pNkdy3OQWNX6h!T1gG=9sm$$9k9e_sw411`%BJdvE@mBKK$~hJoYTA!@$I+p7% zeO)eZxX@p5p?{3a)!qY<+gf}zblc)B8$}7olGrAJSvcabe?U=_kR@;-Zl^%L?m8Cm zi!Tyx3ODPPTb}2a>p@E}9gBlF%R$<`#bl##EAG-^NFEN(;g}t;A;uSK5f-!jOh>A8 z$=iIZCa4>TR65ES^Hi(T6~`3M3s3I^-Q)`|(E{X=MmJ!Y#M*39@xTY>;kW{C^W> z5bUhEY8lP;)~GpM>yEIv#Asl_sEzRTM4FCJq{K`_Phf1zw>WxPj_=4 z;CSDhSd%dO!))NHq7dsjG_1mi$&wz9Aq;Lapnsx)f3ttV=ByNZ=^i%{FqY;e@X}yB zO}X|MYZ#9!-hdedQ>sz7@nY*HxvZslEI69zPmhi!!K%_Vc(W{{?R;el+XkW)dOUOf z(7EW-`+Uk9-Ek}1?3YfizL|UA)_;B?ddWW30b&4`U?K5CBZLF_HqwDL26$hf83+&b zQv~rMe@f8^mtV{}Gza$N2I2 zT9fHEHgOC5MI7&kB+*xW2Wd3Rk}N^lKst~ne?@!XSi{oxLKLmzr7LX~LCj-Y$ZmJl zf#LVvgxfa!d5oEiS4`{1)Jo|z+Rb=(>!2wLYZNlkse$3}`@N=ET2U#@EC?s#-Fdyz zw-2}aTH)(k|KNv=Yj5fL_+I-|jmmX^NHr-FmLbrc5UgvG4E)7FlGipF3x&7>798Y7 ze>S&rj>YIO@HRj_P8kmJy^_uUbr27@1Oj6bo`E1;-k$g8qYVL)Djqq0}JJNCT-$mU-XwX zdnF0Y&@=_=Wej5ovL~m$#|04+pW+DJe^xeD4QwFIc^6J}asu6ZM?E<2jEZ1E0cuah z9Hlx=N2u{`Ib4tUTCGxgvO*?{|F5+#Yf@HQ+Pv?G{tqXGUZd9yHceFa_(iSzdWW$=rzO_SE6|y|mr_o{Gb6IkP$V+V9-%9=E;23$^6DkIy z$T2I=z{jjltrmuE3ir(IG|7X@e;?ZiZIa#SVC)bAM>l`@{Quc9`g-!lLSMi0^cci& zpuxZoCoS6aSllE`29!9SYg$0MHtl2CCblOVdZr{4r=Khgoeo3b&_^Kt7x-sHe6sJ~%<1