Browse Source

Merge branch 'dev' into net7

pull/13626/head
LiangShiWei 3 years ago
parent
commit
052d2ef0d0
  1. 60
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json
  2. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json
  3. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/hu.json
  4. 125
      abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/tr.json
  5. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json
  6. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Blog/Localization/Resources/tr.json
  7. 6
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json
  8. 364
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json
  9. 6
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json
  10. 4
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json
  11. 50
      abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/tr.json
  12. 93
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/tr.json
  13. 76
      docs/en/Blog-Posts/2022-09-21 v6_0_Release_Stable/POST.md
  14. 244
      docs/en/Community-Articles/2022-09-15-Grpc-Demo/POST.md
  15. BIN
      docs/en/Community-Articles/2022-09-15-Grpc-Demo/client-application.png
  16. BIN
      docs/en/Community-Articles/2022-09-15-Grpc-Demo/contracts.png
  17. BIN
      docs/en/Community-Articles/2022-09-15-Grpc-Demo/host-changes-1.png
  18. BIN
      docs/en/Community-Articles/2022-09-15-Grpc-Demo/solution.png
  19. BIN
      docs/en/Community-Articles/2022-09-15-Grpc-Demo/swagger.png
  20. 121
      docs/en/Community-Articles/2022-09-18-Grpc-Demo-Part-2/POST.md
  21. BIN
      docs/en/Community-Articles/2022-09-18-Grpc-Demo-Part-2/blazor-product-list.png
  22. 469
      docs/en/Dapr/Index.md
  23. 8
      docs/en/Migration-Guides/Abp-6_0.md
  24. 31
      docs/en/Migration-Guides/OpenIddict-Step-by-Step.md
  25. 25
      docs/en/UI/Angular/Dynamic-Form-Extensions.md
  26. 2
      docs/en/UI/Blazor/Overall.md
  27. 4
      docs/en/docs-nav.json
  28. 469
      docs/zh-Hans/Dapr/Index.md
  29. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/Controllers/AbpAspNetCoreMvcDaprPubSubController.cs
  30. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/SystemTextJson/AbpAspNetCoreMvcDaprSubscriptionDefinitionConverter.cs
  31. 75
      framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/DaprAppApiTokenValidator.cs
  32. 31
      framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/DaprHttpContextExtensions.cs
  33. 8
      framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/IDaprAppApiTokenValidator.cs
  34. 10
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/AbpAspNetCoreMvcUiPackagesModule.cs
  35. 21
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/BootstrapDaterangepicker/BootstrapDaterangepickerScriptContributor.cs
  36. 12
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/BootstrapDaterangepicker/BootstrapDaterangepickerStyleContributor.cs
  37. 28
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/Moment/MomentScriptContributor.cs
  38. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Bundling/SharedThemeGlobalScriptContributor.cs
  39. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Bundling/SharedThemeGlobalStyleContributor.cs
  40. 9
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Auditing/AbpAuditActionFilter.cs
  41. 31
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Conventions/ConventionalControllerSetting.cs
  42. 2
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Conventions/ConventionalRouteBuilder.cs
  43. 2
      framework/src/Volo.Abp.AspNetCore.TestBase/Volo/Abp/AspNetCore/TestBase/AbpAspNetCoreAsyncIntegratedTestBase.cs
  44. 2
      framework/src/Volo.Abp.AspNetCore.TestBase/Volo/Abp/AspNetCore/TestBase/AbpAspNetCoreIntegratedTestBase.cs
  45. 3
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingInterceptorRegistrar.cs
  46. 8
      framework/src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj
  47. 16
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveFilesStep.cs
  48. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/TemplateCodeDeleteStep.cs
  49. 15
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs
  50. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ServiceProxying/CSharp/CSharpServiceProxyGenerator.cs
  51. 22
      framework/src/Volo.Abp.Core/Volo/Abp/ApplicationServiceTypes.cs
  52. 25
      framework/src/Volo.Abp.Core/Volo/Abp/IntegrationServiceAttribute.cs
  53. 63
      framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/AbpDaprClientFactory.cs
  54. 52
      framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/AbpDaprModule.cs
  55. 8
      framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/AbpDaprOptions.cs
  56. 24
      framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/DaprApiTokenProvider.cs
  57. 14
      framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/IAbpDaprClientFactory.cs
  58. 8
      framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/IDaprApiTokenProvider.cs
  59. 2
      framework/src/Volo.Abp.DistributedLocking.Abstractions/Volo/Abp/DistributedLocking/IAbpDistributedLock.cs
  60. 6
      framework/src/Volo.Abp.DistributedLocking.Dapr/Volo/Abp/DistributedLocking/Dapr/AbpDistributedLockDaprOptions.cs
  61. 24
      framework/src/Volo.Abp.DistributedLocking.Dapr/Volo/Abp/DistributedLocking/Dapr/DaprAbpDistributedLock.cs
  62. 6
      framework/src/Volo.Abp.EventBus.Dapr/Volo/Abp/EventBus/Dapr/DaprDistributedEventBus.cs
  63. 62
      framework/src/Volo.Abp.Http.Client/Microsoft/Extensions/DependencyInjection/ServiceCollectionHttpClientProxyExtensions.cs
  64. 2
      framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/Generators/JQuery/JQueryProxyScriptGenerator.cs
  65. 4
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs
  66. 3
      framework/src/Volo.Abp.MailKit/Volo/Abp/MailKit/MailKitSmtpEmailSender.cs
  67. 2
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/is.json
  68. 4
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/tr.json
  69. 48
      framework/test/Volo.Abp.Core.Tests/Volo/Abp/IntegrationServiceAttribute_Tests.cs
  70. 2
      framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/tr.json
  71. 1
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/tr.json
  72. 3
      modules/account/src/Volo.Abp.Account.Web.IdentityServer/Pages/Account/IdentityServerSupportedLoginModel.cs
  73. 3
      modules/account/src/Volo.Abp.Account.Web.OpenIddict/Pages/Account/OpenIddictSupportedLoginModel.cs
  74. 2
      modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
  75. 224
      modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock
  76. 4
      modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json
  77. 260
      modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock
  78. 4
      modules/blogging/app/Volo.BloggingTestApp/package.json
  79. 298
      modules/blogging/app/Volo.BloggingTestApp/yarn.lock
  80. 4
      modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/tr.json
  81. 2
      modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json
  82. 238
      modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock
  83. 10
      modules/cms-kit/angular/package.json
  84. 4
      modules/cms-kit/angular/projects/cms-kit/package.json
  85. 2
      modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json
  86. 238
      modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock
  87. 2
      modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json
  88. 238
      modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock
  89. 4
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json
  90. 410
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.css
  91. 1578
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.js
  92. 82
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/moment/locale/af.js
  93. 167
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/moment/locale/ar-dz.js
  94. 66
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/moment/locale/ar-kw.js
  95. 182
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/moment/locale/ar-ly.js
  96. 67
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/moment/locale/ar-ma.js
  97. 116
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/moment/locale/ar-sa.js
  98. 66
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/moment/locale/ar-tn.js
  99. 200
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/moment/locale/ar.js
  100. 113
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/moment/locale/az.js

60
abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json

@ -354,6 +354,64 @@
"SendWelcomeEmailWarningMessage": "Organizasyon üyelerine hoşgeldin emaili göndermek istediğinden emin misin?",
"SendWelcomeEmailSuccessMessage": "Hoşgeldin emaili başarıyla gönderilmiştir!",
"AdditionalDeveloperCount": "Ekstra geliştirici sayısı",
"LicensePrice": "Lisans ücreti"
"LicensePrice": "Lisans ücreti",
"FirstName": "Adı",
"Activate": "Aktif",
"ActivateTrialLicenseWarningMessage": "Bir deneme lisansını etkinleştirdiğinizde, kullanıcıya bir karşılama e-postası gönderilecektir. Etkinleştirmek istiyor musunuz?",
"ActivateTrialLicenseSuccessMessage": "Deneme lisansı başarıyla etkinleştirildi!",
"PaymentRequestId": "Ödeme talep kimliği",
"PurchaseDate": "Satın alma tarihi",
"IsAbpBookDownloaded": "Abp kitabı indirildi",
"IsMasteringAbpBookDownloadEnabled": "Abp kitabı indirme etkinleştirildi",
"Permission:Accounting:CustomPaymentLinkGenerator": "Özel Ödeme Bağlantısı",
"CustomPaymentLink": "Özel Ödeme Bağlantısı",
"Menu:CustomPaymentLink": "Özel Ödeme Bağlantısı",
"Amount": "Miktar",
"GenerateCustomPaymentLink": "Özel Ödeme Bağlantısı Oluştur",
"GeneratedPaymentLink": "Oluşturulan Ödeme Bağlantısı",
"CopyText": "Metni kopyala",
"Permission:CommunityEvents": "Etkinlikler",
"Menu:Events": "Etkinlikler",
"Events": "Etkinlikler",
"EventType": "Etkinlik türü",
"Number": "Numara",
"RegistrationURL": "Kayıt URL",
"URL": "URL",
"EventDeletionConfirmationMessage": "Etkinliği silmek istediğinizden emin misiniz?",
"Enum:EventType:0": "Topluluk Konuşmaları",
"CreateAnEvent": "Etkinlik Oluştur",
"Permission:CommunitySpeakers": "Konuşmacılar",
"CreateASpeaker": "Konuşmacı Oluştur",
"Speakers": "Konuşmacılar",
"Image": "Resim",
"GithubURL": "Github URL",
"SpeakerDeletionConfirmationMessage": "Konuşmacıyı silmek istediğinizden emin misiniz?",
"Menu:Speakers": "Konuşmacılar",
"ChooseSpeakerImage": "Konuşmacı resmi seç ...",
"SpeakerImage": "Konuşmacı resmi",
"AddSpeaker": "Konuşmacı Ekle",
"ShowPurchaseItemsOfOrganizations": "Satın alınan öğeler",
"Enum:OrganizationPurchaseState:0": "Teslim edilmedi",
"Enum:OrganizationPurchaseState:1": "Teslim edildi",
"PurchaseItems": "Satın alınan öğeler",
"SuccessfullyUpdated": "Başarıyla güncellendi",
"SuccessfullyAdded": "Başarıyla eklendi",
"PurchaseState": "Satın alma durumu",
"ShowBetweenDayCount": "Gün sayısını göster",
"PurchaseOrder": "Satın alma siparişi",
"ShowCreateInvoiceOfOrganization": "Fatura oluştur",
"ShowCreateQuotationOfOrganization": "Teklif oluştur",
"BookDiscounts": "Kitap indirimleri",
"Menu:BookDiscounts": "Kitap indirimleri",
"BookType": "Kitap türü",
"PurchasePlatform": "Satın alma platformu",
"StartTime": "Başlangıç zamanı",
"EndTime": "Bitiş zamanı",
"CreateABookDiscount": "Kitap indirimi oluştur",
"BookDiscountDeletionConfirmationMessage": "Kitap indirimini silmek istediğinizden emin misiniz?",
"CustomPaymentFlexSwitchDescription": "Lisanslı",
"AllowFeatureUpgradeOnLicenseExpire": "Lisans süresi dolunca özellik yükseltmesine izin ver",
"Deleted{0}": "[{0} silindi]",
"Permission:BookDiscount": "Kitap indirimleri"
}
}

2
abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json

@ -142,7 +142,7 @@
"DomainDrivenDesign": "Domain Driven Design",
"CrossCuttingConcerns": "Cross Cutting Concerns",
"AbpCommunity": "ABP Community",
"Footer_GithubStarCount": "{0} Star on GitHub",
"Footer_GithubStarCount": "{0} Stars on GitHub",
"Footer_NugetDownloadCount": "{0} Downloads on NuGet",
"AbpDescription": "ABP is an open source application framework focused on AspNet Core based web application development. Don't repeat yourself, focus on your own business code.",
"Layout_AbpFramework_MetaTitle": "ABP Framework - Open Source Web Application Framework",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/hu.json

@ -142,7 +142,7 @@
"DomainDrivenDesign": "Domainvezérelt tervezés",
"CrossCuttingConcerns": "Cross Cutting Concerns",
"AbpCommunity": "ABP közösség",
"Footer_GithubStarCount": "{0} Csillag a GitHubon",
"Footer_GithubStarCount": "{0} csillagok a GitHubon",
"Footer_NugetDownloadCount": "{0} Letöltések a NuGeten",
"AbpDescription": "Az ABP egy nyílt forráskódú alkalmazás keretrendszer, amely az AspNet Core alapú webalkalmazások fejlesztésére összpontosít. Ne ismételje magát, összpontosítson saját üzleti kódjára.",
"Layout_AbpFramework_MetaTitle": "ABP Framework – Nyílt forráskódú webalkalmazás-keretrendszer",

125
abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/tr.json

@ -40,6 +40,131 @@
"TrialLicensePeriodWillExpire": "Deneme lisansınızın süresi {0} gün içinde dolacak.",
"TrialLicensePeriodExpireToday": "Deneme lisans süreniz bugün sona erecek.",
"PurchaseNow": "Şimdi satın al!",
"Volo.AbpIo.Domain:030000": "Deneme sürenizi çoktan tamamladınız.",
"Volo.AbpIo.Domain:030001": "Bu kuruluş adı zaten mevcut.",
"Volo.AbpIo.Domain:030002": "Bir kez etkinleştirildiğinde, deneme lisansını -requested- duruma değiştiremezsiniz!",
"Volo.AbpIo.Domain:030003": "Böyle bir durum yok!",
"Volo.AbpIo.Domain:030004": "Beklenmeyen bir hata nedeniyle durum değiştirilemedi!",
"Volo.AbpIo.Domain:030005": "Deneme lisansı -activated- durumundayken başlangıç ve bitiş tarihi güncellenebilir!",
"Volo.AbpIo.Domain:030006": "Bitiş tarihi, başlangıç tarihinden büyük olmalıdır!",
"Volo.AbpIo.Domain:030007": "Bu deneme lisansı zaten etkinleştirildi!",
"Volo.AbpIo.Domain:030008": "Satın alma tarihi ancak durum -purchased- olduğunda ayarlanabilir!",
"Volo.AbpIo.Domain:030009": "Kullanıcı bulunamadı!",
"Volo.AbpIo.Domain:030010": "Deneme lisansını satın almak için önce deneme lisansınızı etkinleştirmeniz gerekir!",
"Volo.AbpIo.Domain:030011": "Satın alınan bir deneme lisansını silemezsiniz!",
"Volo.AbpIo.Domain:070000": "Kuruluş adı yalnızca latin harfleri, sayıları, noktaları ve kısa çizgileri içerebilir!",
"Volo.AbpIo.Domain:070001": "Şirket adı yalnızca latin harfleri, sayıları, noktaları, boşlukları ve kısa çizgileri içerebilir!",
"LatestReleaseLogs": "Son Sürüm Logları",
"RoadMap": "Yol Haritası",
"FAQ": "SSS",
"SourceCode": "Kaynak Kodu",
"SeeAllPosts": "Tüm Gönderileri Gör",
"Contribute": "Katkıda Bulun",
"LiveDemo": "Canlı Demo",
"GetLicense": "Lisans Al",
"OpenSource": "Açık Kaynak",
"WebApplication": "Web Uygulaması",
"MeetTheABP": "ABP'yi Tanıyın",
"CompleteWebDevelopment": "Eksiksiz Bir Web Geliştirme",
"Platform": "Platform",
"ABPDescription": "ABP Framework, en iyi yazılım geliştirme uygulamalarını ve kurallarını takip ederek modern web uygulamaları oluşturmak için eksiksiz bir altyapıdır.",
"StrongInfrastructure": "Güçlü Altyapı",
"CompleteArchitecture": "Eksiksiz Mimari",
"DeveloperFocused": "Geliştirici Odaklı",
"ShareYourExperiences": "ABP Çerçevesi ile ilgili deneyimlerinizi paylaşın",
"LatestPosts": "Son Gönderiler",
"Views": "Görüntülenme",
"LearnLatestNewsAboutABPFramework": "Yeni sürümler, ücretsiz kaynaklar, gönderiler ve daha fazlası gibi ABP'de olup bitenler hakkında bilgi alın.",
"DeveloperTools": "Geliştirici Araçları",
"StartupTemplates": "Başlangıç Şablonları",
"ApplicationModules": "Uygulama Modülleri",
"UI": "Kullanıcı Arayüzü",
"Themes": "Temalar",
"Premium": "Premium",
"PrivacyPolicy": "Gizlilik Politikası",
"TermsAndConditions": "Şartlar ve Koşullar",
"WouldLikeToReceiveMarketingMaterials": "Ürün fırsatları ve özel teklifler gibi pazarlama materyalleri almak istiyorum.",
"JoinOurMarketingNewsletter": "Pazarlama bültenimize katılın",
"CommunityPrivacyPolicyConfirmation": "Şartları, Koşulları ve <a class=\"text-white fw-6 text-decoration-underline opacity-50\" href=\"https://commercial.abp.io/Privacy\">Gizlilik Politikasını</a> kabul ediyorum.",
"WouldLikeToReceiveNotification": "abp.io web sitelerinden en son haberleri almak istiyorum.",
"CommercialNewsletterConfirmationMessage": "<a class=\"text-white fw-6 text-decoration-underline opacity-50\" href=\"https://commercial.abp.io/TermsConditions\">Şartlar ve Koşulları</a> ve <a class=\"text-white fw-6 text-decoration-underline opacity-50\" href=\"https://commercial.abp.io/Privacy\">Gizlilik Politikasını</a> kabul ediyorum.",
"FreeDDDEBook": "Ücretsiz DDD E-Kitabı",
"AdditionalServices": "Ek Hizmetler",
"Learn": "Öğren",
"AccountOverview": "Hesap Özeti",
"MyOrganizations": "Kuruluşlarım",
"MySupportQuestions": "Destek Sorularım",
"MyProfile": "Profilim",
"Logout": "Çıkış Yap",
"Home": "Ev",
"Posts": "Gönderiler",
"JoinTheABPCommunity": "ABP Topluluğuna Katılın",
"SubmitYourPost": "Gönderinizi Gönderin",
"Modules": "Modüller",
"Tools": "Araçlar",
"Pricing": "Fiyatlandırma",
"ChangeLogs": "Değişiklik Logları",
"SubscribeToNewsletter": "Bültenimize Abone Olun",
"SubscribeToNewsletterDescription": "Yeni sürümler, ücretsiz kaynaklar, gönderiler ve daha fazlası gibi ABP'de olup bitenler hakkında bilgi alın.",
"EmailAddress": "E-posta Adresi",
"Subscribe": "Abone Ol",
"WelcomeToABP": "ABP'ye Hoşgeldiniz",
"EULA": "SKLA",
"ABPCommercialIntroductionMessage": "Önceden oluşturulmuş uygulama modülleri, gelişmiş başlangıç şablonları, hızlı uygulama geliştirme araçları, profesyonel kullanıcı arayüzü temaları ve premium destek.",
"MasteringAbpFrameworkEBook": "Mastering ABP Framework",
"MasteringTheABPFrameworkExplanation": "ABP Çerçevesinin yaratıcısı tarafından yazılan bu kitap, çerçeveyi ve modern web uygulaması geliştirme tekniklerini tam olarak anlamanıza yardımcı olacaktır.",
"Speakers": "Konuşmacılar",
"PreviousEvents": "Önceki Etkinlikler",
"WatchTheEvent": "Etkinliği İzle",
"RegisterNow": "Şimdi Kaydol",
"ThereIsNoEvent": "Etkinlik yok",
"Events": "Etkinlikler",
"Volo.AbpIo.Domain:080000": "\"{name}\" adlı bir satın alma öğesi zaten var",
"MasteringAbpFrameworkBook": "Kitap: Mastering ABP Framework",
"ABPIO-CommonPreferenceDefinition": "Yeni gönderiler, etkinlikler ve daha fazlası gibi ABP Platformu hakkındaki en son haberleri alın.",
"BuiltOn": "Üzerinde inşa edildi",
"AbpFramework": "ABP Çerçevesi",
"Volo.AbpIo.Domain:080001": "Başlangıç Zamanı Bitiş Zamanından büyük olamaz",
"Enum:BookType:0": "Mastering ABP Framework",
"Enum:PurchasePlatform:0": "Amazon",
"Enum:PurchasePlatform:1": "Paket",
"Copied": "Kopyalandı!",
"CouldNotCopy": "Kopyalanamadı!",
"CopyNotSupportByYourBrowser": "Tarayıcınız kopyalamayı desteklemiyor",
"City": "Şehir",
"ZipCode": "Posta Kodu",
"Address": "Adres",
"Homepage": "Anasayfa",
"Year": "Yıl",
"Copyright": "Telif hakkı © <a href=\"{0}\" target=\"_blank\">{1}</a>",
"DomainDrivenDesign": "Alan Odaklı Tasarım",
"CrossCuttingConcerns": "Cross Cutting Concerns",
"AbpCommunity": "ABP Topluluğu",
"Footer_GithubStarCount": "Github'da {0} Yıldız",
"Footer_NugetDownloadCount": "{0} NuGet indirme",
"AbpDescription": "ABP, AspNet Core tabanlı web uygulaması geliştirmeye odaklanan açık kaynaklı bir uygulama çerçevesidir. Kendinizi tekrar etmeyin, kendi iş kodunuza odaklanın.",
"Layout_AbpFramework_MetaTitle": "ABP Framework - Açık Kaynak Web Uygulama Çerçevesi",
"CommunityTalks_CountdownDays": "Gün",
"CommunityTalks_CountdownHours": "Saat",
"CommunityTalks_CountdownMinutes": "Dk",
"CommunityTalks_CountdownSeconds": "Sn",
"SeePreviousEvents": "Önceki Etkinlikleri Gör",
"CookieConsent_Accept": "Kabul Et",
"CookieConsent_Explanation_1": "Web sitemizde size en iyi deneyimi sunmak için çerezleri kullanıyoruz.",
"CookieConsent_Explanation_2": "Göz atmaya devam ederseniz, <a href=\"@Url.Page(\"/Privacy\")\">Gizlilik politikamızı ve çerez politikamızı kabul etmiş olursunuz.</a>.",
"Error_Page_400_Title": "İstenen sayfa sunulurken bir sorun oluştu.",
"Error_Page_400_Description_1": "Genellikle bu, isteğiniz işlenirken beklenmedik bir hata oluştuğu anlamına gelir.",
"Error_Page_400_Description_2": "Sorun devam ederse, <a href=\"mailto:info@abp.io\">info@abp.io</a> adresinden bizimle iletişime geçin, size yardımcı olalım.",
"GoToHomepage": "Anasayfaya git",
"Error_Page_404_Title": "Sayfa bulunamadı!",
"Error_Page_404_Description_1": "Aradığınız web sayfası bu değil.",
"Error_Page_500_Title": "Görünüşe göre bir şeyler ters gitti!",
"Error_Page_500_Description_1": "Bu hataları otomatik olarak takip ediyoruz, ancak sorun devam ederse <br /> bizimle iletişime geçmekten çekinmeyin. Bu arada, yenilemeyi deneyin.",
"Error_Page_500_Description_2": "Bizimle <a href=\"mailto:info@abp.io\" target=\"_blank\">info@abp.io</a> adresinden iletişime geçin.",
"Books": "Kitaplar",
"ABPDiscordServer": "ABP Discord Sunucusu",
"ABPCommunityTalks": "ABP Topluluk Konuşmaları",
"ABPCommunityPosts": "ABP Topluluk Gönderileri",
"WelcomeFallCampaign": "Hoş Geldin Sonbahar Kampanyası!",
"GiveAwayForNewPurchases": "Yeni alımlar için Uygulama Geliştirme Sınıfı Eğitimi hediye edilecektir!"
}

2
abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json

@ -142,7 +142,7 @@
"DomainDrivenDesign": "领域驱动设计",
"CrossCuttingConcerns": "横切关注点",
"AbpCommunity": "ABP 社区",
"Footer_GithubStarCount": "{0} GitHub Stars",
"Footer_GithubStarCount": "{0} GitHub 上的星星",
"Footer_NugetDownloadCount": "{0} NuGet 下载量",
"AbpDescription": "ABP 是一个开源应用程序框架,专注于基于 AspNet Core 的 Web 应用程序开发。 Don't repeat yourself,专注于自己的业务代码。",
"Layout_AbpFramework_MetaTitle": "ABP 框架 - 开源 Web 应用程序框架",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Blog/Localization/Resources/tr.json

@ -1,5 +1,7 @@
{
"culture": "tr",
"texts": {
"AbpTitle": "ABP Framework - Açık Kaynak Web Uygulama Çerçevesi",
"AbpDescription": "ABP, AspNet Core tabanlı web uygulaması geliştirmeye odaklanan açık kaynaklı bir uygulama çerçevesidir. Kendinizi tekrar etmeyin, kendi iş kodunuza odaklanın."
}
}

6
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json

@ -660,7 +660,7 @@
"Landing_Page_PreBuiltApplicationModules": "Pre-Built Application Modules which include most common web application requirements.",
"Landing_Page_ChatModule": "Chat",
"Landing_Page_DocsModule": "Docs",
"Landing_Page_FileManagementModule": "Docs",
"Landing_Page_FileManagementModule": "File Management",
"Landing_Page_CustomerStory_1": "ABP Commercial allowed SC Ventures to deliver a bank-grade multi-tenant silo-database SaaS platform in 9 months to support the accounts receivable / accounts payable supply chain financing of significant value invoices from multiple integrated anchors. The modularity of ABP made it possible for the team to deliver in record time, pass all VAPT, and deploy the containerized microservices stack via full CI/CD and pipelines into production.",
"Landing_Page_CustomerStory_2": "We are seeing the value of using ABP Commercial to reduce the overhead of custom development projects. And the team is able to unify the code pattern in different project streams. We see more potential in the framework for us to build new features faster than before. We trust we will be constantly seeing the value of leveraging ABP Commercial.",
"Landing_Page_CustomerStory_3": "We love ABP. We don't have to write everything from scratch. We start from out-of-the-box features and just focus on what we really need to write. Also, ABP is well-architected and the code is high quality with fewer bugs. If we would have to write everything we needed on our own, we might have to spend years. Once more things we like is that the new version, or issue fixing, or improvement come out very soon\n every other week. We don't wait too long.",
@ -743,6 +743,8 @@
"Testimonial_ShortDescription_3": "We start from out-of-the-box features and just focus on what we really need to write.",
"Testimonial_ShortDescription_4": "ABP Commercial was the best fit for our needs.",
"OnlineReviewersOnAbpCommercial": "Online Reviews on ABP Commercial",
"SeeWhatToldAboutAbpCommercial": "See what has been told about ABP Commercial and write your thoughts if you want."
"SeeWhatToldAboutAbpCommercial": "See what has been told about ABP Commercial and write your thoughts if you want.",
"BlazoriseLicense": "Do we need to buy Blazorise license?",
"BlazoriseLicenseExplanation": "We have an agreement between Volosoft and Megabit, with this agreement Blazorise license is bundled with ABP Commercial products therefore our customers do not need to purchase an extra Blazorise license."
}
}

364
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json

@ -178,7 +178,7 @@
"HowManyDevelopers": "ABP Commercial'da kaç geliştirici çalışabilir?",
"HowManyDevelopersExplanation": "ABP Ticari lisansları geliştirici başınadır. Farklı lisans türlerinin farklı geliştirici sınırları vardır. Ancak, ihtiyacınız olduğunda herhangi bir lisans türüne daha fazla geliştirici ekleyebilirsiniz. Lisans türleri, geliştirici sınırları ve ek geliştirici maliyetleri için <a href=\"{0}\">fiyatlar</a> sayfasına bakın.",
"ChangingLicenseType": "Lisans türümü daha sonra yükseltebilir miyim?",
"ChangingLicenseTypeExplanation": "Aktif lisans süreniz içerisinde aradaki farkı ödeyerek bir üst lisansa geçebilirsiniz. Daha yüksek bir lisans planına yükselttiğinizde, yeni planın avantajlarından yararlanırsınız, ancak lisans yükseltmesi, lisansın sona erme tarihini değiştirmez. Ayrıca, mevcut lisansınıza yeni geliştirici lisansları da ekleyebilirsiniz, bkz. \"ABP Ticari üzerinde kaç geliştirici çalışabilir?\"",
"ChangingLicenseTypeExplanation": "Aktif lisans süreniz içerisinde aradaki farkı ödeyerek bir üst lisansa geçebilirsiniz. Daha yüksek bir lisans planına yükselttiğinizde, yeni planın avantajlarından yararlanırsınız, ancak lisans yükseltmesi, lisansın sona erme tarihini değiştirmez. Ayrıca, mevcut lisansınıza yeni geliştirici koltukları da ekleyebilirsiniz, bkz. \"ABP Ticari üzerinde kaç geliştirici çalışabilir?\"",
"LicenseExtendUpgradeDiff": "Lisans uzatma ve yükseltme arasındaki fark nedir?",
"LicenseExtendUpgradeDiffExplanation": "<strong>Uzatma:</strong> Lisansınızı uzatarak/yenileyerek, premium destek almaya ve modüller ve temalar için major veya minor güncellemeler almaya devam edeceksiniz. Ayrıca, yeni projeler oluşturmaya devam edebileceksiniz. Ve geliştirmenizi hızlandıran ABP Suite'i kullanmaya devam edebileceksiniz.<hr/><strong>Yükseltme:</strong> Lisansınızı yükselterek, ek avantajlar elde etmenizi sağlayacak daha yüksek bir lisans planına terfi edeceksiniz. . Lisans planları arasındaki farkları kontrol etmek için <a href=\"/pricing\">lisans karşılaştırma tablosuna</a> bakın.<strong>Öte yandan, yükseltme yaptığınızda lisans geçerlilik bitiş tarihiniz değişmez!</strong >Lisans bitiş tarihinizi uzatmak için lisansınızı uzatmanız gerekir.",
"LicenseRenewalCost": "1 yıl sonra ehliyet yenileme ücreti ne kadardır?",
@ -385,6 +385,366 @@
"RemoveCurrentUserFromOrganizationWarningMessage": "Organizasyondan kendinizi kaldırıyorsunuz. Artık bu organizasyonu yönetemeyeceksiniz, onaylıyor musunuz? ",
"RenewExistingOrganizationOrCreateNewOneMessage": "Aşağıdaki \"Şimdi Uzat\" buton(lar)una tıklayarak organizasyon(lar)ınızın lisansını yenileyebilir ve böylece lisans geçerlilik süresini 1 yıl uzatabilirsiniz. Ödemeye devam ederseniz, yeni bir organizasyonunuz olacak. Yeni bir organizasyonla devam etmek istiyor musunuz? ",
"ExtendNow": "Şimdi Uzat",
"ContinueWithNewOrganization": "Yeni bir organizasyon ile devam et"
"ContinueWithNewOrganization": "Yeni bir organizasyon ile devam et",
"Owner": "sahip",
"AddNewOwner": "Yeni sahip ekle",
"AddNewDeveloper": "Yeni geliştirici ekle",
"FirstNameField": "Ad",
"LastNameField": "Soyad",
"AbpCommercialMetaTitle": "ABP Commercial - Eksiksiz Web Geliştirme Platformu : {0} | ABP Commercial",
"AbpCommercialMetaDescription": "ABP Commercial, açık kaynaklı ABP çerçevesinin üzerine inşa edilmiş önceden oluşturulmuş uygulama modülleri, hızlı geliştirme araçları, kullanıcı arayüzü temaları ve hizmetlerinden oluşan bir settir.",
"WhatHappensWhenLicenseEnds": "Lisans sürem sona erdiğinde ne olacak?",
"WhatHappensWhenLicenseEndsExplanation1": "ABP Ticari lisansı <a href=\"{0}\" target=\"_blank\">kalıcı bir lisanstır</a>. Lisansınızın süresi dolduktan sonra projenizi geliştirmeye devam edebilirsiniz. Ve lisansınızı yenilemek zorunda değilsiniz. Lisansınız kutudan bir yıllık güncelleme ve destek planı ile birlikte gelir. Yeni özellikler, performans geliştirmeleri, hata düzeltmeleri, destek almaya devam etmek ve ABP Suite'i kullanmaya devam etmek için lisansınızı yenilemeniz gerekir. Lisansınızın süresi dolduğunda aşağıdaki avantajlardan yararlanamazsınız:",
"WhatHappensWhenLicenseEndsExplanation2": "ABP Ticari'yi kullanarak yeni çözümler oluşturamazsınız, ancak mevcut uygulamalarınızı sonsuza kadar geliştirmeye devam edebilirsiniz.",
"WhatHappensWhenLicenseEndsExplanation3": "MINOR sürümünüzdeki modüller ve temalar için güncellemeleri alabileceksiniz (RC veya Önizleme sürümleri hariç). Örneğin: bir modülün v3.2.0 sürümünü kullanıyorsanız, bu modülün v3.2.x (v3.2.1, v3.2.5... vb.) sürümleri için güncellemeleri almaya devam edebilirsiniz. Ancak bir sonraki büyük veya küçük sürüm için güncelleme alamazsınız (v3.3.0, v3.3.3, 4.x.x... gibi). Örneğin, lisansınızın süresi dolduğunda, en son sürüm v4.4.3 idi ve daha sonra hem 4.4.4 sürümünü hem de 4.5.0 sürümünü yayınladı, v4.4.X'e erişebilirsiniz, ancak v4.5.X'e erişemezsiniz.",
"WhatHappensWhenLicenseEndsExplanation4": "Lisansınız sona erdikten sonra ABP Ticari platformuna eklenen yeni modülleri ve temaları yükleyemezsiniz.",
"WhatHappensWhenLicenseEndsExplanation5": "ABP Suite'i kullanamazsınız.",
"WhatHappensWhenLicenseEndsExplanation6": "Artık <a href=\"{0}\">premium desteği</a> alamazsınız.",
"WhatHappensWhenLicenseEndsExplanation7": "Bu avantajlardan yararlanmaya devam etmek istiyorsanız lisansınızı uzatabilirsiniz (yenileyebilirsiniz). Lisansınızın süresi dolduktan sonra <strong>1 ay</strong> içinde lisansınızı uzatırsanız, aşağıdaki indirimler uygulanacaktır: Takım Lisansı {0} % indirim, İşletme Lisansı %{1} indirim, Kurumsal Lisans %{2} indirim.",
"WhatHappensWhenLicenseEndsExplanation8": "Oluşturduğunuz ABP projeleri sunucularımızda saklanmamaktadır. Bu nedenle indirdiğiniz kaynak kodunu saklamak sizin sorumluluğunuzdadır. Lisansınızın süresi dolduğunda, oluşturulan ABP proje kaynak kodunuzu almanın bir yolu yoktur.",
"TrialPlanExplanation": "ABP Ticari takım lisansı için 14 günlük deneme süresi var. Daha fazla bilgi için <a href={0} target='_blank'>burayı</a> ziyaret edin. Ayrıca, Takım lisansları için 30 günlük para iade garantisi veriyoruz. Sadece ilk 30 gün içinde geri ödeme talebinde bulunabilirsiniz. İşletme ve Kurumsal lisansları için 30 gün içinde %60 geri ödeme sağlıyoruz. Bunun nedeni, İşletme ve Kurumsal lisanslarının tüm modüllerin ve temaların tam kaynak kodunu içermesidir.",
"ContactUsQuestions": "Herhangi bir sorunuz varsa bizimle iletişime geçin",
"ActivationRequirement": "Denemenizi başlatmanıza son bir adım kaldı.<br>Bilgilerinizi kontrol ettikten sonra lisansınızı etkinleştireceğiz. Lisansınız etkinleştirildiğinde, <b>{0}</b> adresine bir e-posta göndereceğiz. Merak etmeyin bu süreç uzun sürmeyecek!",
"PurchaseNow": "Şimdi satın al",
"DowngradeLicensePlan": "Gelecekte daha düşük bir lisans planına geçebilir miyim?",
"DowngradeLicensePlanExplanation": "Mevcut lisans planınızı düşüremezsiniz. Ancak yeni bir daha düşük lisans planı satın alabilir ve yeni lisans üzerinde geliştirmenize devam edebilirsiniz. Daha düşük bir lisans satın aldıktan sonra, ABP CLI komutu ile yeni lisans planınıza giriş yapmanız yeterlidir: ` abp login <username> -o <organization> `.",
"LicenseTransfer": "Lisans bir geliştiriciden diğerine aktarılabilir mi?",
"LicenseTransferExplanation": "Evet! Bir lisans satın aldığınızda, lisans sahibi olursunuz, dolayısıyla kuruluş yönetim sayfasına erişiminiz olur. Bir kuruluşun sahip ve geliştirici rolleri vardır. Sahipler geliştirici lisanslarını yönetebilir ve geliştiriciler atayabilir. Atanan her geliştirici, ABP CLI komutu sisteme girecek ve geliştirme ve destek izinlerine sahip olacaktır.",
"UserOwnerDescription": "Kuruluşun 'Sahibi' bu hesabın yöneticisidir. Lisansları satın alarak ve geliştiricileri tahsis ederek organizasyonu yönetir. Bir 'Sahip' ABP Ticari projelerine kod yazamaz, ABP örnek projelerini indiremez ve destek web sitesinde soru soramaz. Tüm bunları yapmak istiyorsanız, kendinizi de geliştirici olarak eklemeniz gerekir.",
"UserDeveloperDescription": "'Geliştiriciler' ABP Ticari projelerinde kod yazabilir, ABP örnek projelerini indirebilir ve destek web sitesinde sorular sorabilir. Öte yandan, 'Geliştiriciler' bu organizasyonu yönetemezler.",
"PurchaseTrialOrganizationOrCreateNewOneMessage": "Deneme lisansınız var. Deneme lisansınızı satın almak için Şimdi Satın Al düğmesine tıklayın. Ödeme işlemine devam ederseniz, yeni bir kuruluşunuz olacak. Yeni bir organizasyon ile devam etmek istiyor musunuz?",
"CreateNewOrganization": "Yeni bir organizasyon oluştur",
"RenewLicenseEarly": "Lisansımı erken yenilersem, tüm yılı alacak mıyım?",
"RenewLicenseEarylExplanation": "Lisansınızı lisans bitiş tarihinizden önce yenilediğinizde, lisans bitiş tarihinize 1 yıl eklenecektir. Örneğin, lisansınızın süresi {0}-06-06 tarihinde doluyorsa ve lisansınızı {0}-01-01 tarihinde yenilediyseniz, yeni lisans bitiş tarihiniz {1}-06-06 olacaktır.",
"OpenSourceWebApplication": "Açık Kaynak Web Uygulaması",
"CompleteWebDevelopment": "Tam Web Geliştirme",
"ABPFrameworkDescription": "ABP Framework, yazılım geliştirme ve sözleşmelerin en iyi uygulamalarını takip ederek modern web uygulamaları oluşturmak için eksiksiz bir altyapıdır.",
"CommunityDescription": "ABP Çerçevesi ile ilgili deneyimlerinizi paylaşın!",
"GetStarted": "Başlayın",
"Views": "Görünümler",
"LatestPosts": "Son Gönderiler",
"PreBuiltApplication": "Önceden Oluşturulmuş Uygulama",
"DatabaseProviders": "Veritabanı Sağlayıcıları",
"UIFrameworks": "UI Çerçeveleri",
"UsefulLinks": "Faydalı Bağlantılar",
"Platform": "Platform",
"CoolestCompaniesUseABPCommercial": "En havalı şirketler zaten <span class=\"fw-6\">ABP Commercial</span> kullanıyor.",
"UserInterface": "Kullanıcı Arayüzü",
"APIGateway": "API Ağ Geçidi",
"Microservice": "Mikro Hizmet",
"Database": "Veritabanı",
"Architecture": "Mimari",
"MicroserviceArchitectureExplanation": "Bu, en son teknolojilerle ölçeklenebilir bir mikro hizmet çözümü oluşturmak için birden çok uygulama, API ağ geçidi, mikro hizmet ve veritabanlarından oluşan eksiksiz bir çözüm mimarisidir.",
"BusinessLogic": "İş Mantığı",
"DataAccessLayer": "Veri Erişim Katmanı",
"Monolith": "Monolit",
"ModularArchitectureExplanation": "Bu başlangıç şablonu, temiz ve sürdürülebilir bir kod tabanı oluşturmak için katmanlı, modüler ve DDD tabanlı bir çözüm mimarisi sağlar.",
"SeeDetails": "Ayrıntıları Gör",
"SeeDocumentation": "Belgelere göz atın",
"Bs5Compatible": "Bootstrap 5 uyumlu profesyonel tema, yönetici web siteniz için mükemmel.",
"LeptonXTheme": "LeptonX Tema",
"LeptonXDark": "LeptonX Koyu",
"LeptonXLight": "LeptonX Açık",
"LeptonXSemiDark": "LeptonX Yarı Koyu",
"BuiltOnBs5Library": "Bootstrap 5 kütüphanesi üzerine inşa edilmiştir.",
"FullyCompatibleWithBs5": "Bootstrap 5 HTML yapısı ve CSS sınıfları ile %100 uyumlu",
"ResponsiveAndMobileCompatible": "Responsive, mobil uyumlu, RTL desteği",
"ProvidesStylesForDatatables": "Datatables için stil sağlar",
"MultipleLayoutOptions": "Çoklu düzen seçenekleri",
"EasilyInstallAndUpgrade": "Kolay kurulum ve yükseltme",
"SupportForum": "Destek Forumu",
"TrustedBy": "Güvenenler",
"OurPricing": "<span class=\"gradient-commercial\">Fiyatlandırmamız</span>",
"Plans": "Planlar",
"NameSurname": "Ad Soyad",
"Unspecified": "Belirtilmemiş",
"LicenceType": "Lisans Türü",
"LicenseDiscountWarning": "BU İNDİRİM SAYFASI VARSAYILAN İNDİRİM KODU VE VOLOSOFT GELİŞTİRİCİLERİ İÇİN KULLANILMAKTADIR. AŞAĞIDAKİ SATIN ALMA LİNKLERİ ÇALIŞMAZ.",
"DiscountedLicenseExplanation": "Bu lisans fiyatları küçük girişimler, bireysel geliştiriciler, öğrenciler, kar amacı gütmeyen kuruluşlar ve projeler içindir!",
"General": "Genel",
"License": "Lisans",
"Development": "Geliştirme",
"Payment": "Ödeme",
"WatchExplainerVideo": "Hadi Tanışalım! Açıklayıcı Videoyu İzleyin",
"LightDarkAndSemiDarkThemes": "Açık, koyu ve yarı koyu temalar",
"LeptonXThemeExplanation": "Lepton Teması, temanızı sistem ayarlarınıza göre değiştirebilir.",
"PRO": "PRO",
"WelcomeToABPCommercial": "<span class=\"gradient-commercial\">ABP Commercial</span>'a hoş geldiniz!",
"YourAccountDetails": "Hesap bilgileriniz",
"OrganizationName": "Organizasyon Adı",
"AddDevelopers": "Geliştiriciler Ekle",
"StartDevelopment": "Geliştirmeye Başla",
"CreateAndRunApplicationUsingStartupTemplate": "ABP Ticari başlangıç şablonunu kullanarak yeni bir web uygulamasının nasıl oluşturulacağını ve çalıştırılacağını öğrenin.",
"CommunityDescription2": "<span class=\"fw-6\">community.abp.io</span>, insanların ABP ile ilgili makaleleri paylaşabileceği bir yerdir. Makaleler, öğreticiler, kod örnekleri, vaka çalışmaları arayın ve sizinle aynı kulvarda olan insanlarla tanışın.",
"UseABPSuiteExplanation": "Modüllerin ve temaların kaynak kodunu indirmek için ABP Suite'i kullanın.",
"ManageModulesWithSuite": "ABP modüllerinizi Suite ile de yönetebilirsiniz.",
"LearnHowToInstallSuite": "ABP Suite'in nasıl kurulacağını ve kullanılacağını öğrenin.",
"SeeMore": "Daha fazla göster",
"SeeLess": "Daha az göster",
"LayeredSolutionStructure": "Katmanlı Çözüm Yapısı",
"LayeredSolutionStructureExplanation": "Çözüm, iş mantığınızı altyapıdan ve entegrasyonlardan izole etmek ve kodun sürdürülebilirliğini ve yeniden kullanılabilirliğini en üst düzeye çıkarmak için Etki Alanı Güdümlü Tasarım ilkelerine ve modellerine dayalı olarak katmanlandırılmıştır. ABP Framework, uygulamanız için DDD'yi gerçekten uygulamak üzere soyutlamalar, temel sınıflar ve kılavuzlar sağlamaktadır.",
"MultipleUIOptions": "Çoklu UI Seçenekleri",
"MultipleUIOptionsExplanation": "Kullanıcı Arayüzü oluşturmanın farklı yollarını seviyoruz. Bu başlangıç çözümü, iş uygulamanız için üç farklı UI çerçeve seçeneği sunuyor.",
"MultipleDatabaseOptions": "Çoklu Veritabanı Seçenekleri",
"MultipleDatabaseOptionsExplanation": "İki veritabanı sağlayıcısı seçeneğiniz var (her ikisini de tek bir uygulamada kullanmanın yanı sıra). Herhangi bir ilişkisel veritabanıyla çalışmak için Entity Framework Core'u kullanın ve daha iyi bir performans için düşük seviyeli sorgular yazmanız gerektiğinde isteğe bağlı olarak Dapper'ı kullanın. Belge tabanlı bir NoSQL veritabanı kullanmanız gerekiyorsa MongoDB başka bir seçenektir. Bu sağlayıcılar iyi entegre edilmiş, soyutlanmış ve önceden yapılandırılmış olsa da, .NET ile kullanabileceğiniz herhangi bir veritabanı sistemiyle etkileşime girebilirsiniz. ",
"ModularArchitectureExplanation2": "Modülerlik, ABP.IO platformunda birinci sınıf bir vatandaştır. Uygulamalardaki tüm işlevler iyi izole edilmiş opsiyonel modüllere ayrılmıştır. Başlangıç çözümü zaten temel <a href=\"@Url.Page(\"/Modules\")\" class=\"text-primary\">ABP Ticari modülleri</a> önceden yüklenmiş olarak gelir. Kendi uygulamanız için modüler bir sistem oluşturmak üzere kendi modüllerinizi de oluşturabilirsiniz.",
"MultiTenancyForSaasBusiness": "Saas İşletmeleri için Çoklu Kiralama",
"MultiTenancyForSaasBusinessExplanation": "ABP Commercial, SaaS (Hizmet Olarak Yazılım) sistemlerinizi oluşturmak için eksiksiz, uçtan uca çoklu kiracılık sistemi sağlar. Anında veritabanı oluşturma ve taşıma sistemi ile kiracıların kendi veritabanlarını paylaşmalarına veya sahip olmalarına olanak tanır.",
"MicroserviceStartupSolution": "Mikro Hizmet Başlangıç Çözümü",
"MicroserviceArchitectureExplanation2": "Önceden oluşturulmuş temel çözümden ve damıtılmış deneyimden yararlanmak için bir sonraki mikro hizmet sisteminiz için alabilirsiniz.",
"PreIntegratedTools": "Popüler araçlara önceden entegre edilmiş",
"PreIntegratedToolsExplanation": "Çözüm halihazırda endüstri standardı araçlara ve teknolojilere entegre edilmiş durumda, ancak siz bunları her zaman değiştirebilir ve favori araçlarınıza entegre edebilirsiniz.",
"SingleSignOnAuthenticationServer": "Tek Oturum Açma Kimlik Doğrulama Sunucusu",
"SingleSignOnAuthenticationServerExplanation": "Çözüm, API erişim yönetimi özelliklerine sahip tek oturum açma sunucusu olarak diğer uygulamalar tarafından kullanılan bir kimlik doğrulama sunucusu uygulamasına sahiptir. IdentityServer tabanlıdır.",
"WebAppsWithGateways": "2 API Ağ Geçidi ile 2 Web Uygulaması",
"WebAppsWithGatewaysExplanation": "Çözüm, her biri özel bir API ağ geçidine sahip iki web uygulaması içeriyor (BFF - Backend For Frontend modeli).",
"BackOfficeApplication": "Back Office Uygulaması",
"BackOfficeApplicationExplanation": "Birden fazla UI çerçeve seçeneği ile sisteminizin gerçek web uygulaması. Her türlü iş uygulamasını oluşturabilirsiniz.",
"LandingWebsite": "Açılış Web Sitesi",
"LandingWebsiteExplanation": "Şirketinizi tanıtmak, ürünlerinizi satmak gibi çeşitli amaçlar için kullanılabilecek genel bir açılış/genel web sitesi.",
"ABPFrameworkEBook": "Mastering ABP Framework e-kitabı",
"MasteringAbpFrameworkEBookDescription": "ABP Ticari lisansınıza dahildir",
"FullName": "Tam Ad",
"LicenseTypeNotCorrect": "Lisans tipi doğru değil.",
"Trainings": "Eğitimler",
"ChooseTrainingPlaceholder": "Eğitim seçin ...",
"DoYouNeedTrainings": "Bu eğitimlerden birine ihtiyacınız var mı?",
"DoYouNeedTraining": "{0} eğitimine ihtiyacınız var mı?",
"GetInTouchUs": "Bize Ulaşın",
"ForMoreInformationClickHere": "Daha fazla bilgi için <a href='{0}'>buraya tıklayın.</a>",
"IsGetOnboardingTraining": "İşe alım ve web uygulaması geliştirme eğitimi almak ister misiniz?",
"OnboardingWebApplicationDevelopmentTrainingMessage": "Eğitim takviminizi planlamak için lütfen organizasyonu oluşturduktan sonra {0} ile iletişime geçin",
"CustomPurchaseMessage": "Bir sonraki adım için, bizimle iletişime geçmek üzere {0}'a tıklayın.",
"Note": "Not",
"AdditionalNote": "Ek Not",
"OnboardingTrainingFaqTitle": "ABP onboarding eğitiminiz var mı?",
"OnboardingTrainingFaqExplanation": " Evet, ABP projenizi hızlı bir şekilde başlatmanıza yardımcı olacak ABP Eğitim Hizmetlerimiz var. Bir ABP çekirdek ekip üyesinden ABP hakkında bilgi edinecek ve ABP projenize başlamak için gereken becerileri edineceksiniz. İlk katılım eğitiminde, geliştirme ortamınızı nasıl kuracağınızı, gerekli araçları nasıl yükleyeceğinizi ve tamamen işlevsel bir CRUD sayfasını nasıl oluşturacağınızı açıklayacağız. Eğitim canlı olacak ve Zoom uygulaması kullanılacaktır, ancak diğer çevrimiçi toplantı platformlarını kullanmaya da açığız. Eğitim dili İngilizce olacaktır. ABP ile ilgili sorularınızı oturumlar sırasında da sorabilirsiniz. Her iki taraf için de uygun bir zaman ve tarih planlanacaktır. Daha fazla bilgi almak için <a href=\"mailto:info@abp.io\">info@abp.io</a> adresinden bizimle iletişime geçebilirsiniz.",
"AddBasket": "Sepete Ekle",
"SendTrainingRequest": "Eğitim Talebi Gönder",
"OnlyEnglishVersionOfThisDocumentIsTheRecentAndValid": "* Bu belgenin İngilizce versiyonu en güncel olanıdır ve herhangi bir anlaşmazlıkta İngilizce versiyonu geçerli olacaktır.",
"Pricing_Page_Title": "Planlar ve Fiyatlandırma",
"Pricing_Page_Description": "İşletmenizin bugün ihtiyaç duyduğu özellikleri ve işlevselliği seçin. Bir ABP Ticari lisansı satın alın ve sınırsız proje oluşturun.",
"Pricing_Page_HurryUp": "Acele edin!",
"Pricing_Page_BuyLicense": "16 Ocak'a kadar <strong>2021 fiyatlarıyla</strong> lisans satın alın!",
"Pricing_Page_ValidForExistingCustomers": "Mevcut müşteriler ve lisans yenilemeleri için de geçerlidir.",
"Pricing_Page_Hint1": "Lisans fiyatına belirli sayıda geliştirici koltuğu dahildir. Daha fazla geliştiriciniz varsa, her zaman ek koltuk satın alabilirsiniz.",
"Pricing_Page_Hint2": "Şimdi veya gelecekte daha fazla geliştirici koltuğu satın alabilirsiniz. Lisanlar koltuk bazlıdır, bu nedenle bir koltuğu bir geliştiriciden diğerine aktarabilirsiniz.",
"Pricing_Page_Hint3": "Lisansınız ile sınırsız sayıda farklı ürün geliştirebilirsiniz.",
"Pricing_Page_Hint4": "ABP Suite, üretkenliğinizi artırmak için geliştirmenize yardımcı olacak bir araçtır. CRUD sayfaları oluşturmayı ve yeni projeler oluşturmayı destekler.",
"Pricing_Page_Hint5": "Önceden oluşturulmuş tüm modülleri uygulamalarınızda kullanabilirsiniz.",
"Pricing_Page_Hint6": "Önceden oluşturulmuş tüm temaları uygulamalarınızda kullanabilirsiniz.",
"Pricing_Page_Hint7": "Başlangıç şablonu, projenize hızlı bir başlangıç yapmanızı sağlayan bir Visual Studio çözümüdür. Tüm temel modüller eklenir ve sizin için önceden yapılandırılır.",
"Pricing_Page_Hint8": "Mastering ABP Framework e-kitabı, .NET çözümlerinin en iyi uygulamalarla nasıl hayata geçirileceğini anlatıyor. Amazon.com'da satılmaktadır ve kitabı lisansınız dahilinde ücretsiz olarak indirebilirsiniz.",
"Pricing_Page_Hint9": "Herhangi bir modülün kaynak kodunu indirebilirsiniz. Köklü değişiklikler yapmak için kaynak kodunu çözümünüze eklemek veya güvenlik nedeniyle kendinize saklamak isteyebilirsiniz.",
"Pricing_Page_Hint10": "Lisanslar ömür boyu geçerlidir. Bu, uygulamanızı sonsuza kadar geliştirmeye devam edebileceğiniz anlamına gelir. En son sürüme erişim ve destek alma lisans süresi içinde (yenilemediğiniz sürece 1 yıl) verilir.",
"Pricing_Page_Hint11": "Dağıtım konusunda kısıtlama yok! Bulut hizmetleri veya şirket içi dahil olmak üzere istediğiniz kadar sunucuya dağıtabilirsiniz.",
"Pricing_Page_Hint12": "Aktif lisans süreniz içinde modülleri, temaları ve araçları en son sürüme güncelleyebilirsiniz. Lisansınızın süresi dolduktan sonra, hata düzeltmeleri, yeni özellikler ve geliştirmelerle ilgili güncellemeleri almaya devam etmek için lisansınızı yenilemeniz gerekir.",
"Pricing_Page_Hint13": "Premium desteği bir yıl boyunca alabilirsiniz (uzatmak için lisansınızı yenileyebilirsiniz).",
"Pricing_Page_Hint14": "Ekip ve İşletme lisanslarının olay/soru sayısı limiti vardır. Ek geliştirici lisansları satın alırsanız, olay limitiniz geliştirici başına {0} (Ekip Lisansı için) veya {1} (İşletme Lisansı için) artar.",
"Pricing_Page_Hint15": "Sadece Kurumsal Lisans özel destek içerir. Özel bilet seçeneği ile doğrudan ABP Ekibine e-posta gönderebilir veya support.abp.io adresinden soru sorabilirsiniz. Özel biletler herkese açık değildir.",
"Pricing_Page_Hint16": "Tüm ABP temalarının kaynak kodunu indirebilirsiniz. Köklü değişiklikler yapmak için kaynak kodunu çözümünüze eklemek isteyebilir veya güvenlik nedeniyle kendiniz için saklayabilirsiniz.",
"Pricing_Page_Testimonial_1": "ABP Commercial, SC Ventures'ın 9 ay içinde banka sınıfı çok kiracılı bir silo-veritabanı SaaS platformu sunmasını ve birden fazla entegre çapadan gelen önemli değerdeki faturaların alacak / borç hesapları tedarik zinciri finansmanını desteklemesini sağladı. ABP'nin modülerliği, ekibin rekor sürede teslimat yapmasını, tüm VAPT'leri geçmesini ve konteynerleştirilmiş mikro hizmet yığınını tam CI/CD ve boru hatları aracılığıyla üretime dağıtmasını mümkün kıldı.",
"Pricing_Page_Testimonial_2": "Özel geliştirme projelerinin ek yükünü azaltmak için ABP Commercial kullanmanın değerini görüyoruz. Ekip, farklı proje akışlarında kod modelini birleştirebiliyor. Yeni özellikleri eskisinden daha hızlı oluşturabilmemiz için çerçevede daha fazla potansiyel görüyoruz. ABP Commercial'dan yararlanmanın değerini sürekli olarak göreceğimize inanıyoruz.",
"Pricing_Page_Testimonial_3": "ABP'yi seviyoruz. Her şeyi sıfırdan yazmak zorunda kalmıyoruz. Kullanıma hazır özelliklerden başlıyoruz ve sadece gerçekten yazmamız gerekenlere odaklanıyoruz. Ayrıca, ABP iyi tasarlanmış ve kod daha az hata ile yüksek kalitede. İhtiyaç duyduğumuz her şeyi kendi başımıza yazmak zorunda kalsaydık, yıllarımızı harcamak zorunda kalabilirdik. Hoşumuza giden bir diğer şey de yeni sürümün, sorun düzeltmenin ya da iyileştirmenin iki haftada bir çıkması. Çok uzun süre beklemiyoruz.",
"Pricing_Page_Testimonial_4": "ABP Commercial harika bir ürün, tavsiye ederim. Müşterilerimiz için ticari ürünleri tek bir yapılandırılabilir platformda pazara sunuyor. Çerçeve ve araçların herhangi bir ekibe sağladığı hızlı başlangıç her kuruşa değer. ABP Commercial ihtiyaçlarımız için en uygun üründü.",
"Pricing_Page_Testimonial_5": "ABP Framework sadece bir framework değil, aynı zamanda bir proje geliştirme/yönetme rehberi, çünkü DDD, GenericRepository, DI, Microservice ve Modularity eğitimleri veriyor. Framework'ün kendisini kullanmayacak olsanız bile, iyi ve profesyonelce hazırlanmış docs.abp.io ile kendinizi geliştirebilirsiniz (OpenIddict, Redis, Quartz vb.). Birçok şey önceden hazır olduğu için proje geliştirme süresini önemli ölçüde kısaltıyor (Giriş sayfası, istisna işleme, veri filtreleme, tohumlama, denetim günlüğü, yerelleştirme, otomatik API denetleyicisi vb.) Uygulamamızdan bir örnek olarak, stok kontrolü için Local Event Bus kullandım. Böylece stok işleyicisi yazarak sipariş hareketlerini yönetebiliyorum. CreationTime, CreatorId için zaman kaybetmemek harika. Bunlar otomatik olarak dolduruluyor.",
"AbpBookDownloadArea_ClaimYourEBook": "<span class='gradient-framework'>Mastering ABP Framework</span> E-Kitabınızı talep edin",
"AddMemberModal_Warning_1": "Eklemeye çalıştığınız <strong>kullanıcı adı</strong> sistemde yoksa, lütfen ekip üyenizden <a href='{0}/Account/Register'>{0}</a> adresine kaydolmasını ve hesabının kullanıcı adını sizinle paylaşmasını isteyin.",
"MyOrganizations_Detail_WelcomeMessage": "Organizasyonunuza hoş geldiniz, {0}",
"MyOrganizations_Detail_OrganizationManagement": "Organizasyon <span class=\"gradient-commercial\">Yönetimi</span>",
"OrganizationDisplayName": "Organizasyon Görünür Adı",
"MyOrganizations_Detail_EditDisplayName": "Görünür adı düzenle",
"MyOrganizations_Detail_LicenseStartAndExpiryDate": "Lisans Başlangıç Tarihi - Sona Erme Tarihi",
"MyOrganizations_Detail_OwnerRightInfo": "{1} sahiplik hakkınızın {0}'ını kullanıyorsunuz.",
"MyOrganizations_Detail_CopyApiKey": "Anahtarı Kopyala",
"MyOrganizations_Detail_ApiKeyDescription": "API Anahtarı, <a href=\"{0}\" target=\"_blank\" class=\"text-primary\" rel=\"noopener\">{1}</a> üzerinde barındırılan PRO paketlerinin belirtecidir.",
"MyOrganizations_Detail_YourPrivateNugetSource": "Özel NuGet kaynağınız <a href=\"{0}\" arget=\"_blank\" class=\"text-primary\" rel=\"noopener\">{0}</a>",
"MyOrganizations_Detail_PrivateNugetSourceWarning": "Bu, ABP çözümünüzdeki NuGet.Config'inize otomatik olarak bir besleme olarak eklenir. Özel anahtarınızı yetkisiz kullanıcılarla paylaşmayın!",
"MyOrganizations_Detail_DeveloperSeatInfo": "{1} geliştirici koltuğunuzun {0} tanesini kullanıyorsunuz.",
"NeedMoreSeatsForYourTeam": "Takımınız için daha fazla geliştirici koltuğu gerekiyor mu?",
"MyOrganizations_Detail_PricePerYear": "{0} / per year",
"MyOrganizations_Detail_UpgradeYourLicense": "Lisansınızı yükseltin",
"MyOrganizations_Detail_PurchaseDeveloperSeats": "Geliştirici Koltuğu Satın Alın",
"Invoices": "Faturalar",
"RequestInvoice": "Fatura Talep Et",
"OrderNumber": "Sipariş Numarası",
"Date": "Tarih",
"Products": "Ürünler",
"TotalPrice": "Toplam Fiyat",
"ThereIsNoInvoice": "Fatura yok",
"MyOrganizations_Detail_PaymentProviderInfo": "Lisansınızı <i>{0}</i> ağ geçidi üzerinden satın aldıysanız, PDF faturasını e-posta adresinize gönderir, bkz. <a href=\"{1}\" target=\"_blank\"> {0} faturalandırma.</a>",
"MyOrganizations_Detail_PayUInfo": "If you have purchased through the <i>PayU</i> gateway, click the \"Request Invoice\" button and fill in the billing information.",
"MyOrganizations_Detail_ConclusionInfo": "Fatura talebiniz {0} iş günü içerisinde sonuçlandırılacaktır.",
"ExtendYourLicense": "{0} lisansınızı uzatın",
"Continue": "Devam et",
"DownloadInvoiceModal_DownloadInvoice": "Faturayı İndir",
"DownloadInvoiceModal_SaveInformationOnlyOnce": "Fatura bilgilerinizi yalnızca bir kez kaydedebilirsiniz.",
"InvoiceModal_EnterCompanyName": "Yasal şirket adınızı girin...",
"InvoiceModal_EnterCompanyAddress": "Yasal şirket adresinizi girin...",
"InvoiceModal_EnterTaxNumber": "Varsa VERGİ/KDV numaranızı girin...",
"RequestInvoiceModal_EnterNotes": "Faturanızla ilgili ekstra mesajınızı girin...",
"PrePayment_PayWithIyzico": "Iyzico ile ödeyeceksiniz",
"ContinueToCheckout": "Ödeme ekranına git",
"PrePayment_IyzicoRedirectionInfo": "Satın alma işleminizi güvenli bir şekilde tamamlamak için Iyzico Ödeme Geçidine yönlendirileceksiniz.",
"PrePayment_IyzicoAcceptVisaAndMasterCard": "Iyzico Visa ve MasterCard kabul etmektedir.",
"Purchase": "Satın al",
"AcceptTermsAndConditions": "<a href=\"{0}\" target=\"_blank\" class=\"text-primary\" rel=\"noopener\">Gizlilik politikasını</a>, <a href=\"{1}\" target=\"_blank\" class=\"text-primary\" rel=\"noopener\">hüküm ve koşulları</a> ve <a href=\"{2}\" target=\"_blank\" class=\"text-primary\">EULA</a>'yı okudum, anladım ve kabul ediyorum.",
"AcceptTermsAndConditionsWarningMessage": "Lütfen gizlilik politikasını ve hüküm ve koşulları kabul edin",
"SelectGatewayToContinue": "Devam etmek için lütfen bir Ağ Geçidi seçin!",
"GatewaySelection_SelectGateway": "Bir Ödeme Ağ Geçidi Seçin",
"GatewaySelection_RedirectionMessage": "Sonrasında, işlem için seçilen ödeme ağ geçidinin web sitesine yönlendirileceksiniz.",
"PaymentSucceed_PaymentSuccessMessage": "Ödeme Başarılı",
"PaymentSucceed_ThanksForPurchase": "Satın aldığınız için teşekkür ederiz!",
"PaymentSucceed_CreateYourOrganization": "Organizasyonunuzu oluşturun",
"PaymentSucceed_AddMeAsDeveloper": "Ben de bir geliştiriciyim, beni organizasyonuma bir geliştirici olarak ekleyin.",
"PaymentSucceed_CreateOrganization": "Organizasyon Oluştur",
"PaymentSucceed_OrganizationDescription": "Bir organizasyon geliştiriciler ve sahiplerden oluşur. Geliştiriciler, ABP projesinde kod yazan ve <a href=\"{0}\" target=\"_blank\">{1}</a> web sitesinden yararlanacak olan kullanıcılardır. Sahipler ise geliştirici koltuklarını tahsis eden ve lisanslamayı yöneten kullanıcılardır.",
"PaymentSucceed_ViewOrganization": "Organizasyonu görüntülemek için buraya tıklayın",
"Purchase_TotalAnnualPrice": "TOPLAM <small class=\"opacity-50\">(yıllık ücret)</small>",
"Purchase_TrainingPrice": "Eğitim Fiyatı",
"Purchase_OnboardingTraining": "ABP Onboarding & Web Uygulama Geliştirme Canlı Eğitimi",
"TotalDeveloperPrice": "Toplam Geliştirici Fiyatı",
"Purchase_PricePerDeveloper": "<span>{0} {1}</span> geliştirici başına",
"Purchase_IncludedDeveloperInfo": "{0} {1} dahil.",
"Purchase_LicenseExtraDeveloperPurchaseMessage": "<span class=\"fw-6\">{0} lisansı</span> {1} geliştirici(ler) içerir. Şimdi veya daha sonra ek geliştiriciler ekleyebilirsiniz.",
"StartupTemplates_Page_Title": "Başlangıç Şablonları",
"StartupTemplates_Page_Description": "ABP Commercial, her düzeyde karmaşıklığa sahip çözümler oluşturmanıza olanak tanır. Önceden oluşturulmuş iki ana başlangıç çözümü sunar. Gereksinimlerinize yakın olanı seçebilir ve bunun üzerine kendi özel çözümünüzü oluşturabilirsiniz.",
"MicroserviceStartupSolutionForDotnet": ".NET için Mikro Hizmet Başlatma Çözümü",
"MonolithSolutionForDotnet": ".NET için Monolith (modüler) Çözüm",
"TrainingDetailsHeaderInfo_TrainingHour": "{0} saat(ler)",
"Trainings_Content": "Eğitim İçeriği",
"Trial_Page_StartYourFreeTrial": "<span class=\"gradient-commercial\">Ücretsiz Denemenizi</span> Başlatın",
"TrialLicenseFeatures": "Tüm ABP ticari özelliklerinden yararlanabileceksiniz",
"TrialPeriodDays": "{0} günlük Takım Lisansınız olacak",
"TrialForumSupportIncident": "{0} forum destek olayınız olacak",
"Contact_Page_Title": "ABP Geliştirme Ekibi ile İletişime Geçin",
"Contact_Page_Description": "Herhangi bir yardıma ihtiyacınız olursa veya düşüncelerinizi ve görüşlerinizi paylaşırsanız ABP Geliştirme ekibi ile iletişime geçin! ABP Destek Ekibi yardıma hazır.",
"Demo_Page_Title": "Demo Oluştur",
"Demo_Page_Description": "ABP Ticari başlangıç şablonu kullanılarak oluşturulan örnek bir uygulamayı görmek için ücretsiz bir demo oluşturun. Ortak uygulama gereksinimleri için kendinizi tekrar etmeyin.",
"Discounted_Page_Title": "İndirimli fiyatlandırma",
"Discounted_Page_Description": "İşletmenizin bugün ihtiyaç duyduğu özellikleri ve işlevselliği seçin. Bir ABP Ticari lisansı satın alın ve sınırsız proje oluşturun",
"Faq_Page_Title": "Sıkça Sorulan Sorular (SSS)",
"Faq_Page_Description": "Herhangi bir sorunuz var mı? Sıkça sorulan soruları arayın veya iletişim formunu kullanarak bize bir soru sorun.",
"Faq_Page_SwiftCode": "SWIFT Kodu",
"Faq_Page_BankName": "Banka Adı",
"Faq_Page_AccountName": "Hesap Adı",
"Faq_Page_AccountNumber": "Hesap Numarası",
"Faq_Page_Currency": "Para Birimi",
"Faq_Page_VatNumber": "Vergi Numarası",
"Faq_Page_OtherCurrenciesInfo": "Diğer para birimleri için <a href='{0}'>tüm hesaplar</a> bölümüne bakınız",
"ModuleDetail_Page_Title": "Modül Detayı - {0}",
"ProjectCreatedSuccess_Page_Title": "Projeniz oluşturuldu",
"ProjectCreatedSuccess_Page_Description": "ABP projeniz başarıyla oluşturuldu!",
"Suite_Page_Title": "ABP Suite - CRUD Sayfaları Oluşturun",
"Suite_Page_Description": "ABP Commercial, geliştirici verimliliğini artırmak için hızlı uygulama geliştirme araçları sağlar. ABP Suite, CRUD sayfalarını kolayca oluşturmanızı sağlar.",
"Themes_Page_Title": "Modern ve İşlevsel Kullanıcı Arayüzü Temaları",
"Themes_Page_Description": "ABP Commercial birden fazla profesyonel, modern kullanıcı arayüzü teması sunar. Kullanıcı arayüzünün neye benzediğini hızlıca görmek için ücretsiz bir demo oluşturun.",
"Tools_Page_Title": "Hızlı Uygulama Geliştirme Araçları",
"Tools_Page_Description": "ABP Commercial, geliştirici verimliliğini artırmak için hızlı uygulama geliştirme araçları sağlar. ABP Suite, CRUD sayfalarını kolayca oluşturmanızı sağlar.",
"DeveloperPrice": "Geliştirici Fiyatı",
"AdditionalDeveloperPaymentInfoSection_AdditionalDevelopers": "{0} <small>geliştiriciler</small>",
"LicenseRemainingDays": "<span> {0} </span> gün boyunca",
"ExtendPaymentInfoSection_Description": "Lisansınızı uzatarak/yenileyerek <a href=\"{0}\" target=\"_blank\">premium destek</a> almaya devam edeceksiniz. You will also be able to get major or minor updates for modules and themes. You will be able to continue creating new projects. Ve gelişiminizi hızlandıran <a href=\"{1}\" target=\"_blank\">ABP Suite</a>'i kullanmaya devam edebileceksiniz.",
"LicenseRenewalPrice": "Lisans yenileme fiyatı",
"LicensePrice": "Lisans fiyatı",
"TrialLicensePaymentInfoSection_Description": "<strong>Lisans satın alma:</strong> Bir lisans satın alarak <a href=\"{0}\" target=\"_blank\" rel=\"noopener\">premium destek</a> almaya devam edeceksiniz. Ayrıca modüller ve temalar için büyük veya küçük güncellemeler alabileceksiniz. Yeni projeler oluşturmaya devam edebileceksiniz. Ve gelişiminizi hızlandıran <a href=\"{1}\" target=\"_blank\" rel=\"noopener\">ABP Suite</a>'i kullanmaya devam edebileceksiniz. Lisans türleri arasındaki farkları kontrol etmek için <a href=\"{2}\" target=\"_blank\" rel=\"noopener\">lisans karşılaştırma tablosu</a>na bakın.",
"SelectTargetLicense": "Hedef Lisansı Seçin",
"UpgradePaymentInfoSection_ExtendMyLicenseForOneYear": "Evet, lisansımın geçerlilik süresini 1 yıl uzatın.",
"UpgradePaymentInfoSection_WantToExtendLicense": "Lisansınızı {0} yıl daha uzatmak istiyor musunuz?",
"UpgradePaymentInfoSection_UpgradingWillNotExtendLicense": "Yükseltme işlemi lisansınızın son kullanma tarihini uzatmayacaktır!",
"UpgradePaymentInfoSection_LicenseUpgradeDescription": "Lisansınızı yükselterek, ek avantajlar elde etmenizi sağlayacak daha yüksek bir lisans türüne terfi edeceksiniz. Lisans türleri arasındaki farkları kontrol etmek için <a href=\"/Pricing\" target=\"_blank\">lisans karşılaştırma tablosuna</a> bakın.",
"Landing_Page_CustomerStories": "Müşteri Hikayeleri",
"Landing_Page_OurGreatCustomers": "Büyük Müşterilerimiz",
"Landing_Page_WebApplicationFramework": "Web Uygulama Çerçevesi",
"Landing_Page_WebDevelopmentPlatform": "Web Geliştirme Platformu",
"Landing_Page_CompleteWebDevelopmentPlatform": "Tam Web Geliştirme Platformu",
"Landing_Page_TryFreeDemo": "Ücretsiz Demo Dene",
"Landing_Page_StartingPointForWebApplications": "ASP.NET Core tabanlı web uygulamaları için başlangıç noktası! En iyi web geliştirme için ABP Framework'ü temel alır.",
"Landing_Page_AbpProvidesSoftwareInfrastructure": "ABP Framework, en iyi uygulamalarla mükemmel web uygulamaları geliştirmek için bir yazılım altyapısı sağlar.",
"Landing_Page_MicroserviceCompatibleArchitecture": "Mikroservis Uyumlu Mimari",
"Landing_Page_PreBuiltApplicationModulesAndThemes": "Önceden Oluşturulmuş Uygulama Modülleri ve Temaları",
"Landing_Page_MultiTenantArchitecture": "Çoklu Kiracı Mimari",
"Landing_Page_MultiTenancyDescription": "SaaS uygulamaları artık çok kolay! Veritabanından kullanıcı arayüzüne kadar entegre çoklu kiracılık.",
"Landing_Page_DDDIntroduction": "DDD kalıpları ve ilkeleri temel alınarak tasarlanmış ve geliştirilmiştir. Uygulamanız için katmanlı bir model sağlar.",
"Landing_Page_CrossCuttingConcernsInfo": "Yetkilendirme, doğrulama, istisna işleme, önbelleğe alma, denetim kaydı, işlem yönetimi ve daha fazlası için eksiksiz altyapı.",
"Landing_Page_PreBuiltApplicationModules": "En yaygın web uygulaması gereksinimlerini içeren Önceden Oluşturulmuş Uygulama Modülleri.",
"Landing_Page_ChatModule": "Sohbet",
"Landing_Page_DocsModule": "Belgeler",
"Landing_Page_FileManagementModule": "Dosya Yönetimi",
"Landing_Page_CustomerStory_1": "ABP Commercial, SC Ventures'ın 9 ay içinde banka sınıfı çok kiracılı bir silo-veritabanı SaaS platformu sunmasını ve birden fazla entegre çapadan gelen önemli değerdeki faturaların alacak / borç hesapları tedarik zinciri finansmanını desteklemesini sağladı. ABP'nin modülerliği, ekibin rekor sürede teslimat yapmasını, tüm VAPT'leri geçmesini ve konteynerleştirilmiş mikro hizmet yığınını tam CI/CD ve boru hatları aracılığıyla üretime dağıtmasını mümkün kıldı.",
"Landing_Page_CustomerStory_2": "Özel geliştirme projelerinin ek yükünü azaltmak için ABP Commercial kullanmanın değerini görüyoruz. Ekip, farklı proje akışlarında kod modelini birleştirebiliyor. Yeni özellikleri eskisinden daha hızlı oluşturabilmemiz için çerçevede daha fazla potansiyel görüyoruz. ABP Commercial'dan yararlanmanın değerini sürekli olarak göreceğimize inanıyoruz.",
"Landing_Page_CustomerStory_3": "ABP'yi seviyoruz. Her şeyi sıfırdan yazmak zorunda kalmıyoruz. Kullanıma hazır özelliklerden başlıyoruz ve sadece gerçekten yazmamız gerekenlere odaklanıyoruz. Ayrıca, ABP iyi tasarlanmış ve kod daha az hata ile yüksek kalitede. İhtiyacımız olan her şeyi kendi başımıza yazmak zorunda kalsaydık, yıllarımızı harcamak zorunda kalabilirdik. Hoşumuza giden bir diğer şey de yeni sürümün, sorun düzeltmenin ya da iyileştirmenin çok kısa bir süre içinde\nher iki haftada bir çıkması. Çok uzun süre beklemiyoruz.",
"Landing_Page_CustomerStory_4": "ABP Commercial harika bir ürün, tavsiye ederim. Müşterilerimiz için ticari ürünleri tek bir yapılandırılabilir platformda pazara sunuyor. Çerçeve ve araçların herhangi bir ekibe sağladığı hızlı başlangıç her kuruşa değer. ABP Commercial ihtiyaçlarımız için en uygun üründü.",
"Landing_Page_AdditionalServices": "Özel veya toplu lisans, işe alım, canlı eğitim ve destek, özel proje geliştirme, mevcut projeleri taşıma ve daha fazlası...",
"Landing_Page_IncludedDeveloperLicenses": "<strong>{0}</strong> geliştirici lisansı dahil",
"Landing_Page_SeeOnDemo": "Demo'da göster",
"Landing_Page_LeptonThemes": "Lepton Temaları",
"Landing_Page_AccountModuleDescription_1": "Bu modül bir uygulama için kimlik doğrulama sistemini uygular;",
"Landing_Page_AccountModuleDescription_2": "Kullanıcı adı ve şifre ile bir <strong>giriş</strong> sayfası sağlar",
"Landing_Page_AccountModuleDescription_3": "Yeni bir hesap oluşturmak için bir <strong>kayıt</strong> sayfası sağlar.",
"Landing_Page_AccountModuleDescription_4": "Bir <strong>şifre sıfırlama</strong> bağlantısını e-posta olarak göndermek için bir <strong>şifremi unuttum</strong> sayfası sağlar.",
"Landing_Page_AccountModuleDescription_5": "UI ile <strong>e-posta onayı</strong> işlevselliği sağlar.",
"Landing_Page_AccountModuleDescription_6": "<strong>İki faktörlü</strong> kimlik doğrulama uygular (SMS ve e-posta).",
"Landing_Page_AccountModuleDescription_7": "<strong>Kullanıcı kilitleme</strong> uygular (belirli bir zaman aralığında geçersiz kimlik bilgileri nedeniyle belirli sayıda başarısız oturum açıldığında hesabı belirlenen süre boyunca kilitler).",
"Landing_Page_AccountModuleDescription_8": "<strong>Identity Server</strong> kimlik doğrulama sunucusu kullanıcı arayüzünü ve işlevselliğini uygular.",
"Landing_Page_AccountModuleDescription_9": "Allows to <strong>switch between tenants</strong> in a multi-tenant environment.",
"Landing_Page_AccountModuleDescription_10": "Uygulamanın <strong>UI dilini</strong> değiştirmeye izin verir.",
"Landing_Page_AuditLoggingModuleDescription_1": "Bu modül, denetim altyapısı için denetim günlüğü raporlama kullanıcı arayüzü sağlar. Denetim günlüğü girdilerini ve varlık değişikliği günlüklerini aramaya, filtrelemeye ve göstermeye izin verir.",
"Landing_Page_AuditLoggingModuleDescription_2": "Bir denetim günlüğü girdisi, her bir müşteri talebi hakkında kritik verilerden oluşur:",
"Landing_Page_AuditLoggingModuleDescription_3": "URL, Tarayıcı, IP adresi, istemci adı",
"Landing_Page_AuditLoggingModuleDescription_4": "Kullanıcı",
"Landing_Page_AuditLoggingModuleDescription_5": "HTTP yöntemi, HTTP dönüş durum kodu",
"Landing_Page_AuditLoggingModuleDescription_6": "Başarı/başarısızlık, varsa istisna ayrıntıları",
"Landing_Page_AuditLoggingModuleDescription_7": "İstek yürütme süresi",
"Landing_Page_AuditLoggingModuleDescription_8": "Bu talepte varlıklar oluşturuldu, silindi veya güncellendi (değişen özelliklerle).",
"Landing_Page_BloggingModuleDescription_1": "Bu modül ABP uygulamanıza basit bir blog ekler;",
"Landing_Page_BloggingModuleDescription_2": "Tek bir uygulamada birden çok blog oluşturmaya izin verir.",
"Landing_Page_BloggingModuleDescription_3": "Markdown formatını destekler.",
"Landing_Page_BloggingModuleDescription_4": "Bir gönderi için yorum yazmaya izin verir.",
"Landing_Page_BloggingModuleDescription_5": "Blog yazılarına etiket atamaya izin verir.",
"Landing_Page_BloggingModuleDescription_6": "Blog modülünün canlı bir örneği olarak <a href=\"blog.abp.io\">blog.abp.io</a> web sitesine bakın.",
"Landing_Page_ChatModuleDescription_1": "Bu modül, uygulamadaki kullanıcılar arasında gerçek zamanlı mesajlaşma için kullanılır.",
"Landing_Page_ChatModuleDescription_2": "Sohbet sayfasında gerçek zamanlı mesajlaşma.",
"Landing_Page_ChatModuleDescription_3": "Yeni konuşmalar için uygulamadaki kullanıcıları arayın.",
"Landing_Page_ChatModuleDescription_4": "Son konuşmalar için kişi listesi.",
"Landing_Page_ChatModuleDescription_5": "Kullanıcı başka bir sayfaya bakarken yeni mesaj bildirimleri.",
"Landing_Page_ChatModuleDescription_6": "Menü simgesindeki toplam okunmamış mesaj sayısı rozeti.",
"Landing_Page_ChatModuleDescription_7": "Her konuşma için okunmamış mesaj sayısı.",
"Landing_Page_ChatModuleDescription_8": "Tembel yüklü konuşmalar.",
"Landing_Page_DocsModuleDescription_1": "Bu modül teknik dokümantasyon web siteleri oluşturmak için kullanılır;",
"Landing_Page_DocsModuleDescription_2": "Yerleşik <strong>GitHub entegrasyonu</strong>: GitHub'da doğrudan belge yazın ve yönetin.",
"Landing_Page_DocsModuleDescription_3": "<strong>Sürüm oluşturma</strong> desteği, GitHub sürümlerine doğrudan entegre edilmiştir.",
"Landing_Page_DocsModuleDescription_4": "<strong>Çoklu dili</strong> destekler (varsayılan dile geri dönüş desteği ile).",
"Landing_Page_DocsModuleDescription_5": "<strong>Markdown</strong> ve HTML formatlarını destekler.",
"Landing_Page_DocsModuleDescription_6": "Bir <strong>navigasyon</strong> ve bir <strong>ana hat</strong> bölümü sağlar.",
"Landing_Page_DocsModuleDescription_7": "Tek bir uygulamada <strong>birden çok proje</strong> belgesinin barındırılmasına izin verir.",
"Landing_Page_DocsModuleDescription_8": "GitHub'daki dosyaya bağlantı verir, böylece herkes <strong>Düzenle</strong> bağlantısına tıklayarak kolayca katkıda bulunabilir.",
"Landing_Page_DocsModuleDescription_9": "GitHub kaynağına ek olarak, dokümantasyon kaynağı olarak bir klasörün kullanılmasına izin verir.",
"Landing_Page_FileManagementModuleDescription_1": "Dosyaları hiyerarşik bir klasör yapısı içinde yükleyin, indirin ve düzenleyin.",
"Landing_Page_FileManagementModuleDescription_2": "Bu modül, dosyaları hiyerarşik bir klasör yapısında yüklemek, indirmek ve düzenlemek için kullanılır. Ayrıca çoklu kiracılığa uyumludur ve kiracılarınız için toplam boyut sınırını belirleyebilirsiniz.",
"Landing_Page_FileManagementModuleDescription_3": "Bu modül <a href=\"https://docs.abp.io/en/abp/latest/Blob-Storing\">BLOB Depolama</a> sistemine dayanmaktadır, bu nedenle dosya içeriklerini depolamak için farklı depolama sağlayıcıları kullanabilir.",
"Landing_Page_IdentityModuleDescription_1": "Bu modül bir uygulamanın Kullanıcı ve Rol sistemini uygular;",
"Landing_Page_IdentityModuleDescription_2": "<a href=\"https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity\">Microsoft'un ASP.NET Core Identity</a> kütüphanesi üzerine inşa edilmiştir.",
"Landing_Page_IdentityModuleDescription_3": "Sistemdeki <strong>rolleri</strong> ve <strong>kullanıcıları</strong> yönetin. Bir kullanıcının <strong>birden çok role</strong> sahip olmasına izin verilir.",
"Landing_Page_IdentityModuleDescription_4": "Rol ve kullanıcı düzeylerinde <strong>izinleri</strong> ayarlayın.",
"Landing_Page_IdentityModuleDescription_5": "Kullanıcı başına <strong>iki faktörlü kimlik doğrulamayı</strong> ve kullanıcı <strong>kilitlemeyi</strong> etkinleştirin/devre dışı bırakın.",
"Landing_Page_IdentityModuleDescription_6": "Temel <strong>kullanıcı profili</strong>ni ve <strong>parolayı</strong> yönetin.",
"Landing_Page_IdentityModuleDescription_7": "Sistemdeki <strong>talep türlerini</strong> yönetin, rollere ve kullanıcılara talepler ayarlayın.",
"Landing_Page_IdentityModuleDescription_8": "<strong>Parola karmaşıklığı</strong>, kullanıcı oturum açma, hesap ve kilitlemeyi yönetmek için ayar sayfası.",
"Landing_Page_IdentityModuleDescription_9": "<strong>LDAP</strong> kimlik doğrulamasını destekler.",
"Landing_Page_IdentityModuleDescription_10": "<strong>E-posta &amp; telefon numarası</strong> doğrulaması sağlar.",
"Landing_Page_IdentityModuleDescription_11": "Kullanıcılar için <strong>parola sıfırlama</strong> desteği.",
"Landing_Page_IdentityModuleDescription_12": "Sistemdeki <strong>organizasyon birimlerini</strong> yönetin.",
"Landing_Page_PaymentModuleDescription_1": "Farklı ödeme ağ geçitleri için entegrasyon sağlar.",
"Landing_Page_PaymentModuleDescription_2": "Bu modül ödeme ağ geçitleri için entegrasyon sağlar, böylece müşterilerinizden kolayca ödeme alabilirsiniz.",
"Landing_Page_PaymentModuleDescription_3": "Bu modül aşağıdaki ödeme ağ geçitlerini destekler",
"Welcome_Page_UseSameCredentialForCommercialWebsites": "Hem <a href=\"https://commercial.abp.io\" class=\"text-primary\">commercial.abp.io</a> hem de <a href=\"https://support.abp.io\" class=\"text-primary\">support.abp.io</a> için aynı kimlik bilgilerini kullanın.",
"WatchCrudPagesVideo": "\"ABP Suite ile CRUD Sayfaları Oluşturma\" Videosunu İzleyin!",
"WatchGeneratingFromDatabaseVideo": "\"ABP Suite: Mevcut Veritabanı Tablolarından CRUD Sayfaları Oluşturma\" Videosunu izleyin!",
"WatchTakeCloserLookVideo": "\"Kod üretimine daha yakından bakın: ABP Suite\" videosunu izleyin!",
"ConfirmedEmailAddressRequiredToStartTrial": "Deneme lisansı başlatmak için onaylanmış bir e -posta adresiniz olmalı.",
"EmailVerificationMailNotSent": "E-posta doğrulama postası gönderilemedi.",
"GetConfirmationEmail": "Daha önce bir onay e-postası almadıysanız <a href=\"javascript:void(0);\" id=\"{0}\"> almak için buraya tıklayın.</a>",
"WhichLicenseTypeYouAreInterestedIn": "Hangi lisans türüyle ilgileniyorsunuz?"
}
}

6
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json

@ -660,7 +660,7 @@
"Landing_Page_PreBuiltApplicationModules": "预建应用程序模块,其中包括最常见的 Web 应用程序要求。",
"Landing_Page_ChatModule": "聊天",
"Landing_Page_DocsModule": "文档",
"Landing_Page_FileManagementModule": "文",
"Landing_Page_FileManagementModule": "文件管理",
"Landing_Page_CustomerStory_1": "ABP 商业版 允许 SC Ventures 在 9 个月内交付银行级多租户silo数据库 SaaS 平台,以支持来自多个集成锚点的大额发票的应收账款/应付账款供应链融资。 ABP 的模块化使团队能够在创纪录的时间内交付,通过所有 VAPT,并通过完整的 CI/CD 和管道将容器化的微服务码部署到生产中。",
"Landing_Page_CustomerStory_2": "我们看到了使用 ABP 商业版 来减少定制开发项目开销的价值。 并且团队能够在不同的项目流中统一代码模式。 我们在框架中看到了比以前更快地构建新功能的更多潜力。 我们相信我们将不断看到使用 ABP 商业版 的价值。",
"Landing_Page_CustomerStory_3": "我们很爱 ABP。 我们不必从头开始编写所有内容。 我们从\"开箱即用\"的功能开始,只关注我们真正需要编写的内容。 此外,ABP 架构良好,代码质量高,错误少。 如果我们必须自己编写所需的一切,我们可能需要花费数年时间。 另一件事是我们喜欢的是新版本、问题修复或改进每隔一周就很快会出现\n。 我们不会等太久。",
@ -735,6 +735,8 @@
"ConfirmedEmailAddressRequiredToStartTrial": "你应该有一个确认的电子邮件地址,以便开始试用许可证。",
"EmailVerificationMailNotSent": "电子邮件验证邮件不能发送。",
"GetConfirmationEmail": "<a href=\"javascript:void(0);\" id=\"{0}\">点击这里获取确认邮件</a> 如果你还没有收到。",
"WhichLicenseTypeYouAreInterestedIn": "你感兴趣的许可证类型是什么?"
"WhichLicenseTypeYouAreInterestedIn": "你感兴趣的许可证类型是什么?",
"BlazoriseLicense": "我们是否需要购买Blazorise许可证?",
"BlazoriseLicenseExplanation": "我公司Volosoft和公司Megabit之间有合作协议,根据此协议,购买将同时包含了Blazorise许可证与ABP商业产品,因此我们的客户不需要再额外购买Blazorise许可证。"
}
}

4
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json

@ -380,6 +380,8 @@
"TrialLicenseExpireMessage": "您正在使用試用許可證,您的試用許可證將於 {0}到期。",
"TryForFree": "免費試用",
"TrialLicenseExpiredInfo": "您的試用許可期限已過!",
"CommercialNewsletterConfirmationMessage": "我同意<a href=\"https://commercial.abp.io/TermsConditions\">條款和條件</a>和<a href=\"https://commercial.abp.io/Privacy\">隱私政策</a>。"
"CommercialNewsletterConfirmationMessage": "我同意<a href=\"https://commercial.abp.io/TermsConditions\">條款和條件</a>和<a href=\"https://commercial.abp.io/Privacy\">隱私政策</a>。",
"BlazoriseLicense": "我们是否需要购买Blazorise许可证?",
"BlazoriseLicenseExplanation": "我公司Volosoft和公司Megabit之间有合作协议,根据此协议,购买将同时包含了Blazorise许可证与ABP商业产品,因此我们的客户不需要再额外购买Blazorise许可证。"
}
}

50
abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/tr.json

@ -36,7 +36,6 @@
"FeatureRequest": "Özellik isteği",
"CreatePostTitleInfo": "Gönderi listesinde gösterilecek gönderinin başlığı.",
"CreatePostSummaryInfo": "Gönderi listesinde gösterilecek gönderinin kısa bir özeti.",
"CreatePostCoverInfo": "Etkili bir makale oluşturmak için bir kapak fotoğrafı ekleyin. En iyi görünüm için 16:9 en boy oranlı resimler yükleyin. Maksimum dosya boyutu: 1MB.",
"ThisExtensionIsNotAllowed": "Bu uzantıya izin verilmiyor.",
"TheFileIsTooLarge": "Dosya çok büyük.",
"GoToThePost": "Makaleye git",
@ -143,6 +142,53 @@
"Volo.AbpIo.Domain:060001": "Kaynak URL (\"{PostUrl}\") Github URL'si değil",
"Volo.AbpIo.Domain:060002": "Makale İçeriği Github(\"{PostUrl}\") kaynağında mevcut değil.",
"Volo.AbpIo.Domain:060003": "Makale içeriği bulunamadı!",
"MemberNotPublishedPostYet": "Bu üye henüz bir gönderi yayınlamadı."
"MemberNotPublishedPostYet": "Bu üye henüz bir gönderi yayınlamadı.",
"WelcomeToABP": "ABP'ye Hoşgeldiniz",
"Browse": "Göz at",
"ArticleRequestsDescription": "Burada belirli bir içerik mi görmek istiyorsunuz? Topluluktan bunu oluşturmasını isteyebilirsiniz!",
"LatestContentRequests": "Son İçerik Talepleri",
"SeeMore": "Daha fazla göster",
"JoinTheABPCommunity": "ABP Topluluğuna Katılın",
"ABPCommunityTalks": "ABP Topluluk Konuşmaları",
"LiveDemo": "Canlı Demo",
"GetLicense": "Lisans Al",
"GetStarted": "Başlayın",
"SourceCode": "Kaynak Kodu",
"LeaveComment": "Yorum bırak",
"RecentQuestionFrom": "Son soru",
"ReadMore": "Daha fazla oku",
"ShowMore": "Daha fazla göster",
"NoPublishedPostsYet": "Henüz yayınlanmış bir gönderi yok.",
"Name": "İsim",
"Surname": "Soyisim",
"WebSite": "Web Sitesi",
"FullURL": "Tam URL",
"JobTitle": "Meslek İsmi",
"Prev": "Önceki",
"Previous": "Önceki",
"Next": "Sonraki",
"Share": "Paylaş",
"SortBy": "Sırala",
"NoPublishedEventsYet": "Henüz yayınlanmış bir etkinlik yok.",
"SubscribeYoutubeChannel": "Youtube Kanalına Abone Ol",
"Enum:EventType:0": "Konuşma",
"TimeAgo": "{0} önce",
"Discord_Page_JoinCommunityMessage": "ABP Discord Topluluğuna Katılın",
"Discord_Page_Announce": "ABP Topluluk Discord Sunucusunu duyurmaktan mutluluk duyuyoruz!",
"Discord_Page_Description_1": "ABP Topluluğu ilk günden beri büyüyor. Resmi bir ABP Discord sunucusu oluşturarak bunu bir sonraki adıma taşımak istedik, böylece ABP Topluluğu anlık mesajlaşmanın harikalarını kullanarak birbirleriyle etkileşime geçebilir.",
"Discord_Page_Description_2": "ABP Topluluğu Discord Sunucusu, ABP Framework kullanarak yarattıklarınızı sergileyebileceğiniz, işinize yarayan ipuçlarını paylaşabileceğiniz, ABP Framework ile ilgili en son haberleri ve duyuruları takip edebileceğiniz, fikir alışverişinde bulunmak ve eğlenmek için topluluk üyeleriyle sohbet edebileceğiniz bir yerdir!",
"Discord_Page_Description_3": "Bu ABP Topluluk Discord Sunucusu, ABP Çekirdek Ekibinin sunucuda izlenmesi için mevcut olduğu resmi sunucudur.",
"Discord_Page_JoinToServer": "ABP Discord Sunucusuna Katılın",
"Events_Page_MetaTitle": "ABP Topluluk Etkinlikleri",
"Events_Page_MetaDescription": "ABP Ekibi tarafından düzenlenen canlı programlar, topluluk içeriği, demolar, Soru-Cevap ve ABP'de neler olup bittiğine dair tartışmalarla dolu rahat oturumlardır.",
"Events_Page_Title": "ABP<span class=\"gradient-community\"> Topluluk</span> Konuşmaları",
"Events_Page_WritingFromUser": "ABP Topluluğunda {0} adlı kişiden gelen yazıları okuyun.",
"Post_Create_Page_MetaTitle": "Yeni Gönderi",
"Post_Create_Page_MetaDescription": "ABP çerçevesi hakkındaki deneyimlerinizi paylaşmak ve ABP Topluluğuna katkıda bulunmak için gönderinizi oluşturun.",
"Post_Create_Page_CreateNewPost": "Yeni Gönderi Oluştur",
"Post_Index_Page_MetaDescription": "ABP Topluluğu'nun amacı, ABP çerçevesini kullanan geliştiriciler için bir katkı ortamı yaratmaktır.",
"Layout_Title": "{0} | ABP Topluluğu",
"Layout_MetaDescription": "ABP Topluluğu, insanların ABP çerçevesi hakkında paylaşımlarda bulunabileceği ve projeleri takip edebileceği bir ortamdır.",
"Index_Page_CommunityIntroduction": "Burası ABP Çerçevesi, .NET ve yazılım geliştirme için bir merkezdir. Makaleleri okuyabilir, eğitim videolarını izleyebilir, ABP'nin gelişim süreci ve ABP ile ilgili etkinlikler hakkında bilgi alabilir, diğer geliştiricilere yardımcı olabilir ve uzmanlığınızı ABP topluluğu ile paylaşabilirsiniz."
}
}

93
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/tr.json

@ -280,6 +280,99 @@
"FirstEdition": "İlk Baskı",
"ThankYou": "Teşekkürler!",
"CheckboxMandatory": "Devam etmek için bunu kontrol etmeniz gerekiyor!",
"UserInterface": "Kullanıcı Arayüzü",
"APIGateway": "API Ağ Geçidi",
"Database": "Veritabanı",
"Saas": "Saas",
"OpenSourceWebApp": " Açık <span class=\"forever\">kaynak </span> <br/> web uygulaması",
"Framework": "Çerçeve",
"AuditLoggingExplanation": "Sisteminizdeki tüm işlemleri ve veri değişikliklerini otomatik olarak izleyin.",
"AbpNewCommandExplanation": "ABP başlangıç şablonlarını kullanarak yeni çözümler oluşturur.",
"AbpAddModuleCommandExplanation": "Çözümünüze önceden oluşturulmuş uygulama modülleri yükler",
"ExploreAllCLICommands": "Tüm CLI komutlarını keşfedin",
"ExploreDocumentationAndGuides": "Kapsamlı belge ve kılavuzları keşfedin.",
"Documentations": "Belgeler",
"Views": "Görünümler",
"ReadMore": "Daha fazla oku",
"EnterYouEmailToGetNews": "ABP Çerçevesi hakkında en son haberleri almak için e-postanızı girin",
"Tiered": "Katmanlı",
"SeparateIdentityServer": "Ayrı Kimlik Sunucusu",
"Preview": "Önizleme",
"CreateANewSolution": "Yeni bir çözüm oluşturun",
"ABPFrameworkFeatures": "ABP Çerçevesi <span class=\"gradient-framework\">Özellikleri</span>",
"Commercial": "Ticari",
"ThirdPartyTools": "Üçüncü taraf araçlar",
"Back": "Geri",
"Community": "Topluluk",
"SeeMore": "Daha fazla göster",
"DetailsOfTheEBook": "E-kitap detayları",
"JoinOurMarketingNewsletter": "Pazarlama bültenimize katılın",
"FrameworkNewsletterConfirmationMessage": "<a class=\"text-white fw-6 text-decoration-underline opacity-50\" href=\"https://commercial.abp.io/TermsConditions\">Şartlar ve Koşulları</a> ve <a class=\"text-white fw-6 text-decoration-underline opacity-50\" href=\"https://commercial.abp.io/Privacy\">Gizlilik Politikasını</a> kabul ediyorum.",
"GetYourFreeEBook": "<span class=\"gradient-framework d-block\">Ücretsiz DDD E-kitabınızı</span> Alın ",
"EverythingYouNeedToKnow": "Bilmeniz gereken her şey",
"PreOrderNow": "Şimdi Ön sipariş verin",
"UITheming": "Arayüz Teması",
"UIThemingExplanation": "Yeniden kullanılabilir UI temaları ve düzenleri oluşturun veya önceden oluşturulmuş UI temalarından birini kullanın.",
"DataFilteringExplanation2": "Soft-delete ve çoklu kiracılık gibi modelleri kolayca uygulamak için veritabanından sorgulama yaparken otomatik olarak filtreleme yapın.",
"AbpUpdateCommandExplanation": "Çözümünüzdeki ABP ile ilgili tüm NuGet ve NPM paketlerini otomatik olarak günceller.",
"NeedHelp": "Yardıma ihtiyacınız var mı?",
"GiveYourProjectAName": "Projenize bir isim verin",
"SelectProjectType": "Proje türünü seçin",
"SelectUIFramework": "Arayüz çerçevesini seçin",
"SelectDatabaseProvider": "Veritabanı sağlayıcısını seçin",
"SelectDatabaseManagementSystem": "Veritabanı yönetim sisteminizi seçin",
"InstallingTheABPCLI": "ABP CLI yükleniyor",
"CreateYourProjectNow": "Projenizi şimdi oluşturun",
"OrderOn": "{0} numaralı sipariş",
"DownloadFreeDDDBook": "DDD E-kitabını Ücretsiz İndirin",
"WhatIsABPFramework": "ABP Çerçevesi nedir?",
"TenantDatabase": "Kiracı {0} Veritabanı",
"SharedDatabase": "Paylaşımlı Veritabanı",
"ConnectionResolver": "Bağlantı Çözücü",
"TenantBasedDataFilter": "Kiracı Tabanlı Veri Filtresi",
"ApplicationCode": "Uygulama Kodu",
"TenantResolution": "Kiracı Çözümü",
"TenantUser": "Kiracı {0} Kullanıcı",
"CardTitle": "Kart Başlığı",
"View": "Görünüm",
"Model": "Model",
"Email": "E-posta",
"Password": "Şifre",
"Address": "Adres",
"Gender": "Cinsiyet",
"Male": "Erkek",
"Female": "Kadın",
"Submit": "Gönder",
"Unspecified": "Belirtilmemiş",
"StaticFileMiddleware": "Statik Dosya Ara Yazılımı",
"RazorViewEngine": "Razor Görünüm Motoru",
"PhysicalFiles": "Fiziksel Dosyalar (wwwroot)",
"EmbeddedFiles": "Gömülü Dosyalar (DLL)",
"DynamicFiles": "Dinamik Dosyalar (Bellek)",
"BuildSolutionsWithAbp": "ABP kullanarak en iyi yazılım geliştirme uygulamalarını takip ederek sürdürülebilir .NET çözümleri oluşturun.",
"BuyOnAmazon": "Amazon'dan satın alın",
"BuyOnPackt": "Packt'ten satın alın",
"Discounted": "İndirimli",
"MasteringAbpFramework_Book_KeyFeatures": "Anahtar Özellikler",
"MasteringAbpFramework_Book_Key_Features_Description_1": "ABP Çerçevesini kullanarak sağlam, sürdürülebilir, modüler ve ölçeklenebilir yazılım çözümleri oluşturun.",
"MasteringAbpFramework_Book_Key_Features_Description_2": "Web uygulamalarınızda SOLID ilkelerini ve etki alanı odaklı tasarımı nasıl uygulayacağınızı öğrenin.",
"MasteringAbpFramework_Book_Key_Features_Description_3": "ABP Çerçevesinin tekrar eden görevleri otomatikleştirerek geliştirme döngünüzü nasıl hızlandırdığını keşfedin.",
"MasteringAbpFramework_Book_Description": "Kitap Açıklaması",
"MasteringAbpFramework_Book_Description_Details_1": "ABP Çerçevesi, yazılım geliştirme en iyi uygulamalarını ve kurallarını izleyerek modern web uygulamaları oluşturmak \n için eksiksiz bir altyapıdır. ABP'nin üst düzey çerçevesi ve ekosistemi ile Kendinizi Tekrar Etmeyin (DRY) ilkesini uygulayabilir ve iş kodunuza odaklanabilirsiniz.",
"MasteringAbpFramework_Book_Description_Details_2": "ABP Çerçevesinin yaratıcısı tarafından yazılan bu kitap,çerçevesini ve modern web uygulaması geliştirme\n tekniklerini tam olarak anlamanıza yardımcı olacaktır. Temel kavramların adım adım açıklamaları ve\n pratik örneklerle, modern bir web çözümünün gereksinimlerini ve ABP Çerçevesinin kendi çözümlerinizi\n geliştirmeyi nasıl keyifli hale getirdiğini anlayacaksınız. Kurumsal web uygulaması geliştirmenin ortak gereksinimlerini\n keşfedecek ve ABP tarafından sağlanan altyapıyı keşfedeceksiniz. Kitap boyunca, sürdürülebilir ve\n modüler web çözümleri oluşturmak için en iyi yazılım geliştirme uygulamalarını öğreneceksiniz.",
"MasteringAbpFramework_Book_Description_Details_3": "Bu kitabın sonunda, geliştirilmesi, bakımı ve test edilmesi kolay eksiksiz bir web çözümü\n oluşturabileceksiniz.",
"MasteringAbpFramework_Book_WhatYouWillLearn": "Ne Öğreneceksiniz",
"MasteringAbpFramework_Book_What_You_Will_Learn_1": "Geliştirme ortamını kurun ve ABP Çerçevesi ile çalışmaya başlayın.",
"MasteringAbpFramework_Book_What_You_Will_Learn_2": "Veri erişim katmanınızı geliştirmek için Entity Framework Core ve MongoDB ile çalışın.",
"MasteringAbpFramework_Book_What_You_Will_Learn_3": "Birbiriyle kesişen endişeleri ve ABP'nin tekrarlayan görevleri nasıl otomatikleştirdiğini anlayın.",
"MasteringAbpFramework_Book_What_You_Will_Learn_4": "ABP Çerçevesi ile etki alanı odaklı tasarımın uygulanmasını öğrenin.",
"MasteringAbpFramework_Book_What_You_Will_Learn_5": "ASP.NET Core MVC (Razor Pages) ve Blazor ile UI sayfaları ve bileşenleri oluşturun.",
"MasteringAbpFramework_Book_What_You_Will_Learn_6": "Modüler web uygulamaları oluşturmak için çoklu kiracılık ile çalışın.",
"MasteringAbpFramework_Book_What_You_Will_Learn_7": "Modülerliği anlayın ve yeniden kullanılabilir uygulama modülleri oluşturun.",
"MasteringAbpFramework_Book_What_You_Will_Learn_8": "ABP Çerçevesini kullanarak birim, entegrasyon ve UI testleri yazın.",
"MasteringAbpFramework_Book_WhoIsThisBookFor": "Bu kitap kimler için?",
"MasteringAbpFramework_Book_WhoIsThisBookFor_Description": "Bu kitap, Microsoft teknolojilerini ve ABP Çerçevesini kullanarak sürdürülebilir web tabanlı çözümler\n oluşturmak için yazılım mimarilerini ve en iyi uygulamaları öğrenmek isteyen web geliştiricileri içindir.\n Bu kitaba başlamak için temel C# ve ASP.NET Core bilgisi gereklidir.",
"ComputersAndTechnology": "Bilgisayar ve Teknoloji",
"ThisBookIsInDraftStageAndIsNotCompletedYet": "Bu kitap taslak aşamasındadır ve henüz tamamlanmamıştır."
}
}

76
docs/en/Blog-Posts/2022-09-21 v6_0_Release_Stable/POST.md

@ -0,0 +1,76 @@
# ABP.IO Platform 6.0 Final Has Been Released!
[ABP Framework](https://abp.io/) and [ABP Commercial](https://commercial.abp.io/) 6.0 versions have been released today.
## What's New With 6.0?
Since all the new features are already explained in details with the [6.0 RC Announcement Post](https://blog.abp.io/abp/ABP.IO-Platform-6.0-RC-Has-Been-Published), I will not repeat all the details again. See the [RC Blog Post](https://blog.abp.io/abp/ABP.IO-Platform-6.0-RC-Has-Been-Published) for all the features and enhancements.
## Getting Started with 6.0
### Creating New Solutions
You can create a new solution with the ABP Framework version 6.0 by either using the `abp new` command or using the **direct download** tab on the [get started page](https://abp.io/get-started).
> See the [getting started document](https://docs.abp.io/en/abp/latest/Getting-Started) for more.
### How to Upgrade an Existing Solution
#### Install/Update the ABP CLI
First of all, install the ABP CLI or upgrade to the latest version.
If you haven't installed it yet:
```bash
dotnet tool install -g Volo.Abp.Cli
```
To update an existing installation:
```bash
dotnet tool update -g Volo.Abp.Cli
```
#### Upgrading Existing Solutions with the ABP Update Command
[ABP CLI](https://docs.abp.io/en/abp/latest/CLI) provides a handy command to update all the ABP related NuGet and NPM packages in your solution with a single command:
```bash
abp update
```
Run this command in the root folder of your solution.
## Migration Guides
Check the following migration guides for the applications with version 5.3 that are upgrading to version 6.0.
* [ABP Framework 5.3 to 6.0 Migration Guide](https://docs.abp.io/en/abp/6.0/Migration-Guides/Abp-6_0)
* [ABP Commercial 5.3 to 6.0 Migration Guide](https://docs.abp.io/en/commercial/6.0/migration-guides/v6_0)
## Community News
### New ABP Community Posts
Here are some of the recent posts added to the [ABP Community](https://community.abp.io/):
* [Halil Ibrahim Kalkan](https://twitter.com/hibrahimkalkan) has created two new community articles:
* [Consuming gRPC Services from Blazor WebAssembly Application Using gRPC-Web](https://community.abp.io/posts/consuming-grpc-services-from-blazor-webassembly-application-using-grpcweb-dqjry3rv)
* [Using gRPC with the ABP Framework](https://community.abp.io/posts/using-grpc-with-the-abp-framework-2dgaxzw3)
* [Malik Masis](https://twitter.com/malikmasis) also has created two new community articles:
* [Consuming HTTP APIs from a .NET Client Using ABP's Client Proxy System](https://community.abp.io/posts/consuming-http-apis-from-a-.net-client-using-abps-client-proxy-system-xriqarrm)
* [Using MassTransit via eShopOnAbp](https://community.abp.io/posts/using-masstransit-via-eshoponabp-8amok6h8)
* [Xeevis](https://community.abp.io/members/Xeevis) has created her/his first community article, that shows [Prerendering in Blazor WASM applications](https://community.abp.io/posts/prerendering-blazor-wasm-application-with-abp-6.x-2v8590g3).
* [Don Boutwell](https://community.abp.io/members/dboutwell) has created two new community articles:
* [Logging to Datadog from ABP framework](https://community.abp.io/posts/logging-to-datadog-from-abp-framework-fm4ozds4)
* [Configuring Multiple DbContexts in an ABP Framework Project](https://community.abp.io/posts/configuring-multiple-dbcontexts-in-an-abp-framework-project-uoz5is3o)
* [Kirti Kulkarni](https://twitter.com/kirtimkulkarni) has created a new community article: [Deploying ABP angular application to Azure and App Insights integration](https://community.abp.io/posts/deploying-abp-angular-application-to-azure-and-app-insights-integration-4jrhtp01)
Thanks to the ABP Community for all the contents they have published. You can also [post your ABP related (text or video) contents](https://community.abp.io/articles/submit) to the ABP Community.
## About the Next Version
The next feature version will be 7.0. It is planned to release the 7.0 RC (Release Candidate) on November 15 and the final version on December 13, 2022. You can follow the [release planning here](https://github.com/abpframework/abp/milestones).
Please [submit an issue](https://github.com/abpframework/abp/issues/new) if you have any problems with this version.

244
docs/en/Community-Articles/2022-09-15-Grpc-Demo/POST.md

@ -0,0 +1,244 @@
# Using gRPC with the ABP Framework
[gRPC](https://grpc.io/) defines itself as an open source, language agnostic, universal, high-performance **Remote Procedure Call (RPC)** framework.
In this article, I will show you how to create a gRPC service and consume it from a console application with the ABP Framework. While the client application is console in this article, it can easily be a service consuming another service in a microservice system.
> **This article will be a step by step tutorial.** I wrote the article based on Microsoft's [Code-first gRPC services and clients with .NET](https://docs.microsoft.com/en-us/aspnet/core/grpc/code-first) document. You can read that document for more details about gRPC and the code-first approach.
## Creating the Application
> I will use ABP version 6.0 for this article. I am using the 6.0.0-rc.4 version since the stable version hasn't been published at the time I am writing this article. If it is released while you're reading this, do not specify the `--version` and `--preview` parameters in the following commands.
Install the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI) if you haven't installed it yet:
````bash
dotnet tool install -g Volo.Abp.Cli --version 6.0.0-rc.4
````
or update to version 6.0.0-rc.4 if you've already installed a previous version:
````bash
dotnet tool update Volo.Abp.Cli -g --version 6.0.0-rc.4
````
Create an empty folder, open a command-line terminal and type the following command in the terminal window to create a new ABP solution using the ABP CLI:
````bash
abp new ProductManagement -u blazor -t app --preview
````
I've created an application with the Blazor UI, but the UI is not important for this tutorial, you can select your favorite UI option.
## Open the Solution
Open the solution in your favorite IDE. I like [Rider](https://www.jetbrains.com/rider/), but Visual Studio, VS Code or any other IDE perfectly works. The following figure shows the solution structure in Rider:
![solution](solution.png)
Run the `ProductManagement.DbMigrator` project (a console application) to create the database and seed the initial data.
## Defining the Service Contract
We are starting by defining the service contract and DTO classes that will be shared between the server and the client applications.
Create a `Products` folder in the `ProductManagement.Application.Contracts` project and add a new interface named `IProductAppService`:
````csharp
using System.Collections.Generic;
using System.ServiceModel;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
namespace ProductManagement.Products;
[ServiceContract]
public interface IProductAppService : IApplicationService
{
Task<List<ProductDto>> GetListAsync();
}
````
Your IDE will complain about the `[ServiceContract]` attribute, but it is necessary for the contract-first gRPC library we will be using later. So, add the [System.ServiceModel.Primitives](https://www.nuget.org/packages/System.ServiceModel.Primitives) NuGet package to the `ProductManagement.Application.Contracts` project, and it should be fixed. You can simply edit the `ProductManagement.Application.Contracts.csproj` file and add the following line in an `ItemGroup` tag:
````xml
<PackageReference Include="System.ServiceModel.Primitives" Version="4.7.0" />
````
Or you can use your IDE to find and add that NuGet package, it is up to you.
I've also used the `ProductDto` class, but haven't defined it yet. Create a new class in the same folder with the `IProductAppService` file:
````csharp
using System;
using System.Runtime.Serialization;
namespace ProductManagement.Products;
[DataContract]
public class ProductDto
{
[DataMember(Order = 1)]
public Guid Id { get; set; }
[DataMember(Order = 2)]
public string Name { get; set; }
}
````
The `[DataContract]` and `[DataMember]` properties are needed for serialization. In gRPC, property serialization orders are important, because property names are not transferred to the target application, to keep the serialized data small.
After adding these classes, the `ProductManagement.Application.Contracts` project should look as in the following figure:
![contracts](contracts.png)
The contracts part is over. We actually didn't have any dependency to gRPC at that point. Our service and DTOs are pretty plain classes, except a few standard attributes, which are already defined in the .NET Core framework. Now, we can implement the `IProductAppService`.
## Implementing the Service
We are implementing the application services in the `ProductManagement.Application` project. So, add a new `Products` folder to that project and define a `ProductAppService` class inside it:
````csharp
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace ProductManagement.Products;
public class ProductAppService : ProductManagementAppService, IProductAppService
{
public async Task<List<ProductDto>> GetListAsync()
{
return new List<ProductDto>
{
new ProductDto { Id = Guid.NewGuid(), Name = "Product 1" },
new ProductDto { Id = Guid.NewGuid(), Name = "Product 2" },
};
}
}
````
This is a pretty standard, plain [application service ](https://docs.abp.io/en/abp/latest/Application-Services)class. All the ABP application service features (validation, audit logging, unit of work, etc.) are available. You can inject [repositories](https://docs.abp.io/en/abp/latest/Repositories) and perform database queries. To keep this article simple, I am returning hard-coded data from here.
> `ProductManagementAppService` is a base class coming in the ABP startup template. While you don't have to inherit from it, it provides useful base properties and methods you typically need in an application service.
The application service part is over. Again, we didn't write any gRPC specific code. Don't worry, we will write in the next section.
## Configuring the gRPC Server
In this solution, `ProductManagement.HttpApi.Host` is the project that configures and runs the server-side application. So, we will make changes in that project.
First, add the [protobuf-net.Grpc.AspNetCore](https://www.nuget.org/packages/protobuf-net.Grpc.AspNetCore) NuGet package to the `ProductManagement.HttpApi.Host` project:
````xml
<PackageReference Include="protobuf-net.Grpc.AspNetCore" Version="1.0.177" />
````
Then open the `ProductManagementHttpApiHostModule.cs` file, find the `ConfigureServices` method and add the following line into this method:
````csharp
context.Services.AddCodeFirstGrpc();
````
This will register code-first gRPC services to the [dependency injection](https://docs.abp.io/en/abp/latest/Dependency-Injection) system. Then find the `app.UseConfiguredEndpoints()` line in the `OnApplicationInitialization` method and change it as shown below:
````csharp
app.UseConfiguredEndpoints(endpoints =>
{
endpoints.MapGrpcService<IProductAppService>();
});
````
We've configured the `IProductAppService` to handle gRPC requests to that service. The following figure shows the whole change done in the `ProductManagementHttpApiHostModule` class:
![host-changes-1](host-changes-1.png)
gRPC handles requests with the HTTP/2 protocol and should listen an endpoint other than the default HTTP endpoint used by the application. We can easily configure the Kestrel server to listen two endpoints, one for our HTTP APIs, the other one for gRPC services. Add the following configuration inside the `appsettings.json` file of the `ProductManagement.HttpApi.Host` project:
````json
"Kestrel": {
"Endpoints": {
"Https": {
"Url": "https://localhost:44388",
"Protocols": "Http1AndHttp2"
},
"gRPC": {
"Url": "https://localhost:10042",
"Protocols": "Http2"
}
}
}
````
Note that `https://localhost:44388` may be different for your case, since ABP CLI assignes a random port while you're creating a new solution. You can check your port by running the `ProductManagement.HttpApi.Host` project and looking at the address bar on your browser.
The server-side configuration is done. It is ready to receive gRPC requests. Now, we can change the client to consume the gRPC service we've created.
## Implementing the Client Side
The ABP startup solution template comes with a console application to test consuming your HTTP APIs. For this example, the project is named as `ProductManagement.HttpApi.Client.ConsoleTestApp` and located under the `test` folder in the solution.
First, add the [Grpc.Net.Client](https://www.nuget.org/packages/Grpc.Net.Client) and the [protobuf-net.Grpc](https://www.nuget.org/packages/protobuf-net.Grpc) NuGet packages to the `ProductManagement.HttpApi.Client.ConsoleTestApp` project.
````xml
<PackageReference Include="Grpc.Net.Client" Version="2.49.0-pre1" />
<PackageReference Include="protobuf-net.Grpc" Version="1.0.177" />
````
Now, open the `ClientDemoService.cs` file under the `ProductManagement.HttpApi.Client.ConsoleTestApp` project and change its contents with the following code block:
````csharp
using System;
using System.Threading.Tasks;
using Grpc.Net.Client;
using ProductManagement.Products;
using ProtoBuf.Grpc.Client;
using Volo.Abp.DependencyInjection;
namespace ProductManagement.HttpApi.Client.ConsoleTestApp;
public class ClientDemoService : ITransientDependency
{
public async Task RunAsync()
{
using (var channel = GrpcChannel.ForAddress("https://localhost:10042"))
{
var productAppService = channel.CreateGrpcService<IProductAppService>();
var productDtos = await productAppService.GetListAsync();
foreach (var productDto in productDtos)
{
Console.WriteLine($"[Product] Id = {productDto.Id}, Name = {productDto.Name}");
}
}
}
}
````
We are simply creating a gRPC channel, then creating a client proxy for the `IProductAppService` service. Then we can call its method just like local method calls. You can run the applications to test it.
## Run the Applications
First run the `ProductManagement.HttpApi.Host` application. It should show a Swagger UI as shown below:
![swagger](swagger.png)
If you see that page, it means your server-side is up and running. Now, you can run the `ProductManagement.HttpApi.Client.ConsoleTestApp` console application to call the gRPC service defined on the server.
The test console application should produce an output as shown below:
![client-application](client-application.png)
As you see, products are returned from the server. That's all, you've done it!
## Conclusion
In this article, I've used the [code-first approach](https://docs.microsoft.com/en-us/aspnet/core/grpc/code-first) to implement a gRPC server and consume it in a client application. Code-first approach is very practical if both of your client and server applications are built with .NET. By the help of ABP's layered solution structure, we even didn't add any gRPC dependency into our server-side and contracts. We've just configured gRPC in the hosting side, with a small amount of code.
gRPC on .NET has different approaches, features, configurations and more details. I suggest you to read [Microsoft's documentation](https://docs.microsoft.com/en-us/aspnet/core/grpc) to learn more about it. All the approaches can work with the ABP Framework. Enjoy coding!
## The Source Code
* You can find the completed source code here: https://github.com/abpframework/abp-samples/tree/master/GrpcDemo2
* You can also see all the changes I've done in this article here: https://github.com/abpframework/abp-samples/pull/200/files

BIN
docs/en/Community-Articles/2022-09-15-Grpc-Demo/client-application.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

BIN
docs/en/Community-Articles/2022-09-15-Grpc-Demo/contracts.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
docs/en/Community-Articles/2022-09-15-Grpc-Demo/host-changes-1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

BIN
docs/en/Community-Articles/2022-09-15-Grpc-Demo/solution.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

BIN
docs/en/Community-Articles/2022-09-15-Grpc-Demo/swagger.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

121
docs/en/Community-Articles/2022-09-18-Grpc-Demo-Part-2/POST.md

@ -0,0 +1,121 @@
# Consuming gRPC Services from Blazor WebAssembly Application Using gRPC-Web
> **WARNING: I've demonstrated [Using gRPC with the ABP Framework](https://community.abp.io/posts/using-grpc-with-the-abp-framework-2dgaxzw3) in my latest post. If you haven't seen it, you should read it before this article, since this is a continuation of that article.**
In this second part, I will show how to consume the gRPC service from the Blazor WebAssembly application, using the gRPC-Web technology.
This will be a short article, based on Microsoft's [gRPC-Web in ASP.NET Core gRPC apps](https://learn.microsoft.com/en-us/aspnet/core/grpc/grpcweb) and [Code-first gRPC services and clients with .NET](https://learn.microsoft.com/en-us/aspnet/core/grpc/code-first) documents. For more information, I suggest to check these documents. Let's get started...
## Configuring the Server Side
First of all, the server-side should support gRPC-Web. Follow the steps below to enable it:
### Add Grpc.AspNetCore.Web Package
Add [Grpc.AspNetCore.Web](https://www.nuget.org/packages/Grpc.AspNetCore.Web) NuGet package to the `ProductManagement.HttpApi.Host` project.
### Add GrpcWeb Middleware
Add the following line just before the `app.UseConfiguredEndpoints(...)` line to add the GrpcWeb middleware to your ASP.NET Core request pipeline:
````csharp
app.UseGrpcWeb(new GrpcWebOptions { DefaultEnabled = true });
````
### Configure Cors
ABP's startup template already configures Cors when you create a new solution. However, we need to allow some extra headers in our Cors configuration.
Add the following line just after the `.WithAbpExposedHeaders()` line in the `OnApplicationInitialization` method of the `ProductManagementHttpApiHostModule` class:
````csharp
.WithExposedHeaders("Grpc-Status", "Grpc-Message", "Grpc-Encoding", "Grpc-Accept-Encoding")
````
Finally, call `RequireCors` extension method just after the `MapGrpcService` calls:
````csharp
app.UseConfiguredEndpoints(endpoints =>
{
endpoints
.MapGrpcService<IProductAppService>()
.RequireCors("__DefaultCorsPolicy"); // Configure Cors for the product service
});
````
`__DefaultCorsPolicy` may seem a magic string here. Let me explain it: ABP startup template configures the default Cors policy with the `context.Services.AddCors(...)` method (you can see it in the source code). If we define a named policy, we should use the same name here. However, when we don't specify, ASP.NET Core uses `__DefaultCorsPolicy` as the policy name by default. If you don't want to use the magic string, you can resolve the `IOptions<CorsOptions>` service and get the `DefaultPolicyName` from the `CorsOption` object.
Anyway, that's all on the server-side. We can work on he client now.
## Configuring the Client Side
`ProductManagement.Blazor` is the Blazor WebAssembly application in the solution I'd created in the [first article](https://community.abp.io/posts/using-grpc-with-the-abp-framework-2dgaxzw3). We will configure that project to be able to consume the server-side gRPC services from our Blazor application.
### Add Client-side Nuget Packages
Add [Grpc.Net.Client](https://www.nuget.org/packages/Grpc.Net.Client), [Grpc.Net.Client.Web](https://www.nuget.org/packages/Grpc.Net.Client.Web) and [protobuf-net.Grpc](https://www.nuget.org/packages/protobuf-net.Grpc) NuGet packages to the `ProductManagement.Blazor` project. We are ready to consume the gRPC services.
### Consume the Product Service
Change the `Pages/Index.razor.cs` file's content with the following code block:
````csharp
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
using Grpc.Net.Client;
using Grpc.Net.Client.Web;
using ProductManagement.Products;
using ProtoBuf.Grpc.Client;
namespace ProductManagement.Blazor.Pages;
public partial class Index
{
private List<ProductDto> Products { get; set; } = new();
protected override async Task OnInitializedAsync()
{
var channel = GrpcChannel.ForAddress("https://localhost:10042", new GrpcChannelOptions
{
HttpHandler = new GrpcWebHandler(new HttpClientHandler())
});
var productAppService = channel.CreateGrpcService<IProductAppService>();
Products = await productAppService.GetListAsync();
}
}
````
* We've created a gRPC channel for the server-side endpoint (surely, you get the address from a configuration) with channel options by specifying that we will use the `GrpcWebHandler`.
* We've created a service proxy object using the `CreateGrpcService` extension method that is defined by the [protobuf-net.Grpc](https://www.nuget.org/packages/protobuf-net.Grpc) NuGet package.
* We've used the service proxy object, `productAppService`, to consume remote endpoint just like a local service.
That's all. If we want to show the products on the page, we can add the following markup into the `Pages/Index.razor` view:
````xml
<h2>A list of products:</h2>
<ul class="list-group">
@foreach(var product in Products)
{
<li class="list-group-item">
@product.Name <br/>
<small>@product.Id.ToString()</small>
</li>
}
</ul>
````
Run the applications (first run the `ProductManagement.HttpApi.Host` project, then run the `ProductManagement.Blazor` project in the solution) to see it in action:
![blazor-product-list](blazor-product-list.png)
## Conclusion
In the first part of this article, I'd demonstrated how to implement a gRPC service and consume it in a client application, using the [code-first approach](https://docs.microsoft.com/en-us/aspnet/core/grpc/code-first). In this article, I've demonstrated how to consume the same gRPC service from a Blazor WebAssembly application, using the [gRPC-Web](https://learn.microsoft.com/en-us/aspnet/core/grpc/grpcweb) technology. As you see in these two articles, using gRPC with the ABP Framework is straightforward.
## The Source Code
- You can find the completed source code here: https://github.com/abpframework/abp-samples/tree/master/GrpcDemo2
- You can also see all the changes I've done in this article here: https://github.com/abpframework/abp-samples/pull/201/files

BIN
docs/en/Community-Articles/2022-09-18-Grpc-Demo-Part-2/blazor-product-list.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

469
docs/en/Dapr/Index.md

@ -0,0 +1,469 @@
# ABP Dapr Integration
> This document assumes that you are already familiar with [Dapr](https://dapr.io/) and you want to use it in your ABP based applications.
[Dapr](https://dapr.io/) (Distributed Application Runtime) provides APIs that simplify microservice connectivity. It is an open source project that is mainly backed by Microsoft. It is also a CNCF (Cloud Native Computing Foundation) project and trusted by the community.
ABP and Dapr have some intersecting features like service-to-service communication, distributed message bus and distributed locking. However their purposes are totally different. ABP's goal is to provide an end-to-end developer experience by offering an opinionated architecture and providing the necessary infrastructure libraries, reusable modules and tools to implement that architecture properly. Dapr's purpose, on the other hand, is to provide a runtime to decouple common microservice communication patterns from your application logic.
ABP and Dapr can perfectly work together in the same application. ABP offers some packages to provide better integration where Dapr features intersect with ABP. You can use other Dapr features with no ABP integration packages based on [its own documentation](https://docs.dapr.io/).
## ABP Dapr Integration Packages
ABP provides the following NuGet packages for the Dapr integration:
* [Volo.Abp.Dapr](https://www.nuget.org/packages/Volo.Abp.Dapr): The main Dapr integration package. All other packages depend on this package.
* [Volo.Abp.Http.Client.Dapr](https://www.nuget.org/packages/Volo.Abp.Http.Client.Dapr): Integration package for ABP's [dynamic](../API/Dynamic-CSharp-API-Clients.md) and [static](../API/Static-CSharp-API-Clients.md) C# API Client Proxies systems with Dapr's [service invocation](https://docs.dapr.io/developing-applications/building-blocks/service-invocation/service-invocation-overview/) building block.
* [Volo.Abp.EventBus.Dapr](https://www.nuget.org/packages/Volo.Abp.EventBus.Dapr): Implements ABP's distributed event bus with Dapr's [publish & subscribe](https://docs.dapr.io/developing-applications/building-blocks/pubsub/) building block. With this package, you can send events, but can not receive.
* [Volo.Abp.AspNetCore.Mvc.Dapr.EventBus](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus): Provides the endpoints to receive events from Dapr's [publish & subscribe](https://docs.dapr.io/developing-applications/building-blocks/pubsub/) building block. Use this package to send and receive events.
* [Volo.Abp.DistributedLocking.Dapr](https://www.nuget.org/packages/Volo.Abp.DistributedLocking.Dapr): Uses Dapr's [distributed lock](https://docs.dapr.io/developing-applications/building-blocks/distributed-lock/) building block for [distributed locking](../Distributed-Locking.md) service of the ABP Framework.
In the following sections, we will see how to use these packages to use Dapr in your ABP based solutions.
## Basics
### Installation
> This section explains how to add [Volo.Abp.Dapr](https://www.nuget.org/packages/Volo.Abp.Dapr), the core Dapr integration package to your project. If you are using one of the other Dapr integration packages, you can skip this section since this package will be indirectly added.
Use the ABP CLI to add the [Volo.Abp.Dapr](https://www.nuget.org/packages/Volo.Abp.Dapr) NuGet package to your project:
* Install the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI) if you haven't installed it before.
* Open a command line (terminal) in the directory of the `.csproj` file you want to add the `Volo.Abp.Dapr` package.
* Run the `abp add-package Volo.Abp.Dapr` command.
If you want to do it manually, install the [Volo.Abp.Dapr](https://www.nuget.org/packages/Volo.Abp.Dapr) NuGet package to your project and add `[DependsOn(typeof(AbpDaprModule))]` to the [ABP module](../Module-Development-Basics.md) class inside your project.
### AbpDaprOptions
`AbpDaprOptions` is the main [options class](../Options.md) that you can configure the global Dapr settings with. **All settings are optional and you mostly don't need to configure them.** If you need, you can configure it in the `ConfigureServices` method of your [module class](../Module-Development-Basics.md):
````csharp
Configure<AbpDaprOptions>(options =>
{
// ...
});
````
Available properties of the `AbpDaprOptions` class:
* `HttpEndpoint` (optional): HTTP endpoint that is used while creating a `DaprClient` object. If you don't specify, the default value is used.
* `GrpcEndpoint` (optional): The gRPC endpoint that is used while creating a `DaprClient` object. If you don't specify, the default value is used.
* `DaprApiToken` (optional): The [Dapr API token](https://docs.dapr.io/operations/security/api-token/) that is used while sending requests from the application to Dapr. It is filled from the `DAPR_API_TOKEN` environment variable by default (which is set by Dapr once it is configured). See the *Security* section in this document for details.
* `AppApiToken` (optional): The [App API token](https://docs.dapr.io/operations/security/app-api-token/) that is used to validate requests coming from Dapr. It is filled from the `APP_API_TOKEN` environment variable by default (which is set by Dapr once it is configured). See the *Security* section in this document for details.
Alternatively, you can configure the options in the `Dapr` section of your `appsettings.json` file. Example:
````csharp
"Dapr": {
"HttpEndpoint": "http://localhost:3500/"
}
````
### Injecting DaprClient
ABP registers the `DaprClient` class to the [dependency injection](../Dependency-Injection.md) system. So, you can inject and use it whenever you need:
````csharp
public class MyService : ITransientDependency
{
private readonly DaprClient _daprClient;
public MyService(DaprClient daprClient)
{
_daprClient = daprClient;
}
public async Task DoItAsync()
{
// TODO: Use the injected _daprClient object
}
}
````
Injecting `DaprClient` is the recommended way of using it in your application code. When you inject it, the `IAbpDaprClientFactory` service is used to create it, which is explained in the next section.
### IAbpDaprClientFactory
`IAbpDaprClientFactory` can be used to create `DaprClient` or `HttpClient` objects to perform operations on Dapr. It uses `AbpDaprOptions`, so you can configure the settings in a central place.
**Example usages:**
````csharp
public class MyService : ITransientDependency
{
private readonly IAbpDaprClientFactory _daprClientFactory;
public MyService(IAbpDaprClientFactory daprClientFactory)
{
_daprClientFactory = daprClientFactory;
}
public async Task DoItAsync()
{
// Create a DaprClient object with default options
DaprClient daprClient = await _daprClientFactory.CreateAsync();
/* Create a DaprClient object with configuring
* the DaprClientBuilder object */
DaprClient daprClient2 = await _daprClientFactory
.CreateAsync(builder =>
{
builder.UseDaprApiToken("...");
});
// Create an HttpClient object
HttpClient httpClient = await _daprClientFactory
.CreateHttpClientAsync("target-app-id");
}
}
````
`CreateHttpClientAsync` method also gets optional `daprEndpoint` and `daprApiToken` parameters.
> ABP uses `IAbpDaprClientFactory` when it needs to create a Dapr client. You can also use Dapr API to create client objects in your application. Using `IAbpDaprClientFactory` is recommended, but not required.
## C# API Client Proxies Integration
ABP can [dynamically](../API/Dynamic-CSharp-API-Clients.md) or [statically](../API/Static-CSharp-API-Clients.md) generate proxy classes to invoke your HTTP APIs from a Dotnet client application. It makes perfect sense to consume HTTP APIs in a distributed system. The [Volo.Abp.Http.Client.Dapr](https://www.nuget.org/packages/Volo.Abp.Http.Client.Dapr) package configures the client-side proxies system, so it uses Dapr's service invocation building block for the communication between your applications.
### Installation
Use the ABP CLI to add the [Volo.Abp.Http.Client.Dapr](https://www.nuget.org/packages/Volo.Abp.Http.Client.Dapr) NuGet package to your project (to the client side):
* Install the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI) if you haven't installed before.
* Open a command line (terminal) in the directory of the `.csproj` file you want to add the `Volo.Abp.Http.Client.Dapr` package to.
* Run the `abp add-package Volo.Abp.Http.Client.Dapr` command.
If you want to do it manually, install the [Volo.Abp.Http.Client.Dapr](https://www.nuget.org/packages/Volo.Abp.Http.Client.Dapr) NuGet package to your project and add `[DependsOn(typeof(AbpHttpClientDaprModule))]` to the [ABP module](../Module-Development-Basics.md) class inside your project.
### Configuration
Once you install the [Volo.Abp.Http.Client.Dapr](https://www.nuget.org/packages/Volo.Abp.Http.Client.Dapr) NuGet package, all you need to do is to configure ABP's remote services option either in `appsettings.json` or using the `AbpRemoteServiceOptions` [options class](../Options.md).
**Example:**
````csharp
{
"RemoteServices": {
"Default": {
"BaseUrl": "http://dapr-httpapi/"
}
}
}
````
`dapr-httpapi` in this example is the application id of the server application in your Dapr configuration.
The remote service name (`Default` in this example) should match the remote service name specified in the `AddHttpClientProxies` call for dynamic client proxies or the `AddStaticHttpClientProxies` call for static client proxies. Using `Default` is fine if your client communicates to a single server. However, if your client uses multiple servers, you typically have multiple keys in the `RemoteServices` configuration. Once you configure the remote service endpoints as Dapr application ids, it will automatically work and make the HTTP calls through Dapr when you use ABP's client proxy system.
> See the [dynamic](../API/Dynamic-CSharp-API-Clients.md) and [static](../API/Static-CSharp-API-Clients.md) client proxy documents for details about the ABP's client proxy system.
## Distributed Event Bus Integration
[ABP's distributed event bus](../Distributed-Event-Bus.md) system provides a convenient abstraction to allow applications to communicate asynchronously via events. ABP has integration packages with various distributed messaging systems, like RabbitMQ, Kafka, and Azure. Dapr also has a [publish & subscribe building block](https://docs.dapr.io/developing-applications/building-blocks/pubsub/pubsub-overview/) for the same purpose: distributed messaging / events.
ABP's [Volo.Abp.EventBus.Dapr](https://www.nuget.org/packages/Volo.Abp.EventBus.Dapr) and [Volo.Abp.AspNetCore.Mvc.Dapr.EventBus](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus) packages make it possible to use the Dapr infrastructure for ABP's distributed event bus.
The [Volo.Abp.EventBus.Dapr](https://www.nuget.org/packages/Volo.Abp.EventBus.Dapr) package can be used by any type of application (e.g., a Console or ASP.NET Core application) to publish events through Dapr. To be able to receive messages (by subscribing to events), you need to have the [Volo.Abp.AspNetCore.Mvc.Dapr.EventBus](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus) package installed, and your application should be an ASP.NET Core application.
### Installation
If your application is an ASP.NET Core application and you want to send and receive events, you need to install the [Volo.Abp.AspNetCore.Mvc.Dapr.EventBus](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus) package as described below:
* Install the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI) if you haven't installed it before.
* Open a command line (terminal) in the directory of the `.csproj` file you want to add the `Volo.Abp.AspNetCore.Mvc.Dapr.EventBus` package to.
* Run the `abp add-package Volo.Abp.AspNetCore.Mvc.Dapr.EventBus` command.
If you want to do it manually, install the [Volo.Abp.AspNetCore.Mvc.Dapr.EventBus](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus) NuGet package to your project and add `[DependsOn(typeof(AbpAspNetCoreMvcDaprEventBusModule))]` to the [ABP module](../Module-Development-Basics.md) class inside your project.
> **If you install the [Volo.Abp.AspNetCore.Mvc.Dapr.EventBus](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus) package, you don't need to install the [Volo.Abp.EventBus.Dapr](https://www.nuget.org/packages/Volo.Abp.EventBus.Dapr) package, because the first one already has a reference to the latter one.**
If your application is not an ASP.NET Core application, you can't receive events from Dapr, at least with ABP's integration packages (see [Dapr's document](https://docs.dapr.io/developing-applications/building-blocks/pubsub/howto-publish-subscribe/) if you want to receive events in a different type of application). However, you can still publish messages using the [Volo.Abp.EventBus.Dapr](https://www.nuget.org/packages/Volo.Abp.EventBus.Dapr) package. In this case, follow the steps below to install that package to your project:
* Install the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI) if you haven't installed it before.
* Open a command line (terminal) in the directory of the `.csproj` file you want to add the `Volo.Abp.EventBus.Dapr` package to.
* Run the `abp add-package Volo.Abp.EventBus.Dapr` command.
If you want to do it manually, install the [Volo.Abp.EventBus.Dapr](https://www.nuget.org/packages/Volo.Abp.EventBus.Dapr) NuGet package to your project and add `[DependsOn(typeof(AbpEventBusDaprModule))]` to the [ABP module](../Module-Development-Basics.md) class inside your project.
### Configuration
You can configure the `AbpDaprEventBusOptions` [options class](../Options.md) for Dapr configuration:
````csharp
Configure<AbpDaprEventBusOptions>(options =>
{
options.PubSubName = "pubsub";
});
````
Available properties of the `AbpDaprEventBusOptions` class:
* `PubSubName` (optional): The `pubsubName` parameter while publishing messages through the `DaprClient.PublishEventAsync` method. Default value: `pubsub`.
### The ABP Subscription Endpoints
ABP provides the following endpoints to receive events from Dapr:
* `dapr/subscribe`: Dapr uses this endpoint to get a list of subscriptions from the application. ABP automatically returns all the subscriptions for your distributed event handler classes and custom controller actions with the `Topic` attribute.
* `api/abp/dapr/event`: The unified endpoint to receive all the events from Dapr. ABP dispatches the events to your event handlers based on the topic name.
> **Since ABP provides the standard `dapr/subscribe` endpoint, you should not manually call the `app.MapSubscribeHandler()` method of Dapr.** You can use the `app.UseCloudEvents()` middleware in your ASP.NET Core pipeline if you want to support the [CloudEvents](https://cloudevents.io/) standard.
### Usage
#### The ABP Way
You can follow [ABP's distributed event bus documentation](../Distributed-Event-Bus.md) to learn how to publish and subscribe to events in the ABP way. No change required in your application code to use Dapr pub-sub. ABP will automatically subscribe to Dapr for your event handler classes (that implement the `IDistributedEventHandler` interface).
ABP provides `api/abp/dapr/event`
**Example: Publish an event using the `IDistributedEventBus` service**
````csharp
public class MyService : ITransientDependency
{
private readonly IDistributedEventBus _distributedEventBus;
public MyService(IDistributedEventBus distributedEventBus)
{
_distributedEventBus = distributedEventBus;
}
public async Task DoItAsync()
{
await _distributedEventBus.PublishAsync(new StockCountChangedEto
{
ProductCode = "AT837234",
NewStockCount = 42
});
}
}
````
**Example: Subscribe to an event by implementing the `IDistributedEventHandler` interface**
````csharp
public class MyHandler :
IDistributedEventHandler<StockCountChangedEto>,
ITransientDependency
{
public async Task HandleEventAsync(StockCountChangedEto eventData)
{
var productCode = eventData.ProductCode;
// ...
}
}
````
See [ABP's distributed event bus documentation](../Distributed-Event-Bus.md) to learn the details.
#### Using the Dapr API
In addition to ABP's standard distributed event bus system, you can also use Dapr's API to publish events.
> If you directly use the Dapr API to publish events, you may not benefit from ABP's standard distributed event bus features, like the outbox/inbox pattern implementation.
**Example: Publish an event using `DaprClient`**
````csharp
public class MyService : ITransientDependency
{
private readonly DaprClient _daprClient;
public MyService(DaprClient daprClient)
{
_daprClient = daprClient;
}
public async Task DoItAsync()
{
await _daprClient.PublishEventAsync(
"pubsub", // pubsub name
"StockChanged", // topic name
new StockCountChangedEto // event data
{
ProductCode = "AT837234",
NewStockCount = 42
}
);
}
}
````
**Example: Subscribe to an event by creating an ASP.NET Core controller**
````csharp
public class MyController : AbpController
{
[HttpPost("/stock-changed")]
[Topic("pubsub", "StockChanged")]
public async Task<IActionResult> TestRouteAsync(
[FromBody] StockCountChangedEto model)
{
HttpContext.ValidateDaprAppApiToken();
// Do something with the event
return Ok();
}
}
````
`HttpContext.ValidateDaprAppApiToken()` extension method is provided by ABP to check if the request is coming from Dapr. This is optional. You should configure Dapr to send the App API token to your application if you want to enable the validation. If not configured, `ValidateDaprAppApiToken()` does nothing. See [Dapr's App API Token document](https://docs.dapr.io/operations/security/app-api-token/) for more information. Also see the *AbpDaprOptions* and *Security* sections in this document.
See the [Dapr documentation](https://docs.microsoft.com/en-us/dotnet/architecture/dapr-for-net-developers/publish-subscribe) to learn the details of sending & receiving events with the Dapr API.
## Distributed Lock
> Dapr's distributed lock feature is currently in the Alpha stage and may not be stable yet. It is not suggested to replace ABP's distributed lock with Dapr in that point.
ABP provides a [Distributed Locking](../Distributed-Locking.md) abstraction to control access to a shared resource by multiple applications. Dapr also has a [distributed lock building block](https://docs.dapr.io/developing-applications/building-blocks/distributed-lock/). The [Volo.Abp.DistributedLocking.Dapr](https://www.nuget.org/packages/Volo.Abp.DistributedLocking.Dapr) package makes ABP use Dapr's distributed locking system.
### Installation
Use the ABP CLI to add the [Volo.Abp.DistributedLocking.Dapr](https://www.nuget.org/packages/Volo.Abp.DistributedLocking.Dapr) NuGet package to your project (to the client side):
* Install the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI) if you haven't installed it before.
* Open a command line (terminal) in the directory of the `.csproj` file you want to add the `Volo.Abp.DistributedLocking.Dapr` package to.
* Run the `abp add-package Volo.Abp.DistributedLocking.Dapr` command.
If you want to do it manually, install the [Volo.Abp.DistributedLocking.Dapr](https://www.nuget.org/packages/Volo.Abp.DistributedLocking.Dapr) NuGet package to your project and add `[DependsOn(typeof(AbpDistributedLockingDaprModule))]` to the [ABP module](../Module-Development-Basics.md) class inside your project.
### Configuration
You can use the `AbpDistributedLockDaprOptions` options class in the `ConfigureServices` method of [your module](../Module-Development-Basics.md) to configure the Dapr distributed lock:
````csharp
Configure<AbpDistributedLockDaprOptions>(options =>
{
options.StoreName = "mystore";
});
````
The following options are available:
* **`StoreName`** (required): The store name used by Dapr. Lock key names are scoped in the same store. That means different applications can acquire the same lock name in different stores. Use the same store name for the same resources you want to control the access of.
* `Owner` (optional): The `owner` value used by the `DaprClient.Lock` method. If you don't specify, ABP uses a random value, which is fine in general.
* `DefaultExpirationTimeout` (optional): Default value of the time after which the lock gets expired. Default value: 2 minutes.
### Usage
You can inject and use the `IAbpDistributedLock` service, just like explained in the [Distributed Locking document](../Distributed-Locking.md).
**Example:**
````csharp
public class MyService : ITransientDependency
{
private readonly IAbpDistributedLock _distributedLock;
public MyService(IAbpDistributedLock distributedLock)
{
_distributedLock = distributedLock;
}
public async Task MyMethodAsync()
{
await using (var handle =
await _distributedLock.TryAcquireAsync("MyLockName"))
{
if (handle != null)
{
// your code that access the shared resource
}
}
}
}
````
There are two points we should mention about the `TryAcquireAsync` method, as different from ABP's standard usage:
* The `timeout` parameter is currently not used (even if you specify it), because Dapr doesn't support waiting to obtain the lock.
* Dapr uses the expiration timeout system (that means the lock is automatically released after that timeout even if you don't release the lock by disposing the handler). However, ABP's `TryAcquireAsync` method has no such a parameter. Currently, you can set `AbpDistributedLockDaprOptions.DefaultExpirationTimeout` as a global value in your application.
As mentioned first, Dapr's distributed lock feature is currently in the Alpha stage and its API is a candidate to change. You should use it as is if you want, but be ready for the changes in the future. For now, we are recommending to use the [DistributedLock](https://github.com/madelson/DistributedLock) library as explained in ABP's [Distributed Locking document](../Distributed-Locking.md).
## Security
If you are using Dapr, most or all the incoming and outgoing requests in your application pass through Dapr. Dapr uses two kinds of API tokens to secure the communication between your application and Dapr.
### Dapr API Token
> This token is automatically set by default and generally you don't care about it.
The [Enable API token authentication in Dapr](https://docs.dapr.io/operations/security/api-token/) document describes what the Dapr API token is and how it is configured. Please read that document if you want to enable it for your application.
If you enable the Dapr API token, you should send that token in every request to Dapr from your application. `AbpDaprOptions` defines a `DaprApiToken` property as a central point to configure the Dapr API token in your application.
The default value of the `DaprApiToken` property is set from the `DAPR_API_TOKEN` environment variable and that environment variable is set by Dapr when it runs. So, most of the time, you don't need to configure `AbpDaprOptions.DaprApiToken` in your application. However, if you need to configure (or override) it, you can do in the `ConfigureServices` method of your module class as shown in the following code block:
````csharp
Configure<AbpDaprOptions>(options =>
{
options.DaprApiToken = "...";
});
````
Or you can set it in your `appsettings.json` file:
````json
"Dapr": {
"DaprApiToken": "..."
}
````
Once you set it, it is used when you inject `DaprClient` or use `IAbpDaprClientFactory`. If you need that value in your application, you can inject `IDaprApiTokenProvider` and use its `GetDaprApiToken()` method.
### App API Token
> Enabling App API token validation is strongly recommended. Otherwise, for example, any client can directly call your event subscription endpoint, and your application acts like an event has occurred (if there is no other security policy in your event subscription endpoint).
The [Authenticate requests from Dapr using token authentication](https://docs.dapr.io/operations/security/app-api-token/) document describes what the App API token is and how it is configured. Please read that document if you want to enable it for your application.
If you enable the App API token, you can validate it to ensure that the request is coming from Dapr. ABP provides useful shortcuts to validate it.
**Example: Validate the App API token in an event handling HTTP API**
````csharp
public class MyController : AbpController
{
[HttpPost("/stock-changed")]
[Topic("pubsub", "StockChanged")]
public async Task<IActionResult> TestRouteAsync(
[FromBody] StockCountChangedEto model)
{
// Validate the App API token!
HttpContext.ValidateDaprAppApiToken();
// Do something with the event
return Ok();
}
}
````
`HttpContext.ValidateDaprAppApiToken()` is an extension method provided by the ABP Framework. It throws an `AbpAuthorizationException` if the token was missing or wrong in the HTTP header (the header name is `dapr-api-token`). You can also inject `IDaprAppApiTokenValidator` and use its methods to validate the token in any service (not only in a controller class).
You can configure `AbpDaprOptions.AppApiToken` if you want to set (or override) the App API token value. The default value is set by the `APP_API_TOKEN` environment variable. You can change it in the `ConfigureServices` method of your module class as shown in the following code block:
````csharp
Configure<AbpDaprOptions>(options =>
{
options.AppApiToken = "...";
});
````
Or you can set it in your `appsettings.json` file:
````json
"Dapr": {
"AppApiToken": "..."
}
````
If you need that value in your application, you can inject `IDaprApiTokenProvider` and use its `GetAppApiToken()` method.
## See Also
* [Dapr for .NET Developers](https://docs.microsoft.com/en-us/dotnet/architecture/dapr-for-net-developers/)
* [The Official Dapr Documentation](https://docs.dapr.io/)

8
docs/en/Migration-Guides/Abp-6_0.md

@ -2,13 +2,13 @@
This document is a guide for upgrading ABP v5.3 solutions to ABP v6.0. There is a change in this version that may affect your applications, please read it carefully and apply the necessary changes to your application.
## Added IsActive property
## The IsActive property is Added
`IsActive` property is added to `IUserData`. This property is set to **true** by default. **Cmskit** and **Blog** modules are affected by this change. You need to add new migration to your existing application if you are using any of these modules. Please see [#11417](https://github.com/abpframework/abp/pull/11417) for more info.
`IsActive` property is added to `IUserData`. This property is set to **true** by default. **Cmskit** and **Blog** modules are affected by this change. You need to add a new migration to your existing application if you are using any of these modules. Please see [#11417](https://github.com/abpframework/abp/pull/11417) for more info.
## Default behavior change in MultiTenancyMiddlewareErrorPageBuilder
If you have customized the `MultiTenancyMiddlewareErrorPageBuilder` of `AbpMultiTenancyOptions`, the pipeline now returns **true** to stop the pipeline as the default behavior. See [AbpMultiTenancyOptions: Handle inactive and non-existent tenants](https://github.com/abpframework/abp/blob/dev/docs/en/Multi-Tenancy.md#abpmultitenancyoptions-handle-inactive-and-non-existent-tenants) for more info.
If you have customized the `MultiTenancyMiddlewareErrorPageBuilder` of the `AbpMultiTenancyOptions`, the pipeline now returns **true** to stop the pipeline as the default behavior. See [AbpMultiTenancyOptions: Handle inactive and non-existent tenants](https://github.com/abpframework/abp/blob/dev/docs/en/Multi-Tenancy.md#abpmultitenancyoptions-handle-inactive-and-non-existent-tenants) for more info.
## Migrating to LeptonX Lite
@ -22,7 +22,7 @@ LeptonX Lite is now being introduced and you can follow the guides below to migr
After the [announcement of plan to replace the IdentityServer](https://github.com/abpframework/abp/issues/11989), we have successfully implemented [Openiddict](https://github.com/openiddict/openiddict-core) as a replacement for IdentityServer4 as an OpenID-Provider.
You can follow the [IdentityServer to OpenIddict Step by Step Guide](OpenIddict-Step-by-Step.md) for migrating your existing application in detail with a sample projects.
You can follow the [IdentityServer to OpenIddict Step by Step Guide](OpenIddict-Step-by-Step.md) for migrating your existing application in detail with a sample project.
## See Also

31
docs/en/Migration-Guides/OpenIddict-Step-by-Step.md

@ -7,6 +7,11 @@ We are not removing Identity Server packages and we will continue to release new
On the other hand, Identity Server ends support for the open-source Identity Server at the end of 2022. The Identity Server team has decided to move to Duende IDS and ABP will not be migrated to the commercial Duende IDS. You can see the Duende Identity Server announcement from [this link](https://blog.duendesoftware.com/posts/20220111_fair_trade).
## Commercial Template
If you are using a commercial template, please check [Migrating from IdentityServer to OpenIddict for the Commercial Templates](https://docs.abp.io/en/commercial/6.0/migration-guides/openIddict-step-by-step) guide.
If you are using the microservice template, please check [Migrating the Microservice Template from IdentityServer to OpenIddict](https://docs.abp.io/en/commercial/6.0/migration-guides/openIddict-microservice) guide.
## OpenIddict Migration Steps
Use the `abp update` command to update your existing application. See [Upgrading docs](../Upgrading.md) for more info. Apply required migrations by following the [Migration Guides](Index.md) based on your application version.
@ -73,7 +78,7 @@ Use the `abp update` command to update your existing application. See [Upgrading
#### OpenIddictDataSeedContributor
- Create a folder named *OpenIddict* under the Domain project and copy the [OpenIddictDataSeedContributor.cs](https://github.com/abpframework/abp-samples/blob/master/Ids2OpenId/src/Ids2OpenId.Domain/OpenIddict/OpenIddictDataSeedContributor.cs) under this folder. Rename all the `Ids2OpenId` with your project name.
- Create a folder named *OpenIddict* under the Domain project and copy the [OpenIddictDataSeedContributor.cs](https://github.com/abpframework/abp-samples/blob/master/Ids2OpenId/src/Ids2OpenId.Domain/OpenIddict/OpenIddictDataSeedContributor.cs) under this folder. **Rename** all the `Ids2OpenId` with your project name.
- Delete *IdentityServer* folder that contains `IdentityServerDataSeedContributor.cs` which is no longer needed.
You can also create a project with the same name and copy the `OpenIddict` folder of the new project into your project.
@ -213,6 +218,30 @@ for creating the host builder.
Replace **MyApplication** with your application name.
### Test Project
- In **MyApplicationTestBaseModule.cs** **remove** the IdentityServer related using and PreConfigurations:
```csharp
using Volo.Abp.IdentityServer;
```
and
```csharp
PreConfigure<AbpIdentityServerBuilderOptions>(options =>
{
options.AddDeveloperSigningCredential = false;
});
PreConfigure<IIdentityServerBuilder>(identityServerBuilder =>
{
identityServerBuilder.AddDeveloperSigningCredential(false, System.Guid.NewGuid().ToString());
});
```
from `PreConfigureServices`.
### UI Layer
- [Angular UI Migration](OpenIddict-Angular.md)

25
docs/en/UI/Angular/Dynamic-Form-Extensions.md

@ -235,10 +235,35 @@ const options: FormPropOptions<IdentityUserDto> = {
},
autocomplete: 'off',
isExtra: true,
template: undefined | Type<any> // Custom angular component
};
const prop = new FormProp(options);
```
FormProp has template option since version 6.0. it can accept custom angular component.
The component can access PropData and Prop.
Example custom prop component.
```js
import {
EXTENSIBLE_FORM_VIEW_PROVIDER,
EXTENSIONS_FORM_PROP,
EXTENSIONS_FORM_PROP_DATA,
} from '@abp/ng.theme.shared/extensions';
@Component({
selector: 'my-custom-custom-prop',
templateUrl: './my-custom-custom-prop.component.html',
viewProviders: [EXTENSIBLE_FORM_VIEW_PROVIDER], //you should add this, otherwise form-group doesn't work.
})
export class MyCustomPropComponent {
constructor(
@Inject(EXTENSIONS_FORM_PROP) private formProp: FormProp,
@Inject(EXTENSIONS_FORM_PROP_DATA) private propData: ProfileDto,
...)
...
}
```
It also has two static methods to create its instances:

2
docs/en/UI/Blazor/Overall.md

@ -94,7 +94,7 @@ These libraries are selected as the base libraries and available to the applicat
> Bootstrap's JavaScript part is not used since the Blazorise library already provides the necessary functionalities to the Bootstrap components in a native way.
> Beginning from June, 2021, the Blazorise library has dual licenses; open source & commercial. Based on your yearly revenue, you may need to buy a commercial license. See [this post](https://blazorise.com/news/announcing-2022-blazorise-plans-and-pricing-updates) to learn more.
> Beginning from June, 2021, the Blazorise library has dual licenses; open source & commercial. Based on your yearly revenue, you may need to buy a commercial license. See [this post](https://blazorise.com/news/announcing-2022-blazorise-plans-and-pricing-updates) to learn more. The Blazorise license is bundled with ABP Commercial and commercial customers doesn’t need to buy an extra Blazorise license.
### The Layout

4
docs/en/docs-nav.json

@ -1283,6 +1283,10 @@
}
]
},
{
"text": "Dapr Integration",
"path": "Dapr/Index.md"
},
{
"text": "Testing",
"path": "Testing.md"

469
docs/zh-Hans/Dapr/Index.md

@ -0,0 +1,469 @@
# ABP Dpar 集成
> 这个文档假设你已经熟悉[Dapr](https://dapr.io/)并且想在你的ABP应用中使用它.
[Dapr](https://dapr.io/) (分布式应用运行时)提供了简化微服务连接的API.它是一个开源项目,主要由微软支持.它也是CNCF(云原生计算基金会)项目,受到社区的信任.
ABP和Dapr有一些相似的特性,如服务到服务通信,分布式消息总线和分布式锁.然而,它们的目的完全不同.ABP的目标是通过提供自以为是的架构并提供必要的基础架构库,可重用模块和工具来正确实现该架构来提供端到端的开发人员体验.另一方面,Dapr的目的是提供一个运行时,将常见的微服务通信模式与应用程序逻辑解耦.
ABP和Dapr可以完美地在同一个应用程序中一起工作.ABP提供了一些包来提供更好的集成,其中Dapr功能与ABP相似.你可以根据[Dapr文档](https://docs.dapr.io/)使用其他Dapr功能,而不需要ABP集成包.
## ABP Dpar 集成包
ABP提供了以下NuGet包用于Dapr集成:
* [Volo.Abp.Dapr](https://www.nuget.org/packages/Volo.Abp.Dapr): 主要的Dapr集成包.所有其他包都依赖于此包.
* [Volo.Abp.Http.Client.Dapr](https://www.nuget.org/packages/Volo.Abp.Http.Client.Dapr): 与Dapr的[服务调用](https://docs.dapr.io/developing-applications/building-blocks/service-invocation/service-invocation-overview/)集成的ABP的[动态](../API/Dynamic-CSharp-API-Clients.md)和[静态](../API/Static-CSharp-API-Clients.md)C# API客户端代理系统集成包.
* [Volo.Abp.EventBus.Dapr](https://www.nuget.org/packages/Volo.Abp.EventBus.Dapr): 使用Dapr的[发布和订阅](https://docs.dapr.io/developing-applications/building-blocks/pubsub/)构建块实现ABP的分布式事件总线.使用此包,你可以发送事件,但不能接收.
* [Volo.Abp.AspNetCore.Mvc.Dapr.EventBus](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus): 提供从Dapr的[发布和订阅](https://docs.dapr.io/developing-applications/building-blocks/pubsub/)构建块接收事件的端点.使用此包发送和接收事件.
* [Volo.Abp.DistributedLocking.Dapr](https://www.nuget.org/packages/Volo.Abp.DistributedLocking.Dapr): 使用Dapr的[分布式锁](https://docs.dapr.io/developing-applications/building-blocks/distributed-lock/)构建块为ABP框架的[分布式锁定](../Distributed-Locking.md)服务.
在以下部分中,我们将看到如何使用这些包在ABP基础解决方案中使用Dapr.
## 基础
### 安装
> 这个部分解释了如何将[Volo.Abp.Dapr](https://www.nuget.org/packages/Volo.Abp.Dapr)添加到你的项目中.如果你使用的是其他Dapr集成包,你可以跳过这个部分,因为这个包会被间接添加.
使用ABP CLI将[Volo.Abp.Dapr](https://www.nuget.org/packages/Volo.Abp.Dapr) NuGet包添加到你的项目中:
* 安装[ABP CLI](https://docs.abp.io/en/abp/latest/CLI)如果你之前没有安装过.
* 在你想要添加`Volo.Abp.Dapr`包的`.csproj`文件所在的目录中打开命令行(终端).
* 运行`abp add-package Volo.Abp.Dapr`命令.
如果你想手动添加,安装 [Volo.Abp.Dapr](https://www.nuget.org/packages/Volo.Abp.Dapr) NuGet包到你的项目中,并在项目内的[ABP模块](../Module-Development-Basics.md)类中添加`[DependsOn(typeof(AbpDaprModule))]`.
### AbpDaprOptions
`AbpDaprOptions` 是配置全局Dapr设置的主要[选项类](../Options.md).**所有设置都是可选的,你大多数情况下不需要配置它们.** 如果你需要,你可以在[模块类](../Module-Development-Basics.md)的`ConfigureServices`方法中配置它:
````csharp
Configure<AbpDaprOptions>(options =>
{
// ...
});
````
可用的`AbpDaprOptions`类属性:
* `HttpEndpoint` (可选):创建`DaprClient`对象时使用的HTTP端点.如果你没有指定,将使用默认值.
* `GrpcEndpoint` (可选):创建`DaprClient`对象时使用的gRPC端点.如果你没有指定,将使用默认值.
* `DaprApiToken` (可选):应用程序向Dapr发送请求时使用的[Dapr API token](https://docs.dapr.io/operations/security/api-token/).默认情况下,它从`DAPR_API_TOKEN`环境变量中填充(配置后由 Dapr 设置).有关详细信息,请参阅本文档的*安全*部分.
* `AppApiToken` (可选):用于验证来自Dapr的请求的[应用程序API token](https://docs.dapr.io/operations/security/app-api-token/).默认情况下,它从`APP_API_TOKEN`环境变量中填充(配置后由 Dapr 设置).有关详细信息,请参阅本文档的*安全*部分.
或者, 你可以在 `appsettings.json` 文件的 `Dapr` 部分中配置选项.示例:
````csharp
"Dapr": {
"HttpEndpoint": "http://localhost:3500/"
}
````
### 注入DaprClient
ABP 将 `DaprClient` 类注册到 [依赖注入](../Dependency-Injection.md) 系统中.因此,你可以在需要时注入并使用它:
````csharp
public class MyService : ITransientDependency
{
private readonly DaprClient _daprClient;
public MyService(DaprClient daprClient)
{
_daprClient = daprClient;
}
public async Task DoItAsync()
{
// TODO: Use the injected _daprClient object
}
}
````
注入 `DaprClient` 是在应用程序代码中使用它的推荐方法.当你注入它时,将使用 `IAbpDaprClientFactory` 服务创建它,这会在下一节中将进行说明.
### IAbpDaprClientFactory
`IAbpDaprClientFactory` 可用于创建 `DaprClient``HttpClient` 对象来执行对 Dapr 的操作.它使用 `AbpDaprOptions`,因此你可以配置设置.
**示例用法:**
````csharp
public class MyService : ITransientDependency
{
private readonly IAbpDaprClientFactory _daprClientFactory;
public MyService(IAbpDaprClientFactory daprClientFactory)
{
_daprClientFactory = daprClientFactory;
}
public async Task DoItAsync()
{
// Create a DaprClient object with default options
DaprClient daprClient = await _daprClientFactory.CreateAsync();
/* Create a DaprClient object with configuring
* the DaprClientBuilder object */
DaprClient daprClient2 = await _daprClientFactory
.CreateAsync(builder =>
{
builder.UseDaprApiToken("...");
});
// Create an HttpClient object
HttpClient httpClient = await _daprClientFactory
.CreateHttpClientAsync("target-app-id");
}
}
````
`CreateHttpClientAsync` 方法还获取可选的 `daprEndpoint``daprApiToken` 参数.
> ABP使用`IAbpDaprClientFactory`创建Dapr客户端.你也可以在应用程序中使用Dapr API创建客户端对象.推荐使用`IAbpDaprClientFactory`,但不是必需的.
## C# API 客户端代理集成
ABP可以[动态](../API/Dynamic-CSharp-API-Clients.md)或[静态](../API/Static-CSharp-API-Clients.md)生成代理类,以便从Dotnet客户端应用程序调用HTTP API.在分布式系统中使用HTTP API是非常合理的.[Volo.Abp.Http.Client.Dapr](https://www.nuget.org/packages/Volo.Abp.Http.Client.Dapr)包配置了客户端代理系统,因此它使用Dapr的服务调用构建块进行应用程序之间的通信.
### 安装
使用ABP CLI将[Volo.Abp.Http.Client.Dapr](https://www.nuget.org/packages/Volo.Abp.Http.Client.Dapr) NuGet包添加到项目(客户端):
* 安装[ABP CLI](https://docs.abp.io/en/abp/latest/CLI)如果你之前没有安装过.
* 在你想要添加`Volo.Abp.Http.Client.Dapr`包的`.csproj`文件所在的目录中打开命令行(终端).
* 运行`abp add-package Volo.Abp.Http.Client.Dapr`命令.
如果你想手动添加,安装 [Volo.Abp.Http.Client.Dapr](https://www.nuget.org/packages/Volo.Abp.Http.Client.Dapr) NuGet包到你的项目中,并在项目内的[ABP模块](../Module-Development-Basics.md)类中添加`[DependsOn(typeof(AbpHttpClientDaprModule))]`.
### 配置
当你安装了[Volo.Abp.Http.Client.Dapr](https://www.nuget.org/packages/Volo.Abp.Http.Client.Dapr) NuGet 包,所有你需要做的就是在`appsettings.json`或使用`AbpRemoteServiceOptions`[选项类](../Options.md)中配置ABP的远程服务选项.
**示例:**
````csharp
{
"RemoteServices": {
"Default": {
"BaseUrl": "http://dapr-httpapi/"
}
}
}
````
`dapr-httpapi` 在这个例子中是你的Dapr配置中服务器应用程序的应用程序ID.
远程服务名称(示例中是`Default`)应该匹配动态客户端代理中`AddHttpClientProxies`调用或静态客户端代理中`AddStaticHttpClientProxies`调用中指定的远程服务名称.如果你的客户端只与一个服务器通信,使用`Default`是可以的.但是,如果你的客户端使用多个服务器,你通常在`RemoteServices`配置中有多个键. 你将远程服务端点配置为Dapr应用程序ID,在你使用ABP的客户端代理系统时它将自动工作并通过Dapr进行HTTP调用,
> 参阅[动态](../API/Dynamic-CSharp-API-Clients.md) 和 [static](../API/Static-CSharp-API-Clients.md)客户端代理文档,了解ABP的客户端代理系统的详细信息.
## 分布式事件总线集成
[ABP的分布式事件总线](../Distributed-Event-Bus.md)系统提供了一个方便的抽象,允许应用程序通过事件异步通信.ABP提供了各种分布式消息系统(如RabbitMQ,Kafka和Azure)的集成包.Dapr也有一个[发布和订阅构建块](https://docs.dapr.io/developing-applications/building-blocks/pubsub/pubsub-overview/),用于相同的目的:分布式消息/事件.
ABP的[Volo.Abp.EventBus.Dapr](https://www.nuget.org/packages/Volo.Abp.EventBus.Dapr)和[Volo.Abp.AspNetCore.Mvc.Dapr.EventBus](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus)包可以使用Dapr基础设施来实现ABP的分布式事件总线.
任何类型的应用程序(例如,控制台或ASP.NET Core应用程序)都可以使用[Volo.Abp.EventBus.Dapr]包通过Dapr发布事件.为了能够接收消息(通过订阅事件),你需要安装[Volo.Abp.AspNetCore.Mvc.Dapr.EventBus]包,并且你的应用程序应该是ASP.NET Core应用程序.
### 安装
如果你的应用程序是ASP.NET Core应用程序并且你想发送和接收事件,你需要按照下面的描述安装[Volo.Abp.AspNetCore.Mvc.Dapr.EventBus]包:
* 安装[ABP CLI](https://docs.abp.io/en/abp/latest/CLI)如果你之前没有安装过.
* 在你想要添加`Volo.Abp.AspNetCore.Mvc.Dapr.EventBus`包的`.csproj`文件所在的目录中打开命令行(终端).
* 运行`abp add-package Volo.Abp.AspNetCore.Mvc.Dapr.EventBus`命令.
如果你想手动添加,安装 [Volo.Abp.AspNetCore.Mvc.Dapr.EventBus](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus) NuGet包到你的项目中,并在项目内的[ABP模块](../Module-Development-Basics.md)类中添加`[DependsOn(typeof(AbpAspNetCoreMvcDaprEventBusModule))]`.
> **如果你安装了[Volo.Abp.AspNetCore.Mvc.Dapr.EventBus](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus)包, 那么你不需要安装[Volo.Abp.EventBus.Dapr](https://www.nuget.org/packages/Volo.Abp.EventBus.Dapr)包,因为它已经由第一个包引用**
如果你的应用程序不是ASP.NET Core应用程序,你不能从Dapr接收事件,至少使用ABP的集成包(如果你想在不同类型的应用程序中接收事件,请参阅[Dapr的文档](https://docs.dapr.io/developing-applications/building-blocks/pubsub/howto-publish-subscribe/)).但是你仍然可以使用[Volo.Abp.EventBus.Dapr](https://www.nuget.org/packages/Volo.Abp.EventBus.Dapr)包发布消息.在这种情况下,请按照下面的步骤将该包安装到你的项目中:
* 安装[ABP CLI](https://docs.abp.io/en/abp/latest/CLI)如果你之前没有安装过.
* 在你想要添加`Volo.Abp.EventBus.Dapr`包的`.csproj`文件所在的目录中打开命令行(终端).
* 运行`abp add-package Volo.Abp.EventBus.Daprs`命令.
如果你想手动添加,安装 [Volo.Abp.Http.Client.Dapr](https://www.nuget.org/packages/Volo.Abp.EventBus.Dapr) NuGet包到你的项目中,并在项目内的[ABP模块](../Module-Development-Basics.md)类中添加`[DependsOn(typeof(AbpEventBusDaprModule))]`.
### 配置
你可以为Dapr配置`AbpDaprEventBusOptions`[选项类](../Options.md):
````csharp
Configure<AbpDaprEventBusOptions>(options =>
{
options.PubSubName = "pubsub";
});
````
可用的`AbpDaprEventBusOptions`类的属性:
* `PubSubName` (可选): 通过`DaprClient.PublishEventAsync`方法发布消息时的`pubsubName`参数.默认值:`pubsub`.
### ABP订阅端点
ABP提供了以下端点来接收来自Dapr的事件:
* `dapr/subscribe`: Dapr使用此端点从应用程序获取订阅列表.ABP会自动返回所有分布式事件处理程序类和具有`Topic`属性的自定义控制器操作的订阅.
* `api/abp/dapr/event`: 用于接收来自Dapr的所有事件的统一端点.ABP根据主题名称将事件分派给您的事件处理程序.
> **由于ABP提供了标准的`dapr/subscribe`端点,所以你不应该手动调用Dapr的`app.MapSubscribeHandler()`方法.** 如果你想支持[CloudEvents](https://cloudevents.io/)标准,你可以在你的ASP.NET Core管道中使用`app.UseCloudEvents()`中间件.
### 用法
#### ABP的方式
你可以按照[ABP的分布式事件总线文档](../Distributed-Event-Bus.md)来学习如何以ABP的方式发布和订阅事件.你的应用程序代码不需要做任何改变就可以使用Dapr的发布-订阅功能.ABP将自动为你的事件处理程序类(实现`IDistributedEventHandler`接口)订阅Dapr.
ABP提供了 `api/abp/dapr/event`
**示例:使用`IDistributedEventBus`服务发布事件**
````csharp
public class MyService : ITransientDependency
{
private readonly IDistributedEventBus _distributedEventBus;
public MyService(IDistributedEventBus distributedEventBus)
{
_distributedEventBus = distributedEventBus;
}
public async Task DoItAsync()
{
await _distributedEventBus.PublishAsync(new StockCountChangedEto
{
ProductCode = "AT837234",
NewStockCount = 42
});
}
}
````
**示例:通过实现`IDistributedEventHandler`接口来订阅事件**
````csharp
public class MyHandler :
IDistributedEventHandler<StockCountChangedEto>,
ITransientDependency
{
public async Task HandleEventAsync(StockCountChangedEto eventData)
{
var productCode = eventData.ProductCode;
// ...
}
}
````
参阅[ABP的分布式事件总线文档](../Distributed-Event-Bus.md)来了解细节.
#### 使用Dapr API
在ABP的标准分布式事件总线系统之外,你还可以使用Dapr的API来发布事件.
> 如果你直接使用Dapr API来发布事件,你可能无法从ABP的标准分布式事件总线功能中受益,比如outbox/inbox模式的实现.
**示例:使用`DaprClient`发布事件**
````csharp
public class MyService : ITransientDependency
{
private readonly DaprClient _daprClient;
public MyService(DaprClient daprClient)
{
_daprClient = daprClient;
}
public async Task DoItAsync()
{
await _daprClient.PublishEventAsync(
"pubsub", // pubsub name
"StockChanged", // topic name
new StockCountChangedEto // event data
{
ProductCode = "AT837234",
NewStockCount = 42
}
);
}
}
````
**示例:通过创建ASP.NET Core控制器来订阅事件**
````csharp
public class MyController : AbpController
{
[HttpPost("/stock-changed")]
[Topic("pubsub", "StockChanged")]
public async Task<IActionResult> TestRouteAsync(
[FromBody] StockCountChangedEto model)
{
HttpContext.ValidateDaprAppApiToken();
// Do something with the event
return Ok();
}
}
````
`HttpContext.ValidateDaprAppApiToken()` 扩展方法由ABP提供,用于检查请求是否来自Dapr.这是可选的.如果你想启用验证,你应该配置Dapr将App API令牌发送到你的应用程序.如果没有配置,`ValidateDaprAppApiToken()`不会执行任何操作.参阅[Dapr的App API令牌文档](https://docs.dapr.io/operations/security/app-api-token/)了解更多信息.还可以参阅本文档中的**AbpDaprOptions**和**安全**部分.
参阅[Dapr的文档](https://docs.microsoft.com/en-us/dotnet/architecture/dapr-for-net-developers/publish-subscribe)来了解使用Dapr API发送和接收事件的细节.
## 分布式锁
> Dapr的分布式锁功能目前处于Alpha阶段,可能还不稳定.在这一点上,不建议用Dapr来替换ABP的分布式锁.
ABP提供了一个[分布式锁](../Distributed-Locking.md)抽象来控制多个应用程序对共享资源的访问.Dapr也有一个[分布式锁构建块](https://docs.dapr.io/developing-applications/building-blocks/distributed-lock/).[Volo.Abp.DistributedLocking.Dapr](https://www.nuget.org/packages/Volo.Abp.DistributedLocking.Dapr)包使ABP使用Dapr的分布式锁系统.
### 安装
使用ABP CLI将[Volo.Abp.DistributedLocking.Dapr](https://www.nuget.org/packages/Volo.Abp.DistributedLocking.Dapr)NuGet包添加到项目(客户端):
* 安装[ABP CLI](https://docs.abp.io/en/abp/latest/CLI)如果你之前没有安装过.
* 在你想要添加`Volo.Abp.DistributedLocking.Dapr`包的`.csproj`文件所在的目录中打开命令行(终端).
* 运行`abp add-package Volo.Abp.DistributedLocking.Dapr`命令.
如果你想手动添加,安装 [Volo.Abp.DistributedLocking.Dapr](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus) NuGet包到你的项目中,并在项目内的[ABP模块](../Module-Development-Basics.md)类中添加`[DependsOn(typeof(AbpDistributedLockingDaprModule))]`.
### 配置
你可以在[你的模块](../Module-Development-Basics.md)的`ConfigureServices`方法中使用`AbpDistributedLockDaprOptions`选项类来配置Dapr分布式锁:
````csharp
Configure<AbpDistributedLockDaprOptions>(options =>
{
options.StoreName = "mystore";
});
````
以下选项可用:
* **`StoreName`** (必需):Dapr使用的存储库名称.锁键名称在同一存储库中范围内.这意味着不同的应用程序可以在不同的存储库中获取相同的锁名称.对于要控制访问的相同资源,请使用相同的存储库名称.
* `Owner` (可选):`DaprClient.Lock`方法使用的`owner`值.如果你不指定,ABP使用一个随机值,这在一般情况下是可以的.
* `DefaultExpirationTimeout` (可选):锁过期后的默认值.默认值:2分钟.
### 用法
你可以注入并使用`IAbpDistributedLock`服务,就像在[分布式锁文档](../Distributed-Locking.md)中解释的那样.
**示例:**
````csharp
public class MyService : ITransientDependency
{
private readonly IAbpDistributedLock _distributedLock;
public MyService(IAbpDistributedLock distributedLock)
{
_distributedLock = distributedLock;
}
public async Task MyMethodAsync()
{
await using (var handle =
await _distributedLock.TryAcquireAsync("MyLockName"))
{
if (handle != null)
{
// your code that access the shared resource
}
}
}
}
````
这里有两点关于`TryAcquireAsync`方法我们应该提到,与ABP的标准用法不同:
* `timeout` 参数目前没有使用(即使你指定了它),因为Dapr不支持等待获取锁.
* Dapr 使用过期超时系统(这意味着即使你不通过释放处理程序来释放锁,锁也会在超时后自动释放).但是,ABP的`TryAcquireAsync`方法没有这样的参数.目前,你可以在应用程序中将`AbpDistributedLockDaprOptions.DefaultExpirationTimeout`设置为全局值.
Dapr的分布式锁功能目前处于Alpha阶段,其API是可能会改变的候选者.如果你想要使用它,你可以这样做,但是要准备好未来的变化.目前,我们建议使用ABP的[分布式锁文档](../Distributed-Locking.md)中提到的[DistributedLock](https://github.com/madelson/DistributedLock)库.
## 安全
如果你使用Dapr,你的应用程序中的大部分或全部传入和传出请求都会通过Dapr.Dapr使用两种API令牌来保护应用程序与Dapr之间的通信.
### Dapr API Token
> 这个令牌默认情况下是自动设置的,通常你不需要关心它.
[在Dapr中启用API令牌身份验证](https://docs.dapr.io/operations/security/api-token/)文档描述了Dapr API令牌是什么以及如何配置.如果你想为你的应用程序启用它,请阅读该文档.
如果你启用了Dapr API令牌,你应该在你的应用程序中向Dapr发送该令牌.`AbpDaprOptions`定义了一个`DaprApiToken`属性,作为在你的应用程序中配置Dapr API令牌的中心点.
`DaprApiToken`属性的默认值是从`DAPR_API_TOKEN`环境变量设置的,并且该环境变量是在Dapr运行时设置的.所以,大多数情况下,你不需要在你的应用程序中配置`AbpDaprOptions.DaprApiToken`.但是,如果你需要配置(或覆盖它),你可以在模块类的`ConfigureServices`方法中这样做,如下面的代码块所示:
````csharp
Configure<AbpDaprOptions>(options =>
{
options.DaprApiToken = "...";
});
````
或者你可以在`appsettings.json`文件中设置它:
````json
"Dapr": {
"DaprApiToken": "..."
}
````
一旦你设置了它,它就会在你注入`DaprClient`或使用`IAbpDaprClientFactory`时使用.如果你需要在应用程序中使用该值,你可以注入`IDaprApiTokenProvider`并使用其`GetDaprApiToken()`方法.
### App API Token
> 启用App API令牌验证是强烈推荐的.否则,例如,任何客户端都可以直接调用你的事件订阅端点,你的应用程序就像发生了事件一样(如果你的事件订阅端点中没有其他安全策略).
[在Dapr中使用令牌身份验证请求身份验证](https://docs.dapr.io/operations/security/app-api-token/)文档描述了App API令牌是什么以及如何配置.如果你想为你的应用程序启用它,请阅读该文档.
如果你启用了App API令牌,你可以验证它以确保请求来自Dapr.ABP提供了有用的快捷方式来验证它.
**示例:在事件处理HTTP API中验证App API令牌**
````csharp
public class MyController : AbpController
{
[HttpPost("/stock-changed")]
[Topic("pubsub", "StockChanged")]
public async Task<IActionResult> TestRouteAsync(
[FromBody] StockCountChangedEto model)
{
// Validate the App API token!
HttpContext.ValidateDaprAppApiToken();
// Do something with the event
return Ok();
}
}
````
`HttpContext.ValidateDaprAppApiToken()` 是ABP框架提供的扩展方法.如果HTTP头中缺少或错误的令牌,则会抛出`AbpAuthorizationException`(头名称为`dapr-api-token`).你也可以注入`IDaprAppApiTokenValidator`并使用其方法在任何服务中验证令牌(不仅仅是在控制器类中).
你可以配置`AbpDaprOptions.AppApiToken`,如果你想设置(或覆盖)App API令牌值.默认值由`APP_API_TOKEN`环境变量设置.你可以在模块类的`ConfigureServices`方法中这样做,如下面的代码块所示:
````csharp
Configure<AbpDaprOptions>(options =>
{
options.AppApiToken = "...";
});
````
或者你可以在`appsettings.json`文件中设置它:
````json
"Dapr": {
"AppApiToken": "..."
}
````
如果你需要在应用程序中使用该值,你可以注入`IDaprApiTokenProvider`并使用其`GetAppApiToken()`方法.
## 另请参阅
* [Dapr for .NET Developers](https://docs.microsoft.com/en-us/dotnet/architecture/dapr-for-net-developers/)
* [Dapr官方文档](https://docs.dapr.io/)

2
framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/Controllers/AbpAspNetCoreMvcDaprPubSubController.cs

@ -21,6 +21,8 @@ public class AbpAspNetCoreMvcDaprPubSubController : AbpController
[HttpPost(AbpAspNetCoreMvcDaprPubSubConsts.DaprEventCallbackUrl)]
public virtual async Task<IActionResult> EventsAsync()
{
this.HttpContext.ValidateDaprAppApiToken();
var bodyJsonDocument = await JsonDocument.ParseAsync(HttpContext.Request.Body);
var request = JsonSerializer.Deserialize<AbpAspNetCoreMvcDaprSubscriptionRequest>(bodyJsonDocument.RootElement.GetRawText(),
HttpContext.RequestServices.GetRequiredService<IOptions<JsonOptions>>().Value.JsonSerializerOptions);

2
framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/SystemTextJson/AbpAspNetCoreMvcDaprSubscriptionDefinitionConverter.cs

@ -6,7 +6,7 @@ namespace Volo.Abp.AspNetCore.Mvc.Dapr.EventBus.SystemTextJson;
public class AbpAspNetCoreMvcDaprSubscriptionDefinitionConverter : JsonConverter<AbpAspNetCoreMvcDaprSubscriptionDefinition>
{
private JsonSerializerOptions _writeJsonSerializerOptions;
private JsonSerializerOptions? _writeJsonSerializerOptions;
public override AbpAspNetCoreMvcDaprSubscriptionDefinition Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{

75
framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/DaprAppApiTokenValidator.cs

@ -0,0 +1,75 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.SignalR;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Authorization;
using Volo.Abp.Dapr;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.Mvc.Dapr;
public class DaprAppApiTokenValidator : IDaprAppApiTokenValidator, ISingletonDependency
{
protected IHttpContextAccessor HttpContextAccessor { get; }
protected HttpContext HttpContext => GetHttpContext();
public DaprAppApiTokenValidator(IHttpContextAccessor httpContextAccessor)
{
HttpContextAccessor = httpContextAccessor;
}
public virtual void CheckDaprAppApiToken()
{
var expectedAppApiToken = GetConfiguredAppApiTokenOrNull();
if (expectedAppApiToken.IsNullOrWhiteSpace())
{
return;
}
var headerAppApiToken = GetDaprAppApiTokenOrNull();
if (headerAppApiToken.IsNullOrWhiteSpace())
{
throw new AbpAuthorizationException("Expected Dapr App API Token is not provided! Dapr should set the 'dapr-api-token' HTTP header.");
}
if (expectedAppApiToken != headerAppApiToken)
{
throw new AbpAuthorizationException("The Dapr App API Token (provided in the 'dapr-api-token' HTTP header) doesn't match the expected value!");
}
}
public virtual bool IsValidDaprAppApiToken()
{
var expectedAppApiToken = GetConfiguredAppApiTokenOrNull();
if (expectedAppApiToken.IsNullOrWhiteSpace())
{
return true;
}
var headerAppApiToken = GetDaprAppApiTokenOrNull();
return expectedAppApiToken == headerAppApiToken;
}
public virtual string? GetDaprAppApiTokenOrNull()
{
string apiTokenHeader = HttpContext.Request.Headers["dapr-api-token"];
if (string.IsNullOrEmpty(apiTokenHeader) || apiTokenHeader.Length < 1)
{
return null;
}
return apiTokenHeader;
}
protected virtual string? GetConfiguredAppApiTokenOrNull()
{
return HttpContext
.RequestServices
.GetRequiredService<IDaprApiTokenProvider>()
.GetAppApiToken();
}
protected virtual HttpContext GetHttpContext()
{
return HttpContextAccessor.HttpContext ?? throw new AbpException("HttpContext is not available!");
}
}

31
framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/DaprHttpContextExtensions.cs

@ -0,0 +1,31 @@
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
namespace Volo.Abp.AspNetCore.Mvc.Dapr;
public static class DaprHttpContextExtensions
{
public static void ValidateDaprAppApiToken(this HttpContext httpContext)
{
httpContext
.RequestServices
.GetRequiredService<IDaprAppApiTokenValidator>()
.CheckDaprAppApiToken();
}
public static bool IsValidDaprAppApiToken(this HttpContext httpContext)
{
return httpContext
.RequestServices
.GetRequiredService<IDaprAppApiTokenValidator>()
.IsValidDaprAppApiToken();
}
public static string? GetDaprAppApiTokenOrNull(HttpContext httpContext)
{
return httpContext
.RequestServices
.GetRequiredService<IDaprAppApiTokenValidator>()
.GetDaprAppApiTokenOrNull();
}
}

8
framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/IDaprAppApiTokenValidator.cs

@ -0,0 +1,8 @@
namespace Volo.Abp.AspNetCore.Mvc.Dapr;
public interface IDaprAppApiTokenValidator
{
void CheckDaprAppApiToken();
bool IsValidDaprAppApiToken();
string? GetDaprAppApiTokenOrNull();
}

10
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/AbpAspNetCoreMvcUiPackagesModule.cs

@ -1,6 +1,7 @@
using Volo.Abp.AspNetCore.Mvc.UI.Bundling;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.BootstrapDatepicker;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.JQueryValidation;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.Moment;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.Timeago;
using Volo.Abp.Localization;
using Volo.Abp.Modularity;
@ -25,6 +26,15 @@ public class AbpAspNetCoreMvcUiPackagesModule : AbpModule
options.AddLanguageFilesMapOrUpdate(BootstrapDatepickerScriptContributor.PackageName,
new NameValue("zh-Hans", "zh-CN"),
new NameValue("zh-Hant", "zh-TW"));
//moment
options.AddLanguagesMapOrUpdate(MomentScriptContributor.PackageName,
new NameValue("zh-Hans", "zh-CN"),
new NameValue("zh-Hant", "zh-TW"));
options.AddLanguageFilesMapOrUpdate(MomentScriptContributor.PackageName,
new NameValue("zh-Hans", "zh-CN"),
new NameValue("zh-Hant", "zh-TW"));
//Timeago
options.AddLanguageFilesMapOrUpdate(TimeagoScriptContributor.PackageName,

21
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/BootstrapDaterangepicker/BootstrapDaterangepickerScriptContributor.cs

@ -0,0 +1,21 @@
using System.Collections.Generic;
using Microsoft.Extensions.Options;
using Volo.Abp.AspNetCore.Mvc.UI.Bundling;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.JQuery;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.Moment;
using Volo.Abp.Localization;
using Volo.Abp.Modularity;
namespace Volo.Abp.AspNetCore.Mvc.UI.Packages.BootstrapDaterangepicker;
[DependsOn(typeof(JQueryScriptContributor))]
[DependsOn(typeof(MomentScriptContributor))]
public class BootstrapDaterangepickerScriptContributor : BundleContributor
{
public const string PackageName = "bootstrap-daterangepicker";
public override void ConfigureBundle(BundleConfigurationContext context)
{
context.Files.AddIfNotContains("/libs/bootstrap-daterangepicker/daterangepicker.js");
}
}

12
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/BootstrapDaterangepicker/BootstrapDaterangepickerStyleContributor.cs

@ -0,0 +1,12 @@
using System.Collections.Generic;
using Volo.Abp.AspNetCore.Mvc.UI.Bundling;
namespace Volo.Abp.AspNetCore.Mvc.UI.Packages.BootstrapDaterangepicker;
public class BootstrapDaterangepickerStyleContributor : BundleContributor
{
public override void ConfigureBundle(BundleConfigurationContext context)
{
context.Files.AddIfNotContains("/libs/bootstrap-daterangepicker/daterangepicker.css");
}
}

28
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/Moment/MomentScriptContributor.cs

@ -0,0 +1,28 @@
using System.Collections.Generic;
using Microsoft.Extensions.Options;
using Volo.Abp.AspNetCore.Mvc.UI.Bundling;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.JQuery;
using Volo.Abp.Localization;
using Volo.Abp.Modularity;
namespace Volo.Abp.AspNetCore.Mvc.UI.Packages.Moment;
public class MomentScriptContributor : BundleContributor
{
public const string PackageName = "moment";
public override void ConfigureBundle(BundleConfigurationContext context)
{
context.Files.AddIfNotContains("/libs/moment/moment.min.js");
}
public override void ConfigureDynamicResources(BundleConfigurationContext context)
{
var fileName = context.LazyServiceProvider.LazyGetRequiredService<IOptions<AbpLocalizationOptions>>().Value.GetCurrentUICultureLanguageFilesMap(PackageName);
var filePath = $"/libs/moment/locale/{fileName}.js";
if (context.FileProvider.GetFileInfo(filePath).Exists)
{
context.Files.AddIfNotContains(filePath);
}
}
}

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Bundling/SharedThemeGlobalScriptContributor.cs

@ -1,6 +1,7 @@
using Volo.Abp.AspNetCore.Mvc.UI.Bundling;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.Bootstrap;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.BootstrapDatepicker;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.BootstrapDaterangepicker;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.DatatablesNetBs5;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.JQuery;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.JQueryForm;
@ -29,7 +30,8 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Bundling;
typeof(MalihuCustomScrollbarPluginScriptBundleContributor),
typeof(LuxonScriptContributor),
typeof(TimeagoScriptContributor),
typeof(BootstrapDatepickerScriptContributor)
typeof(BootstrapDatepickerScriptContributor),
typeof(BootstrapDaterangepickerScriptContributor)
)]
public class SharedThemeGlobalScriptContributor : BundleContributor
{

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Bundling/SharedThemeGlobalStyleContributor.cs

@ -1,6 +1,7 @@
using Volo.Abp.AspNetCore.Mvc.UI.Bundling;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.Bootstrap;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.BootstrapDatepicker;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.BootstrapDaterangepicker;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.Core;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.DatatablesNetBs5;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.FontAwesome;
@ -19,7 +20,8 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Bundling;
typeof(Select2StyleContributor),
typeof(MalihuCustomScrollbarPluginStyleBundleContributor),
typeof(DatatablesNetBs5StyleContributor),
typeof(BootstrapDatepickerStyleContributor)
typeof(BootstrapDatepickerStyleContributor),
typeof(BootstrapDaterangepickerStyleContributor)
)]
public class SharedThemeGlobalStyleContributor : BundleContributor
{

9
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Auditing/AbpAuditActionFilter.cs

@ -93,10 +93,11 @@ public class AbpAuditActionFilter : IAsyncActionFilter, ITransientDependency
ActionDescriptor actionDescriptor)
{
if (!abpAuditingOptions.IsEnabledForIntegrationServices &&
actionDescriptor
.AsControllerActionDescriptor()
.ControllerTypeInfo
.IsDefined(typeof(IntegrationServiceAttribute), true))
IntegrationServiceAttribute.IsDefinedOrInherited(
actionDescriptor
.AsControllerActionDescriptor()
.ControllerTypeInfo)
)
{
return false;
}

31
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Conventions/ConventionalControllerSetting.cs

@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Mvc.ApplicationModels;
using Microsoft.AspNetCore.Mvc.Versioning;
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using System.Reflection;
using Volo.Abp.Reflection;
@ -16,7 +17,7 @@ public class ConventionalControllerSetting
public Assembly Assembly { get; }
[NotNull]
public HashSet<Type> ControllerTypes { get; } //TODO: Internal?
internal HashSet<Type> ControllerTypes { get; }
/// <summary>
/// Set true to use the old style URL path style.
@ -47,6 +48,11 @@ public class ConventionalControllerSetting
[CanBeNull]
public Func<Type, bool> TypePredicate { get; set; }
/// <summary>
/// Default value: All.
/// </summary>
public ApplicationServiceTypes ApplicationServiceTypes { get; set; } = ApplicationServiceTypes.All;
[CanBeNull]
public Action<ControllerModel> ControllerModelConfigurer { get; set; }
@ -77,6 +83,7 @@ public class ConventionalControllerSetting
{
var types = Assembly.GetTypes()
.Where(IsRemoteService)
.Where(IsPreferredApplicationServiceType)
.WhereIf(TypePredicate != null, TypePredicate);
foreach (var type in types)
@ -84,6 +91,11 @@ public class ConventionalControllerSetting
ControllerTypes.Add(type);
}
}
public IReadOnlyList<Type> GetControllerTypes()
{
return ControllerTypes.ToImmutableList();
}
private static bool IsRemoteService(Type type)
{
@ -105,4 +117,19 @@ public class ConventionalControllerSetting
return false;
}
}
private bool IsPreferredApplicationServiceType(Type type)
{
if (ApplicationServiceTypes == ApplicationServiceTypes.ApplicationServices)
{
return !IntegrationServiceAttribute.IsDefinedOrInherited(type);
}
if (ApplicationServiceTypes == ApplicationServiceTypes.IntegrationServices)
{
return IntegrationServiceAttribute.IsDefinedOrInherited(type);
}
return true;
}
}

2
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Conventions/ConventionalRouteBuilder.cs

@ -73,7 +73,7 @@ public class ConventionalRouteBuilder : IConventionalRouteBuilder, ITransientDep
protected virtual string GetApiRoutePrefix(ActionModel actionModel, ConventionalControllerSetting configuration)
{
if (actionModel.Controller.ControllerType.IsDefined(typeof(IntegrationServiceAttribute), true))
if (IntegrationServiceAttribute.IsDefinedOrInherited(actionModel.Controller.ControllerType))
{
return AbpAspNetCoreConsts.DefaultIntegrationServiceApiPrefix;
}

2
framework/src/Volo.Abp.AspNetCore.TestBase/Volo/Abp/AspNetCore/TestBase/AbpAspNetCoreAsyncIntegratedTestBase.cs

@ -79,7 +79,7 @@ public class AbpAspNetCoreAsyncIntegratedTestBase<TModule>
/// <typeparam name="TController">The type of the controller.</typeparam>
protected virtual string GetUrl<TController>()
{
return "/" + typeof(TController).Name.RemovePostFix("Controller", "AppService", "ApplicationService", "Service");
return "/" + typeof(TController).Name.RemovePostFix("Controller", "AppService", "ApplicationService", "IntService", "IntegrationService", "Service");
}
/// <summary>

2
framework/src/Volo.Abp.AspNetCore.TestBase/Volo/Abp/AspNetCore/TestBase/AbpAspNetCoreIntegratedTestBase.cs

@ -59,7 +59,7 @@ public abstract class AbpAspNetCoreIntegratedTestBase<TStartup> : AbpTestBaseWit
/// <typeparam name="TController">The type of the controller.</typeparam>
protected virtual string GetUrl<TController>()
{
return "/" + typeof(TController).Name.RemovePostFix("Controller", "AppService", "ApplicationService", "Service");
return "/" + typeof(TController).Name.RemovePostFix("Controller", "AppService", "ApplicationService", "IntService", "IntegrationService", "Service");
}
/// <summary>

3
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingInterceptorRegistrar.cs

@ -52,7 +52,8 @@ public static class AuditingInterceptorRegistrar
if (typeof(IAuditingEnabled).IsAssignableFrom(type))
{
if (ignoreIntegrationServiceAttribute || !type.IsDefined(typeof(IntegrationServiceAttribute), true))
if (ignoreIntegrationServiceAttribute ||
!IntegrationServiceAttribute.IsDefinedOrInherited(type))
{
return true;
}

8
framework/src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj

@ -14,10 +14,10 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Blazorise" Version="1.0.4" />
<PackageReference Include="Blazorise.DataGrid" Version="1.0.4" />
<PackageReference Include="Blazorise.Snackbar" Version="1.0.4" />
<PackageReference Include="Blazorise.Components" Version="1.0.4" />
<PackageReference Include="Blazorise" Version="1.0.6" />
<PackageReference Include="Blazorise.DataGrid" Version="1.0.6" />
<PackageReference Include="Blazorise.Snackbar" Version="1.0.6" />
<PackageReference Include="Blazorise.Components" Version="1.0.6" />
</ItemGroup>
</Project>

16
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveFilesStep.cs

@ -0,0 +1,16 @@
namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps;
public class RemoveFilesStep : ProjectBuildPipelineStep
{
private readonly string _filePath;
public RemoveFilesStep(string filePath)
{
_filePath = filePath;
}
public override void Execute(ProjectBuildContext context)
{
context.Files.RemoveAll(file => file.Name.Contains(_filePath));
}
}

2
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/TemplateCodeDeleteStep.cs

@ -19,7 +19,7 @@ public class TemplateCodeDeleteStep : ProjectBuildPipelineStep
file.Name.EndsWith(".ps1") ||
file.Name.EndsWith(".html") ||
file.Name.EndsWith(".ts") ||
file.Name.EndsWith(".scss"))
file.Name.EndsWith(".css"))
{
file.RemoveTemplateCode(context.Symbols);
file.RemoveTemplateCodeMarkers();

15
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs

@ -204,6 +204,8 @@ public abstract class AppTemplateBase : TemplateInfo
steps.Add(new ChangeThemeStyleStep());
}
RemoveThemeLogoFolders(context, steps);
if (IsDefaultThemeForTemplate(context.BuildArgs.Theme.Value))
{
return;
@ -213,6 +215,19 @@ public abstract class AppTemplateBase : TemplateInfo
RemoveLeptonXThemePackagesFromPackageJsonFiles(steps, isProTemplate: IsPro(), uiFramework: context.BuildArgs.UiFramework);
}
private void RemoveThemeLogoFolders(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps)
{
if (context.BuildArgs.Theme is not Theme.Lepton && IsPro())
{
steps.Add(new RemoveFilesStep("/wwwroot/images/logo/lepton"));
}
if (context.BuildArgs.Theme is not Theme.LeptonX or Theme.LeptonXLite)
{
steps.Add(new RemoveFilesStep("/wwwroot/images/logo/leptonx"));
}
}
private static bool IsDefaultThemeForTemplate(Theme theme)
{
var defaultThemesForTemplates = new[]

2
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ServiceProxying/CSharp/CSharpServiceProxyGenerator.cs

@ -21,7 +21,7 @@ public class CSharpServiceProxyGenerator : ServiceProxyGeneratorBase<CSharpServi
private const string MethodPlaceholder = "<method placeholder>";
private const string ClassName = "<className>";
private const string ServiceInterface = "<serviceInterface>";
private readonly static string[] ServicePostfixes = { "AppService", "ApplicationService" , "Service"};
private readonly static string[] ServicePostfixes = { "AppService", "ApplicationService", "IntService", "IntegrationService" , "Service"};
private const string DefaultNamespace = "ClientProxies";
private const string Namespace = "<namespace>";
private const string AppServicePrefix = "Volo.Abp.Application.Services";

22
framework/src/Volo.Abp.Core/Volo/Abp/ApplicationServiceTypes.cs

@ -0,0 +1,22 @@
using System;
namespace Volo.Abp;
[Flags]
public enum ApplicationServiceTypes : byte
{
/// <summary>
/// Only application services without <see cref="IntegrationServiceAttribute"/>.
/// </summary>
ApplicationServices = 1,
/// <summary>
/// Application services with <see cref="IntegrationServiceAttribute"/>.
/// </summary>
IntegrationServices = 2,
/// <summary>
/// All application services.
/// </summary>
All = ApplicationServices | IntegrationServices
}

25
framework/src/Volo.Abp.Core/Volo/Abp/IntegrationServiceAttribute.cs

@ -2,8 +2,29 @@
namespace Volo.Abp;
[AttributeUsage(AttributeTargets.Class)]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface)]
public class IntegrationServiceAttribute : Attribute
{
public static bool IsDefinedOrInherited<T>()
{
return IsDefinedOrInherited(typeof(T));
}
public static bool IsDefinedOrInherited(Type type)
{
if (type.IsDefined(typeof(IntegrationServiceAttribute), true))
{
return true;
}
foreach (var @interface in type.GetInterfaces())
{
if (@interface.IsDefined(typeof(IntegrationServiceAttribute), true))
{
return true;
}
}
return false;
}
}

63
framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/AbpDaprClientFactory.cs

@ -1,5 +1,4 @@
using System.Collections.Concurrent;
using System.Text.Json;
using System.Text.Json;
using Dapr.Client;
using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection;
@ -7,42 +6,68 @@ using Volo.Abp.Json.SystemTextJson;
namespace Volo.Abp.Dapr;
public class AbpDaprClientFactory : ITransientDependency
public class AbpDaprClientFactory : IAbpDaprClientFactory, ISingletonDependency
{
protected AbpDaprOptions Options { get; }
protected AbpSystemTextJsonSerializerOptions SystemTextJsonSerializerOptions { get; }
protected AbpDaprOptions DaprOptions { get; }
protected JsonSerializerOptions JsonSerializerOptions { get; }
protected IDaprApiTokenProvider DaprApiTokenProvider { get; }
public AbpDaprClientFactory(
IOptions<AbpDaprOptions> options,
IOptions<AbpSystemTextJsonSerializerOptions> systemTextJsonSerializerOptions)
IOptions<AbpSystemTextJsonSerializerOptions> systemTextJsonSerializerOptions,
IDaprApiTokenProvider daprApiTokenProvider)
{
Options = options.Value;
SystemTextJsonSerializerOptions = systemTextJsonSerializerOptions.Value;
DaprApiTokenProvider = daprApiTokenProvider;
DaprOptions = options.Value;
JsonSerializerOptions = CreateJsonSerializerOptions(systemTextJsonSerializerOptions.Value);
}
public virtual async Task<DaprClient> CreateAsync()
public virtual DaprClient Create(Action<DaprClientBuilder>? builderAction = null)
{
var builder = new DaprClientBuilder()
.UseJsonSerializationOptions(await CreateJsonSerializerOptions());
.UseJsonSerializationOptions(JsonSerializerOptions);
if (!Options.HttpEndpoint.IsNullOrWhiteSpace())
if (!DaprOptions.HttpEndpoint.IsNullOrWhiteSpace())
{
builder.UseHttpEndpoint(Options.HttpEndpoint);
builder.UseHttpEndpoint(DaprOptions.HttpEndpoint);
}
if (!Options.GrpcEndpoint.IsNullOrWhiteSpace())
if (!DaprOptions.GrpcEndpoint.IsNullOrWhiteSpace())
{
builder.UseGrpcEndpoint(Options.GrpcEndpoint);
builder.UseGrpcEndpoint(DaprOptions.GrpcEndpoint);
}
var apiToken = DaprApiTokenProvider.GetDaprApiToken();
if (!apiToken.IsNullOrWhiteSpace())
{
builder.UseDaprApiToken(apiToken);
}
builderAction?.Invoke(builder);
return builder.Build();
}
private readonly static ConcurrentDictionary<string, JsonSerializerOptions> JsonSerializerOptionsCache = new ConcurrentDictionary<string, JsonSerializerOptions>();
public virtual HttpClient CreateHttpClient(
string? appId = null,
string? daprEndpoint = null,
string? daprApiToken = null)
{
if(daprEndpoint.IsNullOrWhiteSpace() &&
!DaprOptions.HttpEndpoint.IsNullOrWhiteSpace())
{
daprEndpoint = DaprOptions.HttpEndpoint;
}
protected virtual Task<JsonSerializerOptions> CreateJsonSerializerOptions()
return DaprClient.CreateInvokeHttpClient(
appId,
daprEndpoint,
daprApiToken ?? DaprApiTokenProvider.GetDaprApiToken()
);
}
protected virtual JsonSerializerOptions CreateJsonSerializerOptions(AbpSystemTextJsonSerializerOptions systemTextJsonSerializerOptions)
{
return Task.FromResult(JsonSerializerOptionsCache.GetOrAdd(nameof(AbpDaprClientFactory),
_ => new JsonSerializerOptions(SystemTextJsonSerializerOptions.JsonSerializerOptions)));
return new JsonSerializerOptions(systemTextJsonSerializerOptions.JsonSerializerOptions);
}
}
}

52
framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/AbpDaprModule.cs

@ -1,4 +1,6 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Volo.Abp.Json;
using Volo.Abp.Modularity;
@ -10,6 +12,54 @@ public class AbpDaprModule : AbpModule
public override void ConfigureServices(ServiceConfigurationContext context)
{
var configuration = context.Services.GetConfiguration();
ConfigureDaprOptions(configuration);
context.Services.TryAddSingleton(
serviceProvider => serviceProvider
.GetRequiredService<IAbpDaprClientFactory>()
.Create()
);
}
private void ConfigureDaprOptions(IConfiguration configuration)
{
Configure<AbpDaprOptions>(configuration.GetSection("Dapr"));
Configure<AbpDaprOptions>(options =>
{
if (options.DaprApiToken.IsNullOrWhiteSpace())
{
var confEnv = configuration["DAPR_API_TOKEN"];
if (!confEnv.IsNullOrWhiteSpace())
{
options.DaprApiToken = confEnv;
}
else
{
var env = Environment.GetEnvironmentVariable("DAPR_API_TOKEN");
if (!env.IsNullOrWhiteSpace())
{
options.DaprApiToken = env;
}
}
}
if (options.AppApiToken.IsNullOrWhiteSpace())
{
var confEnv = configuration["APP_API_TOKEN"];
if (!confEnv.IsNullOrWhiteSpace())
{
options.AppApiToken = confEnv;
}
else
{
var env = Environment.GetEnvironmentVariable("APP_API_TOKEN");
if (!env.IsNullOrWhiteSpace())
{
options.AppApiToken = env;
}
}
}
});
}
}

8
framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/AbpDaprOptions.cs

@ -2,9 +2,11 @@
public class AbpDaprOptions
{
public string AppId { get; set; }
public string HttpEndpoint { get; set; }
public string GrpcEndpoint { get; set; }
}
public string DaprApiToken { get; set; }
public string AppApiToken { get; set; }
}

24
framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/DaprApiTokenProvider.cs

@ -0,0 +1,24 @@
using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.Dapr;
public class DaprApiTokenProvider : IDaprApiTokenProvider, ISingletonDependency
{
protected AbpDaprOptions Options { get; }
public DaprApiTokenProvider(IOptions<AbpDaprOptions> options)
{
Options = options.Value;
}
public virtual string? GetDaprApiToken()
{
return Options.DaprApiToken;
}
public virtual string? GetAppApiToken()
{
return Options.AppApiToken;
}
}

14
framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/IAbpDaprClientFactory.cs

@ -0,0 +1,14 @@
using Dapr.Client;
namespace Volo.Abp.Dapr;
public interface IAbpDaprClientFactory
{
DaprClient Create(Action<DaprClientBuilder>? builderAction = null);
HttpClient CreateHttpClient(
string? appId = null,
string? daprEndpoint = null,
string? daprApiToken = null
);
}

8
framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/IDaprApiTokenProvider.cs

@ -0,0 +1,8 @@
namespace Volo.Abp.Dapr;
public interface IDaprApiTokenProvider
{
string? GetDaprApiToken();
string? GetAppApiToken();
}

2
framework/src/Volo.Abp.DistributedLocking.Abstractions/Volo/Abp/DistributedLocking/IAbpDistributedLock.cs

@ -14,7 +14,7 @@ public interface IAbpDistributedLock
/// Returns null if the lock could not be handled.
/// </summary>
/// <param name="name">The name of the lock</param>
/// <param name="timeout">Timeout value</param>
/// <param name="timeout">How long to wait before giving up on the acquisition attempt. Defaults to 0</param>
/// <param name="cancellationToken">Cancellation token</param>
[ItemCanBeNull]
Task<IAbpDistributedLockHandle> TryAcquireAsync(

6
framework/src/Volo.Abp.DistributedLocking.Dapr/Volo/Abp/DistributedLocking/Dapr/AbpDistributedLockDaprOptions.cs

@ -4,10 +4,12 @@ public class AbpDistributedLockDaprOptions
{
public string StoreName { get; set; }
public TimeSpan DefaultTimeout { get; set; }
public string? Owner { get; set; }
public TimeSpan DefaultExpirationTimeout { get; set; }
public AbpDistributedLockDaprOptions()
{
DefaultTimeout = TimeSpan.FromSeconds(30);
DefaultExpirationTimeout = TimeSpan.FromMinutes(2);
}
}

24
framework/src/Volo.Abp.DistributedLocking.Dapr/Volo/Abp/DistributedLocking/Dapr/DaprAbpDistributedLock.cs

@ -7,41 +7,33 @@ namespace Volo.Abp.DistributedLocking.Dapr;
[Dependency(ReplaceServices = true)]
public class DaprAbpDistributedLock : IAbpDistributedLock, ITransientDependency
{
protected AbpDaprClientFactory DaprClientFactory { get; }
protected IAbpDaprClientFactory DaprClientFactory { get; }
protected AbpDistributedLockDaprOptions DistributedLockDaprOptions { get; }
protected AbpDaprOptions DaprOptions { get; }
protected IDistributedLockKeyNormalizer DistributedLockKeyNormalizer { get; }
public DaprAbpDistributedLock(
AbpDaprClientFactory daprClientFactory,
IAbpDaprClientFactory daprClientFactory,
IOptions<AbpDistributedLockDaprOptions> distributedLockDaprOptions,
IOptions<AbpDaprOptions> daprOptions,
IDistributedLockKeyNormalizer distributedLockKeyNormalizer)
{
DaprClientFactory = daprClientFactory;
DistributedLockKeyNormalizer = distributedLockKeyNormalizer;
DaprOptions = daprOptions.Value;
DistributedLockDaprOptions = distributedLockDaprOptions.Value;
}
public async Task<IAbpDistributedLockHandle> TryAcquireAsync(
public async Task<IAbpDistributedLockHandle?> TryAcquireAsync(
string name,
TimeSpan timeout = default,
CancellationToken cancellationToken = default)
{
if (timeout == default)
{
timeout = DistributedLockDaprOptions.DefaultTimeout;
}
var daprClient = await DaprClientFactory.CreateAsync();
var key = DistributedLockKeyNormalizer.NormalizeKey(name);
name = DistributedLockKeyNormalizer.NormalizeKey(name);
var daprClient = DaprClientFactory.Create();
var lockResponse = await daprClient.Lock(
DistributedLockDaprOptions.StoreName,
key,
DaprOptions.AppId,
(int)timeout.TotalSeconds,
name,
DistributedLockDaprOptions.Owner ?? Guid.NewGuid().ToString(),
(int)DistributedLockDaprOptions.DefaultExpirationTimeout.TotalSeconds,
cancellationToken);
if (lockResponse == null || !lockResponse.Success)

6
framework/src/Volo.Abp.EventBus.Dapr/Volo/Abp/EventBus/Dapr/DaprDistributedEventBus.cs

@ -18,7 +18,7 @@ public class DaprDistributedEventBus : DistributedEventBusBase, ISingletonDepend
{
protected IDaprSerializer Serializer { get; }
protected AbpDaprEventBusOptions DaprEventBusOptions { get; }
protected AbpDaprClientFactory DaprClientFactory { get; }
protected IAbpDaprClientFactory DaprClientFactory { get; }
protected ConcurrentDictionary<Type, List<IEventHandlerFactory>> HandlerFactories { get; }
protected ConcurrentDictionary<string, Type> EventTypes { get; }
@ -33,7 +33,7 @@ public class DaprDistributedEventBus : DistributedEventBusBase, ISingletonDepend
IEventHandlerInvoker eventHandlerInvoker,
IDaprSerializer serializer,
IOptions<AbpDaprEventBusOptions> daprEventBusOptions,
AbpDaprClientFactory daprClientFactory)
IAbpDaprClientFactory daprClientFactory)
: base(serviceScopeFactory, currentTenant, unitOfWorkManager, abpDistributedEventBusOptions, guidGenerator, clock, eventHandlerInvoker)
{
Serializer = serializer;
@ -197,7 +197,7 @@ public class DaprDistributedEventBus : DistributedEventBusBase, ISingletonDepend
protected virtual async Task PublishToDaprAsync(string eventName, object eventData)
{
var client = await DaprClientFactory.CreateAsync();
var client = DaprClientFactory.Create();
await client.PublishEventAsync(pubsubName: DaprEventBusOptions.PubSubName, topicName: eventName, data: eventData);
}

62
framework/src/Volo.Abp.Http.Client/Microsoft/Extensions/DependencyInjection/ServiceCollectionHttpClientProxyExtensions.cs

@ -2,6 +2,7 @@
using System.Linq;
using System.Net.Http;
using System.Reflection;
using System.Runtime.InteropServices;
using Castle.DynamicProxy;
using JetBrains.Annotations;
using Volo.Abp;
@ -28,14 +29,22 @@ public static class ServiceCollectionHttpClientProxyExtensions
/// The name of the remote service configuration to be used by the Static HTTP Client proxies.
/// See <see cref="AbpRemoteServiceOptions"/>.
/// </param>
/// <param name="applicationServiceTypes">
/// Can be set to filter the application service types to be registered.
/// Default value: All.
/// </param>
public static IServiceCollection AddStaticHttpClientProxies(
[NotNull] this IServiceCollection services,
[NotNull] Assembly assembly,
[NotNull] string remoteServiceConfigurationName = RemoteServiceConfigurationDictionary.DefaultName)
[NotNull] string remoteServiceConfigurationName = RemoteServiceConfigurationDictionary.DefaultName,
ApplicationServiceTypes applicationServiceTypes = ApplicationServiceTypes.All)
{
Check.NotNull(services, nameof(assembly));
var serviceTypes = assembly.GetTypes().Where(IsSuitableForClientProxying).ToArray();
var serviceTypes = assembly
.GetTypes()
.Where(x => IsSuitableForClientProxying(x, applicationServiceTypes))
.ToArray();
foreach (var serviceType in serviceTypes)
{
@ -64,15 +73,23 @@ public static class ServiceCollectionHttpClientProxyExtensions
/// <param name="asDefaultServices">
/// True, to register the HTTP client proxy as the default implementation for the services.
/// </param>
/// <param name="applicationServiceTypes">
/// Can be set to filter the application service types to be registered.
/// Default value: All.
/// </param>
public static IServiceCollection AddHttpClientProxies(
[NotNull] this IServiceCollection services,
[NotNull] Assembly assembly,
[NotNull] string remoteServiceConfigurationName = RemoteServiceConfigurationDictionary.DefaultName,
bool asDefaultServices = true)
bool asDefaultServices = true,
ApplicationServiceTypes applicationServiceTypes = ApplicationServiceTypes.All)
{
Check.NotNull(services, nameof(assembly));
var serviceTypes = assembly.GetTypes().Where(IsSuitableForClientProxying).ToArray();
var serviceTypes = assembly
.GetTypes()
.Where(x => IsSuitableForClientProxying(x, applicationServiceTypes))
.ToArray();
foreach (var serviceType in serviceTypes)
{
@ -197,9 +214,14 @@ public static class ServiceCollectionHttpClientProxyExtensions
{
clientBuildAction(remoteServiceConfigurationName, provider, client);
}
}).ConfigurePrimaryHttpMessageHandler((provider) =>
}).ConfigurePrimaryHttpMessageHandler(provider =>
{
var handler = new HttpClientHandler { UseCookies = false };
var handler = new HttpClientHandler();
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Create("BROWSER")))
{
handler.UseCookies = false;
}
foreach (var handlerAction in preOptions.ProxyClientHandlerActions)
{
@ -227,14 +249,30 @@ public static class ServiceCollectionHttpClientProxyExtensions
/// Currently the type is checked statically against some fixed conditions.
/// </summary>
/// <param name="type">Type to check</param>
/// <param name="applicationServiceTypes">Option to filter application service types</param>
/// <returns>True, if the type is suitable for proxying. Otherwise false.</returns>
private static bool IsSuitableForClientProxying(Type type)
private static bool IsSuitableForClientProxying(
Type type,
ApplicationServiceTypes applicationServiceTypes)
{
//TODO: Add option to change type filter
if (!type.IsInterface ||
!type.IsPublic ||
type.IsGenericType ||
!typeof(IRemoteService).IsAssignableFrom(type))
{
return false;
}
if (applicationServiceTypes == ApplicationServiceTypes.ApplicationServices)
{
return !IntegrationServiceAttribute.IsDefinedOrInherited(type);
}
if (applicationServiceTypes == ApplicationServiceTypes.IntegrationServices)
{
return IntegrationServiceAttribute.IsDefinedOrInherited(type);
}
return type.IsInterface
&& type.IsPublic
&& !type.IsGenericType
&& typeof(IRemoteService).IsAssignableFrom(type);
return true;
}
}

2
framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/Generators/JQuery/JQueryProxyScriptGenerator.cs

@ -13,7 +13,7 @@ namespace Volo.Abp.Http.ProxyScripting.Generators.JQuery;
public class JQueryProxyScriptGenerator : IProxyScriptGenerator, ITransientDependency
{
//TODO: Should move this to Ddd package by adding an option to AbpHttpAbstractions module. Also duplicated of ApplicationService.CommonPostfixes
private static string[] AppServiceCommonPostfixes { get; } = { "AppService", "ApplicationService", "Service" };
private static string[] AppServiceCommonPostfixes { get; } = { "AppService", "ApplicationService", "IntService", "IntegrationService", "Service" };
/// <summary>
/// "jquery".

4
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs

@ -19,6 +19,7 @@ public abstract class VirtualFileLocalizationResourceContributorBase : ILocaliza
private Dictionary<string, ILocalizationDictionary> _dictionaries;
private bool _subscribedForChanges;
private readonly object _syncObj = new object();
private LocalizationResourceBase _resource;
protected VirtualFileLocalizationResourceContributorBase(string virtualPath)
{
@ -27,6 +28,7 @@ public abstract class VirtualFileLocalizationResourceContributorBase : ILocaliza
public virtual void Initialize(LocalizationResourceInitializationContext context)
{
_resource = context.Resource;
_virtualFileProvider = context.ServiceProvider.GetRequiredService<IVirtualFileProvider>();
}
@ -98,7 +100,7 @@ public abstract class VirtualFileLocalizationResourceContributorBase : ILocaliza
var dictionary = CreateDictionaryFromFile(file);
if (dictionaries.ContainsKey(dictionary.CultureName))
{
throw new AbpException($"{file.GetVirtualOrPhysicalPathOrNull()} dictionary has a culture name '{dictionary.CultureName}' which is already defined!");
throw new AbpException($"{file.GetVirtualOrPhysicalPathOrNull()} dictionary has a culture name '{dictionary.CultureName}' which is already defined! Localization resource: {_resource.ResourceName}");
}
dictionaries[dictionary.CultureName] = dictionary;

3
framework/src/Volo.Abp.MailKit/Volo/Abp/MailKit/MailKitSmtpEmailSender.cs

@ -8,6 +8,7 @@ using MailKit.Security;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using MimeKit;
using MimeKit.Utils;
using SmtpClient = MailKit.Net.Smtp.SmtpClient;
namespace Volo.Abp.MailKit;
@ -33,6 +34,8 @@ public class MailKitSmtpEmailSender : EmailSenderBase, IMailKitSmtpEmailSender
using (var client = await BuildClientAsync())
{
var message = MimeMessage.CreateFromMailMessage(mail);
message.MessageId = MimeUtils.GenerateMessageId();
message.Headers.Add(HeaderId.MessageId, message.MessageId);
await client.SendAsync(message);
await client.DisconnectAsync(true);
}

2
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/is.json

@ -38,7 +38,7 @@
"NoDataAvailableInDatatable": "Engar upplýsingar fáanlegar",
"Total": "Samtals",
"Selected": "valið",
"PagerShowMenuEntries": "Sýna færslur _Aðalvalmyndar_",
"PagerShowMenuEntries": "Sýna færslur _MENU_",
"DatatableActionDropdownDefaultText": "Aðgerðir",
"ChangePassword": "Breyta lykilorði",
"PersonalInfo": "Prófílinn minn",

4
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/tr.json

@ -29,6 +29,8 @@
"ThisFieldMustBeAStringWithAMaximumLengthOf{0}": "Bu alan en fazla {0} uzunluğunda bir metin olmalıdır.",
"ThisFieldMustBeAStringWithAMinimumLengthOf{1}AndAMaximumLengthOf{0}": "Bu alan en az {1}, en fazla {0} uzunluğunda bir metin olmalıdır.",
"ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl": "Bu alan geçerli bir http, https, ya da ftp adresi olmalıdır.",
"ThisFieldIsInvalid.": "Bu alan geçerli değil."
"ThisFieldIsInvalid.": "Bu alan geçerli değil.",
"ThisFieldMustBeGreaterThanOrEqual{0}": "Bu alan {0}'dan büyük veya eşit olmalıdır.",
"ThisFieldMustBeLessOrEqual{0}": "Bu alan {0}'dan küçük veya eşit olmalıdır."
}
}

48
framework/test/Volo.Abp.Core.Tests/Volo/Abp/IntegrationServiceAttribute_Tests.cs

@ -0,0 +1,48 @@
using Shouldly;
using Xunit;
namespace Volo.Abp;
public class IntegrationServiceAttribute_Tests
{
[Fact]
public static void IsDefinedOrInherited()
{
// True cases
IntegrationServiceAttribute
.IsDefinedOrInherited<IMyIntegrationService1>()
.ShouldBeTrue();
IntegrationServiceAttribute
.IsDefinedOrInherited<MyIntegrationService1>()
.ShouldBeTrue();
IntegrationServiceAttribute
.IsDefinedOrInherited<MyIntegrationService2>()
.ShouldBeTrue();
// False cases
IntegrationServiceAttribute
.IsDefinedOrInherited<IMyIntegrationService2>()
.ShouldBeFalse();
IntegrationServiceAttribute
.IsDefinedOrInherited<MyApplicationService>()
.ShouldBeFalse();
}
[IntegrationService]
private interface IMyIntegrationService1 { }
private class MyIntegrationService1 : IMyIntegrationService1 { }
private interface IMyIntegrationService2 { }
[IntegrationService]
private class MyIntegrationService2 : IMyIntegrationService2 { }
private interface IMyApplicationService { }
private class MyApplicationService : IMyApplicationService { }
}

2
framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/tr.json

@ -1,6 +1,6 @@
{
"culture": "tr",
"texts": {
"Volo.Abp.Http.DynamicProxying:10001": "Verilerle ilgili iş istisnası: {0}"
}
}

1
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/tr.json

@ -1,6 +1,5 @@
{
"culture": "tr",
"texts": {
}
}

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

@ -54,7 +54,8 @@ public class IdentityServerSupportedLoginModel : LoginModel
if (context != null)
{
ShowCancelButton = true;
// TODO: Find a proper cancel way.
// ShowCancelButton = true;
LoginInput.UserNameOrEmailAddress = context.LoginHint;

3
modules/account/src/Volo.Abp.Account.Web.OpenIddict/Pages/Account/OpenIddictSupportedLoginModel.cs

@ -34,7 +34,8 @@ public class OpenIddictSupportedLoginModel : LoginModel
var request = await OpenIddictRequestHelper.GetFromReturnUrlAsync(ReturnUrl);
if (request?.ClientId != null)
{
ShowCancelButton = true;
// TODO: Find a proper cancel way.
// ShowCancelButton = true;
LoginInput.UserNameOrEmailAddress = request.LoginHint;

2
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": "^6.0.0-rc.3",
"@abp/aspnetcore.mvc.ui.theme.shared": "^6.0.0-rc.4",
"highlight.js": "^9.13.1"
},
"devDependencies": {}

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

@ -2,30 +2,30 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.shared@^6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.3.tgz#664ca2ee712b7d9e66103c00beb41eb9648a6075"
integrity sha512-KxCsGuoUWKaDo7Oo9aKp51pli2m0DZ2tG8m+zK+m4M9U7g96uC+DOFy3gc7MdPlszvrw32Wwm7I0AughstByNA==
dependencies:
"@abp/aspnetcore.mvc.ui" "~6.0.0-rc.3"
"@abp/bootstrap" "~6.0.0-rc.3"
"@abp/bootstrap-datepicker" "~6.0.0-rc.3"
"@abp/datatables.net-bs5" "~6.0.0-rc.3"
"@abp/font-awesome" "~6.0.0-rc.3"
"@abp/jquery-form" "~6.0.0-rc.3"
"@abp/jquery-validation-unobtrusive" "~6.0.0-rc.3"
"@abp/lodash" "~6.0.0-rc.3"
"@abp/luxon" "~6.0.0-rc.3"
"@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.3"
"@abp/select2" "~6.0.0-rc.3"
"@abp/sweetalert2" "~6.0.0-rc.3"
"@abp/timeago" "~6.0.0-rc.3"
"@abp/toastr" "~6.0.0-rc.3"
"@abp/aspnetcore.mvc.ui@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.3.tgz#47c23b57ed3908bd78a232230e53d1f3cba2de41"
integrity sha512-7eJZy2JUGQP94Tz3JJWXRHRmDfTcPZ/lS1/VNbU8B4qvgl5ChIXklVEJLR1fwrBhKXZV8fGVmqT1XlGTGFvFJA==
"@abp/aspnetcore.mvc.ui.theme.shared@^6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.4.tgz#a0fd1e9f6f05d854d6f2119ed551a1cef485c929"
integrity sha512-QsrV+N6YFuMo/q73Bd1P0qDyG0Ua5JmQFgKzA94eMXDyYgpRrT5RyKh0CNV81Q/AX9V5c6APrtcQ31tYzmWwbQ==
dependencies:
"@abp/aspnetcore.mvc.ui" "~6.0.0-rc.4"
"@abp/bootstrap" "~6.0.0-rc.4"
"@abp/bootstrap-datepicker" "~6.0.0-rc.4"
"@abp/datatables.net-bs5" "~6.0.0-rc.4"
"@abp/font-awesome" "~6.0.0-rc.4"
"@abp/jquery-form" "~6.0.0-rc.4"
"@abp/jquery-validation-unobtrusive" "~6.0.0-rc.4"
"@abp/lodash" "~6.0.0-rc.4"
"@abp/luxon" "~6.0.0-rc.4"
"@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.4"
"@abp/select2" "~6.0.0-rc.4"
"@abp/sweetalert2" "~6.0.0-rc.4"
"@abp/timeago" "~6.0.0-rc.4"
"@abp/toastr" "~6.0.0-rc.4"
"@abp/aspnetcore.mvc.ui@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.4.tgz#de70d53a900db2f5c74719b7c4e406e0de4c2662"
integrity sha512-8GUoTG4B3Tz2Xd/cFaw9EAjOUoEfMG95VkjNqdfcvPPrtFML/W3fcMUwbjOvQ/lEnAMTSGREU3w9y7Y+GIv9qA==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -34,144 +34,144 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
"@abp/bootstrap-datepicker@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.3.tgz#89198b863dbfccf5f07ac3c4b20ce6199adcb17a"
integrity sha512-NLoUjcR66mqwSWuVftu2yFH4/j6QP+FiElRfZQ9OYmO8DQx2Ue5UZzjrFTrZ1DBBCfzhr2Bffj80dirGvGDyvg==
"@abp/bootstrap-datepicker@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.4.tgz#2dbc9f8f9816689b6db84948046a964ceb1bab17"
integrity sha512-tWPA3ehtU+QPKbxdLDzKk4p2wMNGo/R4CjCQydD1i9BIpkBUlA5sBtbNrLTvZ5/KM1RYecFGFrHTVVOzGsUKrA==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.3.tgz#4574bf574cc3484869e8ff8bc592f6212d20a969"
integrity sha512-Q5v7WRkGhGcjRg267HXtqs1oU7ts9UXPyCXmg5y2y5qMOyioD+m4MKV4iv67DgoQjabudp8X2egTKxkej6Lzkw==
"@abp/bootstrap@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.4.tgz#f360f86b00f474236ad182cd792df24f9ecbfc47"
integrity sha512-JjHJNPkTJRYwQvRnzTvcYIbxs2TD6n+LVtCd5ItYNbg8bMyd9yMugThxtgZGE3awVQqjLxZ4fwv+CRnf70JdrQ==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
bootstrap "^5.1.3"
"@abp/core@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.3.tgz#5662ce813d449d97d9fb7ea2552b2774c8df7825"
integrity sha512-X/VRdk5SGNYc5gQzPcBEPAvwcuD9WXsI4YIdrqjnes0s8u2/XmfrTixojh8Y5EYUoOblEE3Soj5hBhY1cVwcbQ==
"@abp/core@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.4.tgz#d164e1ca3546dc710c569ea7ae0145e1b713658e"
integrity sha512-mH3+BCU8Wbe0mieDHd5Awvhd09X7iJKRLBQBIINcDeIIOCJ9x4v8grynvndzlaS7J2AlWZba0XJU6sZ+YpuP2w==
dependencies:
"@abp/utils" "~6.0.0-rc.3"
"@abp/utils" "~6.0.0-rc.4"
"@abp/datatables.net-bs5@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.3.tgz#22865c7e621de720b71af6265b3193f6c78695bd"
integrity sha512-T+mhLc6uSzWmxDQogVwnJ6VxI4845gmF68/i9TmVKNlCtpa3EEfyuF/hgWT1hYfCb4XOsvd/CWrunbkC3fsmtg==
"@abp/datatables.net-bs5@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.4.tgz#fc3c43fb9ba8154b4b960ed0799948f5df738f7e"
integrity sha512-QtII4mFFFjvToM2LDqZugVh6/HwKbIdKYqHCxJKprZ1aVmyBeiMHi89z0G4eChAYdTpjHQstoDddYje53DkWOw==
dependencies:
"@abp/datatables.net" "~6.0.0-rc.3"
"@abp/datatables.net" "~6.0.0-rc.4"
datatables.net-bs5 "^1.11.4"
"@abp/datatables.net@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.3.tgz#d036defe6ad7fc989dffa020ae579362ee3150d1"
integrity sha512-4cUU8/Tn0Vz9bx7jjMOD/0Viyr29fcwoQAAkxaaYZp6qiQbENgz46/xpQf2oBCoudk8CLdzpmNa7jWte7PcJJw==
"@abp/datatables.net@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.4.tgz#f6916ba9a8089b573faddcc38e6a76e38a0dce16"
integrity sha512-9zhIvAO4AX6YIUELodEUz2hsDj+RITGoxWaav90jUJEqK/jVsDfs2mbrWcLzQDMLpZVElZA0p8tUyWS8yMsjaA==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
datatables.net "^1.11.4"
"@abp/font-awesome@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.3.tgz#803569d1a7e25f8a1c2be018312449c23fb78217"
integrity sha512-lYdh38UCTSkzzw0B/mpPEo7iFXzSKHCNbBOIHe6dd6O/Qli7wYukTtUOFn5Sh+yoydLY1as92HtiGL1ckSdu1g==
"@abp/font-awesome@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.4.tgz#a3e1664cbebdbc1aa4d2dd1ac48f022b3ce100ad"
integrity sha512-tlBekvBQ/wEkx1Z2sX8cPp/JKzxmTsMSUSbnAc/Uz+De/fxhyepUACb35zFSv2VmLPz1M1xqLvLUCJmciZhINQ==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
"@fortawesome/fontawesome-free" "^5.15.4"
"@abp/jquery-form@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.3.tgz#4ec503c07e2194148c3a7e7cf7ddef2871679e6a"
integrity sha512-Q3uEpflntqrSkYakcdsBnnYYfxJWXD/CDjMiwjbb6gIc8s4qkbIYxVxvYvlEezoIDYQkMSXOn7BS4clWsesiJg==
"@abp/jquery-form@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.4.tgz#4dfbef35e4d7dc80534e0f33644142a9ccd54cb4"
integrity sha512-/21ibf99c8q7ygbj2QF7GAGCW1MaalAurueffndTGZPRRSKrCVTPINtBih7NGgh1zcavhog+GBA3INJ3etQIWQ==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.3.tgz#01da2a59663d373ff1c69022f4c9c66ad0b29403"
integrity sha512-ij1ML2D9rYF3pJthWO6mGQajsJhbDCtOoBvnh9yCZccuwOYkXP22PqfUxjjxtqL4HqFI31KRpFg0ANMGSzEEBg==
"@abp/jquery-validation-unobtrusive@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.4.tgz#6a498b76076683bbc77d7a73fcf893863aecb59f"
integrity sha512-+9RAPaFYsuSZ05RtJJNeHl1PkyHm9Mv3WKAw+QrKHzaK34zpjD/cZdiijcAWM3DrNPiCCuaaUgMMIMn223MIEA==
dependencies:
"@abp/jquery-validation" "~6.0.0-rc.3"
"@abp/jquery-validation" "~6.0.0-rc.4"
jquery-validation-unobtrusive "^3.2.12"
"@abp/jquery-validation@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.3.tgz#724aea9572dcb2faccf8c6355332b0b2a4df9260"
integrity sha512-rTK5oHaMtycvWxunNwzbE/MbsXXIr6qDnOY3rVUmjTHjqUOHYz591t/XeQfjnSXPp4k/SZUjG6viTC3J2jzC1A==
"@abp/jquery-validation@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.4.tgz#2f79457d2c83795449eb6d3c82942568b0e6f273"
integrity sha512-a3v0QDWm2kqrr5r4Nim8unT7p5xHt8KR/TGmGiS6CNMRXVtd6SLMDg36D1d5AcBemFW5evlySiqAl2D7v+g0/g==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
jquery-validation "^1.19.3"
"@abp/jquery@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.3.tgz#ba19cc8b802c46490277939e6c674811127d8016"
integrity sha512-MbD38iInyag7/j5k42cvMT4jLZMtXH4lUK0rjvqUDVaxKEks46Ix/90uczQ9XajYONgx0CJKFj2urgM830+CCA==
"@abp/jquery@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.4.tgz#992222c2e233840ce7bf573b8bb15b0c9c15adde"
integrity sha512-JRf9NltPP++RAfPRvWFoYNgs2i/ydyROjtLSnCGdmO4UwAQZ21YuDY7x0Ia7VSj0a6cFg8d7M2PGIeJlcaXIsg==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
jquery "~3.6.0"
"@abp/lodash@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.3.tgz#8a5bab02353e5cab4ca06ab82f6dbe6285faa95a"
integrity sha512-c8yhcapzPsXyeiFjeOC+2a4bn5wFjW5gUoN+p/p+tE+FIcH37yEgyw/tAr6aZPCmR770MqQXct4t7S4Czbbk+A==
"@abp/lodash@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.4.tgz#2c88a9274e6c27334f277404280d43b2fbae6552"
integrity sha512-yOEe3SVvh5IuFMujSgC4waG0JzWzRQj907KUYzjcjfx35J5Q0Mwvu6/9wRYJx1av40YQdnzMrRoqXKDPAKdV6A==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
lodash "^4.17.21"
"@abp/luxon@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.3.tgz#ba515e122c61918d481467d5be39f08a363822f6"
integrity sha512-2lRSSC0DYShlnKdbJ/Pmha/azjt09ZRPx57NQ01dc7ungChPry5EJL6pC3kXWnJrCkrPCF0V5+A3+taut9+l3A==
"@abp/luxon@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.4.tgz#95ae8f70d9b5d8cd753cc7d918c611692d5bf218"
integrity sha512-OFs4Uv82YienRwiiVV78hdWSanS19lvjoBBskPF5s6LK/5mzLMrtbHBRf18wcc/AfBMOxot1BX2q1v4wb2u3qw==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
luxon "^2.3.0"
"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.3.tgz#0798e37ec6a852748118692a5fbd30c99d9745db"
integrity sha512-FlyShmRxG3wGk1OJCjHIZAdi2/Y2FJPkVxaE72CVIceQSmg0nebGTv3a7bhd4QzKkDsSA3+t6gHjnuKlTlDFLA==
"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.4.tgz#f40968c7f64eb6b36ff2bf06b4be8661308abd12"
integrity sha512-lcOskhl+NbPqKBxg+GABYBBrMtHYw2qZ/srFix7DgGUdNlFbXRP/AtTz0Wiav0PNGZgivniRLqvqcLCiCkrBrg==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/select2@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.3.tgz#deb8332bfce2102a562004893321a48d5194bf53"
integrity sha512-rb0qElmmhiP09xX8ZbjzNLF6ygFBwErysGWt6Bbgzz5waX2sGe575Cgoz53FaMQ4JaRBg1N0/nCejKyDtiINRA==
"@abp/select2@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.4.tgz#c7cf0f910fa6a9f97845a0659178ac02cfa022bc"
integrity sha512-NcXMZYiLDSVnjtRgvPwm9RB1M7qZnRyyyM+htdH5laEvDDGCcOLFS8iK6WI4Irmvw6MhBkDTHaH9ssJNbF7pvQ==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
select2 "^4.0.13"
"@abp/sweetalert2@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.3.tgz#e61fc6c1bed1316c1d44ca5c92f590e422db24d4"
integrity sha512-+SNpBb4XrQlWzRQK9lfdJqA9IfJrlgoqmHwPDgf3Q+P922MzO33TgDlZWbeE7MzVj2y2WmNsPuCKwhjSjSL2rw==
"@abp/sweetalert2@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.4.tgz#a1a2a1a5d7e1fb83680cc35ca477cee1f2f2463b"
integrity sha512-dvslRK2oc06JjI6aV1dj1LzWbOb50BfwbHxcmOenl8Q4XMP389bFbaOiVezjk+d3YLsspCMDxxu2NTqaq67Z6g==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
sweetalert2 "^11.3.6"
"@abp/timeago@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.3.tgz#0ef8c4801bfd4623e6895b1d047b1437063bda53"
integrity sha512-P3YRDVKjR5/Fz+cXiPg3IiUr7XGbNh7mgmJ1ywRXmKVmVMJmhQ2RsKmmtkGJn4TfVHu/l5iJXe4rqgL21/yX/g==
"@abp/timeago@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.4.tgz#3a93a65ee6b8260f7e80bb862b60623e967e08a2"
integrity sha512-/ZZy5E3PHtvmkjg+s9BvgO344DOs0jiifimDntp5jZPQPrsQ5WPC9o9hrlGb40tTw5P0wAnznjGvHnZjBiflvA==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
timeago "^1.6.7"
"@abp/toastr@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.3.tgz#6010d4247937531ebf7c8659d6254cd3db6c4855"
integrity sha512-sC9eCzYVgDrLSFIhJGe9hshzfwA1BkZNah4NQhyq+V6HQ8YF7goMS79N+/XmSoLQ9zzRhusqnPFnb+4FHjr7iA==
"@abp/toastr@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.4.tgz#3bf6abc79baf7a2b7de9840e55caf839018ab96e"
integrity sha512-zesojzXYsFd57m7XBgxLwKeAs8HRe25iNKRGC0YR7MK2HP1770jc+dEjnQ0pnqhMHouZejFJZcpqdHGr85ZUgQ==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
toastr "^2.1.4"
"@abp/utils@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.3.tgz#6d3515694314175218606e9518618ce335b4b360"
integrity sha512-K2geJ9P1ztk4Ehzb9YG3CqqLOi+z8/4iBLUzooNZLQqS+KdlUhCmqfuCoI/A5Aq9DGbTYesalp+Fwoh3S2Dl8A==
"@abp/utils@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.4.tgz#e18ef1557a2600fa153db13162e1ed097bc6f15a"
integrity sha512-eT6RVfFsyB8uAdMHDdG4M2Erg3RrvkG7Z5Xa0ko7JIhEz5VwsRcXGwTAORYHsu0M1hpewZljdD5OmQRods13LA==
dependencies:
just-compare "^1.3.0"

4
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": "^6.0.0-rc.3",
"@abp/prismjs": "^6.0.0-rc.3"
"@abp/aspnetcore.mvc.ui.theme.basic": "^6.0.0-rc.4",
"@abp/prismjs": "^6.0.0-rc.4"
},
"devDependencies": {}
}

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

@ -2,37 +2,37 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.3.tgz#b95266387e562c635de795442f90470f8e9e6318"
integrity sha512-vVkEpotDST455E3rynvRQpBKPcNNJ2m1wLkz/B9dQNdUjvm8L4F6s0ls0XFlKUNvQfCVfedkRtGayuvNje/Oxg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.3"
"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.3.tgz#664ca2ee712b7d9e66103c00beb41eb9648a6075"
integrity sha512-KxCsGuoUWKaDo7Oo9aKp51pli2m0DZ2tG8m+zK+m4M9U7g96uC+DOFy3gc7MdPlszvrw32Wwm7I0AughstByNA==
dependencies:
"@abp/aspnetcore.mvc.ui" "~6.0.0-rc.3"
"@abp/bootstrap" "~6.0.0-rc.3"
"@abp/bootstrap-datepicker" "~6.0.0-rc.3"
"@abp/datatables.net-bs5" "~6.0.0-rc.3"
"@abp/font-awesome" "~6.0.0-rc.3"
"@abp/jquery-form" "~6.0.0-rc.3"
"@abp/jquery-validation-unobtrusive" "~6.0.0-rc.3"
"@abp/lodash" "~6.0.0-rc.3"
"@abp/luxon" "~6.0.0-rc.3"
"@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.3"
"@abp/select2" "~6.0.0-rc.3"
"@abp/sweetalert2" "~6.0.0-rc.3"
"@abp/timeago" "~6.0.0-rc.3"
"@abp/toastr" "~6.0.0-rc.3"
"@abp/aspnetcore.mvc.ui@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.3.tgz#47c23b57ed3908bd78a232230e53d1f3cba2de41"
integrity sha512-7eJZy2JUGQP94Tz3JJWXRHRmDfTcPZ/lS1/VNbU8B4qvgl5ChIXklVEJLR1fwrBhKXZV8fGVmqT1XlGTGFvFJA==
"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.4.tgz#f57efa6f3cabb48e40a44e79adb31de58145bf89"
integrity sha512-JcoXch+j+T9V3Lfu9Of9Tbcw5sNBpSbe42SjzUcXLqdVijV/DBWKMg/9OPH8KZ4PZwl4sl9DSAmGWXHdipLxzA==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.4"
"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.4.tgz#a0fd1e9f6f05d854d6f2119ed551a1cef485c929"
integrity sha512-QsrV+N6YFuMo/q73Bd1P0qDyG0Ua5JmQFgKzA94eMXDyYgpRrT5RyKh0CNV81Q/AX9V5c6APrtcQ31tYzmWwbQ==
dependencies:
"@abp/aspnetcore.mvc.ui" "~6.0.0-rc.4"
"@abp/bootstrap" "~6.0.0-rc.4"
"@abp/bootstrap-datepicker" "~6.0.0-rc.4"
"@abp/datatables.net-bs5" "~6.0.0-rc.4"
"@abp/font-awesome" "~6.0.0-rc.4"
"@abp/jquery-form" "~6.0.0-rc.4"
"@abp/jquery-validation-unobtrusive" "~6.0.0-rc.4"
"@abp/lodash" "~6.0.0-rc.4"
"@abp/luxon" "~6.0.0-rc.4"
"@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.4"
"@abp/select2" "~6.0.0-rc.4"
"@abp/sweetalert2" "~6.0.0-rc.4"
"@abp/timeago" "~6.0.0-rc.4"
"@abp/toastr" "~6.0.0-rc.4"
"@abp/aspnetcore.mvc.ui@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.4.tgz#de70d53a900db2f5c74719b7c4e406e0de4c2662"
integrity sha512-8GUoTG4B3Tz2Xd/cFaw9EAjOUoEfMG95VkjNqdfcvPPrtFML/W3fcMUwbjOvQ/lEnAMTSGREU3w9y7Y+GIv9qA==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -41,161 +41,161 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
"@abp/bootstrap-datepicker@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.3.tgz#89198b863dbfccf5f07ac3c4b20ce6199adcb17a"
integrity sha512-NLoUjcR66mqwSWuVftu2yFH4/j6QP+FiElRfZQ9OYmO8DQx2Ue5UZzjrFTrZ1DBBCfzhr2Bffj80dirGvGDyvg==
"@abp/bootstrap-datepicker@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.4.tgz#2dbc9f8f9816689b6db84948046a964ceb1bab17"
integrity sha512-tWPA3ehtU+QPKbxdLDzKk4p2wMNGo/R4CjCQydD1i9BIpkBUlA5sBtbNrLTvZ5/KM1RYecFGFrHTVVOzGsUKrA==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.3.tgz#4574bf574cc3484869e8ff8bc592f6212d20a969"
integrity sha512-Q5v7WRkGhGcjRg267HXtqs1oU7ts9UXPyCXmg5y2y5qMOyioD+m4MKV4iv67DgoQjabudp8X2egTKxkej6Lzkw==
"@abp/bootstrap@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.4.tgz#f360f86b00f474236ad182cd792df24f9ecbfc47"
integrity sha512-JjHJNPkTJRYwQvRnzTvcYIbxs2TD6n+LVtCd5ItYNbg8bMyd9yMugThxtgZGE3awVQqjLxZ4fwv+CRnf70JdrQ==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
bootstrap "^5.1.3"
"@abp/clipboard@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-6.0.0-rc.3.tgz#ee3a586b491d89442eefff08aaebbf9d38cb46d4"
integrity sha512-01svpp3mR29z1FTM+2Qe+MUNLPbl95bWlOXY5zz2hvNSbdD45lGud+BiOHfeZwlDk5jjr3FqLel+hxx2ByBvOA==
"@abp/clipboard@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-6.0.0-rc.4.tgz#a1f08eb23ebe7fcac0521aa992c6cebb9753c004"
integrity sha512-dX8l7Akyv5ecx7+Op8Cp/q4JslnhA9G0Eok4iPcnYwHh9NfSLnusack9x4u370Y+eShRxFiiBDq44ZsCN66h/Q==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
clipboard "^2.0.8"
"@abp/core@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.3.tgz#5662ce813d449d97d9fb7ea2552b2774c8df7825"
integrity sha512-X/VRdk5SGNYc5gQzPcBEPAvwcuD9WXsI4YIdrqjnes0s8u2/XmfrTixojh8Y5EYUoOblEE3Soj5hBhY1cVwcbQ==
"@abp/core@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.4.tgz#d164e1ca3546dc710c569ea7ae0145e1b713658e"
integrity sha512-mH3+BCU8Wbe0mieDHd5Awvhd09X7iJKRLBQBIINcDeIIOCJ9x4v8grynvndzlaS7J2AlWZba0XJU6sZ+YpuP2w==
dependencies:
"@abp/utils" "~6.0.0-rc.3"
"@abp/utils" "~6.0.0-rc.4"
"@abp/datatables.net-bs5@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.3.tgz#22865c7e621de720b71af6265b3193f6c78695bd"
integrity sha512-T+mhLc6uSzWmxDQogVwnJ6VxI4845gmF68/i9TmVKNlCtpa3EEfyuF/hgWT1hYfCb4XOsvd/CWrunbkC3fsmtg==
"@abp/datatables.net-bs5@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.4.tgz#fc3c43fb9ba8154b4b960ed0799948f5df738f7e"
integrity sha512-QtII4mFFFjvToM2LDqZugVh6/HwKbIdKYqHCxJKprZ1aVmyBeiMHi89z0G4eChAYdTpjHQstoDddYje53DkWOw==
dependencies:
"@abp/datatables.net" "~6.0.0-rc.3"
"@abp/datatables.net" "~6.0.0-rc.4"
datatables.net-bs5 "^1.11.4"
"@abp/datatables.net@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.3.tgz#d036defe6ad7fc989dffa020ae579362ee3150d1"
integrity sha512-4cUU8/Tn0Vz9bx7jjMOD/0Viyr29fcwoQAAkxaaYZp6qiQbENgz46/xpQf2oBCoudk8CLdzpmNa7jWte7PcJJw==
"@abp/datatables.net@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.4.tgz#f6916ba9a8089b573faddcc38e6a76e38a0dce16"
integrity sha512-9zhIvAO4AX6YIUELodEUz2hsDj+RITGoxWaav90jUJEqK/jVsDfs2mbrWcLzQDMLpZVElZA0p8tUyWS8yMsjaA==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
datatables.net "^1.11.4"
"@abp/font-awesome@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.3.tgz#803569d1a7e25f8a1c2be018312449c23fb78217"
integrity sha512-lYdh38UCTSkzzw0B/mpPEo7iFXzSKHCNbBOIHe6dd6O/Qli7wYukTtUOFn5Sh+yoydLY1as92HtiGL1ckSdu1g==
"@abp/font-awesome@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.4.tgz#a3e1664cbebdbc1aa4d2dd1ac48f022b3ce100ad"
integrity sha512-tlBekvBQ/wEkx1Z2sX8cPp/JKzxmTsMSUSbnAc/Uz+De/fxhyepUACb35zFSv2VmLPz1M1xqLvLUCJmciZhINQ==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
"@fortawesome/fontawesome-free" "^5.15.4"
"@abp/jquery-form@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.3.tgz#4ec503c07e2194148c3a7e7cf7ddef2871679e6a"
integrity sha512-Q3uEpflntqrSkYakcdsBnnYYfxJWXD/CDjMiwjbb6gIc8s4qkbIYxVxvYvlEezoIDYQkMSXOn7BS4clWsesiJg==
"@abp/jquery-form@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.4.tgz#4dfbef35e4d7dc80534e0f33644142a9ccd54cb4"
integrity sha512-/21ibf99c8q7ygbj2QF7GAGCW1MaalAurueffndTGZPRRSKrCVTPINtBih7NGgh1zcavhog+GBA3INJ3etQIWQ==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.3.tgz#01da2a59663d373ff1c69022f4c9c66ad0b29403"
integrity sha512-ij1ML2D9rYF3pJthWO6mGQajsJhbDCtOoBvnh9yCZccuwOYkXP22PqfUxjjxtqL4HqFI31KRpFg0ANMGSzEEBg==
"@abp/jquery-validation-unobtrusive@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.4.tgz#6a498b76076683bbc77d7a73fcf893863aecb59f"
integrity sha512-+9RAPaFYsuSZ05RtJJNeHl1PkyHm9Mv3WKAw+QrKHzaK34zpjD/cZdiijcAWM3DrNPiCCuaaUgMMIMn223MIEA==
dependencies:
"@abp/jquery-validation" "~6.0.0-rc.3"
"@abp/jquery-validation" "~6.0.0-rc.4"
jquery-validation-unobtrusive "^3.2.12"
"@abp/jquery-validation@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.3.tgz#724aea9572dcb2faccf8c6355332b0b2a4df9260"
integrity sha512-rTK5oHaMtycvWxunNwzbE/MbsXXIr6qDnOY3rVUmjTHjqUOHYz591t/XeQfjnSXPp4k/SZUjG6viTC3J2jzC1A==
"@abp/jquery-validation@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.4.tgz#2f79457d2c83795449eb6d3c82942568b0e6f273"
integrity sha512-a3v0QDWm2kqrr5r4Nim8unT7p5xHt8KR/TGmGiS6CNMRXVtd6SLMDg36D1d5AcBemFW5evlySiqAl2D7v+g0/g==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
jquery-validation "^1.19.3"
"@abp/jquery@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.3.tgz#ba19cc8b802c46490277939e6c674811127d8016"
integrity sha512-MbD38iInyag7/j5k42cvMT4jLZMtXH4lUK0rjvqUDVaxKEks46Ix/90uczQ9XajYONgx0CJKFj2urgM830+CCA==
"@abp/jquery@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.4.tgz#992222c2e233840ce7bf573b8bb15b0c9c15adde"
integrity sha512-JRf9NltPP++RAfPRvWFoYNgs2i/ydyROjtLSnCGdmO4UwAQZ21YuDY7x0Ia7VSj0a6cFg8d7M2PGIeJlcaXIsg==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
jquery "~3.6.0"
"@abp/lodash@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.3.tgz#8a5bab02353e5cab4ca06ab82f6dbe6285faa95a"
integrity sha512-c8yhcapzPsXyeiFjeOC+2a4bn5wFjW5gUoN+p/p+tE+FIcH37yEgyw/tAr6aZPCmR770MqQXct4t7S4Czbbk+A==
"@abp/lodash@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.4.tgz#2c88a9274e6c27334f277404280d43b2fbae6552"
integrity sha512-yOEe3SVvh5IuFMujSgC4waG0JzWzRQj907KUYzjcjfx35J5Q0Mwvu6/9wRYJx1av40YQdnzMrRoqXKDPAKdV6A==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
lodash "^4.17.21"
"@abp/luxon@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.3.tgz#ba515e122c61918d481467d5be39f08a363822f6"
integrity sha512-2lRSSC0DYShlnKdbJ/Pmha/azjt09ZRPx57NQ01dc7ungChPry5EJL6pC3kXWnJrCkrPCF0V5+A3+taut9+l3A==
"@abp/luxon@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.4.tgz#95ae8f70d9b5d8cd753cc7d918c611692d5bf218"
integrity sha512-OFs4Uv82YienRwiiVV78hdWSanS19lvjoBBskPF5s6LK/5mzLMrtbHBRf18wcc/AfBMOxot1BX2q1v4wb2u3qw==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
luxon "^2.3.0"
"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.3.tgz#0798e37ec6a852748118692a5fbd30c99d9745db"
integrity sha512-FlyShmRxG3wGk1OJCjHIZAdi2/Y2FJPkVxaE72CVIceQSmg0nebGTv3a7bhd4QzKkDsSA3+t6gHjnuKlTlDFLA==
"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.4.tgz#f40968c7f64eb6b36ff2bf06b4be8661308abd12"
integrity sha512-lcOskhl+NbPqKBxg+GABYBBrMtHYw2qZ/srFix7DgGUdNlFbXRP/AtTz0Wiav0PNGZgivniRLqvqcLCiCkrBrg==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/prismjs@^6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-6.0.0-rc.3.tgz#e4faf595e29db81c5a66030e59b0e09f09759bfd"
integrity sha512-zzd3iw/Im0M9FUmTviwkTCr4slkoZJExtK+qB1FmLxRY59+hyU9wxd6hwzic/QwhXxFQoYILJ3S3FNxsPIm76A==
"@abp/prismjs@^6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-6.0.0-rc.4.tgz#9338018487dde7ddc5384cdfbdc35c655a8fd444"
integrity sha512-F1t7ySbj+M6LDmgbvvcY2bFl0heEj1vz14YOnmwMNUhJcaLQXamgyKsWBu5UkEHUJ11DQyjIu5gjoRXbraucdA==
dependencies:
"@abp/clipboard" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.3"
"@abp/clipboard" "~6.0.0-rc.4"
"@abp/core" "~6.0.0-rc.4"
prismjs "^1.26.0"
"@abp/select2@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.3.tgz#deb8332bfce2102a562004893321a48d5194bf53"
integrity sha512-rb0qElmmhiP09xX8ZbjzNLF6ygFBwErysGWt6Bbgzz5waX2sGe575Cgoz53FaMQ4JaRBg1N0/nCejKyDtiINRA==
"@abp/select2@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.4.tgz#c7cf0f910fa6a9f97845a0659178ac02cfa022bc"
integrity sha512-NcXMZYiLDSVnjtRgvPwm9RB1M7qZnRyyyM+htdH5laEvDDGCcOLFS8iK6WI4Irmvw6MhBkDTHaH9ssJNbF7pvQ==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
select2 "^4.0.13"
"@abp/sweetalert2@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.3.tgz#e61fc6c1bed1316c1d44ca5c92f590e422db24d4"
integrity sha512-+SNpBb4XrQlWzRQK9lfdJqA9IfJrlgoqmHwPDgf3Q+P922MzO33TgDlZWbeE7MzVj2y2WmNsPuCKwhjSjSL2rw==
"@abp/sweetalert2@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.4.tgz#a1a2a1a5d7e1fb83680cc35ca477cee1f2f2463b"
integrity sha512-dvslRK2oc06JjI6aV1dj1LzWbOb50BfwbHxcmOenl8Q4XMP389bFbaOiVezjk+d3YLsspCMDxxu2NTqaq67Z6g==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
sweetalert2 "^11.3.6"
"@abp/timeago@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.3.tgz#0ef8c4801bfd4623e6895b1d047b1437063bda53"
integrity sha512-P3YRDVKjR5/Fz+cXiPg3IiUr7XGbNh7mgmJ1ywRXmKVmVMJmhQ2RsKmmtkGJn4TfVHu/l5iJXe4rqgL21/yX/g==
"@abp/timeago@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.4.tgz#3a93a65ee6b8260f7e80bb862b60623e967e08a2"
integrity sha512-/ZZy5E3PHtvmkjg+s9BvgO344DOs0jiifimDntp5jZPQPrsQ5WPC9o9hrlGb40tTw5P0wAnznjGvHnZjBiflvA==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
timeago "^1.6.7"
"@abp/toastr@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.3.tgz#6010d4247937531ebf7c8659d6254cd3db6c4855"
integrity sha512-sC9eCzYVgDrLSFIhJGe9hshzfwA1BkZNah4NQhyq+V6HQ8YF7goMS79N+/XmSoLQ9zzRhusqnPFnb+4FHjr7iA==
"@abp/toastr@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.4.tgz#3bf6abc79baf7a2b7de9840e55caf839018ab96e"
integrity sha512-zesojzXYsFd57m7XBgxLwKeAs8HRe25iNKRGC0YR7MK2HP1770jc+dEjnQ0pnqhMHouZejFJZcpqdHGr85ZUgQ==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
toastr "^2.1.4"
"@abp/utils@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.3.tgz#6d3515694314175218606e9518618ce335b4b360"
integrity sha512-K2geJ9P1ztk4Ehzb9YG3CqqLOi+z8/4iBLUzooNZLQqS+KdlUhCmqfuCoI/A5Aq9DGbTYesalp+Fwoh3S2Dl8A==
"@abp/utils@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.4.tgz#e18ef1557a2600fa153db13162e1ed097bc6f15a"
integrity sha512-eT6RVfFsyB8uAdMHDdG4M2Erg3RrvkG7Z5Xa0ko7JIhEz5VwsRcXGwTAORYHsu0M1hpewZljdD5OmQRods13LA==
dependencies:
just-compare "^1.3.0"

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

@ -3,7 +3,7 @@
"name": "volo.blogtestapp",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "^6.0.0-rc.3",
"@abp/blogging": "^6.0.0-rc.3"
"@abp/aspnetcore.mvc.ui.theme.basic": "^6.0.0-rc.4",
"@abp/blogging": "^6.0.0-rc.4"
}
}

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

@ -2,37 +2,37 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.3.tgz#b95266387e562c635de795442f90470f8e9e6318"
integrity sha512-vVkEpotDST455E3rynvRQpBKPcNNJ2m1wLkz/B9dQNdUjvm8L4F6s0ls0XFlKUNvQfCVfedkRtGayuvNje/Oxg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.3"
"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.3.tgz#664ca2ee712b7d9e66103c00beb41eb9648a6075"
integrity sha512-KxCsGuoUWKaDo7Oo9aKp51pli2m0DZ2tG8m+zK+m4M9U7g96uC+DOFy3gc7MdPlszvrw32Wwm7I0AughstByNA==
dependencies:
"@abp/aspnetcore.mvc.ui" "~6.0.0-rc.3"
"@abp/bootstrap" "~6.0.0-rc.3"
"@abp/bootstrap-datepicker" "~6.0.0-rc.3"
"@abp/datatables.net-bs5" "~6.0.0-rc.3"
"@abp/font-awesome" "~6.0.0-rc.3"
"@abp/jquery-form" "~6.0.0-rc.3"
"@abp/jquery-validation-unobtrusive" "~6.0.0-rc.3"
"@abp/lodash" "~6.0.0-rc.3"
"@abp/luxon" "~6.0.0-rc.3"
"@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.3"
"@abp/select2" "~6.0.0-rc.3"
"@abp/sweetalert2" "~6.0.0-rc.3"
"@abp/timeago" "~6.0.0-rc.3"
"@abp/toastr" "~6.0.0-rc.3"
"@abp/aspnetcore.mvc.ui@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.3.tgz#47c23b57ed3908bd78a232230e53d1f3cba2de41"
integrity sha512-7eJZy2JUGQP94Tz3JJWXRHRmDfTcPZ/lS1/VNbU8B4qvgl5ChIXklVEJLR1fwrBhKXZV8fGVmqT1XlGTGFvFJA==
"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.4.tgz#f57efa6f3cabb48e40a44e79adb31de58145bf89"
integrity sha512-JcoXch+j+T9V3Lfu9Of9Tbcw5sNBpSbe42SjzUcXLqdVijV/DBWKMg/9OPH8KZ4PZwl4sl9DSAmGWXHdipLxzA==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.4"
"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.4.tgz#a0fd1e9f6f05d854d6f2119ed551a1cef485c929"
integrity sha512-QsrV+N6YFuMo/q73Bd1P0qDyG0Ua5JmQFgKzA94eMXDyYgpRrT5RyKh0CNV81Q/AX9V5c6APrtcQ31tYzmWwbQ==
dependencies:
"@abp/aspnetcore.mvc.ui" "~6.0.0-rc.4"
"@abp/bootstrap" "~6.0.0-rc.4"
"@abp/bootstrap-datepicker" "~6.0.0-rc.4"
"@abp/datatables.net-bs5" "~6.0.0-rc.4"
"@abp/font-awesome" "~6.0.0-rc.4"
"@abp/jquery-form" "~6.0.0-rc.4"
"@abp/jquery-validation-unobtrusive" "~6.0.0-rc.4"
"@abp/lodash" "~6.0.0-rc.4"
"@abp/luxon" "~6.0.0-rc.4"
"@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.4"
"@abp/select2" "~6.0.0-rc.4"
"@abp/sweetalert2" "~6.0.0-rc.4"
"@abp/timeago" "~6.0.0-rc.4"
"@abp/toastr" "~6.0.0-rc.4"
"@abp/aspnetcore.mvc.ui@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.4.tgz#de70d53a900db2f5c74719b7c4e406e0de4c2662"
integrity sha512-8GUoTG4B3Tz2Xd/cFaw9EAjOUoEfMG95VkjNqdfcvPPrtFML/W3fcMUwbjOvQ/lEnAMTSGREU3w9y7Y+GIv9qA==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -41,187 +41,187 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
"@abp/blogging@^6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-6.0.0-rc.3.tgz#604e3497bcdfa69a29d4cbbe062b5b691234a8c5"
integrity sha512-OZyqi2Xlq7PDDvmwcVRcssr0hElxSKGoa2UXXeqF8P7FP22TsMvuX81xsNtSn7Qlu3pcFs1pr4em+SfOb8H6jw==
"@abp/blogging@^6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-6.0.0-rc.4.tgz#45703574696ee193c03a748734bd1c9447af984c"
integrity sha512-qbG4V39aaS2QuIjttysiRgYcvBnegBH9RRwperFkxmyZSzULiTVBc/BYylT+FJMf7uFEKPV1Qe2V1ANQgpemHQ==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.3"
"@abp/owl.carousel" "~6.0.0-rc.3"
"@abp/prismjs" "~6.0.0-rc.3"
"@abp/tui-editor" "~6.0.0-rc.3"
"@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.4"
"@abp/owl.carousel" "~6.0.0-rc.4"
"@abp/prismjs" "~6.0.0-rc.4"
"@abp/tui-editor" "~6.0.0-rc.4"
"@abp/bootstrap-datepicker@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.3.tgz#89198b863dbfccf5f07ac3c4b20ce6199adcb17a"
integrity sha512-NLoUjcR66mqwSWuVftu2yFH4/j6QP+FiElRfZQ9OYmO8DQx2Ue5UZzjrFTrZ1DBBCfzhr2Bffj80dirGvGDyvg==
"@abp/bootstrap-datepicker@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.4.tgz#2dbc9f8f9816689b6db84948046a964ceb1bab17"
integrity sha512-tWPA3ehtU+QPKbxdLDzKk4p2wMNGo/R4CjCQydD1i9BIpkBUlA5sBtbNrLTvZ5/KM1RYecFGFrHTVVOzGsUKrA==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.3.tgz#4574bf574cc3484869e8ff8bc592f6212d20a969"
integrity sha512-Q5v7WRkGhGcjRg267HXtqs1oU7ts9UXPyCXmg5y2y5qMOyioD+m4MKV4iv67DgoQjabudp8X2egTKxkej6Lzkw==
"@abp/bootstrap@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.4.tgz#f360f86b00f474236ad182cd792df24f9ecbfc47"
integrity sha512-JjHJNPkTJRYwQvRnzTvcYIbxs2TD6n+LVtCd5ItYNbg8bMyd9yMugThxtgZGE3awVQqjLxZ4fwv+CRnf70JdrQ==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
bootstrap "^5.1.3"
"@abp/clipboard@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-6.0.0-rc.3.tgz#ee3a586b491d89442eefff08aaebbf9d38cb46d4"
integrity sha512-01svpp3mR29z1FTM+2Qe+MUNLPbl95bWlOXY5zz2hvNSbdD45lGud+BiOHfeZwlDk5jjr3FqLel+hxx2ByBvOA==
"@abp/clipboard@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-6.0.0-rc.4.tgz#a1f08eb23ebe7fcac0521aa992c6cebb9753c004"
integrity sha512-dX8l7Akyv5ecx7+Op8Cp/q4JslnhA9G0Eok4iPcnYwHh9NfSLnusack9x4u370Y+eShRxFiiBDq44ZsCN66h/Q==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
clipboard "^2.0.8"
"@abp/core@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.3.tgz#5662ce813d449d97d9fb7ea2552b2774c8df7825"
integrity sha512-X/VRdk5SGNYc5gQzPcBEPAvwcuD9WXsI4YIdrqjnes0s8u2/XmfrTixojh8Y5EYUoOblEE3Soj5hBhY1cVwcbQ==
"@abp/core@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.4.tgz#d164e1ca3546dc710c569ea7ae0145e1b713658e"
integrity sha512-mH3+BCU8Wbe0mieDHd5Awvhd09X7iJKRLBQBIINcDeIIOCJ9x4v8grynvndzlaS7J2AlWZba0XJU6sZ+YpuP2w==
dependencies:
"@abp/utils" "~6.0.0-rc.3"
"@abp/utils" "~6.0.0-rc.4"
"@abp/datatables.net-bs5@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.3.tgz#22865c7e621de720b71af6265b3193f6c78695bd"
integrity sha512-T+mhLc6uSzWmxDQogVwnJ6VxI4845gmF68/i9TmVKNlCtpa3EEfyuF/hgWT1hYfCb4XOsvd/CWrunbkC3fsmtg==
"@abp/datatables.net-bs5@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.4.tgz#fc3c43fb9ba8154b4b960ed0799948f5df738f7e"
integrity sha512-QtII4mFFFjvToM2LDqZugVh6/HwKbIdKYqHCxJKprZ1aVmyBeiMHi89z0G4eChAYdTpjHQstoDddYje53DkWOw==
dependencies:
"@abp/datatables.net" "~6.0.0-rc.3"
"@abp/datatables.net" "~6.0.0-rc.4"
datatables.net-bs5 "^1.11.4"
"@abp/datatables.net@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.3.tgz#d036defe6ad7fc989dffa020ae579362ee3150d1"
integrity sha512-4cUU8/Tn0Vz9bx7jjMOD/0Viyr29fcwoQAAkxaaYZp6qiQbENgz46/xpQf2oBCoudk8CLdzpmNa7jWte7PcJJw==
"@abp/datatables.net@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.4.tgz#f6916ba9a8089b573faddcc38e6a76e38a0dce16"
integrity sha512-9zhIvAO4AX6YIUELodEUz2hsDj+RITGoxWaav90jUJEqK/jVsDfs2mbrWcLzQDMLpZVElZA0p8tUyWS8yMsjaA==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
datatables.net "^1.11.4"
"@abp/font-awesome@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.3.tgz#803569d1a7e25f8a1c2be018312449c23fb78217"
integrity sha512-lYdh38UCTSkzzw0B/mpPEo7iFXzSKHCNbBOIHe6dd6O/Qli7wYukTtUOFn5Sh+yoydLY1as92HtiGL1ckSdu1g==
"@abp/font-awesome@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.4.tgz#a3e1664cbebdbc1aa4d2dd1ac48f022b3ce100ad"
integrity sha512-tlBekvBQ/wEkx1Z2sX8cPp/JKzxmTsMSUSbnAc/Uz+De/fxhyepUACb35zFSv2VmLPz1M1xqLvLUCJmciZhINQ==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
"@fortawesome/fontawesome-free" "^5.15.4"
"@abp/jquery-form@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.3.tgz#4ec503c07e2194148c3a7e7cf7ddef2871679e6a"
integrity sha512-Q3uEpflntqrSkYakcdsBnnYYfxJWXD/CDjMiwjbb6gIc8s4qkbIYxVxvYvlEezoIDYQkMSXOn7BS4clWsesiJg==
"@abp/jquery-form@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.4.tgz#4dfbef35e4d7dc80534e0f33644142a9ccd54cb4"
integrity sha512-/21ibf99c8q7ygbj2QF7GAGCW1MaalAurueffndTGZPRRSKrCVTPINtBih7NGgh1zcavhog+GBA3INJ3etQIWQ==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.3.tgz#01da2a59663d373ff1c69022f4c9c66ad0b29403"
integrity sha512-ij1ML2D9rYF3pJthWO6mGQajsJhbDCtOoBvnh9yCZccuwOYkXP22PqfUxjjxtqL4HqFI31KRpFg0ANMGSzEEBg==
"@abp/jquery-validation-unobtrusive@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.4.tgz#6a498b76076683bbc77d7a73fcf893863aecb59f"
integrity sha512-+9RAPaFYsuSZ05RtJJNeHl1PkyHm9Mv3WKAw+QrKHzaK34zpjD/cZdiijcAWM3DrNPiCCuaaUgMMIMn223MIEA==
dependencies:
"@abp/jquery-validation" "~6.0.0-rc.3"
"@abp/jquery-validation" "~6.0.0-rc.4"
jquery-validation-unobtrusive "^3.2.12"
"@abp/jquery-validation@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.3.tgz#724aea9572dcb2faccf8c6355332b0b2a4df9260"
integrity sha512-rTK5oHaMtycvWxunNwzbE/MbsXXIr6qDnOY3rVUmjTHjqUOHYz591t/XeQfjnSXPp4k/SZUjG6viTC3J2jzC1A==
"@abp/jquery-validation@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.4.tgz#2f79457d2c83795449eb6d3c82942568b0e6f273"
integrity sha512-a3v0QDWm2kqrr5r4Nim8unT7p5xHt8KR/TGmGiS6CNMRXVtd6SLMDg36D1d5AcBemFW5evlySiqAl2D7v+g0/g==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
jquery-validation "^1.19.3"
"@abp/jquery@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.3.tgz#ba19cc8b802c46490277939e6c674811127d8016"
integrity sha512-MbD38iInyag7/j5k42cvMT4jLZMtXH4lUK0rjvqUDVaxKEks46Ix/90uczQ9XajYONgx0CJKFj2urgM830+CCA==
"@abp/jquery@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.4.tgz#992222c2e233840ce7bf573b8bb15b0c9c15adde"
integrity sha512-JRf9NltPP++RAfPRvWFoYNgs2i/ydyROjtLSnCGdmO4UwAQZ21YuDY7x0Ia7VSj0a6cFg8d7M2PGIeJlcaXIsg==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
jquery "~3.6.0"
"@abp/lodash@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.3.tgz#8a5bab02353e5cab4ca06ab82f6dbe6285faa95a"
integrity sha512-c8yhcapzPsXyeiFjeOC+2a4bn5wFjW5gUoN+p/p+tE+FIcH37yEgyw/tAr6aZPCmR770MqQXct4t7S4Czbbk+A==
"@abp/lodash@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.4.tgz#2c88a9274e6c27334f277404280d43b2fbae6552"
integrity sha512-yOEe3SVvh5IuFMujSgC4waG0JzWzRQj907KUYzjcjfx35J5Q0Mwvu6/9wRYJx1av40YQdnzMrRoqXKDPAKdV6A==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
lodash "^4.17.21"
"@abp/luxon@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.3.tgz#ba515e122c61918d481467d5be39f08a363822f6"
integrity sha512-2lRSSC0DYShlnKdbJ/Pmha/azjt09ZRPx57NQ01dc7ungChPry5EJL6pC3kXWnJrCkrPCF0V5+A3+taut9+l3A==
"@abp/luxon@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.4.tgz#95ae8f70d9b5d8cd753cc7d918c611692d5bf218"
integrity sha512-OFs4Uv82YienRwiiVV78hdWSanS19lvjoBBskPF5s6LK/5mzLMrtbHBRf18wcc/AfBMOxot1BX2q1v4wb2u3qw==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
luxon "^2.3.0"
"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.3.tgz#0798e37ec6a852748118692a5fbd30c99d9745db"
integrity sha512-FlyShmRxG3wGk1OJCjHIZAdi2/Y2FJPkVxaE72CVIceQSmg0nebGTv3a7bhd4QzKkDsSA3+t6gHjnuKlTlDFLA==
"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.4.tgz#f40968c7f64eb6b36ff2bf06b4be8661308abd12"
integrity sha512-lcOskhl+NbPqKBxg+GABYBBrMtHYw2qZ/srFix7DgGUdNlFbXRP/AtTz0Wiav0PNGZgivniRLqvqcLCiCkrBrg==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/owl.carousel@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-6.0.0-rc.3.tgz#5d5884a622e6423cc73175a2cd376c892325be20"
integrity sha512-4KGPzfGUEeN2CN+EtYYKuhJU1nb1OIQd1Fxi6DmkFYeN/9KdgS8dwGZjMvFxYde+BfhDZP1zrfS6ZbpJKkzsPQ==
"@abp/owl.carousel@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-6.0.0-rc.4.tgz#8ec2828f45e9b393e94cf09dc311391190d68628"
integrity sha512-CrCntx6qdbuGZaBx9D98QMfuyyLZ9HE/ws5UhWBLmGlk+3pkk1EIBrXrgUud6md7WCSDVfVShUJWhHzej5DBUQ==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
owl.carousel "^2.3.4"
"@abp/prismjs@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-6.0.0-rc.3.tgz#e4faf595e29db81c5a66030e59b0e09f09759bfd"
integrity sha512-zzd3iw/Im0M9FUmTviwkTCr4slkoZJExtK+qB1FmLxRY59+hyU9wxd6hwzic/QwhXxFQoYILJ3S3FNxsPIm76A==
"@abp/prismjs@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-6.0.0-rc.4.tgz#9338018487dde7ddc5384cdfbdc35c655a8fd444"
integrity sha512-F1t7ySbj+M6LDmgbvvcY2bFl0heEj1vz14YOnmwMNUhJcaLQXamgyKsWBu5UkEHUJ11DQyjIu5gjoRXbraucdA==
dependencies:
"@abp/clipboard" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.3"
"@abp/clipboard" "~6.0.0-rc.4"
"@abp/core" "~6.0.0-rc.4"
prismjs "^1.26.0"
"@abp/select2@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.3.tgz#deb8332bfce2102a562004893321a48d5194bf53"
integrity sha512-rb0qElmmhiP09xX8ZbjzNLF6ygFBwErysGWt6Bbgzz5waX2sGe575Cgoz53FaMQ4JaRBg1N0/nCejKyDtiINRA==
"@abp/select2@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.4.tgz#c7cf0f910fa6a9f97845a0659178ac02cfa022bc"
integrity sha512-NcXMZYiLDSVnjtRgvPwm9RB1M7qZnRyyyM+htdH5laEvDDGCcOLFS8iK6WI4Irmvw6MhBkDTHaH9ssJNbF7pvQ==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
select2 "^4.0.13"
"@abp/sweetalert2@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.3.tgz#e61fc6c1bed1316c1d44ca5c92f590e422db24d4"
integrity sha512-+SNpBb4XrQlWzRQK9lfdJqA9IfJrlgoqmHwPDgf3Q+P922MzO33TgDlZWbeE7MzVj2y2WmNsPuCKwhjSjSL2rw==
"@abp/sweetalert2@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.4.tgz#a1a2a1a5d7e1fb83680cc35ca477cee1f2f2463b"
integrity sha512-dvslRK2oc06JjI6aV1dj1LzWbOb50BfwbHxcmOenl8Q4XMP389bFbaOiVezjk+d3YLsspCMDxxu2NTqaq67Z6g==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
sweetalert2 "^11.3.6"
"@abp/timeago@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.3.tgz#0ef8c4801bfd4623e6895b1d047b1437063bda53"
integrity sha512-P3YRDVKjR5/Fz+cXiPg3IiUr7XGbNh7mgmJ1ywRXmKVmVMJmhQ2RsKmmtkGJn4TfVHu/l5iJXe4rqgL21/yX/g==
"@abp/timeago@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.4.tgz#3a93a65ee6b8260f7e80bb862b60623e967e08a2"
integrity sha512-/ZZy5E3PHtvmkjg+s9BvgO344DOs0jiifimDntp5jZPQPrsQ5WPC9o9hrlGb40tTw5P0wAnznjGvHnZjBiflvA==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
timeago "^1.6.7"
"@abp/toastr@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.3.tgz#6010d4247937531ebf7c8659d6254cd3db6c4855"
integrity sha512-sC9eCzYVgDrLSFIhJGe9hshzfwA1BkZNah4NQhyq+V6HQ8YF7goMS79N+/XmSoLQ9zzRhusqnPFnb+4FHjr7iA==
"@abp/toastr@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.4.tgz#3bf6abc79baf7a2b7de9840e55caf839018ab96e"
integrity sha512-zesojzXYsFd57m7XBgxLwKeAs8HRe25iNKRGC0YR7MK2HP1770jc+dEjnQ0pnqhMHouZejFJZcpqdHGr85ZUgQ==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
toastr "^2.1.4"
"@abp/tui-editor@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-6.0.0-rc.3.tgz#7e913a80139af381d881f2b0205d4938ec6f6ca3"
integrity sha512-FC+gyHMn/FecAb8sVNFwf9FcJ035Lqm+LwiIXckS2VaSTbuKna0K/ADlOoSr1Ntwe5GWptZ93STIgSt1QJPdEw==
"@abp/tui-editor@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-6.0.0-rc.4.tgz#58b4f7ea991a4a805bedac7f5fd5bb314dd4d8bc"
integrity sha512-1bMvVUeFUzcQB3SmNhW9K4CC5isoMTUJ4pY2OKf4Y9RgKsTUOEuaUwzSoJwDLj4mlzdLTee4/Rxi4zhdnkxDaA==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/prismjs" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
"@abp/prismjs" "~6.0.0-rc.4"
"@abp/utils@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.3.tgz#6d3515694314175218606e9518618ce335b4b360"
integrity sha512-K2geJ9P1ztk4Ehzb9YG3CqqLOi+z8/4iBLUzooNZLQqS+KdlUhCmqfuCoI/A5Aq9DGbTYesalp+Fwoh3S2Dl8A==
"@abp/utils@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.4.tgz#e18ef1557a2600fa153db13162e1ed097bc6f15a"
integrity sha512-eT6RVfFsyB8uAdMHDdG4M2Erg3RrvkG7Z5Xa0ko7JIhEz5VwsRcXGwTAORYHsu0M1hpewZljdD5OmQRods13LA==
dependencies:
just-compare "^1.3.0"

4
modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/tr.json

@ -56,6 +56,8 @@
"ShareOn": "Paylaş",
"TitleLengthWarning": "Başlığınınz SEO dostu olabilmesi için 60 karakterden az olmasını sağlayın!",
"ClearCache": "Önbelleği temizle",
"ClearCacheConfirmationMessage": "Önbelleği temizlemek istediğinizden emin misiniz?"
"ClearCacheConfirmationMessage": "Önbelleği temizlemek istediğinizden emin misiniz?",
"MarkdownSupported": "Markdown destekleniyor",
"FileUploadInfo": "Kopyalanan bir görüntüyü sürükleyin, bırakın veya yapıştırın."
}
}

2
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": "^6.0.0-rc.3"
"@abp/aspnetcore.mvc.ui.theme.basic": "^6.0.0-rc.4"
}
}

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

@ -2,37 +2,37 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.3.tgz#b95266387e562c635de795442f90470f8e9e6318"
integrity sha512-vVkEpotDST455E3rynvRQpBKPcNNJ2m1wLkz/B9dQNdUjvm8L4F6s0ls0XFlKUNvQfCVfedkRtGayuvNje/Oxg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.3"
"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.3.tgz#664ca2ee712b7d9e66103c00beb41eb9648a6075"
integrity sha512-KxCsGuoUWKaDo7Oo9aKp51pli2m0DZ2tG8m+zK+m4M9U7g96uC+DOFy3gc7MdPlszvrw32Wwm7I0AughstByNA==
dependencies:
"@abp/aspnetcore.mvc.ui" "~6.0.0-rc.3"
"@abp/bootstrap" "~6.0.0-rc.3"
"@abp/bootstrap-datepicker" "~6.0.0-rc.3"
"@abp/datatables.net-bs5" "~6.0.0-rc.3"
"@abp/font-awesome" "~6.0.0-rc.3"
"@abp/jquery-form" "~6.0.0-rc.3"
"@abp/jquery-validation-unobtrusive" "~6.0.0-rc.3"
"@abp/lodash" "~6.0.0-rc.3"
"@abp/luxon" "~6.0.0-rc.3"
"@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.3"
"@abp/select2" "~6.0.0-rc.3"
"@abp/sweetalert2" "~6.0.0-rc.3"
"@abp/timeago" "~6.0.0-rc.3"
"@abp/toastr" "~6.0.0-rc.3"
"@abp/aspnetcore.mvc.ui@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.3.tgz#47c23b57ed3908bd78a232230e53d1f3cba2de41"
integrity sha512-7eJZy2JUGQP94Tz3JJWXRHRmDfTcPZ/lS1/VNbU8B4qvgl5ChIXklVEJLR1fwrBhKXZV8fGVmqT1XlGTGFvFJA==
"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.4.tgz#f57efa6f3cabb48e40a44e79adb31de58145bf89"
integrity sha512-JcoXch+j+T9V3Lfu9Of9Tbcw5sNBpSbe42SjzUcXLqdVijV/DBWKMg/9OPH8KZ4PZwl4sl9DSAmGWXHdipLxzA==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.4"
"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.4.tgz#a0fd1e9f6f05d854d6f2119ed551a1cef485c929"
integrity sha512-QsrV+N6YFuMo/q73Bd1P0qDyG0Ua5JmQFgKzA94eMXDyYgpRrT5RyKh0CNV81Q/AX9V5c6APrtcQ31tYzmWwbQ==
dependencies:
"@abp/aspnetcore.mvc.ui" "~6.0.0-rc.4"
"@abp/bootstrap" "~6.0.0-rc.4"
"@abp/bootstrap-datepicker" "~6.0.0-rc.4"
"@abp/datatables.net-bs5" "~6.0.0-rc.4"
"@abp/font-awesome" "~6.0.0-rc.4"
"@abp/jquery-form" "~6.0.0-rc.4"
"@abp/jquery-validation-unobtrusive" "~6.0.0-rc.4"
"@abp/lodash" "~6.0.0-rc.4"
"@abp/luxon" "~6.0.0-rc.4"
"@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.4"
"@abp/select2" "~6.0.0-rc.4"
"@abp/sweetalert2" "~6.0.0-rc.4"
"@abp/timeago" "~6.0.0-rc.4"
"@abp/toastr" "~6.0.0-rc.4"
"@abp/aspnetcore.mvc.ui@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.4.tgz#de70d53a900db2f5c74719b7c4e406e0de4c2662"
integrity sha512-8GUoTG4B3Tz2Xd/cFaw9EAjOUoEfMG95VkjNqdfcvPPrtFML/W3fcMUwbjOvQ/lEnAMTSGREU3w9y7Y+GIv9qA==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -41,144 +41,144 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
"@abp/bootstrap-datepicker@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.3.tgz#89198b863dbfccf5f07ac3c4b20ce6199adcb17a"
integrity sha512-NLoUjcR66mqwSWuVftu2yFH4/j6QP+FiElRfZQ9OYmO8DQx2Ue5UZzjrFTrZ1DBBCfzhr2Bffj80dirGvGDyvg==
"@abp/bootstrap-datepicker@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.4.tgz#2dbc9f8f9816689b6db84948046a964ceb1bab17"
integrity sha512-tWPA3ehtU+QPKbxdLDzKk4p2wMNGo/R4CjCQydD1i9BIpkBUlA5sBtbNrLTvZ5/KM1RYecFGFrHTVVOzGsUKrA==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.3.tgz#4574bf574cc3484869e8ff8bc592f6212d20a969"
integrity sha512-Q5v7WRkGhGcjRg267HXtqs1oU7ts9UXPyCXmg5y2y5qMOyioD+m4MKV4iv67DgoQjabudp8X2egTKxkej6Lzkw==
"@abp/bootstrap@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.4.tgz#f360f86b00f474236ad182cd792df24f9ecbfc47"
integrity sha512-JjHJNPkTJRYwQvRnzTvcYIbxs2TD6n+LVtCd5ItYNbg8bMyd9yMugThxtgZGE3awVQqjLxZ4fwv+CRnf70JdrQ==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
bootstrap "^5.1.3"
"@abp/core@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.3.tgz#5662ce813d449d97d9fb7ea2552b2774c8df7825"
integrity sha512-X/VRdk5SGNYc5gQzPcBEPAvwcuD9WXsI4YIdrqjnes0s8u2/XmfrTixojh8Y5EYUoOblEE3Soj5hBhY1cVwcbQ==
"@abp/core@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.4.tgz#d164e1ca3546dc710c569ea7ae0145e1b713658e"
integrity sha512-mH3+BCU8Wbe0mieDHd5Awvhd09X7iJKRLBQBIINcDeIIOCJ9x4v8grynvndzlaS7J2AlWZba0XJU6sZ+YpuP2w==
dependencies:
"@abp/utils" "~6.0.0-rc.3"
"@abp/utils" "~6.0.0-rc.4"
"@abp/datatables.net-bs5@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.3.tgz#22865c7e621de720b71af6265b3193f6c78695bd"
integrity sha512-T+mhLc6uSzWmxDQogVwnJ6VxI4845gmF68/i9TmVKNlCtpa3EEfyuF/hgWT1hYfCb4XOsvd/CWrunbkC3fsmtg==
"@abp/datatables.net-bs5@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.4.tgz#fc3c43fb9ba8154b4b960ed0799948f5df738f7e"
integrity sha512-QtII4mFFFjvToM2LDqZugVh6/HwKbIdKYqHCxJKprZ1aVmyBeiMHi89z0G4eChAYdTpjHQstoDddYje53DkWOw==
dependencies:
"@abp/datatables.net" "~6.0.0-rc.3"
"@abp/datatables.net" "~6.0.0-rc.4"
datatables.net-bs5 "^1.11.4"
"@abp/datatables.net@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.3.tgz#d036defe6ad7fc989dffa020ae579362ee3150d1"
integrity sha512-4cUU8/Tn0Vz9bx7jjMOD/0Viyr29fcwoQAAkxaaYZp6qiQbENgz46/xpQf2oBCoudk8CLdzpmNa7jWte7PcJJw==
"@abp/datatables.net@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.4.tgz#f6916ba9a8089b573faddcc38e6a76e38a0dce16"
integrity sha512-9zhIvAO4AX6YIUELodEUz2hsDj+RITGoxWaav90jUJEqK/jVsDfs2mbrWcLzQDMLpZVElZA0p8tUyWS8yMsjaA==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
datatables.net "^1.11.4"
"@abp/font-awesome@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.3.tgz#803569d1a7e25f8a1c2be018312449c23fb78217"
integrity sha512-lYdh38UCTSkzzw0B/mpPEo7iFXzSKHCNbBOIHe6dd6O/Qli7wYukTtUOFn5Sh+yoydLY1as92HtiGL1ckSdu1g==
"@abp/font-awesome@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.4.tgz#a3e1664cbebdbc1aa4d2dd1ac48f022b3ce100ad"
integrity sha512-tlBekvBQ/wEkx1Z2sX8cPp/JKzxmTsMSUSbnAc/Uz+De/fxhyepUACb35zFSv2VmLPz1M1xqLvLUCJmciZhINQ==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
"@fortawesome/fontawesome-free" "^5.15.4"
"@abp/jquery-form@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.3.tgz#4ec503c07e2194148c3a7e7cf7ddef2871679e6a"
integrity sha512-Q3uEpflntqrSkYakcdsBnnYYfxJWXD/CDjMiwjbb6gIc8s4qkbIYxVxvYvlEezoIDYQkMSXOn7BS4clWsesiJg==
"@abp/jquery-form@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.4.tgz#4dfbef35e4d7dc80534e0f33644142a9ccd54cb4"
integrity sha512-/21ibf99c8q7ygbj2QF7GAGCW1MaalAurueffndTGZPRRSKrCVTPINtBih7NGgh1zcavhog+GBA3INJ3etQIWQ==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.3.tgz#01da2a59663d373ff1c69022f4c9c66ad0b29403"
integrity sha512-ij1ML2D9rYF3pJthWO6mGQajsJhbDCtOoBvnh9yCZccuwOYkXP22PqfUxjjxtqL4HqFI31KRpFg0ANMGSzEEBg==
"@abp/jquery-validation-unobtrusive@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.4.tgz#6a498b76076683bbc77d7a73fcf893863aecb59f"
integrity sha512-+9RAPaFYsuSZ05RtJJNeHl1PkyHm9Mv3WKAw+QrKHzaK34zpjD/cZdiijcAWM3DrNPiCCuaaUgMMIMn223MIEA==
dependencies:
"@abp/jquery-validation" "~6.0.0-rc.3"
"@abp/jquery-validation" "~6.0.0-rc.4"
jquery-validation-unobtrusive "^3.2.12"
"@abp/jquery-validation@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.3.tgz#724aea9572dcb2faccf8c6355332b0b2a4df9260"
integrity sha512-rTK5oHaMtycvWxunNwzbE/MbsXXIr6qDnOY3rVUmjTHjqUOHYz591t/XeQfjnSXPp4k/SZUjG6viTC3J2jzC1A==
"@abp/jquery-validation@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.4.tgz#2f79457d2c83795449eb6d3c82942568b0e6f273"
integrity sha512-a3v0QDWm2kqrr5r4Nim8unT7p5xHt8KR/TGmGiS6CNMRXVtd6SLMDg36D1d5AcBemFW5evlySiqAl2D7v+g0/g==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
jquery-validation "^1.19.3"
"@abp/jquery@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.3.tgz#ba19cc8b802c46490277939e6c674811127d8016"
integrity sha512-MbD38iInyag7/j5k42cvMT4jLZMtXH4lUK0rjvqUDVaxKEks46Ix/90uczQ9XajYONgx0CJKFj2urgM830+CCA==
"@abp/jquery@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.4.tgz#992222c2e233840ce7bf573b8bb15b0c9c15adde"
integrity sha512-JRf9NltPP++RAfPRvWFoYNgs2i/ydyROjtLSnCGdmO4UwAQZ21YuDY7x0Ia7VSj0a6cFg8d7M2PGIeJlcaXIsg==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
jquery "~3.6.0"
"@abp/lodash@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.3.tgz#8a5bab02353e5cab4ca06ab82f6dbe6285faa95a"
integrity sha512-c8yhcapzPsXyeiFjeOC+2a4bn5wFjW5gUoN+p/p+tE+FIcH37yEgyw/tAr6aZPCmR770MqQXct4t7S4Czbbk+A==
"@abp/lodash@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.4.tgz#2c88a9274e6c27334f277404280d43b2fbae6552"
integrity sha512-yOEe3SVvh5IuFMujSgC4waG0JzWzRQj907KUYzjcjfx35J5Q0Mwvu6/9wRYJx1av40YQdnzMrRoqXKDPAKdV6A==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
lodash "^4.17.21"
"@abp/luxon@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.3.tgz#ba515e122c61918d481467d5be39f08a363822f6"
integrity sha512-2lRSSC0DYShlnKdbJ/Pmha/azjt09ZRPx57NQ01dc7ungChPry5EJL6pC3kXWnJrCkrPCF0V5+A3+taut9+l3A==
"@abp/luxon@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.4.tgz#95ae8f70d9b5d8cd753cc7d918c611692d5bf218"
integrity sha512-OFs4Uv82YienRwiiVV78hdWSanS19lvjoBBskPF5s6LK/5mzLMrtbHBRf18wcc/AfBMOxot1BX2q1v4wb2u3qw==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
luxon "^2.3.0"
"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.3.tgz#0798e37ec6a852748118692a5fbd30c99d9745db"
integrity sha512-FlyShmRxG3wGk1OJCjHIZAdi2/Y2FJPkVxaE72CVIceQSmg0nebGTv3a7bhd4QzKkDsSA3+t6gHjnuKlTlDFLA==
"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.4.tgz#f40968c7f64eb6b36ff2bf06b4be8661308abd12"
integrity sha512-lcOskhl+NbPqKBxg+GABYBBrMtHYw2qZ/srFix7DgGUdNlFbXRP/AtTz0Wiav0PNGZgivniRLqvqcLCiCkrBrg==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/select2@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.3.tgz#deb8332bfce2102a562004893321a48d5194bf53"
integrity sha512-rb0qElmmhiP09xX8ZbjzNLF6ygFBwErysGWt6Bbgzz5waX2sGe575Cgoz53FaMQ4JaRBg1N0/nCejKyDtiINRA==
"@abp/select2@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.4.tgz#c7cf0f910fa6a9f97845a0659178ac02cfa022bc"
integrity sha512-NcXMZYiLDSVnjtRgvPwm9RB1M7qZnRyyyM+htdH5laEvDDGCcOLFS8iK6WI4Irmvw6MhBkDTHaH9ssJNbF7pvQ==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
select2 "^4.0.13"
"@abp/sweetalert2@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.3.tgz#e61fc6c1bed1316c1d44ca5c92f590e422db24d4"
integrity sha512-+SNpBb4XrQlWzRQK9lfdJqA9IfJrlgoqmHwPDgf3Q+P922MzO33TgDlZWbeE7MzVj2y2WmNsPuCKwhjSjSL2rw==
"@abp/sweetalert2@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.4.tgz#a1a2a1a5d7e1fb83680cc35ca477cee1f2f2463b"
integrity sha512-dvslRK2oc06JjI6aV1dj1LzWbOb50BfwbHxcmOenl8Q4XMP389bFbaOiVezjk+d3YLsspCMDxxu2NTqaq67Z6g==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
sweetalert2 "^11.3.6"
"@abp/timeago@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.3.tgz#0ef8c4801bfd4623e6895b1d047b1437063bda53"
integrity sha512-P3YRDVKjR5/Fz+cXiPg3IiUr7XGbNh7mgmJ1ywRXmKVmVMJmhQ2RsKmmtkGJn4TfVHu/l5iJXe4rqgL21/yX/g==
"@abp/timeago@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.4.tgz#3a93a65ee6b8260f7e80bb862b60623e967e08a2"
integrity sha512-/ZZy5E3PHtvmkjg+s9BvgO344DOs0jiifimDntp5jZPQPrsQ5WPC9o9hrlGb40tTw5P0wAnznjGvHnZjBiflvA==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
timeago "^1.6.7"
"@abp/toastr@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.3.tgz#6010d4247937531ebf7c8659d6254cd3db6c4855"
integrity sha512-sC9eCzYVgDrLSFIhJGe9hshzfwA1BkZNah4NQhyq+V6HQ8YF7goMS79N+/XmSoLQ9zzRhusqnPFnb+4FHjr7iA==
"@abp/toastr@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.4.tgz#3bf6abc79baf7a2b7de9840e55caf839018ab96e"
integrity sha512-zesojzXYsFd57m7XBgxLwKeAs8HRe25iNKRGC0YR7MK2HP1770jc+dEjnQ0pnqhMHouZejFJZcpqdHGr85ZUgQ==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
toastr "^2.1.4"
"@abp/utils@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.3.tgz#6d3515694314175218606e9518618ce335b4b360"
integrity sha512-K2geJ9P1ztk4Ehzb9YG3CqqLOi+z8/4iBLUzooNZLQqS+KdlUhCmqfuCoI/A5Aq9DGbTYesalp+Fwoh3S2Dl8A==
"@abp/utils@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.4.tgz#e18ef1557a2600fa153db13162e1ed097bc6f15a"
integrity sha512-eT6RVfFsyB8uAdMHDdG4M2Erg3RrvkG7Z5Xa0ko7JIhEz5VwsRcXGwTAORYHsu0M1hpewZljdD5OmQRods13LA==
dependencies:
just-compare "^1.3.0"

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

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

4
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": ">=6.0.0-rc.3",
"@abp/ng.theme.shared": ">=6.0.0-rc.3"
"@abp/ng.core": ">=6.0.0-rc.4",
"@abp/ng.theme.shared": ">=6.0.0-rc.4"
},
"dependencies": {
"tslib": "^2.0.0"

2
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": "^6.0.0-rc.3"
"@abp/aspnetcore.mvc.ui.theme.basic": "^6.0.0-rc.4"
}
}

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

@ -2,37 +2,37 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.3.tgz#b95266387e562c635de795442f90470f8e9e6318"
integrity sha512-vVkEpotDST455E3rynvRQpBKPcNNJ2m1wLkz/B9dQNdUjvm8L4F6s0ls0XFlKUNvQfCVfedkRtGayuvNje/Oxg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.3"
"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.3.tgz#664ca2ee712b7d9e66103c00beb41eb9648a6075"
integrity sha512-KxCsGuoUWKaDo7Oo9aKp51pli2m0DZ2tG8m+zK+m4M9U7g96uC+DOFy3gc7MdPlszvrw32Wwm7I0AughstByNA==
dependencies:
"@abp/aspnetcore.mvc.ui" "~6.0.0-rc.3"
"@abp/bootstrap" "~6.0.0-rc.3"
"@abp/bootstrap-datepicker" "~6.0.0-rc.3"
"@abp/datatables.net-bs5" "~6.0.0-rc.3"
"@abp/font-awesome" "~6.0.0-rc.3"
"@abp/jquery-form" "~6.0.0-rc.3"
"@abp/jquery-validation-unobtrusive" "~6.0.0-rc.3"
"@abp/lodash" "~6.0.0-rc.3"
"@abp/luxon" "~6.0.0-rc.3"
"@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.3"
"@abp/select2" "~6.0.0-rc.3"
"@abp/sweetalert2" "~6.0.0-rc.3"
"@abp/timeago" "~6.0.0-rc.3"
"@abp/toastr" "~6.0.0-rc.3"
"@abp/aspnetcore.mvc.ui@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.3.tgz#47c23b57ed3908bd78a232230e53d1f3cba2de41"
integrity sha512-7eJZy2JUGQP94Tz3JJWXRHRmDfTcPZ/lS1/VNbU8B4qvgl5ChIXklVEJLR1fwrBhKXZV8fGVmqT1XlGTGFvFJA==
"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.4.tgz#f57efa6f3cabb48e40a44e79adb31de58145bf89"
integrity sha512-JcoXch+j+T9V3Lfu9Of9Tbcw5sNBpSbe42SjzUcXLqdVijV/DBWKMg/9OPH8KZ4PZwl4sl9DSAmGWXHdipLxzA==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.4"
"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.4.tgz#a0fd1e9f6f05d854d6f2119ed551a1cef485c929"
integrity sha512-QsrV+N6YFuMo/q73Bd1P0qDyG0Ua5JmQFgKzA94eMXDyYgpRrT5RyKh0CNV81Q/AX9V5c6APrtcQ31tYzmWwbQ==
dependencies:
"@abp/aspnetcore.mvc.ui" "~6.0.0-rc.4"
"@abp/bootstrap" "~6.0.0-rc.4"
"@abp/bootstrap-datepicker" "~6.0.0-rc.4"
"@abp/datatables.net-bs5" "~6.0.0-rc.4"
"@abp/font-awesome" "~6.0.0-rc.4"
"@abp/jquery-form" "~6.0.0-rc.4"
"@abp/jquery-validation-unobtrusive" "~6.0.0-rc.4"
"@abp/lodash" "~6.0.0-rc.4"
"@abp/luxon" "~6.0.0-rc.4"
"@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.4"
"@abp/select2" "~6.0.0-rc.4"
"@abp/sweetalert2" "~6.0.0-rc.4"
"@abp/timeago" "~6.0.0-rc.4"
"@abp/toastr" "~6.0.0-rc.4"
"@abp/aspnetcore.mvc.ui@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.4.tgz#de70d53a900db2f5c74719b7c4e406e0de4c2662"
integrity sha512-8GUoTG4B3Tz2Xd/cFaw9EAjOUoEfMG95VkjNqdfcvPPrtFML/W3fcMUwbjOvQ/lEnAMTSGREU3w9y7Y+GIv9qA==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -41,144 +41,144 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
"@abp/bootstrap-datepicker@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.3.tgz#89198b863dbfccf5f07ac3c4b20ce6199adcb17a"
integrity sha512-NLoUjcR66mqwSWuVftu2yFH4/j6QP+FiElRfZQ9OYmO8DQx2Ue5UZzjrFTrZ1DBBCfzhr2Bffj80dirGvGDyvg==
"@abp/bootstrap-datepicker@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.4.tgz#2dbc9f8f9816689b6db84948046a964ceb1bab17"
integrity sha512-tWPA3ehtU+QPKbxdLDzKk4p2wMNGo/R4CjCQydD1i9BIpkBUlA5sBtbNrLTvZ5/KM1RYecFGFrHTVVOzGsUKrA==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.3.tgz#4574bf574cc3484869e8ff8bc592f6212d20a969"
integrity sha512-Q5v7WRkGhGcjRg267HXtqs1oU7ts9UXPyCXmg5y2y5qMOyioD+m4MKV4iv67DgoQjabudp8X2egTKxkej6Lzkw==
"@abp/bootstrap@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.4.tgz#f360f86b00f474236ad182cd792df24f9ecbfc47"
integrity sha512-JjHJNPkTJRYwQvRnzTvcYIbxs2TD6n+LVtCd5ItYNbg8bMyd9yMugThxtgZGE3awVQqjLxZ4fwv+CRnf70JdrQ==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
bootstrap "^5.1.3"
"@abp/core@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.3.tgz#5662ce813d449d97d9fb7ea2552b2774c8df7825"
integrity sha512-X/VRdk5SGNYc5gQzPcBEPAvwcuD9WXsI4YIdrqjnes0s8u2/XmfrTixojh8Y5EYUoOblEE3Soj5hBhY1cVwcbQ==
"@abp/core@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.4.tgz#d164e1ca3546dc710c569ea7ae0145e1b713658e"
integrity sha512-mH3+BCU8Wbe0mieDHd5Awvhd09X7iJKRLBQBIINcDeIIOCJ9x4v8grynvndzlaS7J2AlWZba0XJU6sZ+YpuP2w==
dependencies:
"@abp/utils" "~6.0.0-rc.3"
"@abp/utils" "~6.0.0-rc.4"
"@abp/datatables.net-bs5@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.3.tgz#22865c7e621de720b71af6265b3193f6c78695bd"
integrity sha512-T+mhLc6uSzWmxDQogVwnJ6VxI4845gmF68/i9TmVKNlCtpa3EEfyuF/hgWT1hYfCb4XOsvd/CWrunbkC3fsmtg==
"@abp/datatables.net-bs5@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.4.tgz#fc3c43fb9ba8154b4b960ed0799948f5df738f7e"
integrity sha512-QtII4mFFFjvToM2LDqZugVh6/HwKbIdKYqHCxJKprZ1aVmyBeiMHi89z0G4eChAYdTpjHQstoDddYje53DkWOw==
dependencies:
"@abp/datatables.net" "~6.0.0-rc.3"
"@abp/datatables.net" "~6.0.0-rc.4"
datatables.net-bs5 "^1.11.4"
"@abp/datatables.net@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.3.tgz#d036defe6ad7fc989dffa020ae579362ee3150d1"
integrity sha512-4cUU8/Tn0Vz9bx7jjMOD/0Viyr29fcwoQAAkxaaYZp6qiQbENgz46/xpQf2oBCoudk8CLdzpmNa7jWte7PcJJw==
"@abp/datatables.net@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.4.tgz#f6916ba9a8089b573faddcc38e6a76e38a0dce16"
integrity sha512-9zhIvAO4AX6YIUELodEUz2hsDj+RITGoxWaav90jUJEqK/jVsDfs2mbrWcLzQDMLpZVElZA0p8tUyWS8yMsjaA==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
datatables.net "^1.11.4"
"@abp/font-awesome@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.3.tgz#803569d1a7e25f8a1c2be018312449c23fb78217"
integrity sha512-lYdh38UCTSkzzw0B/mpPEo7iFXzSKHCNbBOIHe6dd6O/Qli7wYukTtUOFn5Sh+yoydLY1as92HtiGL1ckSdu1g==
"@abp/font-awesome@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.4.tgz#a3e1664cbebdbc1aa4d2dd1ac48f022b3ce100ad"
integrity sha512-tlBekvBQ/wEkx1Z2sX8cPp/JKzxmTsMSUSbnAc/Uz+De/fxhyepUACb35zFSv2VmLPz1M1xqLvLUCJmciZhINQ==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
"@fortawesome/fontawesome-free" "^5.15.4"
"@abp/jquery-form@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.3.tgz#4ec503c07e2194148c3a7e7cf7ddef2871679e6a"
integrity sha512-Q3uEpflntqrSkYakcdsBnnYYfxJWXD/CDjMiwjbb6gIc8s4qkbIYxVxvYvlEezoIDYQkMSXOn7BS4clWsesiJg==
"@abp/jquery-form@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.4.tgz#4dfbef35e4d7dc80534e0f33644142a9ccd54cb4"
integrity sha512-/21ibf99c8q7ygbj2QF7GAGCW1MaalAurueffndTGZPRRSKrCVTPINtBih7NGgh1zcavhog+GBA3INJ3etQIWQ==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.3.tgz#01da2a59663d373ff1c69022f4c9c66ad0b29403"
integrity sha512-ij1ML2D9rYF3pJthWO6mGQajsJhbDCtOoBvnh9yCZccuwOYkXP22PqfUxjjxtqL4HqFI31KRpFg0ANMGSzEEBg==
"@abp/jquery-validation-unobtrusive@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.4.tgz#6a498b76076683bbc77d7a73fcf893863aecb59f"
integrity sha512-+9RAPaFYsuSZ05RtJJNeHl1PkyHm9Mv3WKAw+QrKHzaK34zpjD/cZdiijcAWM3DrNPiCCuaaUgMMIMn223MIEA==
dependencies:
"@abp/jquery-validation" "~6.0.0-rc.3"
"@abp/jquery-validation" "~6.0.0-rc.4"
jquery-validation-unobtrusive "^3.2.12"
"@abp/jquery-validation@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.3.tgz#724aea9572dcb2faccf8c6355332b0b2a4df9260"
integrity sha512-rTK5oHaMtycvWxunNwzbE/MbsXXIr6qDnOY3rVUmjTHjqUOHYz591t/XeQfjnSXPp4k/SZUjG6viTC3J2jzC1A==
"@abp/jquery-validation@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.4.tgz#2f79457d2c83795449eb6d3c82942568b0e6f273"
integrity sha512-a3v0QDWm2kqrr5r4Nim8unT7p5xHt8KR/TGmGiS6CNMRXVtd6SLMDg36D1d5AcBemFW5evlySiqAl2D7v+g0/g==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
jquery-validation "^1.19.3"
"@abp/jquery@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.3.tgz#ba19cc8b802c46490277939e6c674811127d8016"
integrity sha512-MbD38iInyag7/j5k42cvMT4jLZMtXH4lUK0rjvqUDVaxKEks46Ix/90uczQ9XajYONgx0CJKFj2urgM830+CCA==
"@abp/jquery@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.4.tgz#992222c2e233840ce7bf573b8bb15b0c9c15adde"
integrity sha512-JRf9NltPP++RAfPRvWFoYNgs2i/ydyROjtLSnCGdmO4UwAQZ21YuDY7x0Ia7VSj0a6cFg8d7M2PGIeJlcaXIsg==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
jquery "~3.6.0"
"@abp/lodash@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.3.tgz#8a5bab02353e5cab4ca06ab82f6dbe6285faa95a"
integrity sha512-c8yhcapzPsXyeiFjeOC+2a4bn5wFjW5gUoN+p/p+tE+FIcH37yEgyw/tAr6aZPCmR770MqQXct4t7S4Czbbk+A==
"@abp/lodash@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.4.tgz#2c88a9274e6c27334f277404280d43b2fbae6552"
integrity sha512-yOEe3SVvh5IuFMujSgC4waG0JzWzRQj907KUYzjcjfx35J5Q0Mwvu6/9wRYJx1av40YQdnzMrRoqXKDPAKdV6A==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
lodash "^4.17.21"
"@abp/luxon@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.3.tgz#ba515e122c61918d481467d5be39f08a363822f6"
integrity sha512-2lRSSC0DYShlnKdbJ/Pmha/azjt09ZRPx57NQ01dc7ungChPry5EJL6pC3kXWnJrCkrPCF0V5+A3+taut9+l3A==
"@abp/luxon@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.4.tgz#95ae8f70d9b5d8cd753cc7d918c611692d5bf218"
integrity sha512-OFs4Uv82YienRwiiVV78hdWSanS19lvjoBBskPF5s6LK/5mzLMrtbHBRf18wcc/AfBMOxot1BX2q1v4wb2u3qw==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
luxon "^2.3.0"
"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.3.tgz#0798e37ec6a852748118692a5fbd30c99d9745db"
integrity sha512-FlyShmRxG3wGk1OJCjHIZAdi2/Y2FJPkVxaE72CVIceQSmg0nebGTv3a7bhd4QzKkDsSA3+t6gHjnuKlTlDFLA==
"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.4.tgz#f40968c7f64eb6b36ff2bf06b4be8661308abd12"
integrity sha512-lcOskhl+NbPqKBxg+GABYBBrMtHYw2qZ/srFix7DgGUdNlFbXRP/AtTz0Wiav0PNGZgivniRLqvqcLCiCkrBrg==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/select2@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.3.tgz#deb8332bfce2102a562004893321a48d5194bf53"
integrity sha512-rb0qElmmhiP09xX8ZbjzNLF6ygFBwErysGWt6Bbgzz5waX2sGe575Cgoz53FaMQ4JaRBg1N0/nCejKyDtiINRA==
"@abp/select2@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.4.tgz#c7cf0f910fa6a9f97845a0659178ac02cfa022bc"
integrity sha512-NcXMZYiLDSVnjtRgvPwm9RB1M7qZnRyyyM+htdH5laEvDDGCcOLFS8iK6WI4Irmvw6MhBkDTHaH9ssJNbF7pvQ==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
select2 "^4.0.13"
"@abp/sweetalert2@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.3.tgz#e61fc6c1bed1316c1d44ca5c92f590e422db24d4"
integrity sha512-+SNpBb4XrQlWzRQK9lfdJqA9IfJrlgoqmHwPDgf3Q+P922MzO33TgDlZWbeE7MzVj2y2WmNsPuCKwhjSjSL2rw==
"@abp/sweetalert2@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.4.tgz#a1a2a1a5d7e1fb83680cc35ca477cee1f2f2463b"
integrity sha512-dvslRK2oc06JjI6aV1dj1LzWbOb50BfwbHxcmOenl8Q4XMP389bFbaOiVezjk+d3YLsspCMDxxu2NTqaq67Z6g==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
sweetalert2 "^11.3.6"
"@abp/timeago@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.3.tgz#0ef8c4801bfd4623e6895b1d047b1437063bda53"
integrity sha512-P3YRDVKjR5/Fz+cXiPg3IiUr7XGbNh7mgmJ1ywRXmKVmVMJmhQ2RsKmmtkGJn4TfVHu/l5iJXe4rqgL21/yX/g==
"@abp/timeago@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.4.tgz#3a93a65ee6b8260f7e80bb862b60623e967e08a2"
integrity sha512-/ZZy5E3PHtvmkjg+s9BvgO344DOs0jiifimDntp5jZPQPrsQ5WPC9o9hrlGb40tTw5P0wAnznjGvHnZjBiflvA==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
timeago "^1.6.7"
"@abp/toastr@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.3.tgz#6010d4247937531ebf7c8659d6254cd3db6c4855"
integrity sha512-sC9eCzYVgDrLSFIhJGe9hshzfwA1BkZNah4NQhyq+V6HQ8YF7goMS79N+/XmSoLQ9zzRhusqnPFnb+4FHjr7iA==
"@abp/toastr@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.4.tgz#3bf6abc79baf7a2b7de9840e55caf839018ab96e"
integrity sha512-zesojzXYsFd57m7XBgxLwKeAs8HRe25iNKRGC0YR7MK2HP1770jc+dEjnQ0pnqhMHouZejFJZcpqdHGr85ZUgQ==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
toastr "^2.1.4"
"@abp/utils@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.3.tgz#6d3515694314175218606e9518618ce335b4b360"
integrity sha512-K2geJ9P1ztk4Ehzb9YG3CqqLOi+z8/4iBLUzooNZLQqS+KdlUhCmqfuCoI/A5Aq9DGbTYesalp+Fwoh3S2Dl8A==
"@abp/utils@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.4.tgz#e18ef1557a2600fa153db13162e1ed097bc6f15a"
integrity sha512-eT6RVfFsyB8uAdMHDdG4M2Erg3RrvkG7Z5Xa0ko7JIhEz5VwsRcXGwTAORYHsu0M1hpewZljdD5OmQRods13LA==
dependencies:
just-compare "^1.3.0"

2
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": "^6.0.0-rc.3"
"@abp/aspnetcore.mvc.ui.theme.basic": "^6.0.0-rc.4"
}
}

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

@ -2,37 +2,37 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.3.tgz#b95266387e562c635de795442f90470f8e9e6318"
integrity sha512-vVkEpotDST455E3rynvRQpBKPcNNJ2m1wLkz/B9dQNdUjvm8L4F6s0ls0XFlKUNvQfCVfedkRtGayuvNje/Oxg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.3"
"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.3.tgz#664ca2ee712b7d9e66103c00beb41eb9648a6075"
integrity sha512-KxCsGuoUWKaDo7Oo9aKp51pli2m0DZ2tG8m+zK+m4M9U7g96uC+DOFy3gc7MdPlszvrw32Wwm7I0AughstByNA==
dependencies:
"@abp/aspnetcore.mvc.ui" "~6.0.0-rc.3"
"@abp/bootstrap" "~6.0.0-rc.3"
"@abp/bootstrap-datepicker" "~6.0.0-rc.3"
"@abp/datatables.net-bs5" "~6.0.0-rc.3"
"@abp/font-awesome" "~6.0.0-rc.3"
"@abp/jquery-form" "~6.0.0-rc.3"
"@abp/jquery-validation-unobtrusive" "~6.0.0-rc.3"
"@abp/lodash" "~6.0.0-rc.3"
"@abp/luxon" "~6.0.0-rc.3"
"@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.3"
"@abp/select2" "~6.0.0-rc.3"
"@abp/sweetalert2" "~6.0.0-rc.3"
"@abp/timeago" "~6.0.0-rc.3"
"@abp/toastr" "~6.0.0-rc.3"
"@abp/aspnetcore.mvc.ui@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.3.tgz#47c23b57ed3908bd78a232230e53d1f3cba2de41"
integrity sha512-7eJZy2JUGQP94Tz3JJWXRHRmDfTcPZ/lS1/VNbU8B4qvgl5ChIXklVEJLR1fwrBhKXZV8fGVmqT1XlGTGFvFJA==
"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.4.tgz#f57efa6f3cabb48e40a44e79adb31de58145bf89"
integrity sha512-JcoXch+j+T9V3Lfu9Of9Tbcw5sNBpSbe42SjzUcXLqdVijV/DBWKMg/9OPH8KZ4PZwl4sl9DSAmGWXHdipLxzA==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.4"
"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.4.tgz#a0fd1e9f6f05d854d6f2119ed551a1cef485c929"
integrity sha512-QsrV+N6YFuMo/q73Bd1P0qDyG0Ua5JmQFgKzA94eMXDyYgpRrT5RyKh0CNV81Q/AX9V5c6APrtcQ31tYzmWwbQ==
dependencies:
"@abp/aspnetcore.mvc.ui" "~6.0.0-rc.4"
"@abp/bootstrap" "~6.0.0-rc.4"
"@abp/bootstrap-datepicker" "~6.0.0-rc.4"
"@abp/datatables.net-bs5" "~6.0.0-rc.4"
"@abp/font-awesome" "~6.0.0-rc.4"
"@abp/jquery-form" "~6.0.0-rc.4"
"@abp/jquery-validation-unobtrusive" "~6.0.0-rc.4"
"@abp/lodash" "~6.0.0-rc.4"
"@abp/luxon" "~6.0.0-rc.4"
"@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.4"
"@abp/select2" "~6.0.0-rc.4"
"@abp/sweetalert2" "~6.0.0-rc.4"
"@abp/timeago" "~6.0.0-rc.4"
"@abp/toastr" "~6.0.0-rc.4"
"@abp/aspnetcore.mvc.ui@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.4.tgz#de70d53a900db2f5c74719b7c4e406e0de4c2662"
integrity sha512-8GUoTG4B3Tz2Xd/cFaw9EAjOUoEfMG95VkjNqdfcvPPrtFML/W3fcMUwbjOvQ/lEnAMTSGREU3w9y7Y+GIv9qA==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -41,144 +41,144 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
"@abp/bootstrap-datepicker@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.3.tgz#89198b863dbfccf5f07ac3c4b20ce6199adcb17a"
integrity sha512-NLoUjcR66mqwSWuVftu2yFH4/j6QP+FiElRfZQ9OYmO8DQx2Ue5UZzjrFTrZ1DBBCfzhr2Bffj80dirGvGDyvg==
"@abp/bootstrap-datepicker@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.4.tgz#2dbc9f8f9816689b6db84948046a964ceb1bab17"
integrity sha512-tWPA3ehtU+QPKbxdLDzKk4p2wMNGo/R4CjCQydD1i9BIpkBUlA5sBtbNrLTvZ5/KM1RYecFGFrHTVVOzGsUKrA==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.3.tgz#4574bf574cc3484869e8ff8bc592f6212d20a969"
integrity sha512-Q5v7WRkGhGcjRg267HXtqs1oU7ts9UXPyCXmg5y2y5qMOyioD+m4MKV4iv67DgoQjabudp8X2egTKxkej6Lzkw==
"@abp/bootstrap@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.4.tgz#f360f86b00f474236ad182cd792df24f9ecbfc47"
integrity sha512-JjHJNPkTJRYwQvRnzTvcYIbxs2TD6n+LVtCd5ItYNbg8bMyd9yMugThxtgZGE3awVQqjLxZ4fwv+CRnf70JdrQ==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
bootstrap "^5.1.3"
"@abp/core@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.3.tgz#5662ce813d449d97d9fb7ea2552b2774c8df7825"
integrity sha512-X/VRdk5SGNYc5gQzPcBEPAvwcuD9WXsI4YIdrqjnes0s8u2/XmfrTixojh8Y5EYUoOblEE3Soj5hBhY1cVwcbQ==
"@abp/core@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.4.tgz#d164e1ca3546dc710c569ea7ae0145e1b713658e"
integrity sha512-mH3+BCU8Wbe0mieDHd5Awvhd09X7iJKRLBQBIINcDeIIOCJ9x4v8grynvndzlaS7J2AlWZba0XJU6sZ+YpuP2w==
dependencies:
"@abp/utils" "~6.0.0-rc.3"
"@abp/utils" "~6.0.0-rc.4"
"@abp/datatables.net-bs5@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.3.tgz#22865c7e621de720b71af6265b3193f6c78695bd"
integrity sha512-T+mhLc6uSzWmxDQogVwnJ6VxI4845gmF68/i9TmVKNlCtpa3EEfyuF/hgWT1hYfCb4XOsvd/CWrunbkC3fsmtg==
"@abp/datatables.net-bs5@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.4.tgz#fc3c43fb9ba8154b4b960ed0799948f5df738f7e"
integrity sha512-QtII4mFFFjvToM2LDqZugVh6/HwKbIdKYqHCxJKprZ1aVmyBeiMHi89z0G4eChAYdTpjHQstoDddYje53DkWOw==
dependencies:
"@abp/datatables.net" "~6.0.0-rc.3"
"@abp/datatables.net" "~6.0.0-rc.4"
datatables.net-bs5 "^1.11.4"
"@abp/datatables.net@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.3.tgz#d036defe6ad7fc989dffa020ae579362ee3150d1"
integrity sha512-4cUU8/Tn0Vz9bx7jjMOD/0Viyr29fcwoQAAkxaaYZp6qiQbENgz46/xpQf2oBCoudk8CLdzpmNa7jWte7PcJJw==
"@abp/datatables.net@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.4.tgz#f6916ba9a8089b573faddcc38e6a76e38a0dce16"
integrity sha512-9zhIvAO4AX6YIUELodEUz2hsDj+RITGoxWaav90jUJEqK/jVsDfs2mbrWcLzQDMLpZVElZA0p8tUyWS8yMsjaA==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
datatables.net "^1.11.4"
"@abp/font-awesome@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.3.tgz#803569d1a7e25f8a1c2be018312449c23fb78217"
integrity sha512-lYdh38UCTSkzzw0B/mpPEo7iFXzSKHCNbBOIHe6dd6O/Qli7wYukTtUOFn5Sh+yoydLY1as92HtiGL1ckSdu1g==
"@abp/font-awesome@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.4.tgz#a3e1664cbebdbc1aa4d2dd1ac48f022b3ce100ad"
integrity sha512-tlBekvBQ/wEkx1Z2sX8cPp/JKzxmTsMSUSbnAc/Uz+De/fxhyepUACb35zFSv2VmLPz1M1xqLvLUCJmciZhINQ==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
"@fortawesome/fontawesome-free" "^5.15.4"
"@abp/jquery-form@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.3.tgz#4ec503c07e2194148c3a7e7cf7ddef2871679e6a"
integrity sha512-Q3uEpflntqrSkYakcdsBnnYYfxJWXD/CDjMiwjbb6gIc8s4qkbIYxVxvYvlEezoIDYQkMSXOn7BS4clWsesiJg==
"@abp/jquery-form@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.4.tgz#4dfbef35e4d7dc80534e0f33644142a9ccd54cb4"
integrity sha512-/21ibf99c8q7ygbj2QF7GAGCW1MaalAurueffndTGZPRRSKrCVTPINtBih7NGgh1zcavhog+GBA3INJ3etQIWQ==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.3.tgz#01da2a59663d373ff1c69022f4c9c66ad0b29403"
integrity sha512-ij1ML2D9rYF3pJthWO6mGQajsJhbDCtOoBvnh9yCZccuwOYkXP22PqfUxjjxtqL4HqFI31KRpFg0ANMGSzEEBg==
"@abp/jquery-validation-unobtrusive@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.4.tgz#6a498b76076683bbc77d7a73fcf893863aecb59f"
integrity sha512-+9RAPaFYsuSZ05RtJJNeHl1PkyHm9Mv3WKAw+QrKHzaK34zpjD/cZdiijcAWM3DrNPiCCuaaUgMMIMn223MIEA==
dependencies:
"@abp/jquery-validation" "~6.0.0-rc.3"
"@abp/jquery-validation" "~6.0.0-rc.4"
jquery-validation-unobtrusive "^3.2.12"
"@abp/jquery-validation@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.3.tgz#724aea9572dcb2faccf8c6355332b0b2a4df9260"
integrity sha512-rTK5oHaMtycvWxunNwzbE/MbsXXIr6qDnOY3rVUmjTHjqUOHYz591t/XeQfjnSXPp4k/SZUjG6viTC3J2jzC1A==
"@abp/jquery-validation@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.4.tgz#2f79457d2c83795449eb6d3c82942568b0e6f273"
integrity sha512-a3v0QDWm2kqrr5r4Nim8unT7p5xHt8KR/TGmGiS6CNMRXVtd6SLMDg36D1d5AcBemFW5evlySiqAl2D7v+g0/g==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
jquery-validation "^1.19.3"
"@abp/jquery@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.3.tgz#ba19cc8b802c46490277939e6c674811127d8016"
integrity sha512-MbD38iInyag7/j5k42cvMT4jLZMtXH4lUK0rjvqUDVaxKEks46Ix/90uczQ9XajYONgx0CJKFj2urgM830+CCA==
"@abp/jquery@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.4.tgz#992222c2e233840ce7bf573b8bb15b0c9c15adde"
integrity sha512-JRf9NltPP++RAfPRvWFoYNgs2i/ydyROjtLSnCGdmO4UwAQZ21YuDY7x0Ia7VSj0a6cFg8d7M2PGIeJlcaXIsg==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
jquery "~3.6.0"
"@abp/lodash@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.3.tgz#8a5bab02353e5cab4ca06ab82f6dbe6285faa95a"
integrity sha512-c8yhcapzPsXyeiFjeOC+2a4bn5wFjW5gUoN+p/p+tE+FIcH37yEgyw/tAr6aZPCmR770MqQXct4t7S4Czbbk+A==
"@abp/lodash@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.4.tgz#2c88a9274e6c27334f277404280d43b2fbae6552"
integrity sha512-yOEe3SVvh5IuFMujSgC4waG0JzWzRQj907KUYzjcjfx35J5Q0Mwvu6/9wRYJx1av40YQdnzMrRoqXKDPAKdV6A==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
lodash "^4.17.21"
"@abp/luxon@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.3.tgz#ba515e122c61918d481467d5be39f08a363822f6"
integrity sha512-2lRSSC0DYShlnKdbJ/Pmha/azjt09ZRPx57NQ01dc7ungChPry5EJL6pC3kXWnJrCkrPCF0V5+A3+taut9+l3A==
"@abp/luxon@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.4.tgz#95ae8f70d9b5d8cd753cc7d918c611692d5bf218"
integrity sha512-OFs4Uv82YienRwiiVV78hdWSanS19lvjoBBskPF5s6LK/5mzLMrtbHBRf18wcc/AfBMOxot1BX2q1v4wb2u3qw==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
luxon "^2.3.0"
"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.3.tgz#0798e37ec6a852748118692a5fbd30c99d9745db"
integrity sha512-FlyShmRxG3wGk1OJCjHIZAdi2/Y2FJPkVxaE72CVIceQSmg0nebGTv3a7bhd4QzKkDsSA3+t6gHjnuKlTlDFLA==
"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.4.tgz#f40968c7f64eb6b36ff2bf06b4be8661308abd12"
integrity sha512-lcOskhl+NbPqKBxg+GABYBBrMtHYw2qZ/srFix7DgGUdNlFbXRP/AtTz0Wiav0PNGZgivniRLqvqcLCiCkrBrg==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/select2@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.3.tgz#deb8332bfce2102a562004893321a48d5194bf53"
integrity sha512-rb0qElmmhiP09xX8ZbjzNLF6ygFBwErysGWt6Bbgzz5waX2sGe575Cgoz53FaMQ4JaRBg1N0/nCejKyDtiINRA==
"@abp/select2@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.4.tgz#c7cf0f910fa6a9f97845a0659178ac02cfa022bc"
integrity sha512-NcXMZYiLDSVnjtRgvPwm9RB1M7qZnRyyyM+htdH5laEvDDGCcOLFS8iK6WI4Irmvw6MhBkDTHaH9ssJNbF7pvQ==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
select2 "^4.0.13"
"@abp/sweetalert2@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.3.tgz#e61fc6c1bed1316c1d44ca5c92f590e422db24d4"
integrity sha512-+SNpBb4XrQlWzRQK9lfdJqA9IfJrlgoqmHwPDgf3Q+P922MzO33TgDlZWbeE7MzVj2y2WmNsPuCKwhjSjSL2rw==
"@abp/sweetalert2@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.4.tgz#a1a2a1a5d7e1fb83680cc35ca477cee1f2f2463b"
integrity sha512-dvslRK2oc06JjI6aV1dj1LzWbOb50BfwbHxcmOenl8Q4XMP389bFbaOiVezjk+d3YLsspCMDxxu2NTqaq67Z6g==
dependencies:
"@abp/core" "~6.0.0-rc.3"
"@abp/core" "~6.0.0-rc.4"
sweetalert2 "^11.3.6"
"@abp/timeago@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.3.tgz#0ef8c4801bfd4623e6895b1d047b1437063bda53"
integrity sha512-P3YRDVKjR5/Fz+cXiPg3IiUr7XGbNh7mgmJ1ywRXmKVmVMJmhQ2RsKmmtkGJn4TfVHu/l5iJXe4rqgL21/yX/g==
"@abp/timeago@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.4.tgz#3a93a65ee6b8260f7e80bb862b60623e967e08a2"
integrity sha512-/ZZy5E3PHtvmkjg+s9BvgO344DOs0jiifimDntp5jZPQPrsQ5WPC9o9hrlGb40tTw5P0wAnznjGvHnZjBiflvA==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
timeago "^1.6.7"
"@abp/toastr@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.3.tgz#6010d4247937531ebf7c8659d6254cd3db6c4855"
integrity sha512-sC9eCzYVgDrLSFIhJGe9hshzfwA1BkZNah4NQhyq+V6HQ8YF7goMS79N+/XmSoLQ9zzRhusqnPFnb+4FHjr7iA==
"@abp/toastr@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.4.tgz#3bf6abc79baf7a2b7de9840e55caf839018ab96e"
integrity sha512-zesojzXYsFd57m7XBgxLwKeAs8HRe25iNKRGC0YR7MK2HP1770jc+dEjnQ0pnqhMHouZejFJZcpqdHGr85ZUgQ==
dependencies:
"@abp/jquery" "~6.0.0-rc.3"
"@abp/jquery" "~6.0.0-rc.4"
toastr "^2.1.4"
"@abp/utils@~6.0.0-rc.3":
version "6.0.0-rc.3"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.3.tgz#6d3515694314175218606e9518618ce335b4b360"
integrity sha512-K2geJ9P1ztk4Ehzb9YG3CqqLOi+z8/4iBLUzooNZLQqS+KdlUhCmqfuCoI/A5Aq9DGbTYesalp+Fwoh3S2Dl8A==
"@abp/utils@~6.0.0-rc.4":
version "6.0.0-rc.4"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.4.tgz#e18ef1557a2600fa153db13162e1ed097bc6f15a"
integrity sha512-eT6RVfFsyB8uAdMHDdG4M2Erg3RrvkG7Z5Xa0ko7JIhEz5VwsRcXGwTAORYHsu0M1hpewZljdD5OmQRods13LA==
dependencies:
just-compare "^1.3.0"

4
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": "^6.0.0-rc.3",
"@abp/cms-kit": "6.0.0-rc.3"
"@abp/aspnetcore.mvc.ui.theme.basic": "^6.0.0-rc.4",
"@abp/cms-kit": "6.0.0-rc.4"
}
}

410
modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.css

@ -0,0 +1,410 @@
.daterangepicker {
position: absolute;
color: inherit;
background-color: #fff;
border-radius: 4px;
border: 1px solid #ddd;
width: 278px;
max-width: none;
padding: 0;
margin-top: 7px;
top: 100px;
left: 20px;
z-index: 3001;
display: none;
font-family: arial;
font-size: 15px;
line-height: 1em;
}
.daterangepicker:before, .daterangepicker:after {
position: absolute;
display: inline-block;
border-bottom-color: rgba(0, 0, 0, 0.2);
content: '';
}
.daterangepicker:before {
top: -7px;
border-right: 7px solid transparent;
border-left: 7px solid transparent;
border-bottom: 7px solid #ccc;
}
.daterangepicker:after {
top: -6px;
border-right: 6px solid transparent;
border-bottom: 6px solid #fff;
border-left: 6px solid transparent;
}
.daterangepicker.opensleft:before {
right: 9px;
}
.daterangepicker.opensleft:after {
right: 10px;
}
.daterangepicker.openscenter:before {
left: 0;
right: 0;
width: 0;
margin-left: auto;
margin-right: auto;
}
.daterangepicker.openscenter:after {
left: 0;
right: 0;
width: 0;
margin-left: auto;
margin-right: auto;
}
.daterangepicker.opensright:before {
left: 9px;
}
.daterangepicker.opensright:after {
left: 10px;
}
.daterangepicker.drop-up {
margin-top: -7px;
}
.daterangepicker.drop-up:before {
top: initial;
bottom: -7px;
border-bottom: initial;
border-top: 7px solid #ccc;
}
.daterangepicker.drop-up:after {
top: initial;
bottom: -6px;
border-bottom: initial;
border-top: 6px solid #fff;
}
.daterangepicker.single .daterangepicker .ranges, .daterangepicker.single .drp-calendar {
float: none;
}
.daterangepicker.single .drp-selected {
display: none;
}
.daterangepicker.show-calendar .drp-calendar {
display: block;
}
.daterangepicker.show-calendar .drp-buttons {
display: block;
}
.daterangepicker.auto-apply .drp-buttons {
display: none;
}
.daterangepicker .drp-calendar {
display: none;
max-width: 270px;
}
.daterangepicker .drp-calendar.left {
padding: 8px 0 8px 8px;
}
.daterangepicker .drp-calendar.right {
padding: 8px;
}
.daterangepicker .drp-calendar.single .calendar-table {
border: none;
}
.daterangepicker .calendar-table .next span, .daterangepicker .calendar-table .prev span {
color: #fff;
border: solid black;
border-width: 0 2px 2px 0;
border-radius: 0;
display: inline-block;
padding: 3px;
}
.daterangepicker .calendar-table .next span {
transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
}
.daterangepicker .calendar-table .prev span {
transform: rotate(135deg);
-webkit-transform: rotate(135deg);
}
.daterangepicker .calendar-table th, .daterangepicker .calendar-table td {
white-space: nowrap;
text-align: center;
vertical-align: middle;
min-width: 32px;
width: 32px;
height: 24px;
line-height: 24px;
font-size: 12px;
border-radius: 4px;
border: 1px solid transparent;
white-space: nowrap;
cursor: pointer;
}
.daterangepicker .calendar-table {
border: 1px solid #fff;
border-radius: 4px;
background-color: #fff;
}
.daterangepicker .calendar-table table {
width: 100%;
margin: 0;
border-spacing: 0;
border-collapse: collapse;
}
.daterangepicker td.available:hover, .daterangepicker th.available:hover {
background-color: #eee;
border-color: transparent;
color: inherit;
}
.daterangepicker td.week, .daterangepicker th.week {
font-size: 80%;
color: #ccc;
}
.daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date {
background-color: #fff;
border-color: transparent;
color: #999;
}
.daterangepicker td.in-range {
background-color: #ebf4f8;
border-color: transparent;
color: #000;
border-radius: 0;
}
.daterangepicker td.start-date {
border-radius: 4px 0 0 4px;
}
.daterangepicker td.end-date {
border-radius: 0 4px 4px 0;
}
.daterangepicker td.start-date.end-date {
border-radius: 4px;
}
.daterangepicker td.active, .daterangepicker td.active:hover {
background-color: #357ebd;
border-color: transparent;
color: #fff;
}
.daterangepicker th.month {
width: auto;
}
.daterangepicker td.disabled, .daterangepicker option.disabled {
color: #999;
cursor: not-allowed;
text-decoration: line-through;
}
.daterangepicker select.monthselect, .daterangepicker select.yearselect {
font-size: 12px;
padding: 1px;
height: auto;
margin: 0;
cursor: default;
}
.daterangepicker select.monthselect {
margin-right: 2%;
width: 56%;
}
.daterangepicker select.yearselect {
width: 40%;
}
.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect {
width: 50px;
margin: 0 auto;
background: #eee;
border: 1px solid #eee;
padding: 2px;
outline: 0;
font-size: 12px;
}
.daterangepicker .calendar-time {
text-align: center;
margin: 4px auto 0 auto;
line-height: 30px;
position: relative;
}
.daterangepicker .calendar-time select.disabled {
color: #ccc;
cursor: not-allowed;
}
.daterangepicker .drp-buttons {
clear: both;
text-align: right;
padding: 8px;
border-top: 1px solid #ddd;
display: none;
line-height: 12px;
vertical-align: middle;
}
.daterangepicker .drp-selected {
display: inline-block;
font-size: 12px;
padding-right: 8px;
}
.daterangepicker .drp-buttons .btn {
margin-left: 8px;
font-size: 12px;
font-weight: bold;
padding: 4px 8px;
}
.daterangepicker.show-ranges.single.rtl .drp-calendar.left {
border-right: 1px solid #ddd;
}
.daterangepicker.show-ranges.single.ltr .drp-calendar.left {
border-left: 1px solid #ddd;
}
.daterangepicker.show-ranges.rtl .drp-calendar.right {
border-right: 1px solid #ddd;
}
.daterangepicker.show-ranges.ltr .drp-calendar.left {
border-left: 1px solid #ddd;
}
.daterangepicker .ranges {
float: none;
text-align: left;
margin: 0;
}
.daterangepicker.show-calendar .ranges {
margin-top: 8px;
}
.daterangepicker .ranges ul {
list-style: none;
margin: 0 auto;
padding: 0;
width: 100%;
}
.daterangepicker .ranges li {
font-size: 12px;
padding: 8px 12px;
cursor: pointer;
}
.daterangepicker .ranges li:hover {
background-color: #eee;
}
.daterangepicker .ranges li.active {
background-color: #08c;
color: #fff;
}
/* Larger Screen Styling */
@media (min-width: 564px) {
.daterangepicker {
width: auto;
}
.daterangepicker .ranges ul {
width: 140px;
}
.daterangepicker.single .ranges ul {
width: 100%;
}
.daterangepicker.single .drp-calendar.left {
clear: none;
}
.daterangepicker.single .ranges, .daterangepicker.single .drp-calendar {
float: left;
}
.daterangepicker {
direction: ltr;
text-align: left;
}
.daterangepicker .drp-calendar.left {
clear: left;
margin-right: 0;
}
.daterangepicker .drp-calendar.left .calendar-table {
border-right: none;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.daterangepicker .drp-calendar.right {
margin-left: 0;
}
.daterangepicker .drp-calendar.right .calendar-table {
border-left: none;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.daterangepicker .drp-calendar.left .calendar-table {
padding-right: 8px;
}
.daterangepicker .ranges, .daterangepicker .drp-calendar {
float: left;
}
}
@media (min-width: 730px) {
.daterangepicker .ranges {
width: auto;
}
.daterangepicker .ranges {
float: left;
}
.daterangepicker.rtl .ranges {
float: right;
}
.daterangepicker .drp-calendar.left {
clear: none !important;
}
}

1578
modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.js

File diff suppressed because it is too large

82
modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/moment/locale/af.js

@ -0,0 +1,82 @@
//! moment.js locale configuration
//! locale : Afrikaans [af]
//! author : Werner Mollentze : https://github.com/wernerm
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, (function (moment) { 'use strict';
//! moment.js locale configuration
var af = moment.defineLocale('af', {
months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(
'_'
),
monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(
'_'
),
weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
meridiemParse: /vm|nm/i,
isPM: function (input) {
return /^nm$/i.test(input);
},
meridiem: function (hours, minutes, isLower) {
if (hours < 12) {
return isLower ? 'vm' : 'VM';
} else {
return isLower ? 'nm' : 'NM';
}
},
longDateFormat: {
LT: 'HH:mm',
LTS: 'HH:mm:ss',
L: 'DD/MM/YYYY',
LL: 'D MMMM YYYY',
LLL: 'D MMMM YYYY HH:mm',
LLLL: 'dddd, D MMMM YYYY HH:mm',
},
calendar: {
sameDay: '[Vandag om] LT',
nextDay: '[Môre om] LT',
nextWeek: 'dddd [om] LT',
lastDay: '[Gister om] LT',
lastWeek: '[Laas] dddd [om] LT',
sameElse: 'L',
},
relativeTime: {
future: 'oor %s',
past: '%s gelede',
s: "'n paar sekondes",
ss: '%d sekondes',
m: "'n minuut",
mm: '%d minute',
h: "'n uur",
hh: '%d ure',
d: "'n dag",
dd: '%d dae',
M: "'n maand",
MM: '%d maande',
y: "'n jaar",
yy: '%d jaar',
},
dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
ordinal: function (number) {
return (
number +
(number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
); // Thanks to Joris Röling : https://github.com/jjupiter
},
week: {
dow: 1, // Maandag is die eerste dag van die week.
doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
},
});
return af;
})));

167
modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/moment/locale/ar-dz.js

@ -0,0 +1,167 @@
//! moment.js locale configuration
//! locale : Arabic (Algeria) [ar-dz]
//! author : Amine Roukh: https://github.com/Amine27
//! author : Abdel Said: https://github.com/abdelsaid
//! author : Ahmed Elkhatib
//! author : forabi https://github.com/forabi
//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, (function (moment) { 'use strict';
//! moment.js locale configuration
var pluralForm = function (n) {
return n === 0
? 0
: n === 1
? 1
: n === 2
? 2
: n % 100 >= 3 && n % 100 <= 10
? 3
: n % 100 >= 11
? 4
: 5;
},
plurals = {
s: [
'أقل من ثانية',
'ثانية واحدة',
['ثانيتان', 'ثانيتين'],
'%d ثوان',
'%d ثانية',
'%d ثانية',
],
m: [
'أقل من دقيقة',
'دقيقة واحدة',
['دقيقتان', 'دقيقتين'],
'%d دقائق',
'%d دقيقة',
'%d دقيقة',
],
h: [
'أقل من ساعة',
'ساعة واحدة',
['ساعتان', 'ساعتين'],
'%d ساعات',
'%d ساعة',
'%d ساعة',
],
d: [
'أقل من يوم',
'يوم واحد',
['يومان', 'يومين'],
'%d أيام',
'%d يومًا',
'%d يوم',
],
M: [
'أقل من شهر',
'شهر واحد',
['شهران', 'شهرين'],
'%d أشهر',
'%d شهرا',
'%d شهر',
],
y: [
'أقل من عام',
'عام واحد',
['عامان', 'عامين'],
'%d أعوام',
'%d عامًا',
'%d عام',
],
},
pluralize = function (u) {
return function (number, withoutSuffix, string, isFuture) {
var f = pluralForm(number),
str = plurals[u][pluralForm(number)];
if (f === 2) {
str = str[withoutSuffix ? 0 : 1];
}
return str.replace(/%d/i, number);
};
},
months = [
'جانفي',
'فيفري',
'مارس',
'أفريل',
'ماي',
'جوان',
'جويلية',
'أوت',
'سبتمبر',
'أكتوبر',
'نوفمبر',
'ديسمبر',
];
var arDz = moment.defineLocale('ar-dz', {
months: months,
monthsShort: months,
weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
weekdaysParseExact: true,
longDateFormat: {
LT: 'HH:mm',
LTS: 'HH:mm:ss',
L: 'D/\u200FM/\u200FYYYY',
LL: 'D MMMM YYYY',
LLL: 'D MMMM YYYY HH:mm',
LLLL: 'dddd D MMMM YYYY HH:mm',
},
meridiemParse: /ص|م/,
isPM: function (input) {
return 'م' === input;
},
meridiem: function (hour, minute, isLower) {
if (hour < 12) {
return 'ص';
} else {
return 'م';
}
},
calendar: {
sameDay: '[اليوم عند الساعة] LT',
nextDay: '[غدًا عند الساعة] LT',
nextWeek: 'dddd [عند الساعة] LT',
lastDay: '[أمس عند الساعة] LT',
lastWeek: 'dddd [عند الساعة] LT',
sameElse: 'L',
},
relativeTime: {
future: 'بعد %s',
past: 'منذ %s',
s: pluralize('s'),
ss: pluralize('s'),
m: pluralize('m'),
mm: pluralize('m'),
h: pluralize('h'),
hh: pluralize('h'),
d: pluralize('d'),
dd: pluralize('d'),
M: pluralize('M'),
MM: pluralize('M'),
y: pluralize('y'),
yy: pluralize('y'),
},
postformat: function (string) {
return string.replace(/,/g, '،');
},
week: {
dow: 0, // Sunday is the first day of the week.
doy: 4, // The week that contains Jan 4th is the first week of the year.
},
});
return arDz;
})));

66
modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/moment/locale/ar-kw.js

@ -0,0 +1,66 @@
//! moment.js locale configuration
//! locale : Arabic (Kuwait) [ar-kw]
//! author : Nusret Parlak: https://github.com/nusretparlak
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, (function (moment) { 'use strict';
//! moment.js locale configuration
var arKw = moment.defineLocale('ar-kw', {
months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
'_'
),
monthsShort:
'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
'_'
),
weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
weekdaysParseExact: true,
longDateFormat: {
LT: 'HH:mm',
LTS: 'HH:mm:ss',
L: 'DD/MM/YYYY',
LL: 'D MMMM YYYY',
LLL: 'D MMMM YYYY HH:mm',
LLLL: 'dddd D MMMM YYYY HH:mm',
},
calendar: {
sameDay: '[اليوم على الساعة] LT',
nextDay: '[غدا على الساعة] LT',
nextWeek: 'dddd [على الساعة] LT',
lastDay: '[أمس على الساعة] LT',
lastWeek: 'dddd [على الساعة] LT',
sameElse: 'L',
},
relativeTime: {
future: 'في %s',
past: 'منذ %s',
s: 'ثوان',
ss: '%d ثانية',
m: 'دقيقة',
mm: '%d دقائق',
h: 'ساعة',
hh: '%d ساعات',
d: 'يوم',
dd: '%d أيام',
M: 'شهر',
MM: '%d أشهر',
y: 'سنة',
yy: '%d سنوات',
},
week: {
dow: 0, // Sunday is the first day of the week.
doy: 12, // The week that contains Jan 12th is the first week of the year.
},
});
return arKw;
})));

182
modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/moment/locale/ar-ly.js

@ -0,0 +1,182 @@
//! moment.js locale configuration
//! locale : Arabic (Libya) [ar-ly]
//! author : Ali Hmer: https://github.com/kikoanis
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, (function (moment) { 'use strict';
//! moment.js locale configuration
var symbolMap = {
1: '1',
2: '2',
3: '3',
4: '4',
5: '5',
6: '6',
7: '7',
8: '8',
9: '9',
0: '0',
},
pluralForm = function (n) {
return n === 0
? 0
: n === 1
? 1
: n === 2
? 2
: n % 100 >= 3 && n % 100 <= 10
? 3
: n % 100 >= 11
? 4
: 5;
},
plurals = {
s: [
'أقل من ثانية',
'ثانية واحدة',
['ثانيتان', 'ثانيتين'],
'%d ثوان',
'%d ثانية',
'%d ثانية',
],
m: [
'أقل من دقيقة',
'دقيقة واحدة',
['دقيقتان', 'دقيقتين'],
'%d دقائق',
'%d دقيقة',
'%d دقيقة',
],
h: [
'أقل من ساعة',
'ساعة واحدة',
['ساعتان', 'ساعتين'],
'%d ساعات',
'%d ساعة',
'%d ساعة',
],
d: [
'أقل من يوم',
'يوم واحد',
['يومان', 'يومين'],
'%d أيام',
'%d يومًا',
'%d يوم',
],
M: [
'أقل من شهر',
'شهر واحد',
['شهران', 'شهرين'],
'%d أشهر',
'%d شهرا',
'%d شهر',
],
y: [
'أقل من عام',
'عام واحد',
['عامان', 'عامين'],
'%d أعوام',
'%d عامًا',
'%d عام',
],
},
pluralize = function (u) {
return function (number, withoutSuffix, string, isFuture) {
var f = pluralForm(number),
str = plurals[u][pluralForm(number)];
if (f === 2) {
str = str[withoutSuffix ? 0 : 1];
}
return str.replace(/%d/i, number);
};
},
months = [
'يناير',
'فبراير',
'مارس',
'أبريل',
'مايو',
'يونيو',
'يوليو',
'أغسطس',
'سبتمبر',
'أكتوبر',
'نوفمبر',
'ديسمبر',
];
var arLy = moment.defineLocale('ar-ly', {
months: months,
monthsShort: months,
weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
weekdaysParseExact: true,
longDateFormat: {
LT: 'HH:mm',
LTS: 'HH:mm:ss',
L: 'D/\u200FM/\u200FYYYY',
LL: 'D MMMM YYYY',
LLL: 'D MMMM YYYY HH:mm',
LLLL: 'dddd D MMMM YYYY HH:mm',
},
meridiemParse: /ص|م/,
isPM: function (input) {
return 'م' === input;
},
meridiem: function (hour, minute, isLower) {
if (hour < 12) {
return 'ص';
} else {
return 'م';
}
},
calendar: {
sameDay: '[اليوم عند الساعة] LT',
nextDay: '[غدًا عند الساعة] LT',
nextWeek: 'dddd [عند الساعة] LT',
lastDay: '[أمس عند الساعة] LT',
lastWeek: 'dddd [عند الساعة] LT',
sameElse: 'L',
},
relativeTime: {
future: 'بعد %s',
past: 'منذ %s',
s: pluralize('s'),
ss: pluralize('s'),
m: pluralize('m'),
mm: pluralize('m'),
h: pluralize('h'),
hh: pluralize('h'),
d: pluralize('d'),
dd: pluralize('d'),
M: pluralize('M'),
MM: pluralize('M'),
y: pluralize('y'),
yy: pluralize('y'),
},
preparse: function (string) {
return string.replace(/،/g, ',');
},
postformat: function (string) {
return string
.replace(/\d/g, function (match) {
return symbolMap[match];
})
.replace(/,/g, '،');
},
week: {
dow: 6, // Saturday is the first day of the week.
doy: 12, // The week that contains Jan 12th is the first week of the year.
},
});
return arLy;
})));

67
modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/moment/locale/ar-ma.js

@ -0,0 +1,67 @@
//! moment.js locale configuration
//! locale : Arabic (Morocco) [ar-ma]
//! author : ElFadili Yassine : https://github.com/ElFadiliY
//! author : Abdel Said : https://github.com/abdelsaid
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, (function (moment) { 'use strict';
//! moment.js locale configuration
var arMa = moment.defineLocale('ar-ma', {
months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
'_'
),
monthsShort:
'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
'_'
),
weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
weekdaysParseExact: true,
longDateFormat: {
LT: 'HH:mm',
LTS: 'HH:mm:ss',
L: 'DD/MM/YYYY',
LL: 'D MMMM YYYY',
LLL: 'D MMMM YYYY HH:mm',
LLLL: 'dddd D MMMM YYYY HH:mm',
},
calendar: {
sameDay: '[اليوم على الساعة] LT',
nextDay: '[غدا على الساعة] LT',
nextWeek: 'dddd [على الساعة] LT',
lastDay: '[أمس على الساعة] LT',
lastWeek: 'dddd [على الساعة] LT',
sameElse: 'L',
},
relativeTime: {
future: 'في %s',
past: 'منذ %s',
s: 'ثوان',
ss: '%d ثانية',
m: 'دقيقة',
mm: '%d دقائق',
h: 'ساعة',
hh: '%d ساعات',
d: 'يوم',
dd: '%d أيام',
M: 'شهر',
MM: '%d أشهر',
y: 'سنة',
yy: '%d سنوات',
},
week: {
dow: 1, // Monday is the first day of the week.
doy: 4, // The week that contains Jan 4th is the first week of the year.
},
});
return arMa;
})));

116
modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/moment/locale/ar-sa.js

@ -0,0 +1,116 @@
//! moment.js locale configuration
//! locale : Arabic (Saudi Arabia) [ar-sa]
//! author : Suhail Alkowaileet : https://github.com/xsoh
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, (function (moment) { 'use strict';
//! moment.js locale configuration
var symbolMap = {
1: '١',
2: '٢',
3: '٣',
4: '٤',
5: '٥',
6: '٦',
7: '٧',
8: '٨',
9: '٩',
0: '٠',
},
numberMap = {
'١': '1',
'٢': '2',
'٣': '3',
'٤': '4',
'٥': '5',
'٦': '6',
'٧': '7',
'٨': '8',
'٩': '9',
'٠': '0',
};
var arSa = moment.defineLocale('ar-sa', {
months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
'_'
),
monthsShort:
'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
'_'
),
weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
weekdaysParseExact: true,
longDateFormat: {
LT: 'HH:mm',
LTS: 'HH:mm:ss',
L: 'DD/MM/YYYY',
LL: 'D MMMM YYYY',
LLL: 'D MMMM YYYY HH:mm',
LLLL: 'dddd D MMMM YYYY HH:mm',
},
meridiemParse: /ص|م/,
isPM: function (input) {
return 'م' === input;
},
meridiem: function (hour, minute, isLower) {
if (hour < 12) {
return 'ص';
} else {
return 'م';
}
},
calendar: {
sameDay: '[اليوم على الساعة] LT',
nextDay: '[غدا على الساعة] LT',
nextWeek: 'dddd [على الساعة] LT',
lastDay: '[أمس على الساعة] LT',
lastWeek: 'dddd [على الساعة] LT',
sameElse: 'L',
},
relativeTime: {
future: 'في %s',
past: 'منذ %s',
s: 'ثوان',
ss: '%d ثانية',
m: 'دقيقة',
mm: '%d دقائق',
h: 'ساعة',
hh: '%d ساعات',
d: 'يوم',
dd: '%d أيام',
M: 'شهر',
MM: '%d أشهر',
y: 'سنة',
yy: '%d سنوات',
},
preparse: function (string) {
return string
.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
return numberMap[match];
})
.replace(/،/g, ',');
},
postformat: function (string) {
return string
.replace(/\d/g, function (match) {
return symbolMap[match];
})
.replace(/,/g, '،');
},
week: {
dow: 0, // Sunday is the first day of the week.
doy: 6, // The week that contains Jan 6th is the first week of the year.
},
});
return arSa;
})));

66
modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/moment/locale/ar-tn.js

@ -0,0 +1,66 @@
//! moment.js locale configuration
//! locale : Arabic (Tunisia) [ar-tn]
//! author : Nader Toukabri : https://github.com/naderio
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, (function (moment) { 'use strict';
//! moment.js locale configuration
var arTn = moment.defineLocale('ar-tn', {
months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
'_'
),
monthsShort:
'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
'_'
),
weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
weekdaysParseExact: true,
longDateFormat: {
LT: 'HH:mm',
LTS: 'HH:mm:ss',
L: 'DD/MM/YYYY',
LL: 'D MMMM YYYY',
LLL: 'D MMMM YYYY HH:mm',
LLLL: 'dddd D MMMM YYYY HH:mm',
},
calendar: {
sameDay: '[اليوم على الساعة] LT',
nextDay: '[غدا على الساعة] LT',
nextWeek: 'dddd [على الساعة] LT',
lastDay: '[أمس على الساعة] LT',
lastWeek: 'dddd [على الساعة] LT',
sameElse: 'L',
},
relativeTime: {
future: 'في %s',
past: 'منذ %s',
s: 'ثوان',
ss: '%d ثانية',
m: 'دقيقة',
mm: '%d دقائق',
h: 'ساعة',
hh: '%d ساعات',
d: 'يوم',
dd: '%d أيام',
M: 'شهر',
MM: '%d أشهر',
y: 'سنة',
yy: '%d سنوات',
},
week: {
dow: 1, // Monday is the first day of the week.
doy: 4, // The week that contains Jan 4th is the first week of the year.
},
});
return arTn;
})));

200
modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/moment/locale/ar.js

@ -0,0 +1,200 @@
//! moment.js locale configuration
//! locale : Arabic [ar]
//! author : Abdel Said: https://github.com/abdelsaid
//! author : Ahmed Elkhatib
//! author : forabi https://github.com/forabi
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, (function (moment) { 'use strict';
//! moment.js locale configuration
var symbolMap = {
1: '١',
2: '٢',
3: '٣',
4: '٤',
5: '٥',
6: '٦',
7: '٧',
8: '٨',
9: '٩',
0: '٠',
},
numberMap = {
'١': '1',
'٢': '2',
'٣': '3',
'٤': '4',
'٥': '5',
'٦': '6',
'٧': '7',
'٨': '8',
'٩': '9',
'٠': '0',
},
pluralForm = function (n) {
return n === 0
? 0
: n === 1
? 1
: n === 2
? 2
: n % 100 >= 3 && n % 100 <= 10
? 3
: n % 100 >= 11
? 4
: 5;
},
plurals = {
s: [
'أقل من ثانية',
'ثانية واحدة',
['ثانيتان', 'ثانيتين'],
'%d ثوان',
'%d ثانية',
'%d ثانية',
],
m: [
'أقل من دقيقة',
'دقيقة واحدة',
['دقيقتان', 'دقيقتين'],
'%d دقائق',
'%d دقيقة',
'%d دقيقة',
],
h: [
'أقل من ساعة',
'ساعة واحدة',
['ساعتان', 'ساعتين'],
'%d ساعات',
'%d ساعة',
'%d ساعة',
],
d: [
'أقل من يوم',
'يوم واحد',
['يومان', 'يومين'],
'%d أيام',
'%d يومًا',
'%d يوم',
],
M: [
'أقل من شهر',
'شهر واحد',
['شهران', 'شهرين'],
'%d أشهر',
'%d شهرا',
'%d شهر',
],
y: [
'أقل من عام',
'عام واحد',
['عامان', 'عامين'],
'%d أعوام',
'%d عامًا',
'%d عام',
],
},
pluralize = function (u) {
return function (number, withoutSuffix, string, isFuture) {
var f = pluralForm(number),
str = plurals[u][pluralForm(number)];
if (f === 2) {
str = str[withoutSuffix ? 0 : 1];
}
return str.replace(/%d/i, number);
};
},
months = [
'يناير',
'فبراير',
'مارس',
'أبريل',
'مايو',
'يونيو',
'يوليو',
'أغسطس',
'سبتمبر',
'أكتوبر',
'نوفمبر',
'ديسمبر',
];
var ar = moment.defineLocale('ar', {
months: months,
monthsShort: months,
weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
weekdaysParseExact: true,
longDateFormat: {
LT: 'HH:mm',
LTS: 'HH:mm:ss',
L: 'D/\u200FM/\u200FYYYY',
LL: 'D MMMM YYYY',
LLL: 'D MMMM YYYY HH:mm',
LLLL: 'dddd D MMMM YYYY HH:mm',
},
meridiemParse: /ص|م/,
isPM: function (input) {
return 'م' === input;
},
meridiem: function (hour, minute, isLower) {
if (hour < 12) {
return 'ص';
} else {
return 'م';
}
},
calendar: {
sameDay: '[اليوم عند الساعة] LT',
nextDay: '[غدًا عند الساعة] LT',
nextWeek: 'dddd [عند الساعة] LT',
lastDay: '[أمس عند الساعة] LT',
lastWeek: 'dddd [عند الساعة] LT',
sameElse: 'L',
},
relativeTime: {
future: 'بعد %s',
past: 'منذ %s',
s: pluralize('s'),
ss: pluralize('s'),
m: pluralize('m'),
mm: pluralize('m'),
h: pluralize('h'),
hh: pluralize('h'),
d: pluralize('d'),
dd: pluralize('d'),
M: pluralize('M'),
MM: pluralize('M'),
y: pluralize('y'),
yy: pluralize('y'),
},
preparse: function (string) {
return string
.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
return numberMap[match];
})
.replace(/،/g, ',');
},
postformat: function (string) {
return string
.replace(/\d/g, function (match) {
return symbolMap[match];
})
.replace(/,/g, '،');
},
week: {
dow: 6, // Saturday is the first day of the week.
doy: 12, // The week that contains Jan 12th is the first week of the year.
},
});
return ar;
})));

113
modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/moment/locale/az.js

@ -0,0 +1,113 @@
//! moment.js locale configuration
//! locale : Azerbaijani [az]
//! author : topchiyev : https://github.com/topchiyev
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, (function (moment) { 'use strict';
//! moment.js locale configuration
var suffixes = {
1: '-inci',
5: '-inci',
8: '-inci',
70: '-inci',
80: '-inci',
2: '-nci',
7: '-nci',
20: '-nci',
50: '-nci',
3: '-üncü',
4: '-üncü',
100: '-üncü',
6: '-ncı',
9: '-uncu',
10: '-uncu',
30: '-uncu',
60: '-ıncı',
90: '-ıncı',
};
var az = moment.defineLocale('az', {
months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(
'_'
),
monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
weekdays:
'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(
'_'
),
weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
weekdaysParseExact: true,
longDateFormat: {
LT: 'HH:mm',
LTS: 'HH:mm:ss',
L: 'DD.MM.YYYY',
LL: 'D MMMM YYYY',
LLL: 'D MMMM YYYY HH:mm',
LLLL: 'dddd, D MMMM YYYY HH:mm',
},
calendar: {
sameDay: '[bugün saat] LT',
nextDay: '[sabah saat] LT',
nextWeek: '[gələn həftə] dddd [saat] LT',
lastDay: '[dünən] LT',
lastWeek: '[keçən həftə] dddd [saat] LT',
sameElse: 'L',
},
relativeTime: {
future: '%s sonra',
past: '%s əvvəl',
s: 'bir neçə saniyə',
ss: '%d saniyə',
m: 'bir dəqiqə',
mm: '%d dəqiqə',
h: 'bir saat',
hh: '%d saat',
d: 'bir gün',
dd: '%d gün',
M: 'bir ay',
MM: '%d ay',
y: 'bir il',
yy: '%d il',
},
meridiemParse: /gecə|səhər|gündüz|axşam/,
isPM: function (input) {
return /^(gündüz|axşam)$/.test(input);
},
meridiem: function (hour, minute, isLower) {
if (hour < 4) {
return 'gecə';
} else if (hour < 12) {
return 'səhər';
} else if (hour < 17) {
return 'gündüz';
} else {
return 'axşam';
}
},
dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
ordinal: function (number) {
if (number === 0) {
// special case for zero
return number + '-ıncı';
}
var a = number % 10,
b = (number % 100) - a,
c = number >= 100 ? 100 : null;
return number + (suffixes[a] || suffixes[b] || suffixes[c]);
},
week: {
dow: 1, // Monday is the first day of the week.
doy: 7, // The week that contains Jan 7th is the first week of the year.
},
});
return az;
})));

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

Loading…
Cancel
Save