From f184be6937189aba35e9404365937d1d6fdfcbde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20G=C3=B6pel?= Date: Sun, 5 Jul 2026 10:37:51 +0800 Subject: [PATCH 1/7] feat: add an Aspire sample host for local testing and as a setup demo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a runnable example under samples/: - AndreGoepel.AppFoundation.Sample — a minimal Blazor Server host that wires the packages exactly as the README describes (AddAppFoundation / UseAppFoundation, App.razor, Routes.razor, MapAdditionalIdentityEndpoints). - AndreGoepel.AppFoundation.AppHost — a .NET Aspire orchestrator that starts PostgreSQL (with a data volume) and the web app, wiring the appfoundation-database connection string. Run with: dotnet run --project samples/AndreGoepel.AppFoundation.AppHost. The AppHost opts out of central package management and lock files because the Aspire SDK injects RID-specific packages that aren't portable across OSes (would break CI locked-mode restore); the sample keeps a portable lock file. Both are IsPackable=false. Adds a "Try it locally" README section and points .aspire/settings.json at the in-repo AppHost. --- .aspire/settings.json | 4 +- AndreGoepel.AppFoundation.slnx | 4 + README.md | 24 + .../AndreGoepel.AppFoundation.AppHost.csproj | 30 + .../AppHost.cs | 16 + .../Properties/launchSettings.json | 23 + .../appsettings.json | 9 + .../AndreGoepel.AppFoundation.Sample.csproj | 19 + .../Components/App.razor | 21 + .../Components/Pages/Home.razor | 48 ++ .../Components/Routes.razor | 23 + .../Components/_Imports.razor | 16 + .../Program.cs | 47 ++ .../Properties/launchSettings.json | 21 + .../appsettings.json | 9 + .../packages.lock.json | 688 ++++++++++++++++++ .../wwwroot/app.css | 22 + 17 files changed, 1022 insertions(+), 2 deletions(-) create mode 100644 samples/AndreGoepel.AppFoundation.AppHost/AndreGoepel.AppFoundation.AppHost.csproj create mode 100644 samples/AndreGoepel.AppFoundation.AppHost/AppHost.cs create mode 100644 samples/AndreGoepel.AppFoundation.AppHost/Properties/launchSettings.json create mode 100644 samples/AndreGoepel.AppFoundation.AppHost/appsettings.json create mode 100644 samples/AndreGoepel.AppFoundation.Sample/AndreGoepel.AppFoundation.Sample.csproj create mode 100644 samples/AndreGoepel.AppFoundation.Sample/Components/App.razor create mode 100644 samples/AndreGoepel.AppFoundation.Sample/Components/Pages/Home.razor create mode 100644 samples/AndreGoepel.AppFoundation.Sample/Components/Routes.razor create mode 100644 samples/AndreGoepel.AppFoundation.Sample/Components/_Imports.razor create mode 100644 samples/AndreGoepel.AppFoundation.Sample/Program.cs create mode 100644 samples/AndreGoepel.AppFoundation.Sample/Properties/launchSettings.json create mode 100644 samples/AndreGoepel.AppFoundation.Sample/appsettings.json create mode 100644 samples/AndreGoepel.AppFoundation.Sample/packages.lock.json create mode 100644 samples/AndreGoepel.AppFoundation.Sample/wwwroot/app.css diff --git a/.aspire/settings.json b/.aspire/settings.json index 3c52ba2..22d27ee 100644 --- a/.aspire/settings.json +++ b/.aspire/settings.json @@ -1,3 +1,3 @@ { - "appHostPath": "../AndreGoepel.MembersArea/AndreGoepel.MembersArea.AppHost/AndreGoepel.MembersArea.AppHost.csproj" -} \ No newline at end of file + "appHostPath": "samples/AndreGoepel.AppFoundation.AppHost/AndreGoepel.AppFoundation.AppHost.csproj" +} diff --git a/AndreGoepel.AppFoundation.slnx b/AndreGoepel.AppFoundation.slnx index 94f341c..606a5d2 100644 --- a/AndreGoepel.AppFoundation.slnx +++ b/AndreGoepel.AppFoundation.slnx @@ -14,4 +14,8 @@ + + + + diff --git a/README.md b/README.md index fd1f554..7c9a49a 100644 --- a/README.md +++ b/README.md @@ -94,6 +94,30 @@ for a complete, working example. --- +## Try it locally (sample host) + +The repo ships a runnable example under `samples/`: a .NET Aspire AppHost that starts +PostgreSQL in a container plus a minimal Blazor Server host that wires the packages exactly +as [Using it in a host app](#using-it-in-a-host-app) describes. It doubles as a manual smoke +test for the foundation. + +**Prerequisites:** the .NET 10 SDK and a container runtime (Docker / Podman) for the database. + +```bash +dotnet run --project samples/AndreGoepel.AppFoundation.AppHost +``` + +Open the Aspire dashboard URL printed to the console, start the **web** resource, and open it. +The first visit funnels you to **/Setup** to create the administrator; after that you can sign +in and explore the dashboard and the Administration area. + +| Project | Role | +|---|---| +| `samples/AndreGoepel.AppFoundation.AppHost` | Aspire orchestrator — starts Postgres and the web app, wiring the `appfoundation-database` connection string | +| `samples/AndreGoepel.AppFoundation.Sample` | Minimal Blazor Server host consuming the packages — the reference `Program.cs`, `App.razor`, and `Routes.razor` | + +--- + ## Configuration A PostgreSQL connection string is required, by default under diff --git a/samples/AndreGoepel.AppFoundation.AppHost/AndreGoepel.AppFoundation.AppHost.csproj b/samples/AndreGoepel.AppFoundation.AppHost/AndreGoepel.AppFoundation.AppHost.csproj new file mode 100644 index 0000000..9708335 --- /dev/null +++ b/samples/AndreGoepel.AppFoundation.AppHost/AndreGoepel.AppFoundation.AppHost.csproj @@ -0,0 +1,30 @@ + + + + + + Exe + net10.0 + enable + enable + false + + false + + false + appfoundation-sample-apphost + + + + + + + + + + + + diff --git a/samples/AndreGoepel.AppFoundation.AppHost/AppHost.cs b/samples/AndreGoepel.AppFoundation.AppHost/AppHost.cs new file mode 100644 index 0000000..95eecce --- /dev/null +++ b/samples/AndreGoepel.AppFoundation.AppHost/AppHost.cs @@ -0,0 +1,16 @@ +var builder = DistributedApplication.CreateBuilder(args); + +// A PostgreSQL container with a persistent volume so setup and accounts survive restarts. +var postgres = builder.AddPostgres("postgres").WithDataVolume(); + +// The database resource name is the connection-string name the foundation reads by default +// (AppFoundationOptions.DatabaseConnectionName == "appfoundation-database"). +var database = postgres.AddDatabase("appfoundation-database", "appfoundation"); + +// The sample web app, wired to the database and started only once it is ready. +builder + .AddProject("web") + .WithReference(database) + .WaitFor(database); + +builder.Build().Run(); diff --git a/samples/AndreGoepel.AppFoundation.AppHost/Properties/launchSettings.json b/samples/AndreGoepel.AppFoundation.AppHost/Properties/launchSettings.json new file mode 100644 index 0000000..9abfffd --- /dev/null +++ b/samples/AndreGoepel.AppFoundation.AppHost/Properties/launchSettings.json @@ -0,0 +1,23 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "https": { + "commandName": "Project", + "launchBrowser": true, + "applicationUrl": "https://localhost:17010;http://localhost:15010", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "DOTNET_ENVIRONMENT": "Development" + } + }, + "http": { + "commandName": "Project", + "launchBrowser": true, + "applicationUrl": "http://localhost:15010", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "DOTNET_ENVIRONMENT": "Development" + } + } + } +} diff --git a/samples/AndreGoepel.AppFoundation.AppHost/appsettings.json b/samples/AndreGoepel.AppFoundation.AppHost/appsettings.json new file mode 100644 index 0000000..31c092a --- /dev/null +++ b/samples/AndreGoepel.AppFoundation.AppHost/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning", + "Aspire.Hosting.Dcp": "Warning" + } + } +} diff --git a/samples/AndreGoepel.AppFoundation.Sample/AndreGoepel.AppFoundation.Sample.csproj b/samples/AndreGoepel.AppFoundation.Sample/AndreGoepel.AppFoundation.Sample.csproj new file mode 100644 index 0000000..0fafb20 --- /dev/null +++ b/samples/AndreGoepel.AppFoundation.Sample/AndreGoepel.AppFoundation.Sample.csproj @@ -0,0 +1,19 @@ + + + + net10.0 + enable + enable + false + + + + + + + + + + + + diff --git a/samples/AndreGoepel.AppFoundation.Sample/Components/App.razor b/samples/AndreGoepel.AppFoundation.Sample/Components/App.razor new file mode 100644 index 0000000..0dd4f4b --- /dev/null +++ b/samples/AndreGoepel.AppFoundation.Sample/Components/App.razor @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/AndreGoepel.AppFoundation.Sample/Components/Pages/Home.razor b/samples/AndreGoepel.AppFoundation.Sample/Components/Pages/Home.razor new file mode 100644 index 0000000..7013945 --- /dev/null +++ b/samples/AndreGoepel.AppFoundation.Sample/Components/Pages/Home.razor @@ -0,0 +1,48 @@ +@page "/" +@rendermode InteractiveServer + +@using AndreGoepel.Marten.Identity +@using global::Marten + +@inject IQuerySession QuerySession +@inject NavigationManager NavigationManager + +AppFoundation Sample + +
+ + + AppFoundation Sample + + + A minimal host that wires the AppFoundation packages. Use it to exercise the setup, + sign-in, and administration flows against a real PostgreSQL started by .NET Aspire. + + + + @if (setupComplete) + { + + + } + else + { + + } + + + +
+ +@code { + private bool setupComplete; + + protected override async Task OnInitializedAsync() => + setupComplete = await SetupCompletion.IsCompleteAsync(QuerySession); +} diff --git a/samples/AndreGoepel.AppFoundation.Sample/Components/Routes.razor b/samples/AndreGoepel.AppFoundation.Sample/Components/Routes.razor new file mode 100644 index 0000000..177dd40 --- /dev/null +++ b/samples/AndreGoepel.AppFoundation.Sample/Components/Routes.razor @@ -0,0 +1,23 @@ +@using AndreGoepel.AppFoundation.Components.Layout +@using AndreGoepel.Marten.Identity.Blazor.Components.Account.Shared + + + + + + + + + + + + +@code { + // The routable pages live in the AppFoundation UI and the Marten.Identity account + // packages, so the router must scan those assemblies in addition to this host. + private readonly System.Reflection.Assembly[] _additionalAssemblies = + [ + typeof(AppFoundationLayoutOptions).Assembly, + typeof(AndreGoepel.Marten.Identity.Blazor.Initialization).Assembly, + ]; +} diff --git a/samples/AndreGoepel.AppFoundation.Sample/Components/_Imports.razor b/samples/AndreGoepel.AppFoundation.Sample/Components/_Imports.razor new file mode 100644 index 0000000..dc86ac0 --- /dev/null +++ b/samples/AndreGoepel.AppFoundation.Sample/Components/_Imports.razor @@ -0,0 +1,16 @@ +@using System.Net.Http +@using Microsoft.AspNetCore.Components.Authorization +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using static Microsoft.AspNetCore.Components.Web.RenderMode +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using AndreGoepel.AppFoundation +@using AndreGoepel.AppFoundation.Components.Layout +@using AndreGoepel.AppFoundation.Components.Shared +@using AndreGoepel.Marten.Identity.Blazor.Components.Account.Shared +@using AndreGoepel.AppFoundation.Sample +@using AndreGoepel.AppFoundation.Sample.Components +@using Radzen +@using Radzen.Blazor diff --git a/samples/AndreGoepel.AppFoundation.Sample/Program.cs b/samples/AndreGoepel.AppFoundation.Sample/Program.cs new file mode 100644 index 0000000..9ca5921 --- /dev/null +++ b/samples/AndreGoepel.AppFoundation.Sample/Program.cs @@ -0,0 +1,47 @@ +using AndreGoepel.AppFoundation; +using AndreGoepel.AppFoundation.Hosting; +using AndreGoepel.AppFoundation.Sample.Components; +using AndreGoepel.Marten.Identity.Blazor.Components.Account; + +var builder = WebApplication.CreateBuilder(args); + +// One call wires the data store, identity, messaging, email, data protection, and the +// shared request pipeline. The connection string named "appfoundation-database" is +// supplied by the Aspire AppHost (or Docker secrets in production). +builder.AddAppFoundation(); + +builder.Services.AddRazorComponents().AddInteractiveServerComponents(); + +// Brand the management shell. A real host would also set LogoPath and, optionally, an +// AdminMenu component to contribute its own administration entries. +builder.Services.Configure(options => +{ + options.BrandName = "AppFoundation Sample"; + options.Copyright = $"© {DateTime.UtcNow:yyyy} AppFoundation"; + // A self-contained placeholder logo so the sample needs no binary asset. A real host + // points LogoPath at its own image under wwwroot. + options.LogoPath = + "data:image/svg+xml;utf8," + + "" + + "" + + "A"; +}); + +var app = builder.Build(); + +app.UseAppFoundation(); + +app.MapStaticAssets(); +app.MapRazorComponents() + .AddInteractiveServerRenderMode() + .AddAdditionalAssemblies( + // The AppFoundation management UI (layout, setup, dashboard, admin pages) … + typeof(AppFoundationLayoutOptions).Assembly, + // … and the Marten.Identity account pages (login, register, account management). + typeof(AndreGoepel.Marten.Identity.Blazor.Initialization).Assembly + ); + +app.MapAdditionalIdentityEndpoints(); + +app.Run(); diff --git a/samples/AndreGoepel.AppFoundation.Sample/Properties/launchSettings.json b/samples/AndreGoepel.AppFoundation.Sample/Properties/launchSettings.json new file mode 100644 index 0000000..183c528 --- /dev/null +++ b/samples/AndreGoepel.AppFoundation.Sample/Properties/launchSettings.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "https": { + "commandName": "Project", + "launchBrowser": true, + "applicationUrl": "https://localhost:7080;http://localhost:5080", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "http": { + "commandName": "Project", + "launchBrowser": true, + "applicationUrl": "http://localhost:5080", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/samples/AndreGoepel.AppFoundation.Sample/appsettings.json b/samples/AndreGoepel.AppFoundation.Sample/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/samples/AndreGoepel.AppFoundation.Sample/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/samples/AndreGoepel.AppFoundation.Sample/packages.lock.json b/samples/AndreGoepel.AppFoundation.Sample/packages.lock.json new file mode 100644 index 0000000..5198cc2 --- /dev/null +++ b/samples/AndreGoepel.AppFoundation.Sample/packages.lock.json @@ -0,0 +1,688 @@ +{ + "version": 2, + "dependencies": { + "net10.0": { + "AndreGoepel.Marten.Identity.Blazor": { + "type": "Direct", + "requested": "[1.1.3, )", + "resolved": "1.1.3", + "contentHash": "GseXArQ+jtV7mRqKAqSrF3kjrskKxEhZVFcMCN9pAUMG3sXU4nqhWq0EkVW1KZ1GtNbL9XmfDc737AQrmG655Q==", + "dependencies": { + "AndreGoepel.Marten.Identity": "1.1.3", + "Marten": "9.12.0", + "Radzen.Blazor": "11.0.5" + } + }, + "Microsoft.AspNetCore.App.Internal.Assets": { + "type": "Direct", + "requested": "[10.0.8, )", + "resolved": "10.0.8", + "contentHash": "v6KocthydFtUHBIRI29YsOHKOgsqcQubkNywVOxiYr4GSDSv+XO/AeyMJywlX+1tGUTGdydu/X7V+Tzeq4SsoA==" + }, + "AndreGoepel.Marten.Identity": { + "type": "Transitive", + "resolved": "1.1.3", + "contentHash": "5ThzsH0mJOYYGwBtBh9dRj8Pwc78wvOTYnGyM5io82N4ItEG4+lkmSq2X4JdcxHdptFc0BxLCWPnEpOFCYAxbA==", + "dependencies": { + "AndreGoepel.Marten.Identity.Abstractions": "1.1.3", + "Marten": "9.12.0", + "Marten.AspNetCore": "9.12.0", + "Quartz.Extensions.Hosting": "3.18.2" + } + }, + "AndreGoepel.Marten.Identity.Abstractions": { + "type": "Transitive", + "resolved": "1.1.3", + "contentHash": "2GQmYNU6RHXqKenvYqD+QkUKbuJnaC66XkdGEYoiLVSUnoTZZiiAP14QuJ1CpoAL6L8qR17E7WI3VBZsSH49oA==" + }, + "BouncyCastle.Cryptography": { + "type": "Transitive", + "resolved": "2.6.2", + "contentHash": "7oWOcvnntmMKNzDLsdxAYqApt+AjpRpP2CShjMfIa3umZ42UQMvH0tl1qAliYPNYO6vTdcGMqnRrCPmsfzTI1w==" + }, + "DistributedLock.Core": { + "type": "Transitive", + "resolved": "1.0.8", + "contentHash": "LAOsY8WxX8JU/n3lfXFz+f2pfnv0+4bHkCrOO3bwa28u9HrS3DlxSG6jf+u76SqesKs+KehZi0CndkfaUXBKvg==" + }, + "DistributedLock.Postgres": { + "type": "Transitive", + "resolved": "1.3.0", + "contentHash": "CyjXmbhFgG30qPg4DwGnsmZO63y5DBRo+PI2xW0NwtFrsYsMVt/T1RcEUlb36JMKhDkf+euhnkanv/nU+W35qA==", + "dependencies": { + "DistributedLock.Core": "[1.0.8, 1.1.0)", + "Npgsql": "8.0.6" + } + }, + "FastExpressionCompiler": { + "type": "Transitive", + "resolved": "5.4.1", + "contentHash": "nqMykMspK5cQd35Y8ulQzAujxCcCwZVUne32pC5xNpXqrbPCuKOPMWkKHJ3LveAZPm6dsVvump0TJ1SZ9RzfTQ==" + }, + "Humanizer.Core": { + "type": "Transitive", + "resolved": "2.14.1", + "contentHash": "lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==" + }, + "ImTools": { + "type": "Transitive", + "resolved": "4.0.0", + "contentHash": "dms0JfLKC9AQbQX/EdpRjn59EjEvaCxIgv1z9YxbEQb5SiOVoo7vlIKdEySeEwUkWhN05rZnNpUpG+aw5VqPVQ==" + }, + "JasperFx": { + "type": "Transitive", + "resolved": "2.18.1", + "contentHash": "i8k7awEkuDdZV4kUzIQT54h5pydEzBpH4CjD5ds7b7dHxK0KYvIyKWDWZqMHHJVbVqXEQHtQHQNTeqUi2zOLZw==", + "dependencies": { + "FastExpressionCompiler": "5.4.1", + "ImTools": "4.0.0", + "Microsoft.Bcl.TimeProvider": "10.0.0", + "Polly.Core": "8.6.5", + "Spectre.Console": "0.55.0" + } + }, + "JasperFx.Events": { + "type": "Transitive", + "resolved": "2.18.1", + "contentHash": "kBK14ziH5UV7jYrsclg6KPpB8F3vmCXhkMDWw+oPnBaxYC4xeB/5STrt+gn6V4VlbR1Xn/wcd9ZVAx3teDls9w==", + "dependencies": { + "JasperFx": "2.18.1" + } + }, + "JasperFx.RuntimeCompiler": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "FKP0HSPN3p8YgJHWaTTqk/wZhLpOrShjrZ9rT3dAuKfj7EvC/NepRxeJ5Nq55tIcLAwR/pLVedxhxL9/kizwFg==", + "dependencies": { + "JasperFx": "2.0.0", + "Microsoft.CodeAnalysis": "5.0.0", + "Microsoft.CodeAnalysis.CSharp": "5.0.0", + "Microsoft.CodeAnalysis.Scripting": "5.0.0" + } + }, + "JasperFx.SourceGenerator": { + "type": "Transitive", + "resolved": "2.16.0", + "contentHash": "wwjl3taQ1Z40ESBTIAYwf88nms3sXp6osyAzIAjXugrUCj3D4AIYEYQGxHAPF6Yk6o6Roouw/pnMqJuKS2jM0g==" + }, + "Microsoft.Bcl.AsyncInterfaces": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "owmu2Cr3IQ8yQiBleBHlGk8dSQ12oaF2e7TpzwJKEl4m84kkZJjEY1n33L67Y3zM5jPOjmmbdHjbfiL0RqcMRQ==" + }, + "Microsoft.Bcl.TimeProvider": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "bUubrBD6tRJE3V1kvRloYc6NymH3R5oFKjAS9e0ELNx6u0ZR+zjps9dDQyjgqN/rArzl7f+21KGszj3YRN7F2Q==" + }, + "Microsoft.CodeAnalysis": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "X7vItpZDkGm4NS2wp4P1S07Z1e61LaBWDW5tPXE1c6z5/x9KbF2RymhAPoYg7Qoiyk7odEZ6EjBEJ47p3dBpYQ==", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.Bcl.AsyncInterfaces": "9.0.0", + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "Microsoft.CodeAnalysis.CSharp.Workspaces": "[5.0.0]", + "Microsoft.CodeAnalysis.VisualBasic.Workspaces": "[5.0.0]", + "System.Composition": "9.0.0" + } + }, + "Microsoft.CodeAnalysis.Analyzers": { + "type": "Transitive", + "resolved": "3.11.0", + "contentHash": "v/EW3UE8/lbEYHoC2Qq7AR/DnmvpgdtAMndfQNmpuIMx/Mto8L5JnuCfdBYtgvalQOtfNCnxFejxuRrryvUTsg==" + }, + "Microsoft.CodeAnalysis.Common": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZXRAdvH6GiDeHRyd3q/km8Z44RoM6FBWHd+gen/la81mVnAdHTEsEkO5J0TCNXBymAcx5UYKt5TvgKBhaLJEow==", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.11.0" + } + }, + "Microsoft.CodeAnalysis.CSharp": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "5DSyJ9bk+ATuDy7fp2Zt0mJStDVKbBoiz1DyfAwSa+k4H4IwykAUcV3URelw5b8/iVbfSaOwkwmPUZH6opZKCw==", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "Microsoft.CodeAnalysis.Common": "[5.0.0]" + } + }, + "Microsoft.CodeAnalysis.CSharp.Scripting": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "1sGloRYbG3743ut/+vuXy9/WaRQTm7mDtp71rBaVSmKpFntvo5Hcro1ubg6/3SeeLtiFYJl7V3Dk0Fo3CGlnHA==", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "Microsoft.CodeAnalysis.CSharp": "[5.0.0]", + "Microsoft.CodeAnalysis.Common": "[5.0.0]", + "Microsoft.CodeAnalysis.Scripting.Common": "[5.0.0]" + } + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "Al/Q8B+yO8odSqGVpSvrShMFDvlQdIBU//F3E6Rb0YdiLSALE9wh/pvozPNnfmh5HDnvU+mkmSjpz4hQO++jaA==", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "Microsoft.CodeAnalysis.CSharp": "[5.0.0]", + "Microsoft.CodeAnalysis.Common": "[5.0.0]", + "Microsoft.CodeAnalysis.Workspaces.Common": "[5.0.0]", + "System.Composition": "9.0.0" + } + }, + "Microsoft.CodeAnalysis.Scripting": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "/KgZdm6kRTrR/O2jqXxU5GWREYhtVmqcNWczyPt8hsQkFGFK/C6CrLWfG44FCUn0aPHGDRBHYjXlGosQ/H8oXw==", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "Microsoft.CodeAnalysis.CSharp.Scripting": "[5.0.0]" + } + }, + "Microsoft.CodeAnalysis.Scripting.Common": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "XTulByMNxqXGCgMeODUoG2h4oK4/nLv1BcawRVcjv+UZHMpoaymtdaq3cJqlNrEvYEcbU48g5swJ3RhY1m3fBg==", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "Microsoft.CodeAnalysis.Common": "[5.0.0]" + } + }, + "Microsoft.CodeAnalysis.VisualBasic": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "sUBWvHs2HgHGA+b716dgjS7JiXGen5ntyohAurPLR1ZiZzFp3FlnVA7GrMTqVGdVJTVqiC3c4K8k1bk0gj6IPg==", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "Microsoft.CodeAnalysis.Common": "[5.0.0]" + } + }, + "Microsoft.CodeAnalysis.VisualBasic.Workspaces": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "Nom4UuZVEZGaV6Qa+joJR/BawXZMtflvQJFKc0SaUc3LrZr/8LmRY5cn8mbvLOWIVfwWkQz+cVE6eQKu9qa65g==", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "Microsoft.CodeAnalysis.Common": "[5.0.0]", + "Microsoft.CodeAnalysis.VisualBasic": "[5.0.0]", + "Microsoft.CodeAnalysis.Workspaces.Common": "[5.0.0]", + "System.Composition": "9.0.0" + } + }, + "Microsoft.CodeAnalysis.Workspaces.Common": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZbUmIvT6lqTNKiv06Jl5wf0MTMi1vQ1oH7ou4CLcs2C/no/L7EhP3T8y3XXvn9VbqMcJaJnEsNA1jwYUMgc5jg==", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "Microsoft.CodeAnalysis.Common": "[5.0.0]", + "System.Composition": "9.0.0" + } + }, + "Microsoft.Extensions.AmbientMetadata.Application": { + "type": "Transitive", + "resolved": "10.7.0", + "contentHash": "yZ0818pVYQvUFW/1m+f8A1+lIAeSeQxEOdUCMIC+tqcRRKlqNjKPRKvGHPp8xLRbZBLaHfBtDslJa/sofn7J/Q==" + }, + "Microsoft.Extensions.Compliance.Abstractions": { + "type": "Transitive", + "resolved": "10.7.0", + "contentHash": "qbi6lg6dyvydBvpjXeBx3wLPvmgXWn3nwkKBOsgEck6w++BEsBcv8YhdcczME16Oq+a6wkdtna9/qCEkxsNw5A==" + }, + "Microsoft.Extensions.DependencyInjection.AutoActivation": { + "type": "Transitive", + "resolved": "10.7.0", + "contentHash": "WrSK0FGHSjSY4Pg4kd9Du8CUDwrgFTwHH1Y+N7sjyT6RFMU+G3coQ/Uq9PMGdQcy+DVKSMGHjfmWY47ZoYvhNA==" + }, + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { + "type": "Transitive", + "resolved": "10.7.0", + "contentHash": "Kc4XbbxtCzvn2P/fKF48xLWPbp3N5DV0MkJlgPJHEb47PUqCJ6kEl/JTKfpmP7QLuwYjx2QxKTdtwXfpjgA6KQ==" + }, + "Microsoft.Extensions.Http.Diagnostics": { + "type": "Transitive", + "resolved": "10.7.0", + "contentHash": "1m1zdBGW5J8MOxdZpJ5mUqdSaamRrYkpmfnEfeDmlZnglpfgDztcKOBU6cVsmn90AB7Ji2w8USvEsJ8PahbBWQ==", + "dependencies": { + "Microsoft.Extensions.Telemetry": "10.7.0" + } + }, + "Microsoft.Extensions.Resilience": { + "type": "Transitive", + "resolved": "10.7.0", + "contentHash": "ldUrtRzWSnfe5945xoSxDXxoWXnIKn19E74Huieyp76XW/BjRk3bhkILSSib1NKdZ2lpi/ReTvOpNGcJ8hkOxw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "10.7.0", + "Microsoft.Extensions.Telemetry.Abstractions": "10.7.0", + "Polly.Extensions": "8.4.2", + "Polly.RateLimiting": "8.4.2" + } + }, + "Microsoft.Extensions.ServiceDiscovery.Abstractions": { + "type": "Transitive", + "resolved": "10.7.0", + "contentHash": "1a/tCYg7+5HdJRQ0BQDDGzANBaw/1fony7eNsMwQ5n9FZmO3K5JCls02o8fwQc296l0szNBwroLRtXf94OZw9A==" + }, + "Microsoft.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "10.7.0", + "contentHash": "vZFNVvkz+7IABEv4klzPX/ZdmZQ6TrcReKUfeYIrQ2bbnvEcgZtG1RmOGeWkc1hFg8cq9sAgUc2lHCqlXSqf5A==", + "dependencies": { + "Microsoft.Extensions.AmbientMetadata.Application": "10.7.0", + "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.7.0", + "Microsoft.Extensions.Telemetry.Abstractions": "10.7.0" + } + }, + "Microsoft.Extensions.Telemetry.Abstractions": { + "type": "Transitive", + "resolved": "10.7.0", + "contentHash": "ir1QKShZzfEmqO9LUWESVMUDZdnxYBSKQyulYPMeaye531lAuT8YTotthx+htrrS8hZY52HANeqowLQyCYBCZg==", + "dependencies": { + "Microsoft.Extensions.Compliance.Abstractions": "10.7.0" + } + }, + "Microsoft.IO.RecyclableMemoryStream": { + "type": "Transitive", + "resolved": "3.0.1", + "contentHash": "s/s20YTVY9r9TPfTrN5g8zPF1YhwxyqO6PxUkrYTGI2B+OGPe9AdajWZrLhFqXIvqIW23fnUE4+ztrUWNU1+9g==" + }, + "MimeKit": { + "type": "Transitive", + "resolved": "4.17.0", + "contentHash": "h/KXsCreJf8RpR/PSAtlbvYtZFndp9N8Wn1Bs248AL7ITyhn+AiIY5bLTvt60tbN2mu6g8KadtBNWygTji2lqg==", + "dependencies": { + "BouncyCastle.Cryptography": "2.6.2", + "System.Security.Cryptography.Pkcs": "10.0.0" + } + }, + "NetTopologySuite": { + "type": "Transitive", + "resolved": "2.5.0", + "contentHash": "5/+2O2ADomEdUn09mlSigACdqvAf0m/pVPGtIPEPQWnyrVykYY0NlfXLIdkMgi41kvH9kNrPqYaFBTZtHYH7Xw==" + }, + "NetTopologySuite.IO.PostGis": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "3W8XTFz8iP6GQ5jDXK1/LANHiU+988k1kmmuPWNKcJLpmSg6CvFpbTpz+s4+LBzkAp64wHGOldSlkSuzYfrIKA==", + "dependencies": { + "NetTopologySuite": "[2.0.0, 3.0.0-A)" + } + }, + "NewId": { + "type": "Transitive", + "resolved": "4.0.1", + "contentHash": "jegBasNndmG21G3BmT51suFDCIz/sLN81j+IxmkZ4iWoaDi8LygeHiyNnYbXz5OQh9nCRJFIx1+PJrlYi1Gc9Q==" + }, + "Npgsql": { + "type": "Transitive", + "resolved": "9.0.4", + "contentHash": "68BASXH0FAEuL/J4J0eRfYC8/3vzqQTmoW8zDzNf0JgaVxc7LZeEkS6jaG0ib3voFLxY5ZiCwJG+uQM+mzuu0Q==" + }, + "Npgsql.NetTopologySuite": { + "type": "Transitive", + "resolved": "9.0.4", + "contentHash": "7AwBLPz8EPmgAXveZ55K0Tz/9bNb8j4VI4pkTOQjyHrce8wWfAA9pefm3REidy+Kt2UFiAWef34YVi7sb/kB4A==", + "dependencies": { + "NetTopologySuite": "2.5.0", + "NetTopologySuite.IO.PostGIS": "2.1.0", + "Npgsql": "9.0.4" + } + }, + "OpenTelemetry": { + "type": "Transitive", + "resolved": "1.16.0", + "contentHash": "nE/Px3MUvQC8c0UG0DOP5OJE7vMtiMaPYi/6TkSS/o/O0s/oPq+8WaPYTVEPzb7lwu/QyLgknc+sFm2FjPXe2A==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "1.16.0" + } + }, + "OpenTelemetry.Api": { + "type": "Transitive", + "resolved": "1.16.0", + "contentHash": "WZP8Eb6vZTeNqeV+fjBitc7iefBoTHIhaWorqg/h/YiQBlcQJu0bICuTqKV0XRyjiE0eWs80yLlnUtHAFSkFWA==" + }, + "OpenTelemetry.Api.ProviderBuilderExtensions": { + "type": "Transitive", + "resolved": "1.16.0", + "contentHash": "hZwaHAkXvUNn9+cS+vEvYBgIrIQOQRz2cIRUODZ5gxHsDsLeNCueLgZFkybopjE0jUhLut6lm5eL3LTqbW0hMg==", + "dependencies": { + "OpenTelemetry.Api": "1.16.0" + } + }, + "Polly.Core": { + "type": "Transitive", + "resolved": "8.6.5", + "contentHash": "t+sUVrIwvo7UmsgHGgOG9F0GDZSRIm47u2ylH17Gvcv1q5hNEwgD5GoBlFyc0kh/pebmPyrAgvGsR/65ZBaXlg==" + }, + "Polly.Extensions": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", + "dependencies": { + "Polly.Core": "8.4.2" + } + }, + "Polly.RateLimiting": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", + "dependencies": { + "Polly.Core": "8.4.2" + } + }, + "Quartz": { + "type": "Transitive", + "resolved": "3.18.2", + "contentHash": "/KaRLj7jv84RSIR/UtAWnzYRmS7o/mA6CdEuoLwxhLa9Nfl7Q1keMA7Fe/r2BzRfDf+7YpN1QNEYSSU89DA3OA==" + }, + "Quartz.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "3.18.2", + "contentHash": "+P0z/WUQZF/QrY5wB1wgvl9/VkiWqGR/K5bdtjW1qiFBraEoe/dqfNTxXQPnSZHnha1qmSBRoa5oA7kwHPsTqA==", + "dependencies": { + "Quartz": "3.18.2" + } + }, + "Spectre.Console": { + "type": "Transitive", + "resolved": "0.55.0", + "contentHash": "2TVhUHFsDux0Z+y2Hv4bFsOMuON4SuotEEKkMparFkp5Rm259naaaEQrN4Sv6C1cbsiGKPjfkJDGgUp+hZPjTw==", + "dependencies": { + "Spectre.Console.Ansi": "0.55.0" + } + }, + "Spectre.Console.Ansi": { + "type": "Transitive", + "resolved": "0.55.0", + "contentHash": "GIfgOvuF8MpU52bprhwtDEtx0gmVIGOepM8bw0lH/TSMD0rg1Xp+5Y53kPG8rFVdcpbNANlhDQ5mEVVPO3/2Tg==" + }, + "System.Composition": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "3Djj70fFTraOarSKmRnmRy/zm4YurICm+kiCtI0dYRqGJnLX6nJ+G3WYuFJ173cAPax/gh96REcbNiVqcrypFQ==", + "dependencies": { + "System.Composition.AttributedModel": "9.0.0", + "System.Composition.Convention": "9.0.0", + "System.Composition.Hosting": "9.0.0", + "System.Composition.Runtime": "9.0.0", + "System.Composition.TypedParts": "9.0.0" + } + }, + "System.Composition.AttributedModel": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "iri00l/zIX9g4lHMY+Nz0qV1n40+jFYAmgsaiNn16xvt2RDwlqByNG4wgblagnDYxm3YSQQ0jLlC/7Xlk9CzyA==" + }, + "System.Composition.Convention": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "+vuqVP6xpi582XIjJi6OCsIxuoTZfR0M7WWufk3uGDeCl3wGW6KnpylUJ3iiXdPByPE0vR5TjJgR6hDLez4FQg==", + "dependencies": { + "System.Composition.AttributedModel": "9.0.0" + } + }, + "System.Composition.Hosting": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "OFqSeFeJYr7kHxDfaViGM1ymk7d4JxK//VSoNF9Ux0gpqkLsauDZpu89kTHHNdCWfSljbFcvAafGyBoY094btQ==", + "dependencies": { + "System.Composition.Runtime": "9.0.0" + } + }, + "System.Composition.Runtime": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "w1HOlQY1zsOWYussjFGZCEYF2UZXgvoYnS94NIu2CBnAGMbXFAX8PY8c92KwUItPmowal68jnVLBCzdrWLeEKA==" + }, + "System.Composition.TypedParts": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "aRZlojCCGEHDKqh43jaDgaVpYETsgd7Nx4g1zwLKMtv4iTo0627715ajEFNpEEBTgLmvZuv8K0EVxc3sM4NWJA==", + "dependencies": { + "System.Composition.AttributedModel": "9.0.0", + "System.Composition.Hosting": "9.0.0", + "System.Composition.Runtime": "9.0.0" + } + }, + "System.Security.Cryptography.Pkcs": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "UPWqLSygJlFerRi9XNIuM0a1VC8gHUIufyP24xQ0sc+XimqUAEcjpOz9DhKpyDjH+5B/wO3RpC0KpkEeDj/ddg==" + }, + "Weasel.Core": { + "type": "Transitive", + "resolved": "9.3.0", + "contentHash": "Lrf6a0N8T89q2z4IaBF6413zzQsABe+LvL9D5K5ig8JjpU7C1gOcgwPEeldpdxcj3q7mSaYx9LKW72TC2wLpbw==", + "dependencies": { + "JasperFx": "2.13.1" + } + }, + "Weasel.Postgresql": { + "type": "Transitive", + "resolved": "9.3.0", + "contentHash": "vbcpQFemPq88d8pM6Mcq8c/PkcNMjpMdal/AGThqsMliNnIVTiHFdPypSzBUthHTv8UV8fxF+ze9C7PHtq1Rrw==", + "dependencies": { + "DistributedLock.Postgres": "1.3.0", + "JasperFx.Events": "2.0.0", + "Npgsql": "9.0.4", + "Npgsql.NetTopologySuite": "9.0.4", + "Weasel.Core": "9.3.0" + } + }, + "WolverineFx": { + "type": "Transitive", + "resolved": "6.16.0", + "contentHash": "zDNCik/B9eou+cGkpYmzOlRe+aXvzBMkEFDA0i7/DgLOncbbX12gLsugojwoLHPLUCI4Grwk4ymPj5+gYK410g==", + "dependencies": { + "JasperFx": "2.16.0", + "JasperFx.Events": "2.16.0", + "JasperFx.SourceGenerator": "2.16.0", + "NewId": "4.0.1" + } + }, + "WolverineFx.Postgresql": { + "type": "Transitive", + "resolved": "6.16.0", + "contentHash": "u3p2opC06FUYd3CQRiN4x/MSl3nbHbcpzxt69RSi7ZPq311g00wCyUJ4wHb+SSGN1a3yFqjihEoSXGvqXAThSA==", + "dependencies": { + "Weasel.Postgresql": "9.3.0", + "WolverineFx.RDBMS": "6.16.0" + } + }, + "WolverineFx.RDBMS": { + "type": "Transitive", + "resolved": "6.16.0", + "contentHash": "IYfSUZkSSwMGtcq85Pe2Nom0TWzLmSxmgNvHT8pLl4LmwBpgOWc2bVj1VYJFopS2qMZxTsWTQYnLfTIQN0CSdA==", + "dependencies": { + "Weasel.Core": "9.3.0", + "WolverineFx": "6.16.0" + } + }, + "andregoepel.appfoundation": { + "type": "Project", + "dependencies": { + "AndreGoepel.AppFoundation.MailService": "[1.1.0, )", + "AndreGoepel.Marten.Identity.Blazor": "[1.1.3, )", + "Marten": "[9.12.0, )", + "Radzen.Blazor": "[11.1.0, )", + "WolverineFx.Marten": "[6.16.0, )" + } + }, + "andregoepel.appfoundation.hosting": { + "type": "Project", + "dependencies": { + "AndreGoepel.AppFoundation": "[1.1.0, )", + "AndreGoepel.AppFoundation.MailService": "[1.1.0, )", + "AndreGoepel.AppFoundation.ServiceDefaults": "[1.1.0, )", + "AndreGoepel.Marten.Identity.Blazor": "[1.1.3, )", + "Marten": "[9.12.0, )", + "Microsoft.AspNetCore.HeaderPropagation": "[10.0.9, )", + "Radzen.Blazor": "[11.1.0, )", + "WolverineFx.Marten": "[6.16.0, )", + "WolverineFx.RuntimeCompilation": "[6.16.0, )" + } + }, + "andregoepel.appfoundation.mailservice": { + "type": "Project", + "dependencies": { + "MailKit": "[4.17.0, )", + "Marten": "[9.12.0, )", + "WolverineFx.Marten": "[6.16.0, )" + } + }, + "andregoepel.appfoundation.servicedefaults": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Http.Resilience": "[10.7.0, )", + "Microsoft.Extensions.ServiceDiscovery": "[10.7.0, )", + "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.16.0, )", + "OpenTelemetry.Extensions.Hosting": "[1.16.0, )", + "OpenTelemetry.Instrumentation.AspNetCore": "[1.16.0, )", + "OpenTelemetry.Instrumentation.Http": "[1.16.0, )", + "OpenTelemetry.Instrumentation.Runtime": "[1.15.1, )" + } + }, + "MailKit": { + "type": "CentralTransitive", + "requested": "[4.17.0, )", + "resolved": "4.17.0", + "contentHash": "1nUAVLxM9fhT/78we6/AGsCesnpn5dRNLLeRqOfr52Wnk87pzVwo5YMTMyqnmoXrYc7piGhmayiMA/OgDluIjg==", + "dependencies": { + "MimeKit": "4.17.0" + } + }, + "Marten": { + "type": "CentralTransitive", + "requested": "[9.12.0, )", + "resolved": "9.12.0", + "contentHash": "RIyPzIN6ehfDmBWPs7zyMryy13uOPZHQBA8QuBwO0PHjzpyonP/rBoJYrgiJGXcaiWFVxqHj3QfPKuLjXsA5uQ==", + "dependencies": { + "JasperFx": "2.18.1", + "JasperFx.Events": "2.18.1", + "Microsoft.IO.RecyclableMemoryStream": "3.0.1", + "Weasel.Postgresql": "9.3.0" + } + }, + "Marten.AspNetCore": { + "type": "CentralTransitive", + "requested": "[9.0.2, )", + "resolved": "9.12.0", + "contentHash": "g4wqBQxqZDpr4T7Ayh131xIahnipLBlkp5Ar0cNez6OhqJZDQaUvWcbqyTWYlxiIedWnILeJeMzhO5Qu02j7LA==", + "dependencies": { + "Marten": "9.12.0" + } + }, + "Microsoft.AspNetCore.HeaderPropagation": { + "type": "CentralTransitive", + "requested": "[10.0.9, )", + "resolved": "10.0.9", + "contentHash": "yh0MmaDVEJOS5MvsneHTr1kbdJZnRH1PzMg4CdYw8qYURiTfD4nxdMxJb2izxFHqNqYnH6CQASMdfFtgPLrgww==" + }, + "Microsoft.Extensions.Http.Resilience": { + "type": "CentralTransitive", + "requested": "[10.7.0, )", + "resolved": "10.7.0", + "contentHash": "3Lip0MkBVPtqU1wCM2M2Y8CzsqxA1BanVNMV9LQYMTwBgy25NDe6U9nSk6SfmsxXlh77iwSQuPsyjt5mxrOGmQ==", + "dependencies": { + "Microsoft.Extensions.Http.Diagnostics": "10.7.0", + "Microsoft.Extensions.Resilience": "10.7.0" + } + }, + "Microsoft.Extensions.ServiceDiscovery": { + "type": "CentralTransitive", + "requested": "[10.7.0, )", + "resolved": "10.7.0", + "contentHash": "UgBfP98NmKDjx/2jbLGkckSlc8XG4ubkjPrqACE2i9LPmrgoYGWTh9snybRUGBm0sTchsq3on81XRxfvX+XC5g==", + "dependencies": { + "Microsoft.Extensions.ServiceDiscovery.Abstractions": "10.7.0" + } + }, + "OpenTelemetry.Exporter.OpenTelemetryProtocol": { + "type": "CentralTransitive", + "requested": "[1.16.0, )", + "resolved": "1.16.0", + "contentHash": "gzYLY8sVDY5FYtVlCYSzBYX53xslRlvBLxwFYOdNIhc76SgKdFYUoDQXOeQI3WPBCrZp51QNcP6fZHh1+HtpIQ==", + "dependencies": { + "OpenTelemetry": "1.16.0" + } + }, + "OpenTelemetry.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[1.16.0, )", + "resolved": "1.16.0", + "contentHash": "/YfrO5MRaA156vhNanYGPX2JjOwKUrA0+Jf7ltT2eD3VkfHqXcEJY5Oxt/nWH8lqBOTc1nJpn2soBtD5Cml8Dg==", + "dependencies": { + "OpenTelemetry": "1.16.0" + } + }, + "OpenTelemetry.Instrumentation.AspNetCore": { + "type": "CentralTransitive", + "requested": "[1.16.0, )", + "resolved": "1.16.0", + "contentHash": "vSC5EsmBVNcqXMh9BGkkq8zkoUjrg8ghBDb9zbKR8Bqjd05utjVgVft+fqsqQVsvlV5olGj1pBliHBngcIGSIg==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.16.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Http": { + "type": "CentralTransitive", + "requested": "[1.16.0, )", + "resolved": "1.16.0", + "contentHash": "+Sz3lfvMXwWE8s/sMruHCDlO/+cArFVc6oBg1tCb70BKlL9FCC7uK4Ar2/VP9Hhwvs+UwaW1vGzE/uiByVHXiA==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.16.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Runtime": { + "type": "CentralTransitive", + "requested": "[1.15.1, )", + "resolved": "1.15.1", + "contentHash": "cpPwlUT5HXcLGPaIgsbSy0W9eFYAPGVbTP1p8/uyQ4Osvf5BJuPpEXE7crL09SmEd44r0DGNKDtsqxaAz0HxQw==", + "dependencies": { + "OpenTelemetry.Api": "[1.15.3, 2.0.0)" + } + }, + "Quartz.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[3.18.1, )", + "resolved": "3.18.2", + "contentHash": "6uSMAm4FArjtVoxBjlkA+gHL1Eln2ngIOnRTrVrYxtSlM5PpLQd2aV+fc/OOwfwt+AyDm69HOAybEFqVvyyG2A==", + "dependencies": { + "Quartz.Extensions.DependencyInjection": "3.18.2" + } + }, + "Radzen.Blazor": { + "type": "CentralTransitive", + "requested": "[11.1.0, )", + "resolved": "11.1.0", + "contentHash": "brQCciUSVqNwzkYECVWaJZKHgXlC9CqtsmUiPVbMzRekBzswNW1teymOZm/IwnoFpIvB1xxR/HXTWFGDzHBPnw==" + }, + "WolverineFx.Marten": { + "type": "CentralTransitive", + "requested": "[6.16.0, )", + "resolved": "6.16.0", + "contentHash": "d7xWZTHwOxKRkS249JCbf/ot8/Mdk8CpD3oYj+mTvrKcT7G1tRRVAfAudJCjgozWgcuHOK+uH8o0Wn9tsKgYdQ==", + "dependencies": { + "Marten": "9.11.0", + "WolverineFx.Postgresql": "6.16.0" + } + }, + "WolverineFx.RuntimeCompilation": { + "type": "CentralTransitive", + "requested": "[6.16.0, )", + "resolved": "6.16.0", + "contentHash": "RuwGqH23WSXDP7VKnp4zEv9OOIVgaEBGQuFcdDe2kldXScJcKKWY987sIGxvzxTqxl7yU+j+XWztVHbVLu/fqw==", + "dependencies": { + "JasperFx.RuntimeCompiler": "5.0.0", + "WolverineFx": "6.16.0" + } + } + } + } +} \ No newline at end of file diff --git a/samples/AndreGoepel.AppFoundation.Sample/wwwroot/app.css b/samples/AndreGoepel.AppFoundation.Sample/wwwroot/app.css new file mode 100644 index 0000000..88a09c3 --- /dev/null +++ b/samples/AndreGoepel.AppFoundation.Sample/wwwroot/app.css @@ -0,0 +1,22 @@ +html, body { + margin: 0; + font-family: var(--rz-text-font-family, system-ui, sans-serif); +} + +#blazor-error-ui { + display: none; + position: fixed; + bottom: 0; + left: 0; + right: 0; + padding: 0.75rem 1.25rem; + background: #ffe4e4; + color: #7a0000; + box-shadow: 0 -1px 4px rgba(0, 0, 0, 0.15); + z-index: 1000; +} + +#blazor-error-ui .dismiss { + cursor: pointer; + float: right; +} From 61c66c24a2a49f7b0d54828377b25f3018719e56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20G=C3=B6pel?= Date: Sun, 5 Jul 2026 10:51:05 +0800 Subject: [PATCH 2/7] fix(sample): enable global interactivity so the shell menus work MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The management layout (MainLayout) carries interactive click handlers — the sidebar toggle, profile menu, and the RadzenPanelMenu in NavMenu. A layout is rendered statically under per-page interactivity, so those handlers never wired up and the menus appeared dead ("js not working"). Apply the render mode globally on and so the layout is interactive. Verified this does not conflict with the foundation's per-page @rendermode InteractiveServer pages (a matching descendant render mode is allowed). --- samples/AndreGoepel.AppFoundation.Sample/Components/App.razor | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/AndreGoepel.AppFoundation.Sample/Components/App.razor b/samples/AndreGoepel.AppFoundation.Sample/Components/App.razor index 0dd4f4b..10a3fb2 100644 --- a/samples/AndreGoepel.AppFoundation.Sample/Components/App.razor +++ b/samples/AndreGoepel.AppFoundation.Sample/Components/App.razor @@ -9,11 +9,11 @@ - + - + From 1560bebe0b36b5f69aabfc7e76f911a8446660c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20G=C3=B6pel?= Date: Sun, 5 Jul 2026 11:00:25 +0800 Subject: [PATCH 3/7] chore(sample): sync lockfile to identity 1.2.0-preview1 (stacked on #67) --- .../packages.lock.json | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/samples/AndreGoepel.AppFoundation.Sample/packages.lock.json b/samples/AndreGoepel.AppFoundation.Sample/packages.lock.json index 5198cc2..67d1f18 100644 --- a/samples/AndreGoepel.AppFoundation.Sample/packages.lock.json +++ b/samples/AndreGoepel.AppFoundation.Sample/packages.lock.json @@ -4,11 +4,11 @@ "net10.0": { "AndreGoepel.Marten.Identity.Blazor": { "type": "Direct", - "requested": "[1.1.3, )", - "resolved": "1.1.3", - "contentHash": "GseXArQ+jtV7mRqKAqSrF3kjrskKxEhZVFcMCN9pAUMG3sXU4nqhWq0EkVW1KZ1GtNbL9XmfDc737AQrmG655Q==", + "requested": "[1.2.0-preview1, )", + "resolved": "1.2.0-preview1", + "contentHash": "z4I3j67okBe5jd7u7CZ8O/fQd5I4Cg8/sxO4jFJA2/uz5GADOoFuPKQpjZGKpTQXsB5yRIUn9BbmtIIi9cCDBg==", "dependencies": { - "AndreGoepel.Marten.Identity": "1.1.3", + "AndreGoepel.Marten.Identity": "1.2.0-preview1", "Marten": "9.12.0", "Radzen.Blazor": "11.0.5" } @@ -21,10 +21,10 @@ }, "AndreGoepel.Marten.Identity": { "type": "Transitive", - "resolved": "1.1.3", - "contentHash": "5ThzsH0mJOYYGwBtBh9dRj8Pwc78wvOTYnGyM5io82N4ItEG4+lkmSq2X4JdcxHdptFc0BxLCWPnEpOFCYAxbA==", + "resolved": "1.2.0-preview1", + "contentHash": "waMtQSMH642lZO8h6xAi15oufQqpZtpietAdE3G2YXpDN4vwnQ5iIcjdv4mlcl253mk7U2s7q+7CPfYvlroo1Q==", "dependencies": { - "AndreGoepel.Marten.Identity.Abstractions": "1.1.3", + "AndreGoepel.Marten.Identity.Abstractions": "1.2.0-preview1", "Marten": "9.12.0", "Marten.AspNetCore": "9.12.0", "Quartz.Extensions.Hosting": "3.18.2" @@ -32,8 +32,8 @@ }, "AndreGoepel.Marten.Identity.Abstractions": { "type": "Transitive", - "resolved": "1.1.3", - "contentHash": "2GQmYNU6RHXqKenvYqD+QkUKbuJnaC66XkdGEYoiLVSUnoTZZiiAP14QuJ1CpoAL6L8qR17E7WI3VBZsSH49oA==" + "resolved": "1.2.0-preview1", + "contentHash": "8bT3wLtf5l/P+9DKRYBNbc+fCkc+scXRSb1SfS++MNOJL8uC17YKbrAflf4SzCwl1X6ZYFw2LcFkfx7+RKyDGw==" }, "BouncyCastle.Cryptography": { "type": "Transitive", @@ -508,7 +508,7 @@ "type": "Project", "dependencies": { "AndreGoepel.AppFoundation.MailService": "[1.1.0, )", - "AndreGoepel.Marten.Identity.Blazor": "[1.1.3, )", + "AndreGoepel.Marten.Identity.Blazor": "[1.2.0-preview1, )", "Marten": "[9.12.0, )", "Radzen.Blazor": "[11.1.0, )", "WolverineFx.Marten": "[6.16.0, )" @@ -520,7 +520,7 @@ "AndreGoepel.AppFoundation": "[1.1.0, )", "AndreGoepel.AppFoundation.MailService": "[1.1.0, )", "AndreGoepel.AppFoundation.ServiceDefaults": "[1.1.0, )", - "AndreGoepel.Marten.Identity.Blazor": "[1.1.3, )", + "AndreGoepel.Marten.Identity.Blazor": "[1.2.0-preview1, )", "Marten": "[9.12.0, )", "Microsoft.AspNetCore.HeaderPropagation": "[10.0.9, )", "Radzen.Blazor": "[11.1.0, )", From 2f0b9b51af43ca844042adbeab980b7d62be96a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20G=C3=B6pel?= Date: Sun, 5 Jul 2026 11:13:15 +0800 Subject: [PATCH 4/7] update aspire packages --- Directory.Packages.props | 4 ++-- .../AndreGoepel.AppFoundation.AppHost.csproj | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index f19a2e1..47b81c2 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -4,8 +4,8 @@ - - + + diff --git a/samples/AndreGoepel.AppFoundation.AppHost/AndreGoepel.AppFoundation.AppHost.csproj b/samples/AndreGoepel.AppFoundation.AppHost/AndreGoepel.AppFoundation.AppHost.csproj index 9708335..b6cef23 100644 --- a/samples/AndreGoepel.AppFoundation.AppHost/AndreGoepel.AppFoundation.AppHost.csproj +++ b/samples/AndreGoepel.AppFoundation.AppHost/AndreGoepel.AppFoundation.AppHost.csproj @@ -1,6 +1,5 @@ - - + Exe @@ -20,11 +19,10 @@ - + - From 6fb07a4a86a1122118ca6c6e677fa6fd1ae4ce9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20G=C3=B6pel?= Date: Sun, 5 Jul 2026 11:21:10 +0800 Subject: [PATCH 5/7] fix(sample): align Aspire.Hosting.AppHost to 13.4.6 with the SDK --- .../AndreGoepel.AppFoundation.AppHost.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/AndreGoepel.AppFoundation.AppHost/AndreGoepel.AppFoundation.AppHost.csproj b/samples/AndreGoepel.AppFoundation.AppHost/AndreGoepel.AppFoundation.AppHost.csproj index b6cef23..55bef25 100644 --- a/samples/AndreGoepel.AppFoundation.AppHost/AndreGoepel.AppFoundation.AppHost.csproj +++ b/samples/AndreGoepel.AppFoundation.AppHost/AndreGoepel.AppFoundation.AppHost.csproj @@ -18,7 +18,7 @@ - + From b843acb89b82b1c075e1431aade77a887513face Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20G=C3=B6pel?= Date: Sun, 5 Jul 2026 11:32:37 +0800 Subject: [PATCH 6/7] fix(sample): opt the web sample out of lock files (runtime-tied asset drift) --- .../AndreGoepel.AppFoundation.Sample.csproj | 5 + .../packages.lock.json | 688 ------------------ 2 files changed, 5 insertions(+), 688 deletions(-) delete mode 100644 samples/AndreGoepel.AppFoundation.Sample/packages.lock.json diff --git a/samples/AndreGoepel.AppFoundation.Sample/AndreGoepel.AppFoundation.Sample.csproj b/samples/AndreGoepel.AppFoundation.Sample/AndreGoepel.AppFoundation.Sample.csproj index 0fafb20..9b94388 100644 --- a/samples/AndreGoepel.AppFoundation.Sample/AndreGoepel.AppFoundation.Sample.csproj +++ b/samples/AndreGoepel.AppFoundation.Sample/AndreGoepel.AppFoundation.Sample.csproj @@ -5,6 +5,11 @@ enable enable false + + false diff --git a/samples/AndreGoepel.AppFoundation.Sample/packages.lock.json b/samples/AndreGoepel.AppFoundation.Sample/packages.lock.json deleted file mode 100644 index 67d1f18..0000000 --- a/samples/AndreGoepel.AppFoundation.Sample/packages.lock.json +++ /dev/null @@ -1,688 +0,0 @@ -{ - "version": 2, - "dependencies": { - "net10.0": { - "AndreGoepel.Marten.Identity.Blazor": { - "type": "Direct", - "requested": "[1.2.0-preview1, )", - "resolved": "1.2.0-preview1", - "contentHash": "z4I3j67okBe5jd7u7CZ8O/fQd5I4Cg8/sxO4jFJA2/uz5GADOoFuPKQpjZGKpTQXsB5yRIUn9BbmtIIi9cCDBg==", - "dependencies": { - "AndreGoepel.Marten.Identity": "1.2.0-preview1", - "Marten": "9.12.0", - "Radzen.Blazor": "11.0.5" - } - }, - "Microsoft.AspNetCore.App.Internal.Assets": { - "type": "Direct", - "requested": "[10.0.8, )", - "resolved": "10.0.8", - "contentHash": "v6KocthydFtUHBIRI29YsOHKOgsqcQubkNywVOxiYr4GSDSv+XO/AeyMJywlX+1tGUTGdydu/X7V+Tzeq4SsoA==" - }, - "AndreGoepel.Marten.Identity": { - "type": "Transitive", - "resolved": "1.2.0-preview1", - "contentHash": "waMtQSMH642lZO8h6xAi15oufQqpZtpietAdE3G2YXpDN4vwnQ5iIcjdv4mlcl253mk7U2s7q+7CPfYvlroo1Q==", - "dependencies": { - "AndreGoepel.Marten.Identity.Abstractions": "1.2.0-preview1", - "Marten": "9.12.0", - "Marten.AspNetCore": "9.12.0", - "Quartz.Extensions.Hosting": "3.18.2" - } - }, - "AndreGoepel.Marten.Identity.Abstractions": { - "type": "Transitive", - "resolved": "1.2.0-preview1", - "contentHash": "8bT3wLtf5l/P+9DKRYBNbc+fCkc+scXRSb1SfS++MNOJL8uC17YKbrAflf4SzCwl1X6ZYFw2LcFkfx7+RKyDGw==" - }, - "BouncyCastle.Cryptography": { - "type": "Transitive", - "resolved": "2.6.2", - "contentHash": "7oWOcvnntmMKNzDLsdxAYqApt+AjpRpP2CShjMfIa3umZ42UQMvH0tl1qAliYPNYO6vTdcGMqnRrCPmsfzTI1w==" - }, - "DistributedLock.Core": { - "type": "Transitive", - "resolved": "1.0.8", - "contentHash": "LAOsY8WxX8JU/n3lfXFz+f2pfnv0+4bHkCrOO3bwa28u9HrS3DlxSG6jf+u76SqesKs+KehZi0CndkfaUXBKvg==" - }, - "DistributedLock.Postgres": { - "type": "Transitive", - "resolved": "1.3.0", - "contentHash": "CyjXmbhFgG30qPg4DwGnsmZO63y5DBRo+PI2xW0NwtFrsYsMVt/T1RcEUlb36JMKhDkf+euhnkanv/nU+W35qA==", - "dependencies": { - "DistributedLock.Core": "[1.0.8, 1.1.0)", - "Npgsql": "8.0.6" - } - }, - "FastExpressionCompiler": { - "type": "Transitive", - "resolved": "5.4.1", - "contentHash": "nqMykMspK5cQd35Y8ulQzAujxCcCwZVUne32pC5xNpXqrbPCuKOPMWkKHJ3LveAZPm6dsVvump0TJ1SZ9RzfTQ==" - }, - "Humanizer.Core": { - "type": "Transitive", - "resolved": "2.14.1", - "contentHash": "lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==" - }, - "ImTools": { - "type": "Transitive", - "resolved": "4.0.0", - "contentHash": "dms0JfLKC9AQbQX/EdpRjn59EjEvaCxIgv1z9YxbEQb5SiOVoo7vlIKdEySeEwUkWhN05rZnNpUpG+aw5VqPVQ==" - }, - "JasperFx": { - "type": "Transitive", - "resolved": "2.18.1", - "contentHash": "i8k7awEkuDdZV4kUzIQT54h5pydEzBpH4CjD5ds7b7dHxK0KYvIyKWDWZqMHHJVbVqXEQHtQHQNTeqUi2zOLZw==", - "dependencies": { - "FastExpressionCompiler": "5.4.1", - "ImTools": "4.0.0", - "Microsoft.Bcl.TimeProvider": "10.0.0", - "Polly.Core": "8.6.5", - "Spectre.Console": "0.55.0" - } - }, - "JasperFx.Events": { - "type": "Transitive", - "resolved": "2.18.1", - "contentHash": "kBK14ziH5UV7jYrsclg6KPpB8F3vmCXhkMDWw+oPnBaxYC4xeB/5STrt+gn6V4VlbR1Xn/wcd9ZVAx3teDls9w==", - "dependencies": { - "JasperFx": "2.18.1" - } - }, - "JasperFx.RuntimeCompiler": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "FKP0HSPN3p8YgJHWaTTqk/wZhLpOrShjrZ9rT3dAuKfj7EvC/NepRxeJ5Nq55tIcLAwR/pLVedxhxL9/kizwFg==", - "dependencies": { - "JasperFx": "2.0.0", - "Microsoft.CodeAnalysis": "5.0.0", - "Microsoft.CodeAnalysis.CSharp": "5.0.0", - "Microsoft.CodeAnalysis.Scripting": "5.0.0" - } - }, - "JasperFx.SourceGenerator": { - "type": "Transitive", - "resolved": "2.16.0", - "contentHash": "wwjl3taQ1Z40ESBTIAYwf88nms3sXp6osyAzIAjXugrUCj3D4AIYEYQGxHAPF6Yk6o6Roouw/pnMqJuKS2jM0g==" - }, - "Microsoft.Bcl.AsyncInterfaces": { - "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "owmu2Cr3IQ8yQiBleBHlGk8dSQ12oaF2e7TpzwJKEl4m84kkZJjEY1n33L67Y3zM5jPOjmmbdHjbfiL0RqcMRQ==" - }, - "Microsoft.Bcl.TimeProvider": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "bUubrBD6tRJE3V1kvRloYc6NymH3R5oFKjAS9e0ELNx6u0ZR+zjps9dDQyjgqN/rArzl7f+21KGszj3YRN7F2Q==" - }, - "Microsoft.CodeAnalysis": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "X7vItpZDkGm4NS2wp4P1S07Z1e61LaBWDW5tPXE1c6z5/x9KbF2RymhAPoYg7Qoiyk7odEZ6EjBEJ47p3dBpYQ==", - "dependencies": { - "Humanizer.Core": "2.14.1", - "Microsoft.Bcl.AsyncInterfaces": "9.0.0", - "Microsoft.CodeAnalysis.Analyzers": "3.11.0", - "Microsoft.CodeAnalysis.CSharp.Workspaces": "[5.0.0]", - "Microsoft.CodeAnalysis.VisualBasic.Workspaces": "[5.0.0]", - "System.Composition": "9.0.0" - } - }, - "Microsoft.CodeAnalysis.Analyzers": { - "type": "Transitive", - "resolved": "3.11.0", - "contentHash": "v/EW3UE8/lbEYHoC2Qq7AR/DnmvpgdtAMndfQNmpuIMx/Mto8L5JnuCfdBYtgvalQOtfNCnxFejxuRrryvUTsg==" - }, - "Microsoft.CodeAnalysis.Common": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ZXRAdvH6GiDeHRyd3q/km8Z44RoM6FBWHd+gen/la81mVnAdHTEsEkO5J0TCNXBymAcx5UYKt5TvgKBhaLJEow==", - "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.11.0" - } - }, - "Microsoft.CodeAnalysis.CSharp": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "5DSyJ9bk+ATuDy7fp2Zt0mJStDVKbBoiz1DyfAwSa+k4H4IwykAUcV3URelw5b8/iVbfSaOwkwmPUZH6opZKCw==", - "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.11.0", - "Microsoft.CodeAnalysis.Common": "[5.0.0]" - } - }, - "Microsoft.CodeAnalysis.CSharp.Scripting": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "1sGloRYbG3743ut/+vuXy9/WaRQTm7mDtp71rBaVSmKpFntvo5Hcro1ubg6/3SeeLtiFYJl7V3Dk0Fo3CGlnHA==", - "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.11.0", - "Microsoft.CodeAnalysis.CSharp": "[5.0.0]", - "Microsoft.CodeAnalysis.Common": "[5.0.0]", - "Microsoft.CodeAnalysis.Scripting.Common": "[5.0.0]" - } - }, - "Microsoft.CodeAnalysis.CSharp.Workspaces": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "Al/Q8B+yO8odSqGVpSvrShMFDvlQdIBU//F3E6Rb0YdiLSALE9wh/pvozPNnfmh5HDnvU+mkmSjpz4hQO++jaA==", - "dependencies": { - "Humanizer.Core": "2.14.1", - "Microsoft.CodeAnalysis.Analyzers": "3.11.0", - "Microsoft.CodeAnalysis.CSharp": "[5.0.0]", - "Microsoft.CodeAnalysis.Common": "[5.0.0]", - "Microsoft.CodeAnalysis.Workspaces.Common": "[5.0.0]", - "System.Composition": "9.0.0" - } - }, - "Microsoft.CodeAnalysis.Scripting": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "/KgZdm6kRTrR/O2jqXxU5GWREYhtVmqcNWczyPt8hsQkFGFK/C6CrLWfG44FCUn0aPHGDRBHYjXlGosQ/H8oXw==", - "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.11.0", - "Microsoft.CodeAnalysis.CSharp.Scripting": "[5.0.0]" - } - }, - "Microsoft.CodeAnalysis.Scripting.Common": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "XTulByMNxqXGCgMeODUoG2h4oK4/nLv1BcawRVcjv+UZHMpoaymtdaq3cJqlNrEvYEcbU48g5swJ3RhY1m3fBg==", - "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.11.0", - "Microsoft.CodeAnalysis.Common": "[5.0.0]" - } - }, - "Microsoft.CodeAnalysis.VisualBasic": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "sUBWvHs2HgHGA+b716dgjS7JiXGen5ntyohAurPLR1ZiZzFp3FlnVA7GrMTqVGdVJTVqiC3c4K8k1bk0gj6IPg==", - "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.11.0", - "Microsoft.CodeAnalysis.Common": "[5.0.0]" - } - }, - "Microsoft.CodeAnalysis.VisualBasic.Workspaces": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "Nom4UuZVEZGaV6Qa+joJR/BawXZMtflvQJFKc0SaUc3LrZr/8LmRY5cn8mbvLOWIVfwWkQz+cVE6eQKu9qa65g==", - "dependencies": { - "Humanizer.Core": "2.14.1", - "Microsoft.CodeAnalysis.Analyzers": "3.11.0", - "Microsoft.CodeAnalysis.Common": "[5.0.0]", - "Microsoft.CodeAnalysis.VisualBasic": "[5.0.0]", - "Microsoft.CodeAnalysis.Workspaces.Common": "[5.0.0]", - "System.Composition": "9.0.0" - } - }, - "Microsoft.CodeAnalysis.Workspaces.Common": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ZbUmIvT6lqTNKiv06Jl5wf0MTMi1vQ1oH7ou4CLcs2C/no/L7EhP3T8y3XXvn9VbqMcJaJnEsNA1jwYUMgc5jg==", - "dependencies": { - "Humanizer.Core": "2.14.1", - "Microsoft.CodeAnalysis.Analyzers": "3.11.0", - "Microsoft.CodeAnalysis.Common": "[5.0.0]", - "System.Composition": "9.0.0" - } - }, - "Microsoft.Extensions.AmbientMetadata.Application": { - "type": "Transitive", - "resolved": "10.7.0", - "contentHash": "yZ0818pVYQvUFW/1m+f8A1+lIAeSeQxEOdUCMIC+tqcRRKlqNjKPRKvGHPp8xLRbZBLaHfBtDslJa/sofn7J/Q==" - }, - "Microsoft.Extensions.Compliance.Abstractions": { - "type": "Transitive", - "resolved": "10.7.0", - "contentHash": "qbi6lg6dyvydBvpjXeBx3wLPvmgXWn3nwkKBOsgEck6w++BEsBcv8YhdcczME16Oq+a6wkdtna9/qCEkxsNw5A==" - }, - "Microsoft.Extensions.DependencyInjection.AutoActivation": { - "type": "Transitive", - "resolved": "10.7.0", - "contentHash": "WrSK0FGHSjSY4Pg4kd9Du8CUDwrgFTwHH1Y+N7sjyT6RFMU+G3coQ/Uq9PMGdQcy+DVKSMGHjfmWY47ZoYvhNA==" - }, - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { - "type": "Transitive", - "resolved": "10.7.0", - "contentHash": "Kc4XbbxtCzvn2P/fKF48xLWPbp3N5DV0MkJlgPJHEb47PUqCJ6kEl/JTKfpmP7QLuwYjx2QxKTdtwXfpjgA6KQ==" - }, - "Microsoft.Extensions.Http.Diagnostics": { - "type": "Transitive", - "resolved": "10.7.0", - "contentHash": "1m1zdBGW5J8MOxdZpJ5mUqdSaamRrYkpmfnEfeDmlZnglpfgDztcKOBU6cVsmn90AB7Ji2w8USvEsJ8PahbBWQ==", - "dependencies": { - "Microsoft.Extensions.Telemetry": "10.7.0" - } - }, - "Microsoft.Extensions.Resilience": { - "type": "Transitive", - "resolved": "10.7.0", - "contentHash": "ldUrtRzWSnfe5945xoSxDXxoWXnIKn19E74Huieyp76XW/BjRk3bhkILSSib1NKdZ2lpi/ReTvOpNGcJ8hkOxw==", - "dependencies": { - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "10.7.0", - "Microsoft.Extensions.Telemetry.Abstractions": "10.7.0", - "Polly.Extensions": "8.4.2", - "Polly.RateLimiting": "8.4.2" - } - }, - "Microsoft.Extensions.ServiceDiscovery.Abstractions": { - "type": "Transitive", - "resolved": "10.7.0", - "contentHash": "1a/tCYg7+5HdJRQ0BQDDGzANBaw/1fony7eNsMwQ5n9FZmO3K5JCls02o8fwQc296l0szNBwroLRtXf94OZw9A==" - }, - "Microsoft.Extensions.Telemetry": { - "type": "Transitive", - "resolved": "10.7.0", - "contentHash": "vZFNVvkz+7IABEv4klzPX/ZdmZQ6TrcReKUfeYIrQ2bbnvEcgZtG1RmOGeWkc1hFg8cq9sAgUc2lHCqlXSqf5A==", - "dependencies": { - "Microsoft.Extensions.AmbientMetadata.Application": "10.7.0", - "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.7.0", - "Microsoft.Extensions.Telemetry.Abstractions": "10.7.0" - } - }, - "Microsoft.Extensions.Telemetry.Abstractions": { - "type": "Transitive", - "resolved": "10.7.0", - "contentHash": "ir1QKShZzfEmqO9LUWESVMUDZdnxYBSKQyulYPMeaye531lAuT8YTotthx+htrrS8hZY52HANeqowLQyCYBCZg==", - "dependencies": { - "Microsoft.Extensions.Compliance.Abstractions": "10.7.0" - } - }, - "Microsoft.IO.RecyclableMemoryStream": { - "type": "Transitive", - "resolved": "3.0.1", - "contentHash": "s/s20YTVY9r9TPfTrN5g8zPF1YhwxyqO6PxUkrYTGI2B+OGPe9AdajWZrLhFqXIvqIW23fnUE4+ztrUWNU1+9g==" - }, - "MimeKit": { - "type": "Transitive", - "resolved": "4.17.0", - "contentHash": "h/KXsCreJf8RpR/PSAtlbvYtZFndp9N8Wn1Bs248AL7ITyhn+AiIY5bLTvt60tbN2mu6g8KadtBNWygTji2lqg==", - "dependencies": { - "BouncyCastle.Cryptography": "2.6.2", - "System.Security.Cryptography.Pkcs": "10.0.0" - } - }, - "NetTopologySuite": { - "type": "Transitive", - "resolved": "2.5.0", - "contentHash": "5/+2O2ADomEdUn09mlSigACdqvAf0m/pVPGtIPEPQWnyrVykYY0NlfXLIdkMgi41kvH9kNrPqYaFBTZtHYH7Xw==" - }, - "NetTopologySuite.IO.PostGis": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "3W8XTFz8iP6GQ5jDXK1/LANHiU+988k1kmmuPWNKcJLpmSg6CvFpbTpz+s4+LBzkAp64wHGOldSlkSuzYfrIKA==", - "dependencies": { - "NetTopologySuite": "[2.0.0, 3.0.0-A)" - } - }, - "NewId": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "jegBasNndmG21G3BmT51suFDCIz/sLN81j+IxmkZ4iWoaDi8LygeHiyNnYbXz5OQh9nCRJFIx1+PJrlYi1Gc9Q==" - }, - "Npgsql": { - "type": "Transitive", - "resolved": "9.0.4", - "contentHash": "68BASXH0FAEuL/J4J0eRfYC8/3vzqQTmoW8zDzNf0JgaVxc7LZeEkS6jaG0ib3voFLxY5ZiCwJG+uQM+mzuu0Q==" - }, - "Npgsql.NetTopologySuite": { - "type": "Transitive", - "resolved": "9.0.4", - "contentHash": "7AwBLPz8EPmgAXveZ55K0Tz/9bNb8j4VI4pkTOQjyHrce8wWfAA9pefm3REidy+Kt2UFiAWef34YVi7sb/kB4A==", - "dependencies": { - "NetTopologySuite": "2.5.0", - "NetTopologySuite.IO.PostGIS": "2.1.0", - "Npgsql": "9.0.4" - } - }, - "OpenTelemetry": { - "type": "Transitive", - "resolved": "1.16.0", - "contentHash": "nE/Px3MUvQC8c0UG0DOP5OJE7vMtiMaPYi/6TkSS/o/O0s/oPq+8WaPYTVEPzb7lwu/QyLgknc+sFm2FjPXe2A==", - "dependencies": { - "OpenTelemetry.Api.ProviderBuilderExtensions": "1.16.0" - } - }, - "OpenTelemetry.Api": { - "type": "Transitive", - "resolved": "1.16.0", - "contentHash": "WZP8Eb6vZTeNqeV+fjBitc7iefBoTHIhaWorqg/h/YiQBlcQJu0bICuTqKV0XRyjiE0eWs80yLlnUtHAFSkFWA==" - }, - "OpenTelemetry.Api.ProviderBuilderExtensions": { - "type": "Transitive", - "resolved": "1.16.0", - "contentHash": "hZwaHAkXvUNn9+cS+vEvYBgIrIQOQRz2cIRUODZ5gxHsDsLeNCueLgZFkybopjE0jUhLut6lm5eL3LTqbW0hMg==", - "dependencies": { - "OpenTelemetry.Api": "1.16.0" - } - }, - "Polly.Core": { - "type": "Transitive", - "resolved": "8.6.5", - "contentHash": "t+sUVrIwvo7UmsgHGgOG9F0GDZSRIm47u2ylH17Gvcv1q5hNEwgD5GoBlFyc0kh/pebmPyrAgvGsR/65ZBaXlg==" - }, - "Polly.Extensions": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", - "dependencies": { - "Polly.Core": "8.4.2" - } - }, - "Polly.RateLimiting": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", - "dependencies": { - "Polly.Core": "8.4.2" - } - }, - "Quartz": { - "type": "Transitive", - "resolved": "3.18.2", - "contentHash": "/KaRLj7jv84RSIR/UtAWnzYRmS7o/mA6CdEuoLwxhLa9Nfl7Q1keMA7Fe/r2BzRfDf+7YpN1QNEYSSU89DA3OA==" - }, - "Quartz.Extensions.DependencyInjection": { - "type": "Transitive", - "resolved": "3.18.2", - "contentHash": "+P0z/WUQZF/QrY5wB1wgvl9/VkiWqGR/K5bdtjW1qiFBraEoe/dqfNTxXQPnSZHnha1qmSBRoa5oA7kwHPsTqA==", - "dependencies": { - "Quartz": "3.18.2" - } - }, - "Spectre.Console": { - "type": "Transitive", - "resolved": "0.55.0", - "contentHash": "2TVhUHFsDux0Z+y2Hv4bFsOMuON4SuotEEKkMparFkp5Rm259naaaEQrN4Sv6C1cbsiGKPjfkJDGgUp+hZPjTw==", - "dependencies": { - "Spectre.Console.Ansi": "0.55.0" - } - }, - "Spectre.Console.Ansi": { - "type": "Transitive", - "resolved": "0.55.0", - "contentHash": "GIfgOvuF8MpU52bprhwtDEtx0gmVIGOepM8bw0lH/TSMD0rg1Xp+5Y53kPG8rFVdcpbNANlhDQ5mEVVPO3/2Tg==" - }, - "System.Composition": { - "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "3Djj70fFTraOarSKmRnmRy/zm4YurICm+kiCtI0dYRqGJnLX6nJ+G3WYuFJ173cAPax/gh96REcbNiVqcrypFQ==", - "dependencies": { - "System.Composition.AttributedModel": "9.0.0", - "System.Composition.Convention": "9.0.0", - "System.Composition.Hosting": "9.0.0", - "System.Composition.Runtime": "9.0.0", - "System.Composition.TypedParts": "9.0.0" - } - }, - "System.Composition.AttributedModel": { - "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "iri00l/zIX9g4lHMY+Nz0qV1n40+jFYAmgsaiNn16xvt2RDwlqByNG4wgblagnDYxm3YSQQ0jLlC/7Xlk9CzyA==" - }, - "System.Composition.Convention": { - "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "+vuqVP6xpi582XIjJi6OCsIxuoTZfR0M7WWufk3uGDeCl3wGW6KnpylUJ3iiXdPByPE0vR5TjJgR6hDLez4FQg==", - "dependencies": { - "System.Composition.AttributedModel": "9.0.0" - } - }, - "System.Composition.Hosting": { - "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "OFqSeFeJYr7kHxDfaViGM1ymk7d4JxK//VSoNF9Ux0gpqkLsauDZpu89kTHHNdCWfSljbFcvAafGyBoY094btQ==", - "dependencies": { - "System.Composition.Runtime": "9.0.0" - } - }, - "System.Composition.Runtime": { - "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "w1HOlQY1zsOWYussjFGZCEYF2UZXgvoYnS94NIu2CBnAGMbXFAX8PY8c92KwUItPmowal68jnVLBCzdrWLeEKA==" - }, - "System.Composition.TypedParts": { - "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "aRZlojCCGEHDKqh43jaDgaVpYETsgd7Nx4g1zwLKMtv4iTo0627715ajEFNpEEBTgLmvZuv8K0EVxc3sM4NWJA==", - "dependencies": { - "System.Composition.AttributedModel": "9.0.0", - "System.Composition.Hosting": "9.0.0", - "System.Composition.Runtime": "9.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "UPWqLSygJlFerRi9XNIuM0a1VC8gHUIufyP24xQ0sc+XimqUAEcjpOz9DhKpyDjH+5B/wO3RpC0KpkEeDj/ddg==" - }, - "Weasel.Core": { - "type": "Transitive", - "resolved": "9.3.0", - "contentHash": "Lrf6a0N8T89q2z4IaBF6413zzQsABe+LvL9D5K5ig8JjpU7C1gOcgwPEeldpdxcj3q7mSaYx9LKW72TC2wLpbw==", - "dependencies": { - "JasperFx": "2.13.1" - } - }, - "Weasel.Postgresql": { - "type": "Transitive", - "resolved": "9.3.0", - "contentHash": "vbcpQFemPq88d8pM6Mcq8c/PkcNMjpMdal/AGThqsMliNnIVTiHFdPypSzBUthHTv8UV8fxF+ze9C7PHtq1Rrw==", - "dependencies": { - "DistributedLock.Postgres": "1.3.0", - "JasperFx.Events": "2.0.0", - "Npgsql": "9.0.4", - "Npgsql.NetTopologySuite": "9.0.4", - "Weasel.Core": "9.3.0" - } - }, - "WolverineFx": { - "type": "Transitive", - "resolved": "6.16.0", - "contentHash": "zDNCik/B9eou+cGkpYmzOlRe+aXvzBMkEFDA0i7/DgLOncbbX12gLsugojwoLHPLUCI4Grwk4ymPj5+gYK410g==", - "dependencies": { - "JasperFx": "2.16.0", - "JasperFx.Events": "2.16.0", - "JasperFx.SourceGenerator": "2.16.0", - "NewId": "4.0.1" - } - }, - "WolverineFx.Postgresql": { - "type": "Transitive", - "resolved": "6.16.0", - "contentHash": "u3p2opC06FUYd3CQRiN4x/MSl3nbHbcpzxt69RSi7ZPq311g00wCyUJ4wHb+SSGN1a3yFqjihEoSXGvqXAThSA==", - "dependencies": { - "Weasel.Postgresql": "9.3.0", - "WolverineFx.RDBMS": "6.16.0" - } - }, - "WolverineFx.RDBMS": { - "type": "Transitive", - "resolved": "6.16.0", - "contentHash": "IYfSUZkSSwMGtcq85Pe2Nom0TWzLmSxmgNvHT8pLl4LmwBpgOWc2bVj1VYJFopS2qMZxTsWTQYnLfTIQN0CSdA==", - "dependencies": { - "Weasel.Core": "9.3.0", - "WolverineFx": "6.16.0" - } - }, - "andregoepel.appfoundation": { - "type": "Project", - "dependencies": { - "AndreGoepel.AppFoundation.MailService": "[1.1.0, )", - "AndreGoepel.Marten.Identity.Blazor": "[1.2.0-preview1, )", - "Marten": "[9.12.0, )", - "Radzen.Blazor": "[11.1.0, )", - "WolverineFx.Marten": "[6.16.0, )" - } - }, - "andregoepel.appfoundation.hosting": { - "type": "Project", - "dependencies": { - "AndreGoepel.AppFoundation": "[1.1.0, )", - "AndreGoepel.AppFoundation.MailService": "[1.1.0, )", - "AndreGoepel.AppFoundation.ServiceDefaults": "[1.1.0, )", - "AndreGoepel.Marten.Identity.Blazor": "[1.2.0-preview1, )", - "Marten": "[9.12.0, )", - "Microsoft.AspNetCore.HeaderPropagation": "[10.0.9, )", - "Radzen.Blazor": "[11.1.0, )", - "WolverineFx.Marten": "[6.16.0, )", - "WolverineFx.RuntimeCompilation": "[6.16.0, )" - } - }, - "andregoepel.appfoundation.mailservice": { - "type": "Project", - "dependencies": { - "MailKit": "[4.17.0, )", - "Marten": "[9.12.0, )", - "WolverineFx.Marten": "[6.16.0, )" - } - }, - "andregoepel.appfoundation.servicedefaults": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Http.Resilience": "[10.7.0, )", - "Microsoft.Extensions.ServiceDiscovery": "[10.7.0, )", - "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.16.0, )", - "OpenTelemetry.Extensions.Hosting": "[1.16.0, )", - "OpenTelemetry.Instrumentation.AspNetCore": "[1.16.0, )", - "OpenTelemetry.Instrumentation.Http": "[1.16.0, )", - "OpenTelemetry.Instrumentation.Runtime": "[1.15.1, )" - } - }, - "MailKit": { - "type": "CentralTransitive", - "requested": "[4.17.0, )", - "resolved": "4.17.0", - "contentHash": "1nUAVLxM9fhT/78we6/AGsCesnpn5dRNLLeRqOfr52Wnk87pzVwo5YMTMyqnmoXrYc7piGhmayiMA/OgDluIjg==", - "dependencies": { - "MimeKit": "4.17.0" - } - }, - "Marten": { - "type": "CentralTransitive", - "requested": "[9.12.0, )", - "resolved": "9.12.0", - "contentHash": "RIyPzIN6ehfDmBWPs7zyMryy13uOPZHQBA8QuBwO0PHjzpyonP/rBoJYrgiJGXcaiWFVxqHj3QfPKuLjXsA5uQ==", - "dependencies": { - "JasperFx": "2.18.1", - "JasperFx.Events": "2.18.1", - "Microsoft.IO.RecyclableMemoryStream": "3.0.1", - "Weasel.Postgresql": "9.3.0" - } - }, - "Marten.AspNetCore": { - "type": "CentralTransitive", - "requested": "[9.0.2, )", - "resolved": "9.12.0", - "contentHash": "g4wqBQxqZDpr4T7Ayh131xIahnipLBlkp5Ar0cNez6OhqJZDQaUvWcbqyTWYlxiIedWnILeJeMzhO5Qu02j7LA==", - "dependencies": { - "Marten": "9.12.0" - } - }, - "Microsoft.AspNetCore.HeaderPropagation": { - "type": "CentralTransitive", - "requested": "[10.0.9, )", - "resolved": "10.0.9", - "contentHash": "yh0MmaDVEJOS5MvsneHTr1kbdJZnRH1PzMg4CdYw8qYURiTfD4nxdMxJb2izxFHqNqYnH6CQASMdfFtgPLrgww==" - }, - "Microsoft.Extensions.Http.Resilience": { - "type": "CentralTransitive", - "requested": "[10.7.0, )", - "resolved": "10.7.0", - "contentHash": "3Lip0MkBVPtqU1wCM2M2Y8CzsqxA1BanVNMV9LQYMTwBgy25NDe6U9nSk6SfmsxXlh77iwSQuPsyjt5mxrOGmQ==", - "dependencies": { - "Microsoft.Extensions.Http.Diagnostics": "10.7.0", - "Microsoft.Extensions.Resilience": "10.7.0" - } - }, - "Microsoft.Extensions.ServiceDiscovery": { - "type": "CentralTransitive", - "requested": "[10.7.0, )", - "resolved": "10.7.0", - "contentHash": "UgBfP98NmKDjx/2jbLGkckSlc8XG4ubkjPrqACE2i9LPmrgoYGWTh9snybRUGBm0sTchsq3on81XRxfvX+XC5g==", - "dependencies": { - "Microsoft.Extensions.ServiceDiscovery.Abstractions": "10.7.0" - } - }, - "OpenTelemetry.Exporter.OpenTelemetryProtocol": { - "type": "CentralTransitive", - "requested": "[1.16.0, )", - "resolved": "1.16.0", - "contentHash": "gzYLY8sVDY5FYtVlCYSzBYX53xslRlvBLxwFYOdNIhc76SgKdFYUoDQXOeQI3WPBCrZp51QNcP6fZHh1+HtpIQ==", - "dependencies": { - "OpenTelemetry": "1.16.0" - } - }, - "OpenTelemetry.Extensions.Hosting": { - "type": "CentralTransitive", - "requested": "[1.16.0, )", - "resolved": "1.16.0", - "contentHash": "/YfrO5MRaA156vhNanYGPX2JjOwKUrA0+Jf7ltT2eD3VkfHqXcEJY5Oxt/nWH8lqBOTc1nJpn2soBtD5Cml8Dg==", - "dependencies": { - "OpenTelemetry": "1.16.0" - } - }, - "OpenTelemetry.Instrumentation.AspNetCore": { - "type": "CentralTransitive", - "requested": "[1.16.0, )", - "resolved": "1.16.0", - "contentHash": "vSC5EsmBVNcqXMh9BGkkq8zkoUjrg8ghBDb9zbKR8Bqjd05utjVgVft+fqsqQVsvlV5olGj1pBliHBngcIGSIg==", - "dependencies": { - "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.16.0, 2.0.0)" - } - }, - "OpenTelemetry.Instrumentation.Http": { - "type": "CentralTransitive", - "requested": "[1.16.0, )", - "resolved": "1.16.0", - "contentHash": "+Sz3lfvMXwWE8s/sMruHCDlO/+cArFVc6oBg1tCb70BKlL9FCC7uK4Ar2/VP9Hhwvs+UwaW1vGzE/uiByVHXiA==", - "dependencies": { - "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.16.0, 2.0.0)" - } - }, - "OpenTelemetry.Instrumentation.Runtime": { - "type": "CentralTransitive", - "requested": "[1.15.1, )", - "resolved": "1.15.1", - "contentHash": "cpPwlUT5HXcLGPaIgsbSy0W9eFYAPGVbTP1p8/uyQ4Osvf5BJuPpEXE7crL09SmEd44r0DGNKDtsqxaAz0HxQw==", - "dependencies": { - "OpenTelemetry.Api": "[1.15.3, 2.0.0)" - } - }, - "Quartz.Extensions.Hosting": { - "type": "CentralTransitive", - "requested": "[3.18.1, )", - "resolved": "3.18.2", - "contentHash": "6uSMAm4FArjtVoxBjlkA+gHL1Eln2ngIOnRTrVrYxtSlM5PpLQd2aV+fc/OOwfwt+AyDm69HOAybEFqVvyyG2A==", - "dependencies": { - "Quartz.Extensions.DependencyInjection": "3.18.2" - } - }, - "Radzen.Blazor": { - "type": "CentralTransitive", - "requested": "[11.1.0, )", - "resolved": "11.1.0", - "contentHash": "brQCciUSVqNwzkYECVWaJZKHgXlC9CqtsmUiPVbMzRekBzswNW1teymOZm/IwnoFpIvB1xxR/HXTWFGDzHBPnw==" - }, - "WolverineFx.Marten": { - "type": "CentralTransitive", - "requested": "[6.16.0, )", - "resolved": "6.16.0", - "contentHash": "d7xWZTHwOxKRkS249JCbf/ot8/Mdk8CpD3oYj+mTvrKcT7G1tRRVAfAudJCjgozWgcuHOK+uH8o0Wn9tsKgYdQ==", - "dependencies": { - "Marten": "9.11.0", - "WolverineFx.Postgresql": "6.16.0" - } - }, - "WolverineFx.RuntimeCompilation": { - "type": "CentralTransitive", - "requested": "[6.16.0, )", - "resolved": "6.16.0", - "contentHash": "RuwGqH23WSXDP7VKnp4zEv9OOIVgaEBGQuFcdDe2kldXScJcKKWY987sIGxvzxTqxl7yU+j+XWztVHbVLu/fqw==", - "dependencies": { - "JasperFx.RuntimeCompiler": "5.0.0", - "WolverineFx": "6.16.0" - } - } - } - } -} \ No newline at end of file From 65977e3ff035ac45022278595293c574bc179b9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20G=C3=B6pel?= Date: Sun, 5 Jul 2026 11:35:59 +0800 Subject: [PATCH 7/7] style(sample): apply csharpier formatting to the sample csproj --- .../AndreGoepel.AppFoundation.Sample.csproj | 2 -- 1 file changed, 2 deletions(-) diff --git a/samples/AndreGoepel.AppFoundation.Sample/AndreGoepel.AppFoundation.Sample.csproj b/samples/AndreGoepel.AppFoundation.Sample/AndreGoepel.AppFoundation.Sample.csproj index 9b94388..f4fe9d3 100644 --- a/samples/AndreGoepel.AppFoundation.Sample/AndreGoepel.AppFoundation.Sample.csproj +++ b/samples/AndreGoepel.AppFoundation.Sample/AndreGoepel.AppFoundation.Sample.csproj @@ -1,5 +1,4 @@ - net10.0 enable @@ -20,5 +19,4 @@ -