From 06f5c57503b30b4ba1936f0e0139378ea5f7de98 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 27 Oct 2026 04:44:21 +0000 Subject: [PATCH 1/5] deps: Bump the minor-and-patch group with 8 updates Bumps AWSSDK.DynamoDBv2 from 4.0.109.1 to 4.0.109.2 Bumps AWSSDK.RDS from 4.0.107.1 to 4.0.107.2 Bumps AWSSDK.S3 from 4.0.104.6 to 4.0.104.7 Bumps AWSSDK.SecretsManager from 4.0.100.21 to 4.0.100.22 Bumps AWSSDK.SimpleNotificationService from 4.0.100.21 to 4.0.100.22 Bumps Google.Cloud.Firestore from 4.5.0 to 4.6.0 Bumps Polly from 8.8.0 to 8.8.1 Bumps Polly.Core from 8.8.0 to 8.8.1 --- updated-dependencies: - dependency-name: AWSSDK.DynamoDBv2 dependency-version: 4.0.109.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-and-patch - dependency-name: AWSSDK.RDS dependency-version: 4.0.107.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-and-patch - dependency-name: AWSSDK.S3 dependency-version: 4.0.104.7 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-and-patch - dependency-name: AWSSDK.SecretsManager dependency-version: 4.0.100.22 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-and-patch - dependency-name: AWSSDK.SimpleNotificationService dependency-version: 4.0.100.22 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-and-patch - dependency-name: Google.Cloud.Firestore dependency-version: 4.6.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-and-patch - dependency-name: Polly dependency-version: 8.8.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-and-patch - dependency-name: Polly.Core dependency-version: 8.8.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-and-patch ... Signed-off-by: dependabot[bot] --- Directory.Packages.props | 16 +++---- .../packages.lock.json | 6 +-- .../MMCA.Common.Aws/packages.lock.json | 44 +++++++++---------- .../MMCA.Common.Gcp/packages.lock.json | 18 ++++---- .../MMCA.Common.UI/packages.lock.json | 12 ++--- .../MMCA.Common.Gcp.Tests/packages.lock.json | 20 ++++----- 6 files changed, 58 insertions(+), 58 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index aec557ed..145919ac 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -153,11 +153,11 @@ - + - + @@ -165,16 +165,16 @@ - + - + - + @@ -202,7 +202,7 @@ - + @@ -237,13 +237,13 @@ - + - + diff --git a/Source/Core/MMCA.Common.Infrastructure/packages.lock.json b/Source/Core/MMCA.Common.Infrastructure/packages.lock.json index 92bb86e4..45301492 100644 --- a/Source/Core/MMCA.Common.Infrastructure/packages.lock.json +++ b/Source/Core/MMCA.Common.Infrastructure/packages.lock.json @@ -213,9 +213,9 @@ }, "Polly.Core": { "type": "Direct", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Roslynator.Analyzers": { "type": "Direct", diff --git a/Source/Hosting/MMCA.Common.Aws/packages.lock.json b/Source/Hosting/MMCA.Common.Aws/packages.lock.json index d71109d2..7f78e1d2 100644 --- a/Source/Hosting/MMCA.Common.Aws/packages.lock.json +++ b/Source/Hosting/MMCA.Common.Aws/packages.lock.json @@ -14,47 +14,47 @@ }, "AWSSDK.DynamoDBv2": { "type": "Direct", - "requested": "[4.0.109.1, )", - "resolved": "4.0.109.1", - "contentHash": "GJeycIKL2UyUVf5ew5bVezy4LIeWZm1oWt1Dvx6LK+oGar99Nexzbp7IsmHHII/mWJKRDRirbW7LOTBggYeeNg==", + "requested": "[4.0.109.2, )", + "resolved": "4.0.109.2", + "contentHash": "gQrQzBy1BT5PvlPEbaPbZTd+4N9k3duR32FVnkq260GUnjdpg9Nsmqgal/+kjqnoWTRhF8flxVEYfiiQf4BY4Q==", "dependencies": { - "AWSSDK.Core": "[4.0.102.13, 5.0.0)" + "AWSSDK.Core": "[4.0.102.14, 5.0.0)" } }, "AWSSDK.RDS": { "type": "Direct", - "requested": "[4.0.107.1, )", - "resolved": "4.0.107.1", - "contentHash": "4oYTugiBauVzmvBbmCss6NtcfBzLaExBN+16+kkJ043+OLP2RBdtbf6AjzqRoE4C+WQ5L9pIxCNjYRfHyUYsnA==", + "requested": "[4.0.107.2, )", + "resolved": "4.0.107.2", + "contentHash": "Oxzgg+2ViszJaaobY4W+gBN9D7Sk6cb1u52fQ478cFXVKzgAi3we0WFQm9mXUS9qEBxXOB9O2a7Wh4pzvIAYtA==", "dependencies": { - "AWSSDK.Core": "[4.0.102.13, 5.0.0)" + "AWSSDK.Core": "[4.0.102.14, 5.0.0)" } }, "AWSSDK.S3": { "type": "Direct", - "requested": "[4.0.104.6, )", - "resolved": "4.0.104.6", - "contentHash": "fSqAOkftU8jKemilzLGZDU0zLEJXHjAemU+8Nd29+sUwRxVK04w6/GY3O4f9S1+JIYwEnHDGcW66VK4AZ2kx6g==", + "requested": "[4.0.104.7, )", + "resolved": "4.0.104.7", + "contentHash": "mmURYvVR/+CM3+9FycHsz+ZZ2I3B1PPch7msARX8fKtiAfkDHYXCzdwQOKA5SvGGvleOKhLGa8YcWlAlbAtu0g==", "dependencies": { - "AWSSDK.Core": "[4.0.102.13, 5.0.0)" + "AWSSDK.Core": "[4.0.102.14, 5.0.0)" } }, "AWSSDK.SecretsManager": { "type": "Direct", - "requested": "[4.0.100.21, )", - "resolved": "4.0.100.21", - "contentHash": "oHV0IWy8XcigxJl4F0QL5R9H25XPhAIhIzOYx8GzEGRG4f3A9MBxdd9eoHe8guG+AASPf0tYCaji4vNb3UZCRg==", + "requested": "[4.0.100.22, )", + "resolved": "4.0.100.22", + "contentHash": "z6aPw+JX6SUYe4T09Rmq1a5VbGt+3e9rfkWh9CR+H0p4IEPSybmn/ErSOXkbPvqshifobdYlr9qkL0fLZ7Q4Aw==", "dependencies": { - "AWSSDK.Core": "[4.0.102.13, 5.0.0)" + "AWSSDK.Core": "[4.0.102.14, 5.0.0)" } }, "AWSSDK.SimpleNotificationService": { "type": "Direct", - "requested": "[4.0.100.21, )", - "resolved": "4.0.100.21", - "contentHash": "rZvac1zJU1eop7xOQv6FRa0114j/HmefT8Hz8eKgWizLzEEy17epB/rk2+ITyqi7R2HoyNDAqd0M7ogQJsgdiQ==", + "requested": "[4.0.100.22, )", + "resolved": "4.0.100.22", + "contentHash": "C6lvrJ7Ba6nMbDu71RJenfkJALXJBn3ngd53N35jr6WrJZg1me49V9M/xJ95PzACRegVziCHJlAlQYdGniy1Ag==", "dependencies": { - "AWSSDK.Core": "[4.0.102.13, 5.0.0)" + "AWSSDK.Core": "[4.0.102.14, 5.0.0)" } }, "MassTransit.AmazonSQS": { @@ -123,8 +123,8 @@ }, "AWSSDK.Core": { "type": "Transitive", - "resolved": "4.0.102.13", - "contentHash": "vaYs/kwfB+Lv9PeVKYE4g2mQlzVtHImXLWgfTG8UgeCybUAPkew5kwb8GS6RhuzwvImbolyLHT+IM34WoM9lJg==" + "resolved": "4.0.102.14", + "contentHash": "pRYOOIyj40UdQ6G9iq8AOU30sFPqWS/umM/sFTmAl4n1S6AVbVa67DJpJTxD+9qJFqweHPcyVW7Qb4BbUBLJdg==" }, "AWSSDK.Extensions.NETCore.Setup": { "type": "Transitive", diff --git a/Source/Hosting/MMCA.Common.Gcp/packages.lock.json b/Source/Hosting/MMCA.Common.Gcp/packages.lock.json index 8180463b..24b59485 100644 --- a/Source/Hosting/MMCA.Common.Gcp/packages.lock.json +++ b/Source/Hosting/MMCA.Common.Gcp/packages.lock.json @@ -25,12 +25,12 @@ }, "Google.Cloud.Firestore": { "type": "Direct", - "requested": "[4.5.0, )", - "resolved": "4.5.0", - "contentHash": "Jv7tWGtC6q7GhNJJM3G+N2pwiYpaWTW2wMQZPqiWfLpEeVGY4vw5uLtbANxM7VNfsouGj1zRhRr0KMhVorDgtA==", + "requested": "[4.6.0, )", + "resolved": "4.6.0", + "contentHash": "Q7Rql3jzJ9jVCUHw5YOofHkyomKrPCt/QFFGgpBxAGGpK3jmjjTM9lE+rHLARbqhnYVWzGxC6P2nK+r1AdATEA==", "dependencies": { - "Google.Cloud.Firestore.V1": "4.5.0", - "Microsoft.Bcl.AsyncInterfaces": "10.0.12" + "Google.Cloud.Firestore.V1": "4.6.0", + "Microsoft.Bcl.AsyncInterfaces": "10.0.14" } }, "Google.Cloud.Kms.V1": { @@ -205,8 +205,8 @@ }, "Google.Cloud.Firestore.V1": { "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "ReBMGDG3wJ9VSwLocYcJGBJGvC8V2eFHKrzlChNEeXgXV8FHeqXA0xIMkNxJL2LcKWTzPTO25FC3kw5qER3DZg==", + "resolved": "4.6.0", + "contentHash": "RMSqK1VD/2jmEnx3wdVyipPT9JlD4myU8KsWxbg5gwWNpd5u3YN1AEn2y/TKOmXUfMRCpBUwoxUzvzaOMrDAXg==", "dependencies": { "Google.Api.Gax.Grpc": "[4.13.1, 5.0.0)", "Google.Cloud.Location": "[2.4.0, 3.0.0)", @@ -295,8 +295,8 @@ }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", - "resolved": "10.0.12", - "contentHash": "vHPomsJPqUvf1ExdzCCSEUMQqloONPTBMGqNqBUdr4UgSTs9bCzH1oLkuS6WgUgIu+xqWngQbjelUBNlDuzLWQ==" + "resolved": "10.0.14", + "contentHash": "HCu9NbiXDh9++j4eRNRHCOiKPw/7I5UEJlFIRaDM3v0+ttZaH8p8rjxSWfNgP2cGv5JAa4EZnmc/nlcUOTFlpA==" }, "Microsoft.Bcl.Cryptography": { "type": "Transitive", diff --git a/Source/Presentation/MMCA.Common.UI/packages.lock.json b/Source/Presentation/MMCA.Common.UI/packages.lock.json index b21023fe..1e45189f 100644 --- a/Source/Presentation/MMCA.Common.UI/packages.lock.json +++ b/Source/Presentation/MMCA.Common.UI/packages.lock.json @@ -149,11 +149,11 @@ }, "Polly": { "type": "Direct", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "1/jm0wQA0hjcY8OcGx2HLzj4Tx33IpmEWWPUcekt07V7VO8suAUmeDRD7VM5wy9614pJMI2M0TB1pwKVflh4CQ==", + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "YpeoOqj82RfUtzQ3Tcn/zGnL/fdFmev1gEPSexYD3HgQZACo0b1avF8QU6f86KhUP+agXzCwKOKjo/8cqTjXvw==", "dependencies": { - "Polly.Core": "8.8.0" + "Polly.Core": "8.8.1" } }, "QRCoder": { @@ -666,8 +666,8 @@ "Polly.Core": { "type": "CentralTransitive", "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" } } } diff --git a/Tests/Hosting/MMCA.Common.Gcp.Tests/packages.lock.json b/Tests/Hosting/MMCA.Common.Gcp.Tests/packages.lock.json index acdf73b3..2e19eda9 100644 --- a/Tests/Hosting/MMCA.Common.Gcp.Tests/packages.lock.json +++ b/Tests/Hosting/MMCA.Common.Gcp.Tests/packages.lock.json @@ -164,8 +164,8 @@ }, "Google.Cloud.Firestore.V1": { "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "ReBMGDG3wJ9VSwLocYcJGBJGvC8V2eFHKrzlChNEeXgXV8FHeqXA0xIMkNxJL2LcKWTzPTO25FC3kw5qER3DZg==", + "resolved": "4.6.0", + "contentHash": "RMSqK1VD/2jmEnx3wdVyipPT9JlD4myU8KsWxbg5gwWNpd5u3YN1AEn2y/TKOmXUfMRCpBUwoxUzvzaOMrDAXg==", "dependencies": { "Google.Api.Gax.Grpc": "[4.13.1, 5.0.0)", "Google.Cloud.Location": "[2.4.0, 3.0.0)", @@ -259,8 +259,8 @@ }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", - "resolved": "10.0.12", - "contentHash": "vHPomsJPqUvf1ExdzCCSEUMQqloONPTBMGqNqBUdr4UgSTs9bCzH1oLkuS6WgUgIu+xqWngQbjelUBNlDuzLWQ==" + "resolved": "10.0.14", + "contentHash": "HCu9NbiXDh9++j4eRNRHCOiKPw/7I5UEJlFIRaDM3v0+ttZaH8p8rjxSWfNgP2cGv5JAa4EZnmc/nlcUOTFlpA==" }, "Microsoft.Bcl.Cryptography": { "type": "Transitive", @@ -794,7 +794,7 @@ "dependencies": { "FirebaseAdmin": "[3.7.0, )", "Google.Apis.Auth": "[1.77.0, )", - "Google.Cloud.Firestore": "[4.5.0, )", + "Google.Cloud.Firestore": "[4.6.0, )", "Google.Cloud.Kms.V1": "[3.27.0, )", "Google.Cloud.SecretManager.V1": "[2.8.0, )", "Google.Cloud.Storage.V1": "[5.0.0, )", @@ -942,12 +942,12 @@ }, "Google.Cloud.Firestore": { "type": "CentralTransitive", - "requested": "[4.5.0, )", - "resolved": "4.5.0", - "contentHash": "Jv7tWGtC6q7GhNJJM3G+N2pwiYpaWTW2wMQZPqiWfLpEeVGY4vw5uLtbANxM7VNfsouGj1zRhRr0KMhVorDgtA==", + "requested": "[4.6.0, )", + "resolved": "4.6.0", + "contentHash": "Q7Rql3jzJ9jVCUHw5YOofHkyomKrPCt/QFFGgpBxAGGpK3jmjjTM9lE+rHLARbqhnYVWzGxC6P2nK+r1AdATEA==", "dependencies": { - "Google.Cloud.Firestore.V1": "4.5.0", - "Microsoft.Bcl.AsyncInterfaces": "10.0.12" + "Google.Cloud.Firestore.V1": "4.6.0", + "Microsoft.Bcl.AsyncInterfaces": "10.0.14" } }, "Google.Cloud.Kms.V1": { From d076b1f8c6c44c6c40b1951ef1e5d380b36bffd0 Mon Sep 17 00:00:00 2001 From: Ivan Ball-llovera Date: Tue, 27 Oct 2026 09:11:57 -0400 Subject: [PATCH 2/5] deps: regenerate lock files for the minor-and-patch group Dependabot updated only six lock files, so every project carrying Polly as CentralTransitive failed restore with NU1004. Regenerated with --force-evaluate across the slnx and the twelve out-of-slnx projects; the SDK-implicit ILLink.Tasks (UI.Maui) and App.Internal.Assets (Gallery) blocks are kept at the CI SDK's 10.0.12. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VkaHCMhi84vqJ7KJFUUDa2 --- .../packages.lock.json | 2 +- .../MMCA.Common.Aspire/packages.lock.json | 2 +- .../MMCA.Common.Aws/packages.lock.json | 8 +-- .../MMCA.Common.Azure/packages.lock.json | 8 +-- .../MMCA.Common.Gcp/packages.lock.json | 8 +-- .../packages.lock.json | 8 +-- .../MMCA.Common.Testing.UI/packages.lock.json | 16 ++--- .../MMCA.Common.Testing/packages.lock.json | 8 +-- Source/MMCA.Common/packages.lock.json | 8 +-- .../MMCA.Common.API/packages.lock.json | 8 +-- .../MMCA.Common.Grpc/packages.lock.json | 2 +- .../MMCA.Common.UI.Maui/packages.lock.json | 64 +++++++++---------- .../MMCA.Common.UI.Web/packages.lock.json | 18 +++--- .../MMCA.Common.UI/packages.lock.json | 2 +- .../packages.lock.json | 18 +++--- .../packages.lock.json | 8 +-- .../packages.lock.json | 8 +-- .../packages.lock.json | 8 +-- .../packages.lock.json | 8 +-- .../packages.lock.json | 8 +-- .../packages.lock.json | 8 +-- .../packages.lock.json | 2 +- .../packages.lock.json | 2 +- .../packages.lock.json | 62 +++++++++--------- .../MMCA.Common.Aws.Tests/packages.lock.json | 62 +++++++++--------- .../packages.lock.json | 8 +-- .../packages.lock.json | 28 ++++---- .../MMCA.Common.Gcp.Tests/packages.lock.json | 8 +-- .../packages.lock.json | 2 +- .../packages.lock.json | 8 +-- .../packages.lock.json | 8 +-- .../packages.lock.json | 8 +-- .../packages.lock.json | 8 +-- .../MMCA.Common.LoadTests/packages.lock.json | 8 +-- .../MMCA.Common.API.Tests/packages.lock.json | 8 +-- .../MMCA.Common.Grpc.Tests/packages.lock.json | 2 +- .../packages.lock.json | 16 ++--- .../MMCA.Common.UI.Gallery/packages.lock.json | 16 ++--- .../MMCA.Common.UI.Tests/packages.lock.json | 16 ++--- .../packages.lock.json | 18 +++--- 40 files changed, 259 insertions(+), 259 deletions(-) diff --git a/Source/Hosting/MMCA.Common.Aspire.Hosting/packages.lock.json b/Source/Hosting/MMCA.Common.Aspire.Hosting/packages.lock.json index 1b8d989a..b310a350 100644 --- a/Source/Hosting/MMCA.Common.Aspire.Hosting/packages.lock.json +++ b/Source/Hosting/MMCA.Common.Aspire.Hosting/packages.lock.json @@ -1302,7 +1302,7 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", + "requested": "[8.8.1, )", "resolved": "8.7.0", "contentHash": "BS2t+nsBer16PIebCEPNBK5fgMisADQyRCd7K+BgkMWpFmSaiYE+rVVNpFhGRqUkJmNSLmw0uCNzHHWfgml28Q==" }, diff --git a/Source/Hosting/MMCA.Common.Aspire/packages.lock.json b/Source/Hosting/MMCA.Common.Aspire/packages.lock.json index e59d35f3..c01743f4 100644 --- a/Source/Hosting/MMCA.Common.Aspire/packages.lock.json +++ b/Source/Hosting/MMCA.Common.Aspire/packages.lock.json @@ -590,7 +590,7 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", + "requested": "[8.8.1, )", "resolved": "8.4.2", "contentHash": "BpE2I6HBYYA5tF0Vn4eoQOGYTYIK1BlF5EXVgkWGn3mqUUjbXAr13J6fZVbp7Q3epRR8yshacBMlsHMhpOiV3g==" }, diff --git a/Source/Hosting/MMCA.Common.Aws/packages.lock.json b/Source/Hosting/MMCA.Common.Aws/packages.lock.json index 7f78e1d2..077ac361 100644 --- a/Source/Hosting/MMCA.Common.Aws/packages.lock.json +++ b/Source/Hosting/MMCA.Common.Aws/packages.lock.json @@ -630,7 +630,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -961,9 +961,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Scrutor": { "type": "CentralTransitive", diff --git a/Source/Hosting/MMCA.Common.Azure/packages.lock.json b/Source/Hosting/MMCA.Common.Azure/packages.lock.json index bd3ed9cf..7ce2b494 100644 --- a/Source/Hosting/MMCA.Common.Azure/packages.lock.json +++ b/Source/Hosting/MMCA.Common.Azure/packages.lock.json @@ -743,7 +743,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -1074,9 +1074,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Scrutor": { "type": "CentralTransitive", diff --git a/Source/Hosting/MMCA.Common.Gcp/packages.lock.json b/Source/Hosting/MMCA.Common.Gcp/packages.lock.json index 24b59485..75e5dd48 100644 --- a/Source/Hosting/MMCA.Common.Gcp/packages.lock.json +++ b/Source/Hosting/MMCA.Common.Gcp/packages.lock.json @@ -740,7 +740,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -1077,9 +1077,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Scrutor": { "type": "CentralTransitive", diff --git a/Source/Hosting/MMCA.Common.Testing.Aspire/packages.lock.json b/Source/Hosting/MMCA.Common.Testing.Aspire/packages.lock.json index eea9b77d..ab24066b 100644 --- a/Source/Hosting/MMCA.Common.Testing.Aspire/packages.lock.json +++ b/Source/Hosting/MMCA.Common.Testing.Aspire/packages.lock.json @@ -1233,7 +1233,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -1684,9 +1684,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "QRCoder": { "type": "CentralTransitive", diff --git a/Source/Hosting/MMCA.Common.Testing.UI/packages.lock.json b/Source/Hosting/MMCA.Common.Testing.UI/packages.lock.json index cb7a71d3..cbc09ec1 100644 --- a/Source/Hosting/MMCA.Common.Testing.UI/packages.lock.json +++ b/Source/Hosting/MMCA.Common.Testing.UI/packages.lock.json @@ -227,7 +227,7 @@ "Microsoft.AspNetCore.SignalR.Client": "[10.0.14, )", "Microsoft.FeatureManagement": "[4.8.0, )", "MudBlazor": "[9.11.0, )", - "Polly": "[8.8.0, )", + "Polly": "[8.8.1, )", "QRCoder": "[1.8.1, )", "Scrutor": "[7.0.0, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )" @@ -251,18 +251,18 @@ }, "Polly": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "1/jm0wQA0hjcY8OcGx2HLzj4Tx33IpmEWWPUcekt07V7VO8suAUmeDRD7VM5wy9614pJMI2M0TB1pwKVflh4CQ==", + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "YpeoOqj82RfUtzQ3Tcn/zGnL/fdFmev1gEPSexYD3HgQZACo0b1avF8QU6f86KhUP+agXzCwKOKjo/8cqTjXvw==", "dependencies": { - "Polly.Core": "8.8.0" + "Polly.Core": "8.8.1" } }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "QRCoder": { "type": "CentralTransitive", diff --git a/Source/Hosting/MMCA.Common.Testing/packages.lock.json b/Source/Hosting/MMCA.Common.Testing/packages.lock.json index 87a5fa89..5c454943 100644 --- a/Source/Hosting/MMCA.Common.Testing/packages.lock.json +++ b/Source/Hosting/MMCA.Common.Testing/packages.lock.json @@ -671,7 +671,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -918,9 +918,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Scalar.AspNetCore": { "type": "CentralTransitive", diff --git a/Source/MMCA.Common/packages.lock.json b/Source/MMCA.Common/packages.lock.json index e4057395..47fa844c 100644 --- a/Source/MMCA.Common/packages.lock.json +++ b/Source/MMCA.Common/packages.lock.json @@ -859,7 +859,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -1375,9 +1375,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Scalar.AspNetCore": { "type": "CentralTransitive", diff --git a/Source/Presentation/MMCA.Common.API/packages.lock.json b/Source/Presentation/MMCA.Common.API/packages.lock.json index 29301352..405aecaf 100644 --- a/Source/Presentation/MMCA.Common.API/packages.lock.json +++ b/Source/Presentation/MMCA.Common.API/packages.lock.json @@ -808,7 +808,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -1060,9 +1060,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Scrutor": { "type": "CentralTransitive", diff --git a/Source/Presentation/MMCA.Common.Grpc/packages.lock.json b/Source/Presentation/MMCA.Common.Grpc/packages.lock.json index a58ae576..3723ebd0 100644 --- a/Source/Presentation/MMCA.Common.Grpc/packages.lock.json +++ b/Source/Presentation/MMCA.Common.Grpc/packages.lock.json @@ -315,7 +315,7 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", + "requested": "[8.8.1, )", "resolved": "8.4.2", "contentHash": "BpE2I6HBYYA5tF0Vn4eoQOGYTYIK1BlF5EXVgkWGn3mqUUjbXAr13J6fZVbp7Q3epRR8yshacBMlsHMhpOiV3g==" } diff --git a/Source/Presentation/MMCA.Common.UI.Maui/packages.lock.json b/Source/Presentation/MMCA.Common.UI.Maui/packages.lock.json index 5fa5ce55..37f66a51 100644 --- a/Source/Presentation/MMCA.Common.UI.Maui/packages.lock.json +++ b/Source/Presentation/MMCA.Common.UI.Maui/packages.lock.json @@ -2223,7 +2223,7 @@ "Microsoft.Extensions.Options.DataAnnotations": "[10.0.14, )", "Microsoft.FeatureManagement": "[4.8.0, )", "MudBlazor": "[9.11.0, )", - "Polly": "[8.8.0, )", + "Polly": "[8.8.1, )", "QRCoder": "[1.8.1, )", "Scrutor": "[7.0.0, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )" @@ -2364,18 +2364,18 @@ }, "Polly": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "1/jm0wQA0hjcY8OcGx2HLzj4Tx33IpmEWWPUcekt07V7VO8suAUmeDRD7VM5wy9614pJMI2M0TB1pwKVflh4CQ==", + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "YpeoOqj82RfUtzQ3Tcn/zGnL/fdFmev1gEPSexYD3HgQZACo0b1avF8QU6f86KhUP+agXzCwKOKjo/8cqTjXvw==", "dependencies": { - "Polly.Core": "8.8.0" + "Polly.Core": "8.8.1" } }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "QRCoder": { "type": "CentralTransitive", @@ -3125,7 +3125,7 @@ "Microsoft.Extensions.Options.DataAnnotations": "[10.0.14, )", "Microsoft.FeatureManagement": "[4.8.0, )", "MudBlazor": "[9.11.0, )", - "Polly": "[8.8.0, )", + "Polly": "[8.8.1, )", "QRCoder": "[1.8.1, )", "Scrutor": "[7.0.0, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )" @@ -3266,18 +3266,18 @@ }, "Polly": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "1/jm0wQA0hjcY8OcGx2HLzj4Tx33IpmEWWPUcekt07V7VO8suAUmeDRD7VM5wy9614pJMI2M0TB1pwKVflh4CQ==", + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "YpeoOqj82RfUtzQ3Tcn/zGnL/fdFmev1gEPSexYD3HgQZACo0b1avF8QU6f86KhUP+agXzCwKOKjo/8cqTjXvw==", "dependencies": { - "Polly.Core": "8.8.0" + "Polly.Core": "8.8.1" } }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "QRCoder": { "type": "CentralTransitive", @@ -4027,7 +4027,7 @@ "Microsoft.Extensions.Options.DataAnnotations": "[10.0.14, )", "Microsoft.FeatureManagement": "[4.8.0, )", "MudBlazor": "[9.11.0, )", - "Polly": "[8.8.0, )", + "Polly": "[8.8.1, )", "QRCoder": "[1.8.1, )", "Scrutor": "[7.0.0, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )" @@ -4168,18 +4168,18 @@ }, "Polly": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "1/jm0wQA0hjcY8OcGx2HLzj4Tx33IpmEWWPUcekt07V7VO8suAUmeDRD7VM5wy9614pJMI2M0TB1pwKVflh4CQ==", + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "YpeoOqj82RfUtzQ3Tcn/zGnL/fdFmev1gEPSexYD3HgQZACo0b1avF8QU6f86KhUP+agXzCwKOKjo/8cqTjXvw==", "dependencies": { - "Polly.Core": "8.8.0" + "Polly.Core": "8.8.1" } }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "QRCoder": { "type": "CentralTransitive", @@ -5100,7 +5100,7 @@ "Microsoft.Extensions.Options.DataAnnotations": "[10.0.14, )", "Microsoft.FeatureManagement": "[4.8.0, )", "MudBlazor": "[9.11.0, )", - "Polly": "[8.8.0, )", + "Polly": "[8.8.1, )", "QRCoder": "[1.8.1, )", "Scrutor": "[7.0.0, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )" @@ -5241,18 +5241,18 @@ }, "Polly": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "1/jm0wQA0hjcY8OcGx2HLzj4Tx33IpmEWWPUcekt07V7VO8suAUmeDRD7VM5wy9614pJMI2M0TB1pwKVflh4CQ==", + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "YpeoOqj82RfUtzQ3Tcn/zGnL/fdFmev1gEPSexYD3HgQZACo0b1avF8QU6f86KhUP+agXzCwKOKjo/8cqTjXvw==", "dependencies": { - "Polly.Core": "8.8.0" + "Polly.Core": "8.8.1" } }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "QRCoder": { "type": "CentralTransitive", diff --git a/Source/Presentation/MMCA.Common.UI.Web/packages.lock.json b/Source/Presentation/MMCA.Common.UI.Web/packages.lock.json index dfe7f1a0..e2dda032 100644 --- a/Source/Presentation/MMCA.Common.UI.Web/packages.lock.json +++ b/Source/Presentation/MMCA.Common.UI.Web/packages.lock.json @@ -617,7 +617,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -634,7 +634,7 @@ "Microsoft.AspNetCore.SignalR.Client": "[10.0.14, )", "Microsoft.FeatureManagement": "[4.8.0, )", "MudBlazor": "[9.11.0, )", - "Polly": "[8.8.0, )", + "Polly": "[8.8.1, )", "QRCoder": "[1.8.1, )", "Scrutor": "[7.0.0, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )" @@ -1049,18 +1049,18 @@ }, "Polly": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "1/jm0wQA0hjcY8OcGx2HLzj4Tx33IpmEWWPUcekt07V7VO8suAUmeDRD7VM5wy9614pJMI2M0TB1pwKVflh4CQ==", + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "YpeoOqj82RfUtzQ3Tcn/zGnL/fdFmev1gEPSexYD3HgQZACo0b1avF8QU6f86KhUP+agXzCwKOKjo/8cqTjXvw==", "dependencies": { - "Polly.Core": "8.8.0" + "Polly.Core": "8.8.1" } }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "QRCoder": { "type": "CentralTransitive", diff --git a/Source/Presentation/MMCA.Common.UI/packages.lock.json b/Source/Presentation/MMCA.Common.UI/packages.lock.json index 1e45189f..b0667d32 100644 --- a/Source/Presentation/MMCA.Common.UI/packages.lock.json +++ b/Source/Presentation/MMCA.Common.UI/packages.lock.json @@ -665,7 +665,7 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", + "requested": "[8.8.1, )", "resolved": "8.8.1", "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" } diff --git a/Tests/Architecture/MMCA.Common.Architecture.Tests/packages.lock.json b/Tests/Architecture/MMCA.Common.Architecture.Tests/packages.lock.json index e1a8611a..42daf9c7 100644 --- a/Tests/Architecture/MMCA.Common.Architecture.Tests/packages.lock.json +++ b/Tests/Architecture/MMCA.Common.Architecture.Tests/packages.lock.json @@ -1659,7 +1659,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -1722,7 +1722,7 @@ "Microsoft.Extensions.Options.DataAnnotations": "[10.0.14, )", "Microsoft.FeatureManagement": "[4.8.0, )", "MudBlazor": "[9.11.0, )", - "Polly": "[8.8.0, )", + "Polly": "[8.8.1, )", "QRCoder": "[1.8.1, )", "Scrutor": "[7.0.0, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )" @@ -2478,18 +2478,18 @@ }, "Polly": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "1/jm0wQA0hjcY8OcGx2HLzj4Tx33IpmEWWPUcekt07V7VO8suAUmeDRD7VM5wy9614pJMI2M0TB1pwKVflh4CQ==", + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "YpeoOqj82RfUtzQ3Tcn/zGnL/fdFmev1gEPSexYD3HgQZACo0b1avF8QU6f86KhUP+agXzCwKOKjo/8cqTjXvw==", "dependencies": { - "Polly.Core": "8.8.0" + "Polly.Core": "8.8.1" } }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "QRCoder": { "type": "CentralTransitive", diff --git a/Tests/Core/MMCA.Common.Application.Tests/packages.lock.json b/Tests/Core/MMCA.Common.Application.Tests/packages.lock.json index 2244366e..da0e7a72 100644 --- a/Tests/Core/MMCA.Common.Application.Tests/packages.lock.json +++ b/Tests/Core/MMCA.Common.Application.Tests/packages.lock.json @@ -1035,7 +1035,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -1419,9 +1419,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Respawn": { "type": "CentralTransitive", diff --git a/Tests/Core/MMCA.Common.Infrastructure.PostgreSQL.Tests/packages.lock.json b/Tests/Core/MMCA.Common.Infrastructure.PostgreSQL.Tests/packages.lock.json index 1ab8ded0..c505d7a3 100644 --- a/Tests/Core/MMCA.Common.Infrastructure.PostgreSQL.Tests/packages.lock.json +++ b/Tests/Core/MMCA.Common.Infrastructure.PostgreSQL.Tests/packages.lock.json @@ -872,7 +872,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -1143,9 +1143,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Scrutor": { "type": "CentralTransitive", diff --git a/Tests/Core/MMCA.Common.Infrastructure.Redis.Tests/packages.lock.json b/Tests/Core/MMCA.Common.Infrastructure.Redis.Tests/packages.lock.json index 00ea8165..30c28572 100644 --- a/Tests/Core/MMCA.Common.Infrastructure.Redis.Tests/packages.lock.json +++ b/Tests/Core/MMCA.Common.Infrastructure.Redis.Tests/packages.lock.json @@ -928,7 +928,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -1280,9 +1280,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Scalar.AspNetCore": { "type": "CentralTransitive", diff --git a/Tests/Core/MMCA.Common.Infrastructure.SQLServer.Tests/packages.lock.json b/Tests/Core/MMCA.Common.Infrastructure.SQLServer.Tests/packages.lock.json index d4a9117a..31a919e7 100644 --- a/Tests/Core/MMCA.Common.Infrastructure.SQLServer.Tests/packages.lock.json +++ b/Tests/Core/MMCA.Common.Infrastructure.SQLServer.Tests/packages.lock.json @@ -872,7 +872,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -1143,9 +1143,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Scrutor": { "type": "CentralTransitive", diff --git a/Tests/Core/MMCA.Common.Infrastructure.Tests.MigrationsFixture/packages.lock.json b/Tests/Core/MMCA.Common.Infrastructure.Tests.MigrationsFixture/packages.lock.json index a9adc27c..29aacb92 100644 --- a/Tests/Core/MMCA.Common.Infrastructure.Tests.MigrationsFixture/packages.lock.json +++ b/Tests/Core/MMCA.Common.Infrastructure.Tests.MigrationsFixture/packages.lock.json @@ -656,7 +656,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -927,9 +927,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Scrutor": { "type": "CentralTransitive", diff --git a/Tests/Core/MMCA.Common.Infrastructure.Tests/packages.lock.json b/Tests/Core/MMCA.Common.Infrastructure.Tests/packages.lock.json index e397d250..5c9df1cf 100644 --- a/Tests/Core/MMCA.Common.Infrastructure.Tests/packages.lock.json +++ b/Tests/Core/MMCA.Common.Infrastructure.Tests/packages.lock.json @@ -841,7 +841,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -1082,9 +1082,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Scrutor": { "type": "CentralTransitive", diff --git a/Tests/Hosting/MMCA.Common.Aspire.Hosting.Tests/packages.lock.json b/Tests/Hosting/MMCA.Common.Aspire.Hosting.Tests/packages.lock.json index 856454d2..76050472 100644 --- a/Tests/Hosting/MMCA.Common.Aspire.Hosting.Tests/packages.lock.json +++ b/Tests/Hosting/MMCA.Common.Aspire.Hosting.Tests/packages.lock.json @@ -1281,7 +1281,7 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", + "requested": "[8.8.1, )", "resolved": "8.7.0", "contentHash": "BS2t+nsBer16PIebCEPNBK5fgMisADQyRCd7K+BgkMWpFmSaiYE+rVVNpFhGRqUkJmNSLmw0uCNzHHWfgml28Q==" }, diff --git a/Tests/Hosting/MMCA.Common.Aspire.Tests/packages.lock.json b/Tests/Hosting/MMCA.Common.Aspire.Tests/packages.lock.json index 1425de49..2078638b 100644 --- a/Tests/Hosting/MMCA.Common.Aspire.Tests/packages.lock.json +++ b/Tests/Hosting/MMCA.Common.Aspire.Tests/packages.lock.json @@ -717,7 +717,7 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", + "requested": "[8.8.1, )", "resolved": "8.4.2", "contentHash": "BpE2I6HBYYA5tF0Vn4eoQOGYTYIK1BlF5EXVgkWGn3mqUUjbXAr13J6fZVbp7Q3epRR8yshacBMlsHMhpOiV3g==" }, diff --git a/Tests/Hosting/MMCA.Common.Aws.LocalStack.Tests/packages.lock.json b/Tests/Hosting/MMCA.Common.Aws.LocalStack.Tests/packages.lock.json index de6bff24..5d3afb76 100644 --- a/Tests/Hosting/MMCA.Common.Aws.LocalStack.Tests/packages.lock.json +++ b/Tests/Hosting/MMCA.Common.Aws.LocalStack.Tests/packages.lock.json @@ -84,8 +84,8 @@ }, "AWSSDK.Core": { "type": "Transitive", - "resolved": "4.0.102.13", - "contentHash": "vaYs/kwfB+Lv9PeVKYE4g2mQlzVtHImXLWgfTG8UgeCybUAPkew5kwb8GS6RhuzwvImbolyLHT+IM34WoM9lJg==" + "resolved": "4.0.102.14", + "contentHash": "pRYOOIyj40UdQ6G9iq8AOU30sFPqWS/umM/sFTmAl4n1S6AVbVa67DJpJTxD+9qJFqweHPcyVW7Qb4BbUBLJdg==" }, "AWSSDK.Extensions.NETCore.Setup": { "type": "Transitive", @@ -740,11 +740,11 @@ "mmca.common.aws": { "type": "Project", "dependencies": { - "AWSSDK.DynamoDBv2": "[4.0.109.1, )", - "AWSSDK.RDS": "[4.0.107.1, )", - "AWSSDK.S3": "[4.0.104.6, )", - "AWSSDK.SecretsManager": "[4.0.100.21, )", - "AWSSDK.SimpleNotificationService": "[4.0.100.21, )", + "AWSSDK.DynamoDBv2": "[4.0.109.2, )", + "AWSSDK.RDS": "[4.0.107.2, )", + "AWSSDK.S3": "[4.0.104.7, )", + "AWSSDK.SecretsManager": "[4.0.100.22, )", + "AWSSDK.SimpleNotificationService": "[4.0.100.22, )", "Amazon.AspNetCore.DataProtection.SSM": "[4.0.3, )", "MMCA.Common.Aspire": "[1.0.0, )", "MMCA.Common.Infrastructure": "[1.0.0, )", @@ -777,7 +777,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -863,47 +863,47 @@ }, "AWSSDK.DynamoDBv2": { "type": "CentralTransitive", - "requested": "[4.0.109.1, )", - "resolved": "4.0.109.1", - "contentHash": "GJeycIKL2UyUVf5ew5bVezy4LIeWZm1oWt1Dvx6LK+oGar99Nexzbp7IsmHHII/mWJKRDRirbW7LOTBggYeeNg==", + "requested": "[4.0.109.2, )", + "resolved": "4.0.109.2", + "contentHash": "gQrQzBy1BT5PvlPEbaPbZTd+4N9k3duR32FVnkq260GUnjdpg9Nsmqgal/+kjqnoWTRhF8flxVEYfiiQf4BY4Q==", "dependencies": { - "AWSSDK.Core": "[4.0.102.13, 5.0.0)" + "AWSSDK.Core": "[4.0.102.14, 5.0.0)" } }, "AWSSDK.RDS": { "type": "CentralTransitive", - "requested": "[4.0.107.1, )", - "resolved": "4.0.107.1", - "contentHash": "4oYTugiBauVzmvBbmCss6NtcfBzLaExBN+16+kkJ043+OLP2RBdtbf6AjzqRoE4C+WQ5L9pIxCNjYRfHyUYsnA==", + "requested": "[4.0.107.2, )", + "resolved": "4.0.107.2", + "contentHash": "Oxzgg+2ViszJaaobY4W+gBN9D7Sk6cb1u52fQ478cFXVKzgAi3we0WFQm9mXUS9qEBxXOB9O2a7Wh4pzvIAYtA==", "dependencies": { - "AWSSDK.Core": "[4.0.102.13, 5.0.0)" + "AWSSDK.Core": "[4.0.102.14, 5.0.0)" } }, "AWSSDK.S3": { "type": "CentralTransitive", - "requested": "[4.0.104.6, )", - "resolved": "4.0.104.6", - "contentHash": "fSqAOkftU8jKemilzLGZDU0zLEJXHjAemU+8Nd29+sUwRxVK04w6/GY3O4f9S1+JIYwEnHDGcW66VK4AZ2kx6g==", + "requested": "[4.0.104.7, )", + "resolved": "4.0.104.7", + "contentHash": "mmURYvVR/+CM3+9FycHsz+ZZ2I3B1PPch7msARX8fKtiAfkDHYXCzdwQOKA5SvGGvleOKhLGa8YcWlAlbAtu0g==", "dependencies": { - "AWSSDK.Core": "[4.0.102.13, 5.0.0)" + "AWSSDK.Core": "[4.0.102.14, 5.0.0)" } }, "AWSSDK.SecretsManager": { "type": "CentralTransitive", - "requested": "[4.0.100.21, )", - "resolved": "4.0.100.21", - "contentHash": "oHV0IWy8XcigxJl4F0QL5R9H25XPhAIhIzOYx8GzEGRG4f3A9MBxdd9eoHe8guG+AASPf0tYCaji4vNb3UZCRg==", + "requested": "[4.0.100.22, )", + "resolved": "4.0.100.22", + "contentHash": "z6aPw+JX6SUYe4T09Rmq1a5VbGt+3e9rfkWh9CR+H0p4IEPSybmn/ErSOXkbPvqshifobdYlr9qkL0fLZ7Q4Aw==", "dependencies": { - "AWSSDK.Core": "[4.0.102.13, 5.0.0)" + "AWSSDK.Core": "[4.0.102.14, 5.0.0)" } }, "AWSSDK.SimpleNotificationService": { "type": "CentralTransitive", - "requested": "[4.0.100.21, )", - "resolved": "4.0.100.21", - "contentHash": "rZvac1zJU1eop7xOQv6FRa0114j/HmefT8Hz8eKgWizLzEEy17epB/rk2+ITyqi7R2HoyNDAqd0M7ogQJsgdiQ==", + "requested": "[4.0.100.22, )", + "resolved": "4.0.100.22", + "contentHash": "C6lvrJ7Ba6nMbDu71RJenfkJALXJBn3ngd53N35jr6WrJZg1me49V9M/xJ95PzACRegVziCHJlAlQYdGniy1Ag==", "dependencies": { - "AWSSDK.Core": "[4.0.102.13, 5.0.0)" + "AWSSDK.Core": "[4.0.102.14, 5.0.0)" } }, "Cronos": { @@ -1174,9 +1174,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Scrutor": { "type": "CentralTransitive", diff --git a/Tests/Hosting/MMCA.Common.Aws.Tests/packages.lock.json b/Tests/Hosting/MMCA.Common.Aws.Tests/packages.lock.json index 93896a8f..a44fb8ed 100644 --- a/Tests/Hosting/MMCA.Common.Aws.Tests/packages.lock.json +++ b/Tests/Hosting/MMCA.Common.Aws.Tests/packages.lock.json @@ -75,8 +75,8 @@ }, "AWSSDK.Core": { "type": "Transitive", - "resolved": "4.0.102.13", - "contentHash": "vaYs/kwfB+Lv9PeVKYE4g2mQlzVtHImXLWgfTG8UgeCybUAPkew5kwb8GS6RhuzwvImbolyLHT+IM34WoM9lJg==" + "resolved": "4.0.102.14", + "contentHash": "pRYOOIyj40UdQ6G9iq8AOU30sFPqWS/umM/sFTmAl4n1S6AVbVa67DJpJTxD+9qJFqweHPcyVW7Qb4BbUBLJdg==" }, "AWSSDK.Extensions.NETCore.Setup": { "type": "Transitive", @@ -674,11 +674,11 @@ "mmca.common.aws": { "type": "Project", "dependencies": { - "AWSSDK.DynamoDBv2": "[4.0.109.1, )", - "AWSSDK.RDS": "[4.0.107.1, )", - "AWSSDK.S3": "[4.0.104.6, )", - "AWSSDK.SecretsManager": "[4.0.100.21, )", - "AWSSDK.SimpleNotificationService": "[4.0.100.21, )", + "AWSSDK.DynamoDBv2": "[4.0.109.2, )", + "AWSSDK.RDS": "[4.0.107.2, )", + "AWSSDK.S3": "[4.0.104.7, )", + "AWSSDK.SecretsManager": "[4.0.100.22, )", + "AWSSDK.SimpleNotificationService": "[4.0.100.22, )", "Amazon.AspNetCore.DataProtection.SSM": "[4.0.3, )", "MMCA.Common.Aspire": "[1.0.0, )", "MMCA.Common.Infrastructure": "[1.0.0, )", @@ -711,7 +711,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -805,47 +805,47 @@ }, "AWSSDK.DynamoDBv2": { "type": "CentralTransitive", - "requested": "[4.0.109.1, )", - "resolved": "4.0.109.1", - "contentHash": "GJeycIKL2UyUVf5ew5bVezy4LIeWZm1oWt1Dvx6LK+oGar99Nexzbp7IsmHHII/mWJKRDRirbW7LOTBggYeeNg==", + "requested": "[4.0.109.2, )", + "resolved": "4.0.109.2", + "contentHash": "gQrQzBy1BT5PvlPEbaPbZTd+4N9k3duR32FVnkq260GUnjdpg9Nsmqgal/+kjqnoWTRhF8flxVEYfiiQf4BY4Q==", "dependencies": { - "AWSSDK.Core": "[4.0.102.13, 5.0.0)" + "AWSSDK.Core": "[4.0.102.14, 5.0.0)" } }, "AWSSDK.RDS": { "type": "CentralTransitive", - "requested": "[4.0.107.1, )", - "resolved": "4.0.107.1", - "contentHash": "4oYTugiBauVzmvBbmCss6NtcfBzLaExBN+16+kkJ043+OLP2RBdtbf6AjzqRoE4C+WQ5L9pIxCNjYRfHyUYsnA==", + "requested": "[4.0.107.2, )", + "resolved": "4.0.107.2", + "contentHash": "Oxzgg+2ViszJaaobY4W+gBN9D7Sk6cb1u52fQ478cFXVKzgAi3we0WFQm9mXUS9qEBxXOB9O2a7Wh4pzvIAYtA==", "dependencies": { - "AWSSDK.Core": "[4.0.102.13, 5.0.0)" + "AWSSDK.Core": "[4.0.102.14, 5.0.0)" } }, "AWSSDK.S3": { "type": "CentralTransitive", - "requested": "[4.0.104.6, )", - "resolved": "4.0.104.6", - "contentHash": "fSqAOkftU8jKemilzLGZDU0zLEJXHjAemU+8Nd29+sUwRxVK04w6/GY3O4f9S1+JIYwEnHDGcW66VK4AZ2kx6g==", + "requested": "[4.0.104.7, )", + "resolved": "4.0.104.7", + "contentHash": "mmURYvVR/+CM3+9FycHsz+ZZ2I3B1PPch7msARX8fKtiAfkDHYXCzdwQOKA5SvGGvleOKhLGa8YcWlAlbAtu0g==", "dependencies": { - "AWSSDK.Core": "[4.0.102.13, 5.0.0)" + "AWSSDK.Core": "[4.0.102.14, 5.0.0)" } }, "AWSSDK.SecretsManager": { "type": "CentralTransitive", - "requested": "[4.0.100.21, )", - "resolved": "4.0.100.21", - "contentHash": "oHV0IWy8XcigxJl4F0QL5R9H25XPhAIhIzOYx8GzEGRG4f3A9MBxdd9eoHe8guG+AASPf0tYCaji4vNb3UZCRg==", + "requested": "[4.0.100.22, )", + "resolved": "4.0.100.22", + "contentHash": "z6aPw+JX6SUYe4T09Rmq1a5VbGt+3e9rfkWh9CR+H0p4IEPSybmn/ErSOXkbPvqshifobdYlr9qkL0fLZ7Q4Aw==", "dependencies": { - "AWSSDK.Core": "[4.0.102.13, 5.0.0)" + "AWSSDK.Core": "[4.0.102.14, 5.0.0)" } }, "AWSSDK.SimpleNotificationService": { "type": "CentralTransitive", - "requested": "[4.0.100.21, )", - "resolved": "4.0.100.21", - "contentHash": "rZvac1zJU1eop7xOQv6FRa0114j/HmefT8Hz8eKgWizLzEEy17epB/rk2+ITyqi7R2HoyNDAqd0M7ogQJsgdiQ==", + "requested": "[4.0.100.22, )", + "resolved": "4.0.100.22", + "contentHash": "C6lvrJ7Ba6nMbDu71RJenfkJALXJBn3ngd53N35jr6WrJZg1me49V9M/xJ95PzACRegVziCHJlAlQYdGniy1Ag==", "dependencies": { - "AWSSDK.Core": "[4.0.102.13, 5.0.0)" + "AWSSDK.Core": "[4.0.102.14, 5.0.0)" } }, "Cronos": { @@ -1125,9 +1125,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Scrutor": { "type": "CentralTransitive", diff --git a/Tests/Hosting/MMCA.Common.Azure.Tests/packages.lock.json b/Tests/Hosting/MMCA.Common.Azure.Tests/packages.lock.json index eb75331c..0a42b06a 100644 --- a/Tests/Hosting/MMCA.Common.Azure.Tests/packages.lock.json +++ b/Tests/Hosting/MMCA.Common.Azure.Tests/packages.lock.json @@ -785,7 +785,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -1241,9 +1241,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Scrutor": { "type": "CentralTransitive", diff --git a/Tests/Hosting/MMCA.Common.Gcp.Emulator.Tests/packages.lock.json b/Tests/Hosting/MMCA.Common.Gcp.Emulator.Tests/packages.lock.json index 2f36da64..1c983914 100644 --- a/Tests/Hosting/MMCA.Common.Gcp.Emulator.Tests/packages.lock.json +++ b/Tests/Hosting/MMCA.Common.Gcp.Emulator.Tests/packages.lock.json @@ -242,8 +242,8 @@ }, "Google.Cloud.Firestore.V1": { "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "ReBMGDG3wJ9VSwLocYcJGBJGvC8V2eFHKrzlChNEeXgXV8FHeqXA0xIMkNxJL2LcKWTzPTO25FC3kw5qER3DZg==", + "resolved": "4.6.0", + "contentHash": "RMSqK1VD/2jmEnx3wdVyipPT9JlD4myU8KsWxbg5gwWNpd5u3YN1AEn2y/TKOmXUfMRCpBUwoxUzvzaOMrDAXg==", "dependencies": { "Google.Api.Gax.Grpc": "[4.13.1, 5.0.0)", "Google.Cloud.Location": "[2.4.0, 3.0.0)", @@ -337,8 +337,8 @@ }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", - "resolved": "10.0.12", - "contentHash": "vHPomsJPqUvf1ExdzCCSEUMQqloONPTBMGqNqBUdr4UgSTs9bCzH1oLkuS6WgUgIu+xqWngQbjelUBNlDuzLWQ==" + "resolved": "10.0.14", + "contentHash": "HCu9NbiXDh9++j4eRNRHCOiKPw/7I5UEJlFIRaDM3v0+ttZaH8p8rjxSWfNgP2cGv5JAa4EZnmc/nlcUOTFlpA==" }, "Microsoft.Bcl.Cryptography": { "type": "Transitive", @@ -872,7 +872,7 @@ "dependencies": { "FirebaseAdmin": "[3.7.0, )", "Google.Apis.Auth": "[1.77.0, )", - "Google.Cloud.Firestore": "[4.5.0, )", + "Google.Cloud.Firestore": "[4.6.0, )", "Google.Cloud.Kms.V1": "[3.27.0, )", "Google.Cloud.SecretManager.V1": "[2.8.0, )", "Google.Cloud.Storage.V1": "[5.0.0, )", @@ -900,7 +900,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -1012,12 +1012,12 @@ }, "Google.Cloud.Firestore": { "type": "CentralTransitive", - "requested": "[4.5.0, )", - "resolved": "4.5.0", - "contentHash": "Jv7tWGtC6q7GhNJJM3G+N2pwiYpaWTW2wMQZPqiWfLpEeVGY4vw5uLtbANxM7VNfsouGj1zRhRr0KMhVorDgtA==", + "requested": "[4.6.0, )", + "resolved": "4.6.0", + "contentHash": "Q7Rql3jzJ9jVCUHw5YOofHkyomKrPCt/QFFGgpBxAGGpK3jmjjTM9lE+rHLARbqhnYVWzGxC6P2nK+r1AdATEA==", "dependencies": { - "Google.Cloud.Firestore.V1": "4.5.0", - "Microsoft.Bcl.AsyncInterfaces": "10.0.12" + "Google.Cloud.Firestore.V1": "4.6.0", + "Microsoft.Bcl.AsyncInterfaces": "10.0.14" } }, "Google.Cloud.Kms.V1": { @@ -1301,9 +1301,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Scrutor": { "type": "CentralTransitive", diff --git a/Tests/Hosting/MMCA.Common.Gcp.Tests/packages.lock.json b/Tests/Hosting/MMCA.Common.Gcp.Tests/packages.lock.json index 2e19eda9..32cd9812 100644 --- a/Tests/Hosting/MMCA.Common.Gcp.Tests/packages.lock.json +++ b/Tests/Hosting/MMCA.Common.Gcp.Tests/packages.lock.json @@ -822,7 +822,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -1240,9 +1240,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Scrutor": { "type": "CentralTransitive", diff --git a/Tests/Hosting/MMCA.Common.Testing.Aspire.AppHostTests.SampleAppHost/packages.lock.json b/Tests/Hosting/MMCA.Common.Testing.Aspire.AppHostTests.SampleAppHost/packages.lock.json index c6e7479e..c082834c 100644 --- a/Tests/Hosting/MMCA.Common.Testing.Aspire.AppHostTests.SampleAppHost/packages.lock.json +++ b/Tests/Hosting/MMCA.Common.Testing.Aspire.AppHostTests.SampleAppHost/packages.lock.json @@ -1350,7 +1350,7 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", + "requested": "[8.8.1, )", "resolved": "8.7.0", "contentHash": "BS2t+nsBer16PIebCEPNBK5fgMisADQyRCd7K+BgkMWpFmSaiYE+rVVNpFhGRqUkJmNSLmw0uCNzHHWfgml28Q==" }, diff --git a/Tests/Hosting/MMCA.Common.Testing.Aspire.AppHostTests.SampleService/packages.lock.json b/Tests/Hosting/MMCA.Common.Testing.Aspire.AppHostTests.SampleService/packages.lock.json index c7b7d170..4fcba9c5 100644 --- a/Tests/Hosting/MMCA.Common.Testing.Aspire.AppHostTests.SampleService/packages.lock.json +++ b/Tests/Hosting/MMCA.Common.Testing.Aspire.AppHostTests.SampleService/packages.lock.json @@ -564,7 +564,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -976,9 +976,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Scalar.AspNetCore": { "type": "CentralTransitive", diff --git a/Tests/Hosting/MMCA.Common.Testing.Aspire.AppHostTests/packages.lock.json b/Tests/Hosting/MMCA.Common.Testing.Aspire.AppHostTests/packages.lock.json index 75d29f3d..203e1a98 100644 --- a/Tests/Hosting/MMCA.Common.Testing.Aspire.AppHostTests/packages.lock.json +++ b/Tests/Hosting/MMCA.Common.Testing.Aspire.AppHostTests/packages.lock.json @@ -1463,7 +1463,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -2229,9 +2229,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "QRCoder": { "type": "CentralTransitive", diff --git a/Tests/Hosting/MMCA.Common.Testing.Aspire.Tests/packages.lock.json b/Tests/Hosting/MMCA.Common.Testing.Aspire.Tests/packages.lock.json index 167696f0..b64a18c9 100644 --- a/Tests/Hosting/MMCA.Common.Testing.Aspire.Tests/packages.lock.json +++ b/Tests/Hosting/MMCA.Common.Testing.Aspire.Tests/packages.lock.json @@ -1361,7 +1361,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -2042,9 +2042,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "QRCoder": { "type": "CentralTransitive", diff --git a/Tests/Hosting/MMCA.Common.Testing.Tests/packages.lock.json b/Tests/Hosting/MMCA.Common.Testing.Tests/packages.lock.json index dfe0f964..09cf4f40 100644 --- a/Tests/Hosting/MMCA.Common.Testing.Tests/packages.lock.json +++ b/Tests/Hosting/MMCA.Common.Testing.Tests/packages.lock.json @@ -1023,7 +1023,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -1407,9 +1407,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Respawn": { "type": "CentralTransitive", diff --git a/Tests/Performance/MMCA.Common.LoadTests/packages.lock.json b/Tests/Performance/MMCA.Common.LoadTests/packages.lock.json index e594ee74..667330d2 100644 --- a/Tests/Performance/MMCA.Common.LoadTests/packages.lock.json +++ b/Tests/Performance/MMCA.Common.LoadTests/packages.lock.json @@ -776,7 +776,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -1047,9 +1047,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Scrutor": { "type": "CentralTransitive", diff --git a/Tests/Presentation/MMCA.Common.API.Tests/packages.lock.json b/Tests/Presentation/MMCA.Common.API.Tests/packages.lock.json index eb265847..89dfa0a5 100644 --- a/Tests/Presentation/MMCA.Common.API.Tests/packages.lock.json +++ b/Tests/Presentation/MMCA.Common.API.Tests/packages.lock.json @@ -969,7 +969,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -1327,9 +1327,9 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "Scalar.AspNetCore": { "type": "CentralTransitive", diff --git a/Tests/Presentation/MMCA.Common.Grpc.Tests/packages.lock.json b/Tests/Presentation/MMCA.Common.Grpc.Tests/packages.lock.json index 6a274d09..f336b4b8 100644 --- a/Tests/Presentation/MMCA.Common.Grpc.Tests/packages.lock.json +++ b/Tests/Presentation/MMCA.Common.Grpc.Tests/packages.lock.json @@ -836,7 +836,7 @@ }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", + "requested": "[8.8.1, )", "resolved": "8.4.2", "contentHash": "BpE2I6HBYYA5tF0Vn4eoQOGYTYIK1BlF5EXVgkWGn3mqUUjbXAr13J6fZVbp7Q3epRR8yshacBMlsHMhpOiV3g==" }, diff --git a/Tests/Presentation/MMCA.Common.UI.E2E.Tests/packages.lock.json b/Tests/Presentation/MMCA.Common.UI.E2E.Tests/packages.lock.json index b337c46a..4bb64d2a 100644 --- a/Tests/Presentation/MMCA.Common.UI.E2E.Tests/packages.lock.json +++ b/Tests/Presentation/MMCA.Common.UI.E2E.Tests/packages.lock.json @@ -672,7 +672,7 @@ "Microsoft.Extensions.Options.DataAnnotations": "[10.0.14, )", "Microsoft.FeatureManagement": "[4.8.0, )", "MudBlazor": "[9.11.0, )", - "Polly": "[8.8.0, )", + "Polly": "[8.8.1, )", "QRCoder": "[1.8.1, )", "Scrutor": "[7.0.0, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )" @@ -827,18 +827,18 @@ }, "Polly": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "1/jm0wQA0hjcY8OcGx2HLzj4Tx33IpmEWWPUcekt07V7VO8suAUmeDRD7VM5wy9614pJMI2M0TB1pwKVflh4CQ==", + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "YpeoOqj82RfUtzQ3Tcn/zGnL/fdFmev1gEPSexYD3HgQZACo0b1avF8QU6f86KhUP+agXzCwKOKjo/8cqTjXvw==", "dependencies": { - "Polly.Core": "8.8.0" + "Polly.Core": "8.8.1" } }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "QRCoder": { "type": "CentralTransitive", diff --git a/Tests/Presentation/MMCA.Common.UI.Gallery/packages.lock.json b/Tests/Presentation/MMCA.Common.UI.Gallery/packages.lock.json index c920b18f..6dd55796 100644 --- a/Tests/Presentation/MMCA.Common.UI.Gallery/packages.lock.json +++ b/Tests/Presentation/MMCA.Common.UI.Gallery/packages.lock.json @@ -119,7 +119,7 @@ "Microsoft.AspNetCore.SignalR.Client": "[10.0.14, )", "Microsoft.FeatureManagement": "[4.8.0, )", "MudBlazor": "[9.11.0, )", - "Polly": "[8.8.0, )", + "Polly": "[8.8.1, )", "QRCoder": "[1.8.1, )", "Scrutor": "[7.0.0, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )" @@ -149,18 +149,18 @@ }, "Polly": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "1/jm0wQA0hjcY8OcGx2HLzj4Tx33IpmEWWPUcekt07V7VO8suAUmeDRD7VM5wy9614pJMI2M0TB1pwKVflh4CQ==", + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "YpeoOqj82RfUtzQ3Tcn/zGnL/fdFmev1gEPSexYD3HgQZACo0b1avF8QU6f86KhUP+agXzCwKOKjo/8cqTjXvw==", "dependencies": { - "Polly.Core": "8.8.0" + "Polly.Core": "8.8.1" } }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "QRCoder": { "type": "CentralTransitive", diff --git a/Tests/Presentation/MMCA.Common.UI.Tests/packages.lock.json b/Tests/Presentation/MMCA.Common.UI.Tests/packages.lock.json index 1d9aeb24..fcf4aa8b 100644 --- a/Tests/Presentation/MMCA.Common.UI.Tests/packages.lock.json +++ b/Tests/Presentation/MMCA.Common.UI.Tests/packages.lock.json @@ -776,7 +776,7 @@ "Microsoft.Extensions.Options.DataAnnotations": "[10.0.14, )", "Microsoft.FeatureManagement": "[4.8.0, )", "MudBlazor": "[9.11.0, )", - "Polly": "[8.8.0, )", + "Polly": "[8.8.1, )", "QRCoder": "[1.8.1, )", "Scrutor": "[7.0.0, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )" @@ -917,18 +917,18 @@ }, "Polly": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "1/jm0wQA0hjcY8OcGx2HLzj4Tx33IpmEWWPUcekt07V7VO8suAUmeDRD7VM5wy9614pJMI2M0TB1pwKVflh4CQ==", + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "YpeoOqj82RfUtzQ3Tcn/zGnL/fdFmev1gEPSexYD3HgQZACo0b1avF8QU6f86KhUP+agXzCwKOKjo/8cqTjXvw==", "dependencies": { - "Polly.Core": "8.8.0" + "Polly.Core": "8.8.1" } }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "QRCoder": { "type": "CentralTransitive", diff --git a/Tests/Presentation/MMCA.Common.UI.Web.Tests/packages.lock.json b/Tests/Presentation/MMCA.Common.UI.Web.Tests/packages.lock.json index 9f7a17b3..3977a454 100644 --- a/Tests/Presentation/MMCA.Common.UI.Web.Tests/packages.lock.json +++ b/Tests/Presentation/MMCA.Common.UI.Web.Tests/packages.lock.json @@ -742,7 +742,7 @@ "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", "Otp.NET": "[1.4.1, )", - "Polly.Core": "[8.8.0, )", + "Polly.Core": "[8.8.1, )", "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", "StackExchange.Redis": "[3.4.20, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", @@ -759,7 +759,7 @@ "Microsoft.AspNetCore.SignalR.Client": "[10.0.14, )", "Microsoft.FeatureManagement": "[4.8.0, )", "MudBlazor": "[9.11.0, )", - "Polly": "[8.8.0, )", + "Polly": "[8.8.1, )", "QRCoder": "[1.8.1, )", "Scrutor": "[7.0.0, )", "System.IdentityModel.Tokens.Jwt": "[8.23.0, )" @@ -1194,18 +1194,18 @@ }, "Polly": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "1/jm0wQA0hjcY8OcGx2HLzj4Tx33IpmEWWPUcekt07V7VO8suAUmeDRD7VM5wy9614pJMI2M0TB1pwKVflh4CQ==", + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "YpeoOqj82RfUtzQ3Tcn/zGnL/fdFmev1gEPSexYD3HgQZACo0b1avF8QU6f86KhUP+agXzCwKOKjo/8cqTjXvw==", "dependencies": { - "Polly.Core": "8.8.0" + "Polly.Core": "8.8.1" } }, "Polly.Core": { "type": "CentralTransitive", - "requested": "[8.8.0, )", - "resolved": "8.8.0", - "contentHash": "TewV9uNFsoRFggoFbTAGFwsMYPuckA+wTIpQPyhLL9BANRPQRENz2S4bwATrB3HBOakN5oKLFIllPiDnVecmJg==" + "requested": "[8.8.1, )", + "resolved": "8.8.1", + "contentHash": "yyzOT3XJRR7sEOxZH1Xpb6Oi5cDiGVuTOSVfIlcC23wFUdoyCPOujjKfIX5WdIX8l5TkRneOTyyW1Y1zNQKnUA==" }, "QRCoder": { "type": "CentralTransitive", From 769b5c96e1d6444d6dca19f735330e4c04d06bf2 Mon Sep 17 00:00:00 2001 From: Ivan Ball-llovera Date: Tue, 27 Oct 2026 09:17:50 -0400 Subject: [PATCH 3/5] feat(ui-web): installable web app service worker and offline page MapCommonServiceWorker serves /service-worker.js at the site root (anonymous, no-cache, stamped with the package version). The worker handles GET navigations only, network first with navigation preload, and falls back to _content/MMCA.Common.UI.Web/offline.html; it never caches a page or a response, because server-rendered pages carry the signed-in user's data. pwa-register.js registers it after load. Pwa:ServiceWorker:Enabled=false serves a retired worker with no fetch handler (the kill switch). The Gallery maps the worker and loads the register script, so the whole E2E suite runs with it installed; ServiceWorkerE2ETests pins registration at the root on every engine and the offline page on Chromium. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VkaHCMhi84vqJ7KJFUUDa2 --- AGENTS.md | 1 + CHANGELOG.md | 10 + .../MMCA.Common.UI.Web.csproj | 9 +- .../PublicAPI.Unshipped.txt | 6 + .../Pwa/ServiceWorkerEndpointExtensions.cs | 83 ++ .../Pwa/service-worker-retired.js | 21 + .../MMCA.Common.UI.Web/Pwa/service-worker.js | 52 + .../MMCA.Common.UI.Web/wwwroot/offline.html | 78 ++ .../wwwroot/pwa-register.js | 18 + .../Pwa/ServiceWorkerE2ETests.cs | 58 + .../packages.lock.json | 1235 ++++++++++++++++- .../Components/App.razor | 1 + .../MMCA.Common.UI.Gallery/GalleryHost.cs | 4 + .../MMCA.Common.UI.Gallery.csproj | 3 + .../MMCA.Common.UI.Gallery/packages.lock.json | 980 ++++++++++++- .../Pwa/ServiceWorkerEndpointTests.cs | 121 ++ 16 files changed, 2650 insertions(+), 30 deletions(-) create mode 100644 Source/Presentation/MMCA.Common.UI.Web/Pwa/ServiceWorkerEndpointExtensions.cs create mode 100644 Source/Presentation/MMCA.Common.UI.Web/Pwa/service-worker-retired.js create mode 100644 Source/Presentation/MMCA.Common.UI.Web/Pwa/service-worker.js create mode 100644 Source/Presentation/MMCA.Common.UI.Web/wwwroot/offline.html create mode 100644 Source/Presentation/MMCA.Common.UI.Web/wwwroot/pwa-register.js create mode 100644 Tests/Presentation/MMCA.Common.UI.E2E.Tests/Pwa/ServiceWorkerE2ETests.cs create mode 100644 Tests/Presentation/MMCA.Common.UI.Web.Tests/Pwa/ServiceWorkerEndpointTests.cs diff --git a/AGENTS.md b/AGENTS.md index 3db6b141..e88621ca 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -141,6 +141,7 @@ The invariant: **application and domain code talks to abstractions; transport ch - **Identity completions (all opt-in, ADR-116)**: `AddTwoFactorAuthentication(config)` (RFC 6238; the consumer supplies `ITwoFactorStore` and passes the resolved authenticator to `AuthenticationServiceBase`), `AddEmailConfirmation(config)` (hashed single-use tokens; sign-in gating only when `RequireConfirmedEmail` is set AND the `User` implements `IEmailConfirmableUser`), and `UsersAdminControllerBase` / `RolesAdminControllerBase`. Every piece is an optional constructor argument or a separate DI call, so a consumer adopting none changes nothing. - **Push notifications**: SignalR pipeline in Infrastructure (`NotificationHub`, `SignalRPushNotificationSender`, `NullPushNotificationSender` fallback). Native OS push (ADR-044) defaults to the inert `NullNativePushSender` / `NullPushDeviceRegistrar`; `AddAzureNotificationHubsPush(configuration)` (MMCA.Common.Azure) swaps in Notification Hubs, `AddAmazonSnsPush(configuration)` (MMCA.Common.Aws) swaps in SNS mobile push with a DynamoDB installation registry, or `AddFirebaseCloudMessagingPush(configuration)` (MMCA.Common.Gcp) swaps in FCM HTTP v1 with a Firestore installation registry (FCM registration tokens only; an APNs-platform registration fails validation). - **Managed file storage (ADR-045)**: `IFileStorageService` (`NullFileStorageService` fallback in core; `AddAzureBlobFileStorage(configuration)` from MMCA.Common.Azure, `AddS3FileStorage(configuration)` from MMCA.Common.Aws for Amazon S3, Cloudflare R2, MinIO and the GCS XML API, or `AddGoogleCloudStorage(configuration)` from MMCA.Common.Gcp over Application Default Credentials, all binding the `FileStorage` section and keyed on different fields: `ContainerName`, `Bucket`, `GcsBucket`) plus dependency-free upload guards: `ImageContentSniffer`, `DocumentContentSniffer` (accepts only when the BYTES and the extension agree, with a zip-bomb guard on the Office Open XML check), `BlobNames.SanitizeFileName`, and `FileUploadOptions` for the RFC 6266 `Content-Disposition`. Every implementation provides the options-carrying `UploadAsync` overload (it is abstract) and honors its headers. +- **Installable web app (ADR-136)**: `app.MapCommonServiceWorker()` (UI.Web) serves `/service-worker.js` and the host loads `_content/MMCA.Common.UI.Web/pwa-register.js`; the host owns `manifest.webmanifest`, icons and `theme-color`. **The worker never caches a page or a response** (server-rendered pages carry the signed-in user's data): GET navigations go to the network and fall back to the offline page, nothing else passes through it. `Pwa:ServiceWorker:Enabled=false` serves the retired worker, the kill switch. - **Idempotency**: `[Idempotent]`, `Idempotency-Key` header, 24h replay cache, duplicates return `X-Idempotent-Replay: true`. **The cache key is not the bare client key**: `BuildCacheKey` joins subject, method, route and client key and SHA-256s them, so two callers cannot collide. Mutual exclusion is an `IDistributedLock` from DI (`AddCaching` registers `RedisDistributedLock` when an `IConnectionMultiplexer` is present, else a warn-once in-process lock); the striped double-check path is only the fallback for a host registering no lock (ADR-017). A duplicate that cannot take the lock within `LockWait` (5s) gets **409**, not a replay. Non-2xx is never cached. - **AI packages (optional, rubric section 16)**: `AddMmcaChatClient(configuration)` binds the `Ai` section and, only when `Ai:Enabled`, registers one `IChatClient` built outermost-first as `BoundedChatClient -> [GuardrailChatClient] -> UsageRecordingChatClient -> [DistributedCache] -> OpenTelemetry -> PromptTagging -> Logging -> provider`. **The provider is an adapter package, never a type the governed package names**: `MMCA.Common.AI.Anthropic` and `MMCA.Common.AI.OpenAI` each register one `IAiProviderFactory` (`AddAnthropicAiProvider()` / `AddOpenAiProvider()`), `Ai:Provider` is a string matched against those names and validated on start, and the `provider` metric tag comes from the client's own `ChatClientMetadata`. `BoundedChatClient` clamps output tokens, enforces a per-call timeout, pins `Ai:Model` (a request naming another model is refused), filters tools through every registered `IChatToolPolicy` (consequential tools also need the request's `mmca.tool.confirmed` stamp; `AllowTools` true with no policy throws at registration), and refuses a request over `PerCallInputTokenBudget` on an ESTIMATE. `GuardrailChatClient` runs the registered `IChatRequestRedactor`s then every `IChatGuardrail` on the request, the response and each streamed update; **`Ai:RequireGuardrail` defaults to true**, so an enabled host with no guardrail throws at registration (`AddPiiRedactionGuardrail()` and `AddContentPolicyGuardrail(configuration)` are the shipped ones; the second binds `Ai:ContentPolicy`, redacts or blocks prompt-injection markers in user-role content and refuses answers matching `BlockedResponsePatterns`). `PromptContract` carries a normalized SHA-256 `Hash`; `MMCA.Common.AI.Testing` ships the harness that keys on it (`ReplayChatClient`, `GoldenReplayTestsBase`, `PromptContractPinTestsBase`), and the AI test project runs both bases over a reference contract so the gate is exercised in this repo's own CI. **The AI packages take no MMCA.Common project reference and nothing in the framework references them** (`AiDependencyIsolationTestsBase` + `EnforceAiLayerBoundary` hold both directions: assembly names prefix-matched on `MMCA.Common.AI.`, type dependencies matched on the `MMCA.Common.AI` namespace segment, because a dotted NetArchTest namespace entry matches nothing). When `Ai:Enabled` is false nothing is registered, so consumers gate on `GetService()`, not on a flag. - **Cloud vendor adapters**: the core packages reference no Azure or AWS SDK. Vendor code lives in `MMCA.Common.Azure` (Key Vault configuration, the DataProtection key ring, the Azure Monitor exporter, Blob storage, Notification Hubs, the Service Bus transport, the Entra SQL auth provider), `MMCA.Common.Aws` (S3-compatible storage, the SQS/SNS transport, Secrets Manager configuration, the Parameter Store DataProtection key ring, SNS native push over a DynamoDB installation registry, RDS IAM authentication for PostgreSQL), `MMCA.Common.Gcp` (Google Cloud Storage, Secret Manager configuration, the Cloud Storage DataProtection key ring with optional Cloud KMS, FCM native push over a Firestore installation registry, Cloud SQL IAM authentication for PostgreSQL, the Telemetry (OTLP) API exporter for traces and logs) and `MMCA.Common.Testing.Azure` (the Service Bus emulator fixture), each capability one registration call; adapters reference the core, never the other way round (`CloudVendorIsolationTestsBase` + `EnforceCloudVendorBoundary` hold both directions, matched on package id). Exactly two references are exempt, both database engines rather than cloud services: `Microsoft.EntityFrameworkCore.Cosmos` in Infrastructure (the Cosmos engine; its `Microsoft.Azure.Cosmos` namespace is allowed there alone) and `Aspire.Hosting.Azure.CosmosDB` in Aspire.Hosting (the AppHost-side emulator). **Configuration that asks for a vendor capability without its adapter call fails startup, naming the call**: `AddInfrastructure` checks `NativePush:Enabled` (never `FileStorage`: a shared section declares no intent, and the null store already fails each upload with `FileStorage.NotConfigured`), `AddServiceDefaults()` checks `APPLICATIONINSIGHTS_CONNECTION_STRING`, `KeyVault:Uri`, `DataProtection:BlobStorageUri`, `SecretsManager:NamePrefix`, `DataProtection:SsmParameterPrefix`, `GoogleSecretManager:NamePrefix`, `DataProtection:GcsObjectUri` and `GoogleCloudTelemetry:ProjectId` (and fails when more than one key-ring gate is set). PostgreSQL connection customization (a password provider, for example) goes through `AddNpgsqlDataSourceConfigurator`, which makes the context and the health check share one `NpgsqlDataSource` per connection string. diff --git a/CHANGELOG.md b/CHANGELOG.md index 73955d98..31e5d592 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,16 @@ All notable changes to the MMCA.Common packages are documented here. The format [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions follow [Semantic Versioning](https://semver.org/) and are derived from git tags by MinVer (see [the published versioning policy](https://ivanball.github.io/docs/guides/common-VERSIONING.html)). +## [1.263.0] - 2026-10-27 + +### Added + +- Added: installable web app support for Blazor Web hosts (MMCA.Common.UI.Web, [ADR-136](https://ivanball.github.io/docs/adr/136-installable-web-app-service-worker.html)). `app.MapCommonServiceWorker()` serves `/service-worker.js` at the site root, anonymous, uncached and stamped with the package version so each release updates it. The worker handles GET navigations only: it sends every one to the network (with navigation preload) and shows the framework offline page (`_content/MMCA.Common.UI.Web/offline.html`) when the network fails. It never caches a page or a response, because a server-rendered page carries the signed-in user's data; API calls, the Blazor circuit, hubs and framework files never pass through it. `_content/MMCA.Common.UI.Web/pwa-register.js` registers it after the page `load` event, in a secure context only (a file, because the host CSP blocks inline script). `Pwa:ServiceWorker:Enabled=false` is the kill switch: it serves a worker with no fetch handler that deletes the offline cache, which every installed client takes on its next navigation. The host supplies the app identity itself (`manifest.webmanifest`, icons, `theme-color`); the existing CSP already allows a same-origin manifest and worker, and the UI rate limiter already exempts both paths. A host that maps nothing changes nothing. + +### Dependencies + +- `Polly` and `Polly.Core` 8.8.0 -> 8.8.1, `Google.Cloud.Firestore` 4.5.0 -> 4.6.0, and patch updates of `AWSSDK.DynamoDBv2`, `AWSSDK.RDS`, `AWSSDK.S3`, `AWSSDK.SecretsManager` and `AWSSDK.SimpleNotificationService` (Dependabot #620). Every lock file regenerated, the out-of-slnx projects included. + ## [1.262.0] - 2026-10-26 ### Added diff --git a/Source/Presentation/MMCA.Common.UI.Web/MMCA.Common.UI.Web.csproj b/Source/Presentation/MMCA.Common.UI.Web/MMCA.Common.UI.Web.csproj index c4debae4..ae26e2d8 100644 --- a/Source/Presentation/MMCA.Common.UI.Web/MMCA.Common.UI.Web.csproj +++ b/Source/Presentation/MMCA.Common.UI.Web/MMCA.Common.UI.Web.csproj @@ -1,7 +1,7 @@ MMCA.Common.UI.Web - MMCA framework server-side Blazor Web host support: cookie-backed token storage, dynamic CSP provider, SSR error page, and host registration extensions + MMCA framework server-side Blazor Web host support: cookie-backed token storage, dynamic CSP provider, SSR error page, installable-web-app service worker, and host registration extensions + + + diff --git a/Source/Presentation/MMCA.Common.UI.Web/PublicAPI.Unshipped.txt b/Source/Presentation/MMCA.Common.UI.Web/PublicAPI.Unshipped.txt index ab058de6..f6c1bcdc 100644 --- a/Source/Presentation/MMCA.Common.UI.Web/PublicAPI.Unshipped.txt +++ b/Source/Presentation/MMCA.Common.UI.Web/PublicAPI.Unshipped.txt @@ -1 +1,7 @@ #nullable enable +const MMCA.Common.UI.Web.Pwa.ServiceWorkerEndpointExtensions.EnabledKey = "Pwa:ServiceWorker:Enabled" -> string! +const MMCA.Common.UI.Web.Pwa.ServiceWorkerEndpointExtensions.ServiceWorkerPath = "/service-worker.js" -> string! +MMCA.Common.UI.Web.Pwa.ServiceWorkerEndpointExtensions +MMCA.Common.UI.Web.Pwa.ServiceWorkerEndpointExtensions.extension(Microsoft.AspNetCore.Routing.IEndpointRouteBuilder!) +MMCA.Common.UI.Web.Pwa.ServiceWorkerEndpointExtensions.extension(Microsoft.AspNetCore.Routing.IEndpointRouteBuilder!).MapCommonServiceWorker() -> Microsoft.AspNetCore.Builder.RouteHandlerBuilder! +static MMCA.Common.UI.Web.Pwa.ServiceWorkerEndpointExtensions.MapCommonServiceWorker(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints) -> Microsoft.AspNetCore.Builder.RouteHandlerBuilder! diff --git a/Source/Presentation/MMCA.Common.UI.Web/Pwa/ServiceWorkerEndpointExtensions.cs b/Source/Presentation/MMCA.Common.UI.Web/Pwa/ServiceWorkerEndpointExtensions.cs new file mode 100644 index 00000000..8b6f6cd0 --- /dev/null +++ b/Source/Presentation/MMCA.Common.UI.Web/Pwa/ServiceWorkerEndpointExtensions.cs @@ -0,0 +1,83 @@ +using System.Reflection; +using System.Text; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing; +using Microsoft.Extensions.Configuration; + +namespace MMCA.Common.UI.Web.Pwa; + +/// +/// Maps the framework service worker that makes a Blazor Web host an installable web app with an +/// offline page. The browser half is _content/MMCA.Common.UI.Web/pwa-register.js; the host +/// itself supplies the app identity (manifest.webmanifest, icons, theme-color). +/// +public static class ServiceWorkerEndpointExtensions +{ + /// The route the worker is served on. Root, so the worker's scope covers the whole site. + public const string ServiceWorkerPath = "/service-worker.js"; + + /// + /// The configuration key that retires the worker. serves an inert worker + /// instead, which every installed client picks up on its next navigation. + /// + public const string EnabledKey = "Pwa:ServiceWorker:Enabled"; + + private const string VersionToken = "__MMCA_SW_VERSION__"; + + private static readonly Lazy ActiveScript = new(() => ReadScript("service-worker.js")); + + private static readonly Lazy RetiredScript = new(() => ReadScript("service-worker-retired.js")); + + extension(IEndpointRouteBuilder endpoints) + { + /// + /// Maps GET /service-worker.js: an anonymous script, excluded from the OpenAPI + /// description and served with Cache-Control: no-cache. + /// + /// + /// + /// Never caches pages or data. A server-rendered page carries the signed-in user's + /// data, so the worker sends every navigation to the network and falls back to the offline + /// page only when the network fails. It handles GET navigations alone: API calls, the Blazor + /// circuit, hubs, framework files and cookies never pass through it. + /// + /// + /// Updates with every release. The package version is written into the script, so a + /// new framework version is a byte change the browser installs on its next update check, and + /// the new worker deletes the previous version's offline cache. + /// + /// + /// Kill switch. Setting to serves a + /// worker with no fetch handler that deletes the offline cache. A bad worker stays on a + /// visitor's device until a newer one replaces it, so retiring it is a configuration change, + /// not a release. + /// + /// + /// The endpoint's convention builder, for further conventions. + public RouteHandlerBuilder MapCommonServiceWorker() => + endpoints.MapGet(ServiceWorkerPath, (HttpContext context, IConfiguration configuration) => + { + context.Response.Headers.CacheControl = "no-cache"; + var script = configuration.GetValue(EnabledKey, defaultValue: true) + ? ActiveScript.Value + : RetiredScript.Value; + return Results.Text(script, "text/javascript", Encoding.UTF8); + }) + .AllowAnonymous() + .ExcludeFromDescription(); + } + + private static string ReadScript(string fileName) + { + var assembly = typeof(ServiceWorkerEndpointExtensions).Assembly; + using var stream = assembly.GetManifestResourceStream($"MMCA.Common.UI.Web.Pwa.{fileName}") + ?? throw new InvalidOperationException($"The embedded service worker script '{fileName}' is missing from {assembly.GetName().Name}."); + using var reader = new StreamReader(stream, Encoding.UTF8); + + var version = assembly.GetCustomAttribute()?.InformationalVersion + ?? assembly.GetName().Version?.ToString() + ?? "0"; + return reader.ReadToEnd().Replace(VersionToken, version, StringComparison.Ordinal); + } +} diff --git a/Source/Presentation/MMCA.Common.UI.Web/Pwa/service-worker-retired.js b/Source/Presentation/MMCA.Common.UI.Web/Pwa/service-worker-retired.js new file mode 100644 index 00000000..8b8aa06b --- /dev/null +++ b/Source/Presentation/MMCA.Common.UI.Web/Pwa/service-worker-retired.js @@ -0,0 +1,21 @@ +// MMCA.Common.UI.Web service worker, RETIRED by configuration (Pwa:ServiceWorker:Enabled=false). +// It replaces any earlier worker on the visitor's next navigation, deletes the offline cache, and has +// no fetch handler, so every request goes straight to the network as if no worker were installed. +'use strict'; + +self.addEventListener('install', () => self.skipWaiting()); + +self.addEventListener('activate', (event) => { + event.waitUntil((async () => { + const keys = await caches.keys(); + await Promise.all(keys + .filter((key) => key.startsWith('mmca-offline-')) + .map((key) => caches.delete(key))); + + if (self.registration.navigationPreload) { + await self.registration.navigationPreload.disable(); + } + + await self.clients.claim(); + })()); +}); diff --git a/Source/Presentation/MMCA.Common.UI.Web/Pwa/service-worker.js b/Source/Presentation/MMCA.Common.UI.Web/Pwa/service-worker.js new file mode 100644 index 00000000..8e2f4745 --- /dev/null +++ b/Source/Presentation/MMCA.Common.UI.Web/Pwa/service-worker.js @@ -0,0 +1,52 @@ +// MMCA.Common.UI.Web service worker, served by MapCommonServiceWorker() at /service-worker.js. +// It makes the host installable and shows an offline page when a navigation cannot reach the +// network. It never caches pages or data: a server-rendered page carries the signed-in user's data, +// so every navigation goes to the network. Only GET navigations are handled; API calls, the Blazor +// circuit, hubs and framework files never pass through this worker. +'use strict'; + +const VERSION = '__MMCA_SW_VERSION__'; +const CACHE_PREFIX = 'mmca-offline-'; +const CACHE = CACHE_PREFIX + VERSION; +const OFFLINE_URL = '/_content/MMCA.Common.UI.Web/offline.html'; + +self.addEventListener('install', (event) => { + event.waitUntil( + caches.open(CACHE) + .then((cache) => cache.add(new Request(OFFLINE_URL, { cache: 'reload' }))) + .then(() => self.skipWaiting())); +}); + +self.addEventListener('activate', (event) => { + event.waitUntil((async () => { + const keys = await caches.keys(); + await Promise.all(keys + .filter((key) => key.startsWith(CACHE_PREFIX) && key !== CACHE) + .map((key) => caches.delete(key))); + + // Navigation preload starts the network request while the worker boots, so routing + // navigations through the worker adds no latency to the page. + if (self.registration.navigationPreload) { + await self.registration.navigationPreload.enable(); + } + + await self.clients.claim(); + })()); +}); + +self.addEventListener('fetch', (event) => { + const request = event.request; + if (request.method !== 'GET' || request.mode !== 'navigate') { + return; + } + + event.respondWith((async () => { + try { + const preloaded = await event.preloadResponse; + return preloaded || await fetch(request); + } catch { + const cache = await caches.open(CACHE); + return (await cache.match(OFFLINE_URL)) || Response.error(); + } + })()); +}); diff --git a/Source/Presentation/MMCA.Common.UI.Web/wwwroot/offline.html b/Source/Presentation/MMCA.Common.UI.Web/wwwroot/offline.html new file mode 100644 index 00000000..858102f0 --- /dev/null +++ b/Source/Presentation/MMCA.Common.UI.Web/wwwroot/offline.html @@ -0,0 +1,78 @@ + + + + + + + You are offline + + + +
+

You are offline

+

This page needs a connection. Check your network and try again.

+ Try again +
+ + diff --git a/Source/Presentation/MMCA.Common.UI.Web/wwwroot/pwa-register.js b/Source/Presentation/MMCA.Common.UI.Web/wwwroot/pwa-register.js new file mode 100644 index 00000000..04d3342d --- /dev/null +++ b/Source/Presentation/MMCA.Common.UI.Web/wwwroot/pwa-register.js @@ -0,0 +1,18 @@ +// Registers the framework service worker (MapCommonServiceWorker, /service-worker.js) once the page +// has loaded, so registration never competes with first paint. A separate file because the host's +// Content-Security-Policy blocks inline script. +(() => { + if (!('serviceWorker' in navigator) || !window.isSecureContext) { + return; + } + + const register = () => navigator.serviceWorker + .register('/service-worker.js', { scope: '/', updateViaCache: 'none' }) + .catch((error) => console.warn('Service worker registration failed.', error)); + + if (document.readyState === 'complete') { + register(); + } else { + window.addEventListener('load', register, { once: true }); + } +})(); diff --git a/Tests/Presentation/MMCA.Common.UI.E2E.Tests/Pwa/ServiceWorkerE2ETests.cs b/Tests/Presentation/MMCA.Common.UI.E2E.Tests/Pwa/ServiceWorkerE2ETests.cs new file mode 100644 index 00000000..79787fa6 --- /dev/null +++ b/Tests/Presentation/MMCA.Common.UI.E2E.Tests/Pwa/ServiceWorkerE2ETests.cs @@ -0,0 +1,58 @@ +using Microsoft.Playwright; +using MMCA.Common.Testing.E2E.Infrastructure; +using MMCA.Common.UI.E2E.Tests.Infrastructure; +using Xunit; +using static Microsoft.Playwright.Assertions; + +namespace MMCA.Common.UI.E2E.Tests.Pwa; + +/// +/// The installable-web-app worker in a real browser: pwa-register.js registers +/// /service-worker.js at the site root and the worker takes control of the page, and a +/// navigation that cannot reach the network renders the framework offline page instead of the +/// browser's error page. The gallery maps the worker exactly as a consumer host does. +/// +public sealed class ServiceWorkerE2ETests : GalleryAxeTestBase +{ + public ServiceWorkerE2ETests(PlaywrightFixture playwright, GalleryHostFixture gallery) + : base(playwright, gallery) + { + } + + [Fact] + public async Task TheWorker_RegistersAtTheSiteRoot_AndControlsThePage() + { + await Page.GotoAndWaitForBlazorAsync("/login"); + + var scope = await Page.EvaluateAsync("async () => (await navigator.serviceWorker.ready).scope"); + await Page.WaitForFunctionAsync("() => navigator.serviceWorker.controller !== null"); + + Assert.Equal(new Uri(new Uri(BaseUrl), "/").AbsoluteUri, scope); + } + + [Fact] + public async Task AnOfflineNavigation_RendersTheOfflinePage() + { + // Playwright's offline emulation reaches a service worker's own fetches only on Chromium; + // on the other engines the worker would still see the network, so the assertion is moot there. + Assert.SkipUnless( + string.Equals(E2ETestConfiguration.Browser, "chromium", StringComparison.OrdinalIgnoreCase), + "Offline emulation does not reach a service worker's fetches on this engine."); + + await Page.GotoAndWaitForBlazorAsync("/login"); + await Page.WaitForFunctionAsync("() => navigator.serviceWorker.controller !== null"); + + await Page.Context.SetOfflineAsync(true); + try + { + await Page.GotoAsync("/components"); + + await Expect(Page.GetByRole(AriaRole.Heading, new() { Name = "You are offline" })).ToBeVisibleAsync(); + await Expect(Page.GetByRole(AriaRole.Link, new() { Name = "Try again" })).ToBeVisibleAsync(); + } + finally + { + await Page.Context.SetOfflineAsync(false); + } + } +} diff --git a/Tests/Presentation/MMCA.Common.UI.E2E.Tests/packages.lock.json b/Tests/Presentation/MMCA.Common.UI.E2E.Tests/packages.lock.json index 4bb64d2a..9e96f395 100644 --- a/Tests/Presentation/MMCA.Common.UI.E2E.Tests/packages.lock.json +++ b/Tests/Presentation/MMCA.Common.UI.E2E.Tests/packages.lock.json @@ -66,6 +66,66 @@ "xunit.v3.mtp-v2": "[4.0.2]" } }, + "Asp.Versioning.Abstractions": { + "type": "Transitive", + "resolved": "10.2.1", + "contentHash": "jMBztsVim+rYVrkNY23dMuOjTGXGQ9+je1xb3i17KgUof7OcBZtMMDduEWoCQ52SpTlYqKsuzgJyUMCMOFCBfg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.0" + } + }, + "Asp.Versioning.Http": { + "type": "Transitive", + "resolved": "10.2.1", + "contentHash": "XaVOKS4AV6a6JdFsiuyLkNwU0ilWhUK2U71mBEXJsgi5AGpo24UkfZ4KUhpRGpuMmQNrugS7yxCIscGcnujdFA==", + "dependencies": { + "Asp.Versioning.Abstractions": "10.2.1" + } + }, + "AspNetCore.HealthChecks.Redis": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "yNH0h8GLRbAf+PU5HNVLZ5hNeyq9mDVmRKO9xuZsme/znUYoBJlQvI0gq45gaZNlLncCHkMhR4o90MuT+gxxPw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics.HealthChecks": "8.0.11", + "StackExchange.Redis": "2.7.4" + } + }, + "Azure.Core": { + "type": "Transitive", + "resolved": "1.44.1", + "contentHash": "YyznXLQZCregzHvioip07/BkzjuWNXogJEVz9T5W6TwjNr17ax41YGzYMptlo2G10oLCuVPoyva62y0SIRDixg==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "6.0.0", + "System.ClientModel": "1.1.0", + "System.Memory.Data": "6.0.0" + } + }, + "Dapper": { + "type": "Transitive", + "resolved": "2.1.89", + "contentHash": "1VjFE664wnxvuhlgP8kS4PeFFF4jqD3VkbIHW6Zlc52zuibgcz5ICnIHcQXlTp6pURpPNGLV0ZpNe5x9KePJnA==" + }, + "FluentValidation": { + "type": "Transitive", + "resolved": "12.2.0", + "contentHash": "DR3lFbdnKucaaj1/8zMNOACMz/64igzox1yVZSFVsLxYB5mxAB+wFP1WZ8fjwrZnbU1KA1DoMzHKYKxUfuZ4wQ==" + }, + "MassTransit.Abstractions": { + "type": "Transitive", + "resolved": "8.5.12", + "contentHash": "NauNyaQsJVfLSY3Jw/zr26POQpEnfjerHCrrK3kUmkCDIpC63PZD1AjihGFgq0KH5eGagMJ7GRHN74w8mI69Kg==" + }, + "MessagePack.Annotations": { + "type": "Transitive", + "resolved": "3.1.12", + "contentHash": "LdI67sY7F3KK+JsrG02+DP1XFkowaZSoyfL2M88hjm1MOOsjf8amBLAJolV+zxoPUZf3uGbKzq1cMQD8PlpSpA==" + }, + "MessagePackAnalyzer": { + "type": "Transitive", + "resolved": "3.1.12", + "contentHash": "iNSNatPh6bafRUbkQKlClExjpPpd8hiZgfZsodGf7bheIlkizGbMzsJ2mPui8jOHRe4Ky9eg5ou/fFzI7CT3fg==" + }, "Microsoft.ApplicationInsights": { "type": "Transitive", "resolved": "2.23.0", @@ -295,6 +355,17 @@ "Microsoft.Net.Http.Headers": "2.3.10" } }, + "Microsoft.Azure.Cosmos": { + "type": "Transitive", + "resolved": "3.63.1", + "contentHash": "ocxXpxJkhyQv0OH6pTBoKKuz+VzR1zb2x6E7r3D6Kdmjb6zmFyrDTyaxQ3i/BD+V3sztCfNjXUQFREAo9mdyLg==", + "dependencies": { + "Azure.Core": "1.44.1", + "Microsoft.Bcl.AsyncInterfaces": "6.0.0", + "Microsoft.Bcl.HashCode": "1.1.0", + "System.Configuration.ConfigurationManager": "6.0.0" + } + }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", "resolved": "6.0.0", @@ -305,24 +376,129 @@ "resolved": "10.0.2", "contentHash": "LG9Yll3B5aNpxv0+D47g6LiOiKBIlodhcHdQwcYzo8VeexFLGqx5ymetmA2aBRyo9cCcWsQWrFsdbsr8LvmWDw==" }, + "Microsoft.Bcl.HashCode": { + "type": "Transitive", + "resolved": "1.1.0", + "contentHash": "J2G1k+u5unBV+aYcwxo94ip16Rkp65pgWFb0R6zwJipzWNMgvqlWeuI7/+R+e8bob66LnSG+llLJ+z8wI94cHg==" + }, + "Microsoft.Data.SqlClient.Extensions.Abstractions": { + "type": "Transitive", + "resolved": "7.1.1", + "contentHash": "qP/zUOCJwfKqWNC9o+TWqltfNbLnZi1APNpJZgj0yeEJhoI+h+eoQLX+331yZHNOlDxdafZLP5arW/yrS1jAAw==", + "dependencies": { + "Microsoft.Data.SqlClient.Internal.Logging": "[7.1.1, 8.0.0)" + } + }, + "Microsoft.Data.SqlClient.Internal.Logging": { + "type": "Transitive", + "resolved": "7.1.1", + "contentHash": "bVqbATLnHQngue7U9K7GRnzvfdDa7IyiBU2vijfU2vBMBSZrAnQp/wXqNSfaVonckSaMXUk07wfujTqy9IVMdw==" + }, + "Microsoft.Data.SqlClient.SNI.runtime": { + "type": "Transitive", + "resolved": "7.1.0", + "contentHash": "rWunOb6Dby0lcI82PohARcRbF+4x4wNKxnKRSHXhuwZMu8/cCS68DCfhceq4bv1gUEfoL5dWXHYnfxVvLQUN+Q==" + }, + "Microsoft.Data.Sqlite": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "H+iC5IvkCCKSNHXzL3JARvDn7VpkvuJM91KVB89sKjeTF/KX/BocNNh93ZJtX5MCQKb/z4yVKgkU2sVIq+xKfg==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "8.0.0", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.6" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "Transitive", + "resolved": "10.0.14", + "contentHash": "1p9rO3Q2X/L/9YrYog3vaDzi8u+WZfJCOkDYoHqmofqYP0DLPLPyZcS2Rnh/79JXAodgbs1AgsaNwLpIvC3Xew==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.13" + } + }, + "Microsoft.EntityFrameworkCore": { + "type": "Transitive", + "resolved": "10.0.14", + "contentHash": "vY3931PYPIDBbKovGHbACmpOWvURvKNyRXfCjMh5yLW+FH6vLWeqUu2xzSCRo4Oz4tgx9GYpd0JlV5LDyAoQdg==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "10.0.14", + "Microsoft.EntityFrameworkCore.Analyzers": "10.0.14", + "Microsoft.Extensions.Caching.Memory": "10.0.14", + "Microsoft.Extensions.Logging": "10.0.14" + } + }, + "Microsoft.EntityFrameworkCore.Abstractions": { + "type": "Transitive", + "resolved": "10.0.14", + "contentHash": "/SaznoTTFfKzxYEbCPAwwKBR3XT92DZgH4jJ3/cqs2skP3o2D+TL6i9Aaj+8Azwtu6/sRd0ve4P2mN12nfVmCw==" + }, + "Microsoft.EntityFrameworkCore.Analyzers": { + "type": "Transitive", + "resolved": "10.0.14", + "contentHash": "gaANlGNTxkgODX2eeVT8jjd3AmlFilQV4DFf8qoW30+wUCm2o4N7nEHtZvnHIwfhaJni2DqcjE47Au7tC0Q5jA==" + }, + "Microsoft.EntityFrameworkCore.Relational": { + "type": "Transitive", + "resolved": "10.0.14", + "contentHash": "Ut0kgtfoKX9QElQVEXSEAgdQc79jISWStVWSOhfPDDHNSKMwFzSXG3gtdYFTAbsBoV+8NtXdVaj4xwdqeky8UA==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "10.0.14", + "Microsoft.Extensions.Caching.Memory": "10.0.14", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.14", + "Microsoft.Extensions.Logging": "10.0.14" + } + }, + "Microsoft.EntityFrameworkCore.Sqlite.Core": { + "type": "Transitive", + "resolved": "10.0.14", + "contentHash": "08VGlMQ9WbK869as9Ho+VZQbM5Qu6zdorgeh6ShVwQgLYgfUBiaIm02T7spfW7Xc1MBHCvclwPgGWpvx5BYGXQ==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "10.0.14", + "Microsoft.EntityFrameworkCore.Relational": "10.0.14", + "Microsoft.Extensions.Caching.Memory": "10.0.14", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.14", + "Microsoft.Extensions.DependencyModel": "10.0.14", + "Microsoft.Extensions.Logging": "10.0.14", + "SQLitePCLRaw.core": "2.1.13" + } + }, + "Microsoft.Extensions.AmbientMetadata.Application": { + "type": "Transitive", + "resolved": "10.11.0", + "contentHash": "aMCm7C6CexZT8W/p8zRp4BoxSnqRs3MmkBF7FvPIXC92b7vqs2SL0J+mVJi5W2Mk9Vb4ZRFWe9sdzFew6zUl1w==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.13", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.13", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.13" + } + }, "Microsoft.Extensions.Caching.Abstractions": { "type": "Transitive", - "resolved": "10.0.11", - "contentHash": "vUl798SmruTqqlt/xH2gDk3tJlhk6k3HdOXAHirlRfbNKDym4g/kRpUL9S4sl6F6FsOTOMW+ZsDapqlZMOOiEw==", + "resolved": "10.0.14", + "contentHash": "enSfqeENnSjGH3YAYKsCtsa5ob0HNiwF2nwJiC2yhilNXTlD/0prxrgPkWjoAp9svJcu04AiEIKtdh/A54P2fA==", "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.11" + "Microsoft.Extensions.Primitives": "10.0.14" } }, "Microsoft.Extensions.Caching.Memory": { "type": "Transitive", - "resolved": "10.0.11", - "contentHash": "el1g0mBEbDBGY2bT9mcSfrTWO8QlPdq2nOCnvQugioOFwHV+bVBMeiakoI0dNOdj8d6Hi9K6HY2xzRUWJiDR3w==", + "resolved": "10.0.14", + "contentHash": "AxK3kyD6sWNpYKf+66huE7wHHjgKHONlD1dUaD/CxjZVBLEpH5N4jaqgszTcZvaM9/XVeXF28K3E0wsTyTA4Xg==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.14", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.14", + "Microsoft.Extensions.Logging.Abstractions": "10.0.14", + "Microsoft.Extensions.Options": "10.0.14", + "Microsoft.Extensions.Primitives": "10.0.14" + } + }, + "Microsoft.Extensions.Compliance.Abstractions": { + "type": "Transitive", + "resolved": "10.11.0", + "contentHash": "2mjAb3Sm5k6uNeI+IyXpggYMpfdDDGgZSwUm9QQsm5QgZboJWbm2eU+6wNMrlfFEao11yq6JS1zXI7SVQQ0NuQ==", "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "10.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.11", - "Microsoft.Extensions.Logging.Abstractions": "10.0.11", - "Microsoft.Extensions.Options": "10.0.11", - "Microsoft.Extensions.Primitives": "10.0.11" + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.13", + "Microsoft.Extensions.ObjectPool": "10.0.13" } }, "Microsoft.Extensions.Configuration": { @@ -343,6 +519,27 @@ "Microsoft.Extensions.Configuration.Abstractions": "10.0.14" } }, + "Microsoft.Extensions.Configuration.EnvironmentVariables": { + "type": "Transitive", + "resolved": "10.0.12", + "contentHash": "OIFhLxKAdvSrZuecX177ZkN4AcAB6OLlbS8y0MQYL68512aMOZI8cJLb8OeuYe2X+gu5uMqbbCxhzAmSp+Q2ow==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.12", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.12" + } + }, + "Microsoft.Extensions.Configuration.FileExtensions": { + "type": "Transitive", + "resolved": "10.0.14", + "contentHash": "NBIfm8vWNi3UJ9OI9thvREJeV6KzEdPjQ4ONdH+yPWutGBpVnwLbXiEqdEFaGAFYpAluGCfyCwKFgH9pd2scfw==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.14", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.14", + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.14", + "Microsoft.Extensions.FileProviders.Physical": "10.0.14", + "Microsoft.Extensions.Primitives": "10.0.14" + } + }, "Microsoft.Extensions.DependencyInjection": { "type": "Transitive", "resolved": "10.0.14", @@ -356,10 +553,18 @@ "resolved": "10.0.14", "contentHash": "QtpQzuSZVyTPCuHW058yCs9Nj0394uUkNyFHS813nOmK9UgUdBdaprJ5PPsBgsQIpxADTsTkbaMMonykem6qdw==" }, + "Microsoft.Extensions.DependencyInjection.AutoActivation": { + "type": "Transitive", + "resolved": "10.11.0", + "contentHash": "h/sovspxVmT2DTIbWORMG0Gi3zVcPQzNl3kbwtpo0LoUXYbe2+66wQqZYwaF2ZWKN8HDdHv5yoc7d0DbDBBlnA==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.13" + } + }, "Microsoft.Extensions.DependencyModel": { "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "RFYJR7APio/BiqdQunRq6DB+nDB6nc2qhHr77mlvZ0q0BT8PubMXN7XicmfzCbrDE/dzhBnUKBRXLTcqUiZDGg==" + "resolved": "10.0.14", + "contentHash": "N8OcqM0370wSXMJ3ZxO66rSElHrIgxvpfUn0vV7zRj7NvKo0nfwgEoTmC3Yz3860o60IaQ4KIPyeLIGX9EeNWA==" }, "Microsoft.Extensions.Diagnostics": { "type": "Transitive", @@ -380,6 +585,30 @@ "Microsoft.Extensions.Options": "10.0.14" } }, + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { + "type": "Transitive", + "resolved": "10.11.0", + "contentHash": "Dp/FaAPo3U9h3HsWT1dcdRRV//rm+MQF5iKpY/WxL5swwV+wZNE5eyJZ0kgy9Upl/kHz4ejpiLMloxDIuJaoJQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.13" + } + }, + "Microsoft.Extensions.Diagnostics.HealthChecks": { + "type": "Transitive", + "resolved": "10.0.12", + "contentHash": "Ck8nkBxEYPOGtUCp0whKwfE4qAHBnsK0DY1kgZLKvzf7s9xyr4lASa4K4AKNN1VHy7r3Z1Z57U6C0TMzFjD8ig==", + "dependencies": { + "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "10.0.12", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.12", + "Microsoft.Extensions.Logging.Abstractions": "10.0.12", + "Microsoft.Extensions.Options": "10.0.12" + } + }, + "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": { + "type": "Transitive", + "resolved": "10.0.12", + "contentHash": "oN4AYFq+50m7a65GgRxRqjdynWS6kVQAH6gHKRTfsrLP/aH7RvxIQ7139fjbnrxBwzfZQtZRhlcjvEIiRzihrg==" + }, "Microsoft.Extensions.Features": { "type": "Transitive", "resolved": "10.0.14", @@ -387,22 +616,46 @@ }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", + "resolved": "10.0.14", + "contentHash": "rAqf2Em2ZjLqNbcLJlboQnXNyJP604F960TsCKNiP00Ur6ExIc1mcwmNb8L2eTRT8RC8UKx/GjecoWcW2Sj7bw==", "dependencies": { - "Microsoft.Extensions.Primitives": "8.0.0" + "Microsoft.Extensions.Primitives": "10.0.14" + } + }, + "Microsoft.Extensions.FileProviders.Physical": { + "type": "Transitive", + "resolved": "10.0.14", + "contentHash": "dcp6eCIk6ZpE3CTNmIna0ifgxsPel/MtOc23/Y/AJlD9SZZr7bhlKK2DAXYlrz81yMkMi6el/LHHUFKCZ3ufuQ==", + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.14", + "Microsoft.Extensions.FileSystemGlobbing": "10.0.14", + "Microsoft.Extensions.Primitives": "10.0.14" } }, + "Microsoft.Extensions.FileSystemGlobbing": { + "type": "Transitive", + "resolved": "10.0.14", + "contentHash": "xt6c/PWLL6+CiBiZA3PWRSfkwcPh+HCwiOLrgSUkhzBT7lrT/+QpIKPeuCQyDPspwOuG1q0cbJhuiGpRjr4UNQ==" + }, "Microsoft.Extensions.Hosting.Abstractions": { "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "nHwq9aPBdBPYXPti6wYEEfgXddfBrYC+CQLn+qISiwQq5tpfaqDZSKOJNxoe9rfQxGf1c+2wC/qWFe1QYJPYqw==", + "resolved": "10.0.13", + "contentHash": "zIrbe9vkIFXxW3mOApIOWXw+xMwX7Cgsptr3ZSlglJt4hW2qp4fB/JU1NHgAevteBNH4PicvU9DsFPHxlnnloA==", "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.1", - "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2" + "Microsoft.Extensions.Configuration.Abstractions": "10.0.13", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.13", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.13", + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.13", + "Microsoft.Extensions.Logging.Abstractions": "10.0.13" + } + }, + "Microsoft.Extensions.Http.Diagnostics": { + "type": "Transitive", + "resolved": "10.11.0", + "contentHash": "iFcxcuMF/21LO+tDqDyzYVvokJUH03cNalmOJhmjyQSMV3dR4JAgcUBTV1iVH/yruC8wG2RNjvW0xcUgYqmrGg==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.13", + "Microsoft.Extensions.Telemetry": "10.11.0" } }, "Microsoft.Extensions.Localization.Abstractions": { @@ -428,10 +681,25 @@ "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.14" } }, + "Microsoft.Extensions.Logging.Configuration": { + "type": "Transitive", + "resolved": "10.0.13", + "contentHash": "OyYJOaE9WbBx1Hp+Dd2zrqeFM0JwH5M/x0VL6tNUv3V18vIAVpix8UjhvY9eW/iXpguEHy68JO/Z9YkBOwftIw==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.13", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.13", + "Microsoft.Extensions.Configuration.Binder": "10.0.13", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.13", + "Microsoft.Extensions.Logging": "10.0.13", + "Microsoft.Extensions.Logging.Abstractions": "10.0.13", + "Microsoft.Extensions.Options": "10.0.13", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.13" + } + }, "Microsoft.Extensions.ObjectPool": { "type": "Transitive", - "resolved": "8.0.11", - "contentHash": "6ApKcHNJigXBfZa6XlDQ8feJpq7SG1ogZXg6M4FiNzgd6irs3LUAzo0Pfn4F2ZI9liGnH1XIBR/OtSbZmJAV5w==" + "resolved": "10.0.13", + "contentHash": "NX3bhcc0WitPKAVc9Zfi8jeEPClhfEmobUJM4a4bkWhJcBt5IWg6lCrItUoFy4whLjU+atXktURYCweQlR7wfg==" }, "Microsoft.Extensions.Options": { "type": "Transitive", @@ -459,6 +727,56 @@ "resolved": "10.0.14", "contentHash": "1bbZqqCJTPba3inTADExbp/9PsGVyvGOX3zr6tFr7ySCgVkX9Lpw7BV0TizktNItd3SsbUu1sQfSAYm1GZMoNw==" }, + "Microsoft.Extensions.Resilience": { + "type": "Transitive", + "resolved": "10.11.0", + "contentHash": "GbN7R2BOoZf3F7aK02nz9kWf6ttbvVzpw1orGG30VmrKTmRV6pasQOCfF2fjKXyHIMC/lAiBEYHCKjgf0OiGvQ==", + "dependencies": { + "Microsoft.Extensions.Diagnostics": "10.0.13", + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "10.11.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.13", + "Microsoft.Extensions.Telemetry.Abstractions": "10.11.0", + "Polly.Extensions": "8.4.2", + "Polly.RateLimiting": "8.4.2" + } + }, + "Microsoft.Extensions.ServiceDiscovery.Abstractions": { + "type": "Transitive", + "resolved": "10.11.0", + "contentHash": "QzST85xtGR86sXg9kI8f4/+ziBo/B1JC93IEoMmy2g03vaxZZuxmmPrrWX6QeL4Knb1IzouXLyXWppx77tUPYg==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.13", + "Microsoft.Extensions.Configuration.Binder": "10.0.13", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.13", + "Microsoft.Extensions.Features": "10.0.13", + "Microsoft.Extensions.Logging.Abstractions": "10.0.13", + "Microsoft.Extensions.Options": "10.0.13", + "Microsoft.Extensions.Primitives": "10.0.13" + } + }, + "Microsoft.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "10.11.0", + "contentHash": "2meCfABvkLPtEBBwGzItIGnhrex1AEn2N+dHvxB5UoozeX/xTtBuUz5BRdjNI5oNgd5T31kC69WWw3BHDc9iZA==", + "dependencies": { + "Microsoft.Extensions.AmbientMetadata.Application": "10.11.0", + "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.11.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.13", + "Microsoft.Extensions.ObjectPool": "10.0.13", + "Microsoft.Extensions.Telemetry.Abstractions": "10.11.0" + } + }, + "Microsoft.Extensions.Telemetry.Abstractions": { + "type": "Transitive", + "resolved": "10.11.0", + "contentHash": "FzcHRan/C2g5X5KD0kPlL4tTROFRpM8sqcXfOIi6FGLsw/d2yoOYMbLJ5hyb8N5QgOVW7e1TdwEN4zVUfcwfdw==", + "dependencies": { + "Microsoft.Extensions.Compliance.Abstractions": "10.11.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.13", + "Microsoft.Extensions.ObjectPool": "10.0.13", + "Microsoft.Extensions.Options": "10.0.13" + } + }, "Microsoft.Extensions.Validation": { "type": "Transitive", "resolved": "10.0.14", @@ -489,6 +807,23 @@ "Microsoft.IdentityModel.Abstractions": "8.23.0" } }, + "Microsoft.IdentityModel.Protocols": { + "type": "Transitive", + "resolved": "8.19.2", + "contentHash": "sGxSsSrZXNmca6D+jHH2rVRyo2nNRd/g4H9CFbPmLLq0xgoH1U0orLWE5minfijw7+zq49tBs7txenbfAErRoQ==", + "dependencies": { + "Microsoft.IdentityModel.Tokens": "8.19.2" + } + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect": { + "type": "Transitive", + "resolved": "8.19.2", + "contentHash": "1XOcyY36cVymzE3qKdzKaUEZ4Pzt7ZpSa14JZoPPK1NLFUkQDs85TCqpV6XDo0YjFXj6nVK00AfOHppjghjhtw==", + "dependencies": { + "Microsoft.IdentityModel.Protocols": "8.19.2", + "System.IdentityModel.Tokens.Jwt": "8.19.2" + } + }, "Microsoft.IdentityModel.Tokens": { "type": "Transitive", "resolved": "8.23.0", @@ -512,6 +847,16 @@ "Microsoft.Extensions.Primitives": "8.0.0" } }, + "Microsoft.NET.StringTools": { + "type": "Transitive", + "resolved": "17.11.4", + "contentHash": "mudqUHhNpeqIdJoUx2YDWZO/I9uEDYVowan89R6wsomfnUJQk6HteoQTlNjZDixhT2B4IXMkMtgZtoceIjLRmA==" + }, + "Microsoft.SqlServer.Server": { + "type": "Transitive", + "resolved": "1.0.0", + "contentHash": "N4KeF3cpcm1PUHym1RmakkzfkEv3GRMyofVv40uXsQhCQeglr2OHNcUk2WOG51AKpGO8ynGpo9M/kFXSzghwug==" + }, "Microsoft.Testing.Extensions.Telemetry": { "type": "Transitive", "resolved": "2.5.1", @@ -552,21 +897,181 @@ "resolved": "6.0.0", "contentHash": "hqTM5628jSsQiv+HGpiq3WKBl2c8v1KZfby2J6Pr7pEPlK9waPdgEO6b8A/+/xn/yZ9ulv8HuqK71ONy2tg67A==" }, + "MiniProfiler.AspNetCore": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "meedJsjpYOeHPhE8H6t+dGQ9zLxcCQVpi4DXzmxmYAXywmTzlo6jv2IASUv5QijTU0CxsROln3FHd8RsTO8Z8A==", + "dependencies": { + "MiniProfiler.Shared": "4.5.4" + } + }, "Newtonsoft.Json": { "type": "Transitive", - "resolved": "13.0.1", - "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" + "resolved": "13.0.4", + "contentHash": "pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A==" + }, + "OpenTelemetry": { + "type": "Transitive", + "resolved": "1.20.1", + "contentHash": "+XDw3fYbiv1a40aFnDJSQleeuUJciXuhoIA19XmcGhT47Hy/xZRqk8NCjHUDKrg72Ixjthicecp8ygBDNeH/Jw==", + "dependencies": { + "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "1.20.1" + } + }, + "OpenTelemetry.Api.ProviderBuilderExtensions": { + "type": "Transitive", + "resolved": "1.20.1", + "contentHash": "eDzDY/jTBqRytkYECmVKF7ZP5sKmCIqv1SSnA5BSWltIIvc3931TOMRyCW1qCGNIgmtldtJhISnsmFNxOCfauQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "OpenTelemetry.Api": "1.20.1" + } + }, + "Polly.Extensions": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Polly.Core": "8.4.2" + } + }, + "Polly.RateLimiting": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", + "dependencies": { + "Polly.Core": "8.4.2", + "System.Threading.RateLimiting": "8.0.0" + } + }, + "RabbitMQ.Client": { + "type": "Transitive", + "resolved": "7.2.2", + "contentHash": "k4b6RnTXpLbsF96V93ooNYxgPMnoA2tEm24B6AXNJr1mG8wwNYdA1XJtgU66L5xqeGyveS7SJriRzlX3cbqQNA==", + "dependencies": { + "System.Threading.RateLimiting": "8.0.0" + } + }, + "RESPite": { + "type": "Transitive", + "resolved": "3.4.20", + "contentHash": "MRBfXbMStwHGzM2UsbWsmh7mF/WDh4kNonrhOj5HLfkVp+PIstu4MuElusyJLHu5MkOIQj9+u1xWQ5YeJTveHQ==" + }, + "Serilog": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "+cDryFR0GRhsGOnZSKwaDzRRl4MupvJ42FhCE4zhQRVanX0Jpg6WuCBk59OVhVDPmab1bB+nRykAnykYELA9qQ==" + }, + "Serilog.Extensions.Hosting": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "E7juuIc+gzoGxgzFooFgAV8g9BfiSXNKsUok9NmEpyAXg2odkcPsMa/Yo4axkJRlh0se7mkYQ1GXDaBemR+b6w==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Serilog": "4.3.0", + "Serilog.Extensions.Logging": "10.0.0" + } + }, + "Serilog.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "vx0kABKl2dWbBhhqAfTOk53/i8aV/5VaT3a6il9gn72Wqs2pM7EK2OB6No6xdqK2IaY6Zf9gdjLuK9BVa2rT+Q==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.0", + "Serilog": "4.2.0" + } + }, + "Serilog.Formatting.Compact": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "wQsv14w9cqlfB5FX2MZpNsTawckN4a8dryuNGbebB/3Nh1pXnROHZov3swtu3Nj5oNG7Ba+xdu7Et/ulAUPanQ==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "Serilog.Settings.Configuration": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "LNq+ibS1sbhTqPV1FIE69/9AJJbfaOhnaqkzcjFy95o+4U+STsta9mi97f1smgXsWYKICDeGUf8xUGzd/52/uA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "10.0.0", + "Microsoft.Extensions.DependencyModel": "10.0.0", + "Serilog": "4.3.0" + } + }, + "Serilog.Sinks.Debug": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "4BzXcdrgRX7wde9PmHuYd9U6YqycCC28hhpKonK7hx0wb19eiuRj16fPcPSVp0o/Y1ipJuNLYQ00R3q2Zs8FDA==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "SQLite": { + "type": "Transitive", + "resolved": "3.53.4", + "contentHash": "KN7jeWqgUPeBRe1FlcpZURzxomuKKEKHmBBQfg+Nx7NkY1LjKhzHvH+3ASkNvhayESE34nMBinL9CV21JfPRJw==" + }, + "SQLitePCLRaw.config.e_sqlite3": { + "type": "Transitive", + "resolved": "3.0.5", + "contentHash": "aSk8WE5tF2MybESMgtZAEyMVCAWA0nBqOMc48HFoa9UoSdtm3goDXVzNRnefeKIwE6bV9NaNXptn1F9ReMQI0Q==", + "dependencies": { + "SQLitePCLRaw.provider.e_sqlite3": "3.0.5" + } + }, + "SQLitePCLRaw.core": { + "type": "Transitive", + "resolved": "3.0.5", + "contentHash": "k81AYXXRCw3Zj8rOhyBoCsx/U97KYDFI2CSKr/ijl5BwpsW/hX/4kBiDmerFaoust8nxBwa0IHQFw8MmSHRtnQ==" + }, + "SQLitePCLRaw.provider.e_sqlite3": { + "type": "Transitive", + "resolved": "3.0.5", + "contentHash": "um8YSWduhhuskTG2bHfZrBqMNQOydfU8pcseT+cu5RivOGyoUbCrGXxgoRNTmRYw2VbMWnEZVVFcneZT/5dsBg==", + "dependencies": { + "SQLitePCLRaw.core": "3.0.5" + } }, "StyleCop.Analyzers.Unstable": { "type": "Transitive", "resolved": "1.2.0.556", "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.1.0", + "contentHash": "UocOlCkxLZrG2CKMAAImPcldJTxeesHnHGHwhJ0pNlZEvEXcWKuQvVOER2/NiOkJGRJk978SNdw3j6/7O9H1lg==", + "dependencies": { + "System.Memory.Data": "1.0.2" + } + }, "System.ComponentModel.Annotations": { "type": "Transitive", "resolved": "5.0.0", "contentHash": "dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg==" }, + "System.Configuration.ConfigurationManager": { + "type": "Transitive", + "resolved": "9.0.18", + "contentHash": "/1q0MHB2xKyTFRC5tk+oL3Ahi+QK0UPI6Qk6Xc5z5BW6otR2T9wwWmEW/LZX98cq7UOmu+7sZ5HNwuq61zrNtg==", + "dependencies": { + "System.Diagnostics.EventLog": "9.0.18", + "System.Security.Cryptography.ProtectedData": "9.0.18" + } + }, + "System.Diagnostics.EventLog": { + "type": "Transitive", + "resolved": "9.0.18", + "contentHash": "4f3CBS22A2Y+M+shvdYzeWaEPYycZ3IaouaH+NxGLW6xoFahR1+L+YM8bt8NI3TQRZbqPBp/myt+6+JXc+IhRg==" + }, "System.Drawing.Common": { "type": "Transitive", "resolved": "6.0.0", @@ -580,11 +1085,31 @@ "resolved": "17.0.24", "contentHash": "hA7bacntMiZv1Yf9xtjwl/GP3GT1mG84QxhAk7ijAUD0pJhJaVVwXScE13vMpXnNtlaRDW6SeyZdWg2j2qrh4w==" }, + "System.IO.Hashing": { + "type": "Transitive", + "resolved": "10.0.13", + "contentHash": "ZlcywyQ7FJmgOV2nctdfOEPGS0kRK8T2CdOoPr6F4HPYpmjSo6GQfj3yTyOzNO6B+2U84/JKSPkJJMWqLmVsMw==" + }, + "System.Memory.Data": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "ntFHArH3I4Lpjf5m4DCXQHJuGwWPNVJPaAvM95Jy/u+2Yzt2ryiyIN04LAogkjP9DeRcEOiviAjQotfmPq/FrQ==" + }, "System.Security.AccessControl": { "type": "Transitive", "resolved": "6.0.1", "contentHash": "IQ4NXP/B3Ayzvw0rDQzVTYsCKyy0Jp9KI6aYcK7UnGVlR9+Awz++TIPCQtPYfLJfOpm8ajowMR09V7quD3sEHw==" }, + "System.Security.Cryptography.ProtectedData": { + "type": "Transitive", + "resolved": "9.0.18", + "contentHash": "1/iz9Eex1TBMYdAk+m3igaMvL+nk+rY1EqL6u93an/j1ghxmB24vGOKXkVFy3NSPA39s1H/+SNoK257tHoXoLA==" + }, + "System.Threading.RateLimiting": { + "type": "Transitive", + "resolved": "9.0.18", + "contentHash": "pxuHw/tQXaHMRXEaKzzgpoGO8VeTPIzHbnp0KclXp6js5wPHn7VaqSCa8yRTAsZDcZ2XuIEnXGM2MbRDJFLBog==" + }, "xunit.analyzers": { "type": "Transitive", "resolved": "2.2.0", @@ -645,6 +1170,100 @@ "xunit.v3.runner.common": "[4.0.2]" } }, + "mmca.common.api": { + "type": "Project", + "dependencies": { + "Asp.Versioning.Mvc": "[10.2.1, )", + "Asp.Versioning.Mvc.ApiExplorer": "[10.2.1, )", + "AspNet.Security.OAuth.Apple": "[10.0.0, )", + "AspNet.Security.OAuth.GitHub": "[10.0.0, )", + "MMCA.Common.Application": "[1.0.0, )", + "MMCA.Common.Infrastructure": "[1.0.0, )", + "Microsoft.AspNetCore.Authentication.Google": "[10.0.14, )", + "Microsoft.AspNetCore.Authentication.JwtBearer": "[10.0.14, )", + "Microsoft.AspNetCore.OpenApi": "[10.0.14, )", + "Microsoft.Data.SqlClient": "[7.1.1, )", + "Microsoft.FeatureManagement.AspNetCore": "[4.8.0, )", + "Microsoft.OpenApi": "[2.13.0, )", + "MiniProfiler.AspNetCore.Mvc": "[4.5.4, )", + "Scalar.AspNetCore": "[2.18.3, )", + "System.IdentityModel.Tokens.Jwt": "[8.23.0, )" + } + }, + "mmca.common.application": { + "type": "Project", + "dependencies": { + "FluentValidation.DependencyInjectionExtensions": "[12.2.0, )", + "MMCA.Common.Domain": "[1.0.0, )", + "Microsoft.Extensions.Configuration.Json": "[10.0.14, )", + "Microsoft.FeatureManagement": "[4.8.0, )", + "MiniProfiler.Shared": "[4.5.4, )", + "Scrutor": "[7.0.0, )", + "System.Linq.Dynamic.Core": "[1.7.4, )" + } + }, + "mmca.common.aspire": { + "type": "Project", + "dependencies": { + "AspNetCore.HealthChecks.NpgSql": "[9.0.0, )", + "AspNetCore.HealthChecks.Rabbitmq": "[9.0.0, )", + "AspNetCore.HealthChecks.SqlServer": "[9.0.0, )", + "AspNetCore.HealthChecks.Sqlite": "[9.0.0, )", + "Aspire.StackExchange.Redis": "[13.6.4, )", + "Aspire.StackExchange.Redis.DistributedCaching": "[13.6.4, )", + "MMCA.Common.Shared": "[1.0.0, )", + "Microsoft.AspNetCore.OutputCaching.StackExchangeRedis": "[10.0.14, )", + "Microsoft.Data.SqlClient": "[7.1.1, )", + "Microsoft.Extensions.Http.Resilience": "[10.11.0, )", + "Microsoft.Extensions.ServiceDiscovery": "[10.11.0, )", + "Npgsql": "[10.0.3, )", + "OpenTelemetry.Api": "[1.20.1, )", + "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.20.1, )", + "OpenTelemetry.Extensions.Hosting": "[1.20.1, )", + "OpenTelemetry.Instrumentation.AspNetCore": "[1.20.1, )", + "OpenTelemetry.Instrumentation.Http": "[1.20.1, )", + "OpenTelemetry.Instrumentation.Runtime": "[1.20.1, )", + "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", + "Serilog.AspNetCore": "[10.0.0, )", + "Serilog.Sinks.Console": "[6.1.1, )", + "Serilog.Sinks.File": "[7.0.0, )", + "StackExchange.Redis": "[3.4.20, )", + "System.Security.Cryptography.Pkcs": "[10.0.14, )" + } + }, + "mmca.common.domain": { + "type": "Project", + "dependencies": { + "MMCA.Common.Shared": "[1.0.0, )" + } + }, + "mmca.common.infrastructure": { + "type": "Project", + "dependencies": { + "Cronos": "[0.13.0, )", + "MMCA.Common.Application": "[1.0.0, )", + "MassTransit": "[8.5.12, )", + "MassTransit.RabbitMQ": "[8.5.12, )", + "MassTransit.SqlTransport.PostgreSQL": "[8.5.12, )", + "MessagePack": "[3.1.12, )", + "Microsoft.AspNetCore.OutputCaching.StackExchangeRedis": "[10.0.14, )", + "Microsoft.AspNetCore.SignalR.StackExchangeRedis": "[10.0.14, )", + "Microsoft.Data.SqlClient": "[7.1.1, )", + "Microsoft.EntityFrameworkCore.Cosmos": "[10.0.14, )", + "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.14, )", + "Microsoft.EntityFrameworkCore.Sqlite": "[10.0.14, )", + "Microsoft.Extensions.Caching.Hybrid": "[10.11.0, )", + "Microsoft.Extensions.Http.Resilience": "[10.11.0, )", + "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", + "Otp.NET": "[1.4.1, )", + "Polly.Core": "[8.8.1, )", + "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", + "StackExchange.Redis": "[3.4.20, )", + "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", + "System.Security.Cryptography.Pkcs": "[10.0.14, )" + } + }, "mmca.common.shared": { "type": "Project" }, @@ -681,9 +1300,148 @@ "mmca.common.ui.gallery": { "type": "Project", "dependencies": { - "MMCA.Common.UI": "[1.0.0, )" + "MMCA.Common.UI": "[1.0.0, )", + "MMCA.Common.UI.Web": "[1.0.0, )" + } + }, + "mmca.common.ui.web": { + "type": "Project", + "dependencies": { + "MMCA.Common.API": "[1.0.0, )", + "MMCA.Common.Aspire": "[1.0.0, )", + "MMCA.Common.Shared": "[1.0.0, )", + "MMCA.Common.UI": "[1.0.0, )", + "Microsoft.Extensions.ServiceDiscovery": "[10.11.0, )", + "Yarp.ReverseProxy": "[2.3.0, )" + } + }, + "Asp.Versioning.Mvc": { + "type": "CentralTransitive", + "requested": "[10.2.1, )", + "resolved": "10.2.1", + "contentHash": "fMzUraYZOAobKQn2PffrgPsULbCWFeWroYRYndPasxPsiQl1+i8x5qYRuMYZAbzDrBnymPUMBxT2gZG2PwbkcQ==", + "dependencies": { + "Asp.Versioning.Http": "10.2.1" + } + }, + "Asp.Versioning.Mvc.ApiExplorer": { + "type": "CentralTransitive", + "requested": "[10.2.1, )", + "resolved": "10.2.1", + "contentHash": "Tv1megkpUy+3FN9yfVJKIcYMLXTe5CPs4zftBxGaZhADJe6h9CJZ2Okh5cG4PoE7wzHTef+AK++8IuZta3Ppog==", + "dependencies": { + "Asp.Versioning.Mvc": "10.2.1" + } + }, + "Aspire.StackExchange.Redis": { + "type": "CentralTransitive", + "requested": "[13.6.4, )", + "resolved": "13.6.4", + "contentHash": "DvCqdDJxkQWsMxSWklp4d0b8DvcZtNj0d+Bt+h6mqrS2pB887V+ZeX3fUKA3EuSW/ghpC9yrNMa93ZxBqGHzvA==", + "dependencies": { + "AspNetCore.HealthChecks.Redis": "9.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.12", + "Microsoft.Extensions.Configuration.Binder": "10.0.12", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.12", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.12", + "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.10.0", + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.12", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.12", + "Microsoft.Extensions.Logging": "10.0.12", + "Microsoft.Extensions.Logging.Abstractions": "10.0.12", + "Microsoft.Extensions.Options": "10.0.12", + "Microsoft.Extensions.Primitives": "10.0.12", + "OpenTelemetry.Extensions.Hosting": "1.17.0", + "StackExchange.Redis": "2.13.17", + "System.IO.Hashing": "10.0.12" + } + }, + "Aspire.StackExchange.Redis.DistributedCaching": { + "type": "CentralTransitive", + "requested": "[13.6.4, )", + "resolved": "13.6.4", + "contentHash": "8A2L8+R2d3+4E00fAFQi+meQcZIp5Hkib2joh34ZFix9VD8918ECUXvQBZW6RD8jfrOhhrVt6lB1XIH3kKtZfg==", + "dependencies": { + "AspNetCore.HealthChecks.Redis": "9.0.0", + "Aspire.StackExchange.Redis": "13.6.4", + "Microsoft.Extensions.Caching.StackExchangeRedis": "10.0.12", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.12", + "Microsoft.Extensions.Configuration.Binder": "10.0.12", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.12", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.12", + "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.10.0", + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.12", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.12", + "Microsoft.Extensions.Logging": "10.0.12", + "Microsoft.Extensions.Logging.Abstractions": "10.0.12", + "Microsoft.Extensions.Options": "10.0.12", + "Microsoft.Extensions.Primitives": "10.0.12", + "OpenTelemetry.Extensions.Hosting": "1.17.0", + "StackExchange.Redis": "2.13.17", + "System.IO.Hashing": "10.0.12" + } + }, + "AspNet.Security.OAuth.Apple": { + "type": "CentralTransitive", + "requested": "[10.0.0, )", + "resolved": "10.0.0", + "contentHash": "nbZRB7YLt+cByQPZ06mRWlZYXLhqNt9KtUArOqBS1g2gJ8A9f3J5qLeTjvmzKJjXI7CCC+jGwDLrMOD9H0yYjw==", + "dependencies": { + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.14.0" + } + }, + "AspNet.Security.OAuth.GitHub": { + "type": "CentralTransitive", + "requested": "[10.0.0, )", + "resolved": "10.0.0", + "contentHash": "PbOrAso/hlCS2p3YHHq94C5W/6851xyMT8ZEkAc3eGQNlsu3Siwu/D98nzCKyOKmB+KNu9MirWpmO66PmEIexQ==" + }, + "AspNetCore.HealthChecks.NpgSql": { + "type": "CentralTransitive", + "requested": "[9.0.0, )", + "resolved": "9.0.0", + "contentHash": "npc58/AD5zuVxERdhCl2Kb7WnL37mwX42SJcXIwvmEig0/dugOLg3SIwtfvvh3TnvTwR/sk5LYNkkPaBdks61A==", + "dependencies": { + "Microsoft.Extensions.Diagnostics.HealthChecks": "8.0.11", + "Npgsql": "8.0.3" + } + }, + "AspNetCore.HealthChecks.Rabbitmq": { + "type": "CentralTransitive", + "requested": "[9.0.0, )", + "resolved": "9.0.0", + "contentHash": "7WSQ7EwioA5niakzzLtGVcZMEOh+42fSwrI24vnNsT7gZuVGOViNekyz38G6wBPYKcpL/lUkMdg3ZaCiZTi/Dw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics.HealthChecks": "8.0.11", + "RabbitMQ.Client": "7.0.0" + } + }, + "AspNetCore.HealthChecks.Sqlite": { + "type": "CentralTransitive", + "requested": "[9.0.0, )", + "resolved": "9.0.0", + "contentHash": "SHpWYRR7jh+OIERWK2iz/LhmhA17dL91J67J+0Pm/pkyEg6GyVYNAJzvj2SJPZo7Gf8oK6YVmLzosWbHck/eQQ==", + "dependencies": { + "Microsoft.Data.Sqlite": "8.0.0", + "Microsoft.Extensions.Diagnostics.HealthChecks": "8.0.11" + } + }, + "AspNetCore.HealthChecks.SqlServer": { + "type": "CentralTransitive", + "requested": "[9.0.0, )", + "resolved": "9.0.0", + "contentHash": "UxCf65iCF2nU1u7AcB320abjL4CRg5swCgJECY6mKk1j5lrGMfVtskWwriGs1T29pYdRig9Vra3SPnP+4G82pA==", + "dependencies": { + "Microsoft.Data.SqlClient": "5.2.2", + "Microsoft.Extensions.Diagnostics.HealthChecks": "8.0.11" } }, + "Cronos": { + "type": "CentralTransitive", + "requested": "[0.13.0, )", + "resolved": "0.13.0", + "contentHash": "Nkve+Yi0+ol3ntSBRHeW0ka9cJQ8vndSUvvkXqF9LVqwpoqWueyxu/HS275r98RDOmF7/mzRnZW5XXUBXob+TA==" + }, "Deque.AxeCore.Commons": { "type": "CentralTransitive", "requested": "[4.14.0, )", @@ -704,6 +1462,77 @@ "System.IO.Abstractions": "17.0.24" } }, + "FluentValidation.DependencyInjectionExtensions": { + "type": "CentralTransitive", + "requested": "[12.2.0, )", + "resolved": "12.2.0", + "contentHash": "QpKXgiO9E6wXCh19X2Musn8MZM0xt7KQt/QrD6GDBn3MCUfy8a+rkhCzrYJNCfoxTsTRQ7bpKP8T3geTnJNNeQ==", + "dependencies": { + "FluentValidation": "12.2.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" + } + }, + "MassTransit": { + "type": "CentralTransitive", + "requested": "[8.5.12, )", + "resolved": "8.5.12", + "contentHash": "qpesi9ZPcT3+1w7HLw4rtkS0MRiX90WSaFNp3CXdaTGKhdmZn3nIozysvEpdoVfLM4Bwq9Kx7okGxRvLBY9Qcw==", + "dependencies": { + "MassTransit.Abstractions": "8.5.12", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0" + } + }, + "MassTransit.RabbitMQ": { + "type": "CentralTransitive", + "requested": "[8.5.12, )", + "resolved": "8.5.12", + "contentHash": "j8MQni+zMmUpAQ8VKIcuBakJ2ptZy0wSahd1LCVyRUvFrI8Bg0YtFsRk6w0/R1hdD3u0TuMvPKQAaNIZe8nSxQ==", + "dependencies": { + "MassTransit": "8.5.12", + "RabbitMQ.Client": "7.2.2" + } + }, + "MassTransit.SqlTransport.PostgreSQL": { + "type": "CentralTransitive", + "requested": "[8.5.12, )", + "resolved": "8.5.12", + "contentHash": "BUeSTNizavmN1Xwhy+ZVmxmuUkhFx54w+hxgRapwvXkPoL0y0iU0iDz9R9mmvBNtuqBdvq9K7/7GtP1wnHnpaA==", + "dependencies": { + "Dapper": "2.1.89", + "MassTransit": "8.5.12", + "Npgsql": "8.0.7" + } + }, + "MessagePack": { + "type": "CentralTransitive", + "requested": "[3.1.12, )", + "resolved": "3.1.12", + "contentHash": "m1QEsd59gUj82ji5tEQbZiyjV6y0F7cYfGVhil6pAlNZpyzR7ze9TucMu4lPpi8cZAV8aNl3D9/T9J1HbFz15Q==", + "dependencies": { + "MessagePack.Annotations": "3.1.12", + "MessagePackAnalyzer": "3.1.12", + "Microsoft.NET.StringTools": "17.11.4" + } + }, + "Microsoft.AspNetCore.Authentication.Google": { + "type": "CentralTransitive", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "3enUvuEqorstWs1o2wc2hd8VgiF+fK0vZtGXl3wjE760887BNXUTh9vl86cLY+qdDujCHHWxA773nkWW4n8FBA==" + }, + "Microsoft.AspNetCore.Authentication.JwtBearer": { + "type": "CentralTransitive", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "DaTs32NtRkTabidrvhLhcXpa+Uguw0rN5FaX8Q1HmzbYtcI72iSauYlN4WmqbrXp6QQoB8fmZlHk5/bjiMTY7A==", + "dependencies": { + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.19.2" + } + }, "Microsoft.AspNetCore.Components.Authorization": { "type": "CentralTransitive", "requested": "[10.0.14, )", @@ -747,6 +1576,26 @@ "Microsoft.Extensions.Logging.Abstractions": "8.0.2" } }, + "Microsoft.AspNetCore.OpenApi": { + "type": "CentralTransitive", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "3M6yO4nv8fmvM/1X7DqQcMxw/ptNLBcUzZt19SBEyfZF32gqZuwoPNnYd1xlDnFvQOGOkZDncf7p9E24blcTkQ==", + "dependencies": { + "Microsoft.OpenApi": "[2.12.2, 3.0.0)" + } + }, + "Microsoft.AspNetCore.OutputCaching.StackExchangeRedis": { + "type": "CentralTransitive", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "AQALE3dbokVs4aEg/06gosTdhBilvquqsZU0DAlw4fmq7ZAbVKTlUC7b4X9LKTdL38bHldVIAuBSflLhXpy1Jg==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "10.0.14", + "Microsoft.Extensions.Options": "10.0.14", + "StackExchange.Redis": "2.7.27" + } + }, "Microsoft.AspNetCore.SignalR.Client": { "type": "CentralTransitive", "requested": "[10.0.14, )", @@ -757,6 +1606,101 @@ "Microsoft.AspNetCore.SignalR.Client.Core": "10.0.14" } }, + "Microsoft.AspNetCore.SignalR.StackExchangeRedis": { + "type": "CentralTransitive", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "GO/fLS1/9UWayuLackhLraVdhxfPa/X+s74sNMu2zYhrQzMgYtIfJajjLDTssmBgFxVDja/2Hw6TwIRbk9PLUQ==", + "dependencies": { + "MessagePack": "2.5.303", + "Microsoft.Extensions.Options": "10.0.14", + "StackExchange.Redis": "2.7.27" + } + }, + "Microsoft.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[7.1.1, )", + "resolved": "7.1.1", + "contentHash": "Moz4+bba/OdEM9I4jXWggduJ4sqoNcgVAQyXG/dNnGGvnS/YDr2fTjP83fg5YX3drgRki6fRAhR94P8dAZgZtQ==", + "dependencies": { + "Microsoft.Bcl.Cryptography": "9.0.18", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.1.1, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.1.1, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[7.1.0, 8.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.18", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.18", + "System.Security.Cryptography.Pkcs": "9.0.18", + "System.Threading.RateLimiting": "9.0.18" + } + }, + "Microsoft.EntityFrameworkCore.Cosmos": { + "type": "CentralTransitive", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "MohabUkZjUVN0PZ0mGP0U/UmSvO2TOMDTvbEwyl2GOf+4AZI79NJXFQB+4qCqfypteG3gjMxB5Cs6HQ7tgbROw==", + "dependencies": { + "Microsoft.Azure.Cosmos": "3.63.1", + "Microsoft.EntityFrameworkCore": "10.0.14", + "Microsoft.Extensions.Caching.Memory": "10.0.14", + "Microsoft.Extensions.Logging": "10.0.14", + "Newtonsoft.Json": "13.0.4" + } + }, + "Microsoft.EntityFrameworkCore.Sqlite": { + "type": "CentralTransitive", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "lxrwnVwvlIfQD4IF4WUVupE6Qxfj3MfFftDVwo7tsGAWCKLL8Ttb8UjIt+gE4e9nRlH7EgdC6TrsArFGnNYREw==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Sqlite.Core": "10.0.14", + "Microsoft.Extensions.Caching.Memory": "10.0.14", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.14", + "Microsoft.Extensions.DependencyModel": "10.0.14", + "Microsoft.Extensions.Logging": "10.0.14", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.13", + "SQLitePCLRaw.core": "2.1.13" + } + }, + "Microsoft.EntityFrameworkCore.SqlServer": { + "type": "CentralTransitive", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "S3zuzJE5qcl4jjBwSI1x1WZp/GiwzBk1qlFjI77O1E/FZ0mtXNYRBDCfAY0x7nly2zZjM2U5XIkw7AD3DsSpEQ==", + "dependencies": { + "Microsoft.Data.SqlClient": "6.1.7", + "Microsoft.EntityFrameworkCore.Relational": "10.0.14", + "Microsoft.Extensions.Caching.Memory": "10.0.14", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.14", + "Microsoft.Extensions.Logging": "10.0.14" + } + }, + "Microsoft.Extensions.Caching.Hybrid": { + "type": "CentralTransitive", + "requested": "[10.11.0, )", + "resolved": "10.11.0", + "contentHash": "F4P+uZgDFnKfmHm0ReWJNSVXAlZmknQgkkrmEDtAdxWvVPCSZL7UPAY7Ewf8zs5qwPCGaYopZiRiPg2YGCfuhA==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.13", + "Microsoft.Extensions.Caching.Memory": "10.0.13", + "Microsoft.Extensions.Logging.Abstractions": "10.0.13", + "Microsoft.Extensions.Options": "10.0.13" + } + }, + "Microsoft.Extensions.Caching.StackExchangeRedis": { + "type": "CentralTransitive", + "requested": "[10.0.13, )", + "resolved": "10.0.12", + "contentHash": "iQoMgbt02dl49cv7GLNeh771xstAbg9xKpuWosYmnOU0CJ9ni10F3+1IrgvbjyaV0JGulauGRrNir50QKWonKQ==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.12", + "Microsoft.Extensions.Logging.Abstractions": "10.0.12", + "Microsoft.Extensions.Options": "10.0.12", + "StackExchange.Redis": "2.7.27" + } + }, "Microsoft.Extensions.Configuration.Abstractions": { "type": "CentralTransitive", "requested": "[10.0.14, )", @@ -766,6 +1710,18 @@ "Microsoft.Extensions.Primitives": "10.0.14" } }, + "Microsoft.Extensions.Configuration.Json": { + "type": "CentralTransitive", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "4Tn8eNg85x+ICDN4OLC7Dl/xvZNREZIf7VSOAdT4Q4KYf5Ip1zAk+0BAx8BsRTomgEpCYV4kKsNNnP/ZXUbQkw==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.14", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.14", + "Microsoft.Extensions.Configuration.FileExtensions": "10.0.14", + "Microsoft.Extensions.FileProviders.Abstractions": "10.0.14" + } + }, "Microsoft.Extensions.Http": { "type": "CentralTransitive", "requested": "[10.0.14, )", @@ -780,6 +1736,17 @@ "Microsoft.Extensions.Options": "10.0.14" } }, + "Microsoft.Extensions.Http.Resilience": { + "type": "CentralTransitive", + "requested": "[10.11.0, )", + "resolved": "10.11.0", + "contentHash": "6/YEoPCcQLzExm4x4FH5c38JffbhkMaTtXsrDmYNozt9KRtdXK3TsDeuKSBZJno+41oIDGBONb2up0zCsuEERw==", + "dependencies": { + "Microsoft.Extensions.Http.Diagnostics": "10.11.0", + "Microsoft.Extensions.ObjectPool": "10.0.13", + "Microsoft.Extensions.Resilience": "10.11.0" + } + }, "Microsoft.Extensions.Localization": { "type": "CentralTransitive", "requested": "[10.0.14, )", @@ -802,6 +1769,16 @@ "Microsoft.Extensions.Options": "10.0.14" } }, + "Microsoft.Extensions.ServiceDiscovery": { + "type": "CentralTransitive", + "requested": "[10.11.0, )", + "resolved": "10.11.0", + "contentHash": "l1jvoPCZYEZOE2JZzcnzHLo1BBN/s+Azj8+FX0WRbqHoJY7QVq7cvTHasDWi1pixr0dXxbyC4HKt68Xm2KKpqQ==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.13", + "Microsoft.Extensions.ServiceDiscovery.Abstractions": "10.11.0" + } + }, "Microsoft.FeatureManagement": { "type": "CentralTransitive", "requested": "[4.8.0, )", @@ -814,6 +1791,49 @@ "Microsoft.Extensions.Logging": "10.0.11" } }, + "Microsoft.FeatureManagement.AspNetCore": { + "type": "CentralTransitive", + "requested": "[4.8.0, )", + "resolved": "4.8.0", + "contentHash": "LBKVCjgNvJYtIiKb1IoXyuyzpZPmfVxnlDB0ByZ774EB1hNQLQlMQ9juZpJ3fRgEYodYs7aa7WKVvWshHx1CbQ==", + "dependencies": { + "Microsoft.FeatureManagement": "4.8.0" + } + }, + "Microsoft.OpenApi": { + "type": "CentralTransitive", + "requested": "[2.13.0, )", + "resolved": "2.13.0", + "contentHash": "wavlgBYnn7uU/ZGhFHNl0UlDOlwz+6KRduKkqdCCbfxxANaQ1rmBpETVGdwXanAM6twQOxsvI3CBEGF4OScbeQ==" + }, + "MiniProfiler.AspNetCore.Mvc": { + "type": "CentralTransitive", + "requested": "[4.5.4, )", + "resolved": "4.5.4", + "contentHash": "+NqXyCy9aNdroPm6leW5+cpngtCnkCdoyOlJzvVN62uucSx+MYkx8jmKbgAt+aCP6aghADfHBExwrTIldHxapg==", + "dependencies": { + "MiniProfiler.AspNetCore": "4.5.4" + } + }, + "MiniProfiler.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[4.5.4, )", + "resolved": "4.5.4", + "contentHash": "SSOuBYtNbM8AMmsYMP6Edr7iBfVYzswVt/yoIDboBRLLUgkA4SyROCJuTTtZ8eJSzlNuq5DIR+BLCCcigaV/vw==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "8.0.11", + "MiniProfiler.Shared": "4.5.4" + } + }, + "MiniProfiler.Shared": { + "type": "CentralTransitive", + "requested": "[4.5.4, )", + "resolved": "4.5.4", + "contentHash": "f8ckFm/xTS8C2Bn4BdVc94dNvg+tRfk0e4XFaETOqRi6r0PUOyn3Z9jTQCVpB3R1pP5WiRsEIrqqxux95BVpTA==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.0.0" + } + }, "MudBlazor": { "type": "CentralTransitive", "requested": "[9.11.0, )", @@ -825,6 +1845,86 @@ "Microsoft.Extensions.Localization": "10.0.1" } }, + "Npgsql": { + "type": "CentralTransitive", + "requested": "[10.0.3, )", + "resolved": "10.0.3", + "contentHash": "7nb5YzXuvWWJxB0J8DiyL3we+X4FOctZrt0fIBnucOIaIevFEEwGQVZKtiu9olXdlNAK1eNgqSral6r/jlhI4w==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "10.0.0" + } + }, + "Npgsql.EntityFrameworkCore.PostgreSQL": { + "type": "CentralTransitive", + "requested": "[10.0.3, )", + "resolved": "10.0.3", + "contentHash": "IPGrrZnRkuW7OlHDhUESZz4G5DLkW7Nej/O3Cx+0iTsgyU5XJxBgpsvTHLloo3WWuAKKbDHXBvWPVkX1deRh1Q==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "[10.0.4, 11.0.0)", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.4, 11.0.0)", + "Npgsql": "10.0.3" + } + }, + "OpenTelemetry.Api": { + "type": "CentralTransitive", + "requested": "[1.20.1, )", + "resolved": "1.20.1", + "contentHash": "QO9hlwadOdJGR4vDpJyDnl9B62v7epIBSTIHUA4C+bCtrRaB4TWmYSnu3QVOIe7caH8dt7NaHRei6zebESJJyw==" + }, + "OpenTelemetry.Exporter.OpenTelemetryProtocol": { + "type": "CentralTransitive", + "requested": "[1.20.1, )", + "resolved": "1.20.1", + "contentHash": "IlO8F0Y01ki0N5hJaeFJ5j3MVYJdbyNpDF9g7goU8wA3o8r/+ir9WJNnmte7QlUzM3iSV/aIuev1fqwF1CZOqg==", + "dependencies": { + "OpenTelemetry": "1.20.1" + } + }, + "OpenTelemetry.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[1.20.1, )", + "resolved": "1.20.1", + "contentHash": "wnoK07COxyQBR47QwP80SIO4cpD2xeF4PrBDYFXDMnhDLmOP4nN0Szy1wCBLo5UABU1I4xwWRGzZM0bFdCbRog==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "OpenTelemetry": "1.20.1" + } + }, + "OpenTelemetry.Instrumentation.AspNetCore": { + "type": "CentralTransitive", + "requested": "[1.20.1, )", + "resolved": "1.20.1", + "contentHash": "pDO+Ed5iblMTvSVGcXzoLp8q20XHhXmK0wD/H3PGNHwDFlwZpV+bDWd/Euo6hNB4E0ruqzTFD76Btm+m0uCYNw==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.20.1, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Http": { + "type": "CentralTransitive", + "requested": "[1.20.1, )", + "resolved": "1.20.1", + "contentHash": "XJTM6imVztxLraOrzsdlZf5shdH9TVeEWNBxpyepB5e3Gy+KNeQf2hyic398210UxqlPtt4iOkBELtjfIFTzug==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.20.1, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Runtime": { + "type": "CentralTransitive", + "requested": "[1.20.1, )", + "resolved": "1.20.1", + "contentHash": "1ngVOV2ZYqFy38g2g+vZ50poeF66GJtinITBDB7TNRP4fmrDxYYyPfs1uGrPHkhJJRV5I7mElPFOctvlatu41w==", + "dependencies": { + "OpenTelemetry.Api": "[1.20.1, 2.0.0)" + } + }, + "Otp.NET": { + "type": "CentralTransitive", + "requested": "[1.4.1, )", + "resolved": "1.4.1", + "contentHash": "UXjZ80T6BfVACJWmEcz4UFZ93hwX3STKojKvVpPk3qUhubjnLwIiZMsI4Hh91HhYxC0JlatNdNrVK2wkv4O9/Q==" + }, "Polly": { "type": "CentralTransitive", "requested": "[8.8.1, )", @@ -849,6 +1949,12 @@ "System.Drawing.Common": "6.0.0" } }, + "Scalar.AspNetCore": { + "type": "CentralTransitive", + "requested": "[2.18.3, )", + "resolved": "2.18.3", + "contentHash": "6KXPOkCNnoZTXBl8GVNxq/zpS9UdGnz1a23EWy3CEiwYbZKQ5gi2APZ5mBruXcdXIr+ZXSZYiwX81UagjKFxeg==" + }, "Scrutor": { "type": "CentralTransitive", "requested": "[7.0.0, )", @@ -859,6 +1965,60 @@ "Microsoft.Extensions.DependencyModel": "10.0.0" } }, + "Serilog.AspNetCore": { + "type": "CentralTransitive", + "requested": "[10.0.0, )", + "resolved": "10.0.0", + "contentHash": "a/cNa1mY4On1oJlfGG1wAvxjp5g7OEzk/Jf/nm7NF9cWoE7KlZw1GldrifUBWm9oKibHkR7Lg/l5jy3y7ACR8w==", + "dependencies": { + "Serilog": "4.3.0", + "Serilog.Extensions.Hosting": "10.0.0", + "Serilog.Formatting.Compact": "3.0.0", + "Serilog.Settings.Configuration": "10.0.0", + "Serilog.Sinks.Console": "6.1.1", + "Serilog.Sinks.Debug": "3.0.0", + "Serilog.Sinks.File": "7.0.0" + } + }, + "Serilog.Sinks.Console": { + "type": "CentralTransitive", + "requested": "[6.1.1, )", + "resolved": "6.1.1", + "contentHash": "8jbqgjUyZlfCuSTaJk6lOca465OndqOz3KZP6Cryt/IqZYybyBu7GP0fE/AXBzrrQB3EBmQntBFAvMVz1COvAA==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "Serilog.Sinks.File": { + "type": "CentralTransitive", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "fKL7mXv7qaiNBUC71ssvn/dU0k9t0o45+qm2XgKAlSt19xF+ijjxyA3R6HmCgfKEKwfcfkwWjayuQtRueZFkYw==", + "dependencies": { + "Serilog": "4.2.0" + } + }, + "SQLitePCLRaw.bundle_e_sqlite3": { + "type": "CentralTransitive", + "requested": "[3.0.5, )", + "resolved": "3.0.5", + "contentHash": "SW8iASIyWMrLzqabUHYQRvALhvD4ylSBsj4PgEVGwc36kQjc9xT5kSV/XQ9rU7nIpBWD+LPyX3Hlw5FzyUzGeQ==", + "dependencies": { + "SQLite": "3.53.4", + "SQLitePCLRaw.config.e_sqlite3": "3.0.5" + } + }, + "StackExchange.Redis": { + "type": "CentralTransitive", + "requested": "[3.4.20, )", + "resolved": "3.4.20", + "contentHash": "eIPMxCzqw3BMWp1GOOcafs7RPrScSHiCT9b1DIEJ49h9b7tHBw21+rN6gLWdQmJzvR+Wzwx3obmCp3FpgKuUSg==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "10.0.13", + "RESPite": "3.4.20", + "System.IO.Hashing": "10.0.13" + } + }, "System.IdentityModel.Tokens.Jwt": { "type": "CentralTransitive", "requested": "[8.23.0, )", @@ -869,6 +2029,18 @@ "Microsoft.IdentityModel.Tokens": "8.23.0" } }, + "System.Linq.Dynamic.Core": { + "type": "CentralTransitive", + "requested": "[1.7.4, )", + "resolved": "1.7.4", + "contentHash": "2VJGKUdPjA59aqv/ehvBS+oVoFQqqsiVZlbcyDmuwypgy96Ss1/b8U13Yufk0TXtzveMWAPQAfnZzH+bs1r7Vw==" + }, + "System.Security.Cryptography.Pkcs": { + "type": "CentralTransitive", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "Wz+IgL2xpg8KJ4i2VWj6uz1PmZNu4Q0Ljlwd73P9Vze5NcOBtctLii3itV0PB2MpOqwqDEGfB6RCdv94A4E5yQ==" + }, "xunit.v3.extensibility.core": { "type": "CentralTransitive", "requested": "[4.0.2, )", @@ -877,6 +2049,15 @@ "dependencies": { "xunit.v3.common": "[4.0.2]" } + }, + "Yarp.ReverseProxy": { + "type": "CentralTransitive", + "requested": "[2.3.0, )", + "resolved": "2.3.0", + "contentHash": "gxtkN3a+9biu9V9Zd5NaTO6VZWXAnS2mhQ0R/VXmSPoTuiQNZsakKikrKpDtKxrL5nUYzbRsHtl40WNq+ZBKKg==", + "dependencies": { + "System.IO.Hashing": "8.0.0" + } } } } diff --git a/Tests/Presentation/MMCA.Common.UI.Gallery/Components/App.razor b/Tests/Presentation/MMCA.Common.UI.Gallery/Components/App.razor index 8c2fdcbd..dfa94aec 100644 --- a/Tests/Presentation/MMCA.Common.UI.Gallery/Components/App.razor +++ b/Tests/Presentation/MMCA.Common.UI.Gallery/Components/App.razor @@ -26,6 +26,7 @@ + diff --git a/Tests/Presentation/MMCA.Common.UI.Gallery/GalleryHost.cs b/Tests/Presentation/MMCA.Common.UI.Gallery/GalleryHost.cs index 6c4829d8..f9c2d667 100644 --- a/Tests/Presentation/MMCA.Common.UI.Gallery/GalleryHost.cs +++ b/Tests/Presentation/MMCA.Common.UI.Gallery/GalleryHost.cs @@ -10,6 +10,7 @@ using MMCA.Common.UI.Services.Auth; using MMCA.Common.UI.Services.Auth.Tokens; using MMCA.Common.UI.Services.Notifications; +using MMCA.Common.UI.Web.Pwa; using MudBlazor.Services; namespace MMCA.Common.UI.Gallery; @@ -129,6 +130,9 @@ public static WebApplication BuildApp(string[] args) app.MapGet("/health", () => Results.Ok("Healthy")); + // The installable-web-app worker every consumer host maps (pwa-register.js in App.razor). + app.MapCommonServiceWorker(); + // The real Login/Register/Home pages live in the MMCA.Common.UI assembly; the gallery's own // pages (e.g. /components) come from App's assembly automatically. app.MapRazorComponents() diff --git a/Tests/Presentation/MMCA.Common.UI.Gallery/MMCA.Common.UI.Gallery.csproj b/Tests/Presentation/MMCA.Common.UI.Gallery/MMCA.Common.UI.Gallery.csproj index 9b13b706..2cc06dc9 100644 --- a/Tests/Presentation/MMCA.Common.UI.Gallery/MMCA.Common.UI.Gallery.csproj +++ b/Tests/Presentation/MMCA.Common.UI.Gallery/MMCA.Common.UI.Gallery.csproj @@ -11,5 +11,8 @@ + +
diff --git a/Tests/Presentation/MMCA.Common.UI.Gallery/packages.lock.json b/Tests/Presentation/MMCA.Common.UI.Gallery/packages.lock.json index 6dd55796..450fa180 100644 --- a/Tests/Presentation/MMCA.Common.UI.Gallery/packages.lock.json +++ b/Tests/Presentation/MMCA.Common.UI.Gallery/packages.lock.json @@ -41,6 +41,62 @@ "StyleCop.Analyzers.Unstable": "1.2.0.556" } }, + "Asp.Versioning.Abstractions": { + "type": "Transitive", + "resolved": "10.2.1", + "contentHash": "jMBztsVim+rYVrkNY23dMuOjTGXGQ9+je1xb3i17KgUof7OcBZtMMDduEWoCQ52SpTlYqKsuzgJyUMCMOFCBfg==" + }, + "Asp.Versioning.Http": { + "type": "Transitive", + "resolved": "10.2.1", + "contentHash": "XaVOKS4AV6a6JdFsiuyLkNwU0ilWhUK2U71mBEXJsgi5AGpo24UkfZ4KUhpRGpuMmQNrugS7yxCIscGcnujdFA==", + "dependencies": { + "Asp.Versioning.Abstractions": "10.2.1" + } + }, + "AspNetCore.HealthChecks.Redis": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "yNH0h8GLRbAf+PU5HNVLZ5hNeyq9mDVmRKO9xuZsme/znUYoBJlQvI0gq45gaZNlLncCHkMhR4o90MuT+gxxPw==", + "dependencies": { + "StackExchange.Redis": "2.7.4" + } + }, + "Azure.Core": { + "type": "Transitive", + "resolved": "1.44.1", + "contentHash": "YyznXLQZCregzHvioip07/BkzjuWNXogJEVz9T5W6TwjNr17ax41YGzYMptlo2G10oLCuVPoyva62y0SIRDixg==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "6.0.0", + "System.ClientModel": "1.1.0", + "System.Memory.Data": "6.0.0" + } + }, + "Dapper": { + "type": "Transitive", + "resolved": "2.1.89", + "contentHash": "1VjFE664wnxvuhlgP8kS4PeFFF4jqD3VkbIHW6Zlc52zuibgcz5ICnIHcQXlTp6pURpPNGLV0ZpNe5x9KePJnA==" + }, + "FluentValidation": { + "type": "Transitive", + "resolved": "12.2.0", + "contentHash": "DR3lFbdnKucaaj1/8zMNOACMz/64igzox1yVZSFVsLxYB5mxAB+wFP1WZ8fjwrZnbU1KA1DoMzHKYKxUfuZ4wQ==" + }, + "MassTransit.Abstractions": { + "type": "Transitive", + "resolved": "8.5.12", + "contentHash": "NauNyaQsJVfLSY3Jw/zr26POQpEnfjerHCrrK3kUmkCDIpC63PZD1AjihGFgq0KH5eGagMJ7GRHN74w8mI69Kg==" + }, + "MessagePack.Annotations": { + "type": "Transitive", + "resolved": "3.1.12", + "contentHash": "LdI67sY7F3KK+JsrG02+DP1XFkowaZSoyfL2M88hjm1MOOsjf8amBLAJolV+zxoPUZf3uGbKzq1cMQD8PlpSpA==" + }, + "MessagePackAnalyzer": { + "type": "Transitive", + "resolved": "3.1.12", + "contentHash": "iNSNatPh6bafRUbkQKlClExjpPpd8hiZgfZsodGf7bheIlkizGbMzsJ2mPui8jOHRe4Ky9eg5ou/fFzI7CT3fg==" + }, "Microsoft.AspNetCore.Http.Connections.Client": { "type": "Transitive", "resolved": "10.0.14", @@ -51,15 +107,171 @@ "resolved": "10.0.14", "contentHash": "VqJeoJoI2LZrG3hic5p5nBo9FOdt8nwJswKVff+7Zl7L/Bo9YQ5vpuPzyQn3/a0y4eIP7KX7Gq3cb4cXYecbFA==" }, + "Microsoft.Azure.Cosmos": { + "type": "Transitive", + "resolved": "3.63.1", + "contentHash": "ocxXpxJkhyQv0OH6pTBoKKuz+VzR1zb2x6E7r3D6Kdmjb6zmFyrDTyaxQ3i/BD+V3sztCfNjXUQFREAo9mdyLg==", + "dependencies": { + "Azure.Core": "1.44.1", + "Microsoft.Bcl.AsyncInterfaces": "6.0.0", + "Microsoft.Bcl.HashCode": "1.1.0", + "System.Configuration.ConfigurationManager": "6.0.0" + } + }, + "Microsoft.Bcl.AsyncInterfaces": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg==" + }, "Microsoft.Bcl.Cryptography": { "type": "Transitive", "resolved": "10.0.2", "contentHash": "LG9Yll3B5aNpxv0+D47g6LiOiKBIlodhcHdQwcYzo8VeexFLGqx5ymetmA2aBRyo9cCcWsQWrFsdbsr8LvmWDw==" }, + "Microsoft.Bcl.HashCode": { + "type": "Transitive", + "resolved": "1.1.0", + "contentHash": "J2G1k+u5unBV+aYcwxo94ip16Rkp65pgWFb0R6zwJipzWNMgvqlWeuI7/+R+e8bob66LnSG+llLJ+z8wI94cHg==" + }, + "Microsoft.Data.SqlClient.Extensions.Abstractions": { + "type": "Transitive", + "resolved": "7.1.1", + "contentHash": "qP/zUOCJwfKqWNC9o+TWqltfNbLnZi1APNpJZgj0yeEJhoI+h+eoQLX+331yZHNOlDxdafZLP5arW/yrS1jAAw==", + "dependencies": { + "Microsoft.Data.SqlClient.Internal.Logging": "[7.1.1, 8.0.0)" + } + }, + "Microsoft.Data.SqlClient.Internal.Logging": { + "type": "Transitive", + "resolved": "7.1.1", + "contentHash": "bVqbATLnHQngue7U9K7GRnzvfdDa7IyiBU2vijfU2vBMBSZrAnQp/wXqNSfaVonckSaMXUk07wfujTqy9IVMdw==" + }, + "Microsoft.Data.SqlClient.SNI.runtime": { + "type": "Transitive", + "resolved": "7.1.0", + "contentHash": "rWunOb6Dby0lcI82PohARcRbF+4x4wNKxnKRSHXhuwZMu8/cCS68DCfhceq4bv1gUEfoL5dWXHYnfxVvLQUN+Q==" + }, + "Microsoft.Data.Sqlite": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "H+iC5IvkCCKSNHXzL3JARvDn7VpkvuJM91KVB89sKjeTF/KX/BocNNh93ZJtX5MCQKb/z4yVKgkU2sVIq+xKfg==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "8.0.0", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.6" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "Transitive", + "resolved": "10.0.14", + "contentHash": "1p9rO3Q2X/L/9YrYog3vaDzi8u+WZfJCOkDYoHqmofqYP0DLPLPyZcS2Rnh/79JXAodgbs1AgsaNwLpIvC3Xew==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.13" + } + }, + "Microsoft.EntityFrameworkCore": { + "type": "Transitive", + "resolved": "10.0.14", + "contentHash": "vY3931PYPIDBbKovGHbACmpOWvURvKNyRXfCjMh5yLW+FH6vLWeqUu2xzSCRo4Oz4tgx9GYpd0JlV5LDyAoQdg==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "10.0.14", + "Microsoft.EntityFrameworkCore.Analyzers": "10.0.14" + } + }, + "Microsoft.EntityFrameworkCore.Abstractions": { + "type": "Transitive", + "resolved": "10.0.14", + "contentHash": "/SaznoTTFfKzxYEbCPAwwKBR3XT92DZgH4jJ3/cqs2skP3o2D+TL6i9Aaj+8Azwtu6/sRd0ve4P2mN12nfVmCw==" + }, + "Microsoft.EntityFrameworkCore.Analyzers": { + "type": "Transitive", + "resolved": "10.0.14", + "contentHash": "gaANlGNTxkgODX2eeVT8jjd3AmlFilQV4DFf8qoW30+wUCm2o4N7nEHtZvnHIwfhaJni2DqcjE47Au7tC0Q5jA==" + }, + "Microsoft.EntityFrameworkCore.Relational": { + "type": "Transitive", + "resolved": "10.0.14", + "contentHash": "Ut0kgtfoKX9QElQVEXSEAgdQc79jISWStVWSOhfPDDHNSKMwFzSXG3gtdYFTAbsBoV+8NtXdVaj4xwdqeky8UA==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "10.0.14" + } + }, + "Microsoft.EntityFrameworkCore.Sqlite.Core": { + "type": "Transitive", + "resolved": "10.0.14", + "contentHash": "08VGlMQ9WbK869as9Ho+VZQbM5Qu6zdorgeh6ShVwQgLYgfUBiaIm02T7spfW7Xc1MBHCvclwPgGWpvx5BYGXQ==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "10.0.14", + "Microsoft.EntityFrameworkCore.Relational": "10.0.14", + "Microsoft.Extensions.DependencyModel": "10.0.14", + "SQLitePCLRaw.core": "2.1.13" + } + }, + "Microsoft.Extensions.AmbientMetadata.Application": { + "type": "Transitive", + "resolved": "10.11.0", + "contentHash": "aMCm7C6CexZT8W/p8zRp4BoxSnqRs3MmkBF7FvPIXC92b7vqs2SL0J+mVJi5W2Mk9Vb4ZRFWe9sdzFew6zUl1w==" + }, + "Microsoft.Extensions.Compliance.Abstractions": { + "type": "Transitive", + "resolved": "10.11.0", + "contentHash": "2mjAb3Sm5k6uNeI+IyXpggYMpfdDDGgZSwUm9QQsm5QgZboJWbm2eU+6wNMrlfFEao11yq6JS1zXI7SVQQ0NuQ==" + }, + "Microsoft.Extensions.DependencyInjection.AutoActivation": { + "type": "Transitive", + "resolved": "10.11.0", + "contentHash": "h/sovspxVmT2DTIbWORMG0Gi3zVcPQzNl3kbwtpo0LoUXYbe2+66wQqZYwaF2ZWKN8HDdHv5yoc7d0DbDBBlnA==" + }, "Microsoft.Extensions.DependencyModel": { "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "RFYJR7APio/BiqdQunRq6DB+nDB6nc2qhHr77mlvZ0q0BT8PubMXN7XicmfzCbrDE/dzhBnUKBRXLTcqUiZDGg==" + "resolved": "10.0.14", + "contentHash": "N8OcqM0370wSXMJ3ZxO66rSElHrIgxvpfUn0vV7zRj7NvKo0nfwgEoTmC3Yz3860o60IaQ4KIPyeLIGX9EeNWA==" + }, + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { + "type": "Transitive", + "resolved": "10.11.0", + "contentHash": "Dp/FaAPo3U9h3HsWT1dcdRRV//rm+MQF5iKpY/WxL5swwV+wZNE5eyJZ0kgy9Upl/kHz4ejpiLMloxDIuJaoJQ==" + }, + "Microsoft.Extensions.Http.Diagnostics": { + "type": "Transitive", + "resolved": "10.11.0", + "contentHash": "iFcxcuMF/21LO+tDqDyzYVvokJUH03cNalmOJhmjyQSMV3dR4JAgcUBTV1iVH/yruC8wG2RNjvW0xcUgYqmrGg==", + "dependencies": { + "Microsoft.Extensions.Telemetry": "10.11.0" + } + }, + "Microsoft.Extensions.Resilience": { + "type": "Transitive", + "resolved": "10.11.0", + "contentHash": "GbN7R2BOoZf3F7aK02nz9kWf6ttbvVzpw1orGG30VmrKTmRV6pasQOCfF2fjKXyHIMC/lAiBEYHCKjgf0OiGvQ==", + "dependencies": { + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "10.11.0", + "Microsoft.Extensions.Telemetry.Abstractions": "10.11.0", + "Polly.Extensions": "8.4.2", + "Polly.RateLimiting": "8.4.2" + } + }, + "Microsoft.Extensions.ServiceDiscovery.Abstractions": { + "type": "Transitive", + "resolved": "10.11.0", + "contentHash": "QzST85xtGR86sXg9kI8f4/+ziBo/B1JC93IEoMmy2g03vaxZZuxmmPrrWX6QeL4Knb1IzouXLyXWppx77tUPYg==" + }, + "Microsoft.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "10.11.0", + "contentHash": "2meCfABvkLPtEBBwGzItIGnhrex1AEn2N+dHvxB5UoozeX/xTtBuUz5BRdjNI5oNgd5T31kC69WWw3BHDc9iZA==", + "dependencies": { + "Microsoft.Extensions.AmbientMetadata.Application": "10.11.0", + "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.11.0", + "Microsoft.Extensions.Telemetry.Abstractions": "10.11.0" + } + }, + "Microsoft.Extensions.Telemetry.Abstractions": { + "type": "Transitive", + "resolved": "10.11.0", + "contentHash": "FzcHRan/C2g5X5KD0kPlL4tTROFRpM8sqcXfOIi6FGLsw/d2yoOYMbLJ5hyb8N5QgOVW7e1TdwEN4zVUfcwfdw==", + "dependencies": { + "Microsoft.Extensions.Compliance.Abstractions": "10.11.0" + } }, "Microsoft.IdentityModel.Abstractions": { "type": "Transitive", @@ -82,6 +294,23 @@ "Microsoft.IdentityModel.Abstractions": "8.23.0" } }, + "Microsoft.IdentityModel.Protocols": { + "type": "Transitive", + "resolved": "8.19.2", + "contentHash": "sGxSsSrZXNmca6D+jHH2rVRyo2nNRd/g4H9CFbPmLLq0xgoH1U0orLWE5minfijw7+zq49tBs7txenbfAErRoQ==", + "dependencies": { + "Microsoft.IdentityModel.Tokens": "8.19.2" + } + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect": { + "type": "Transitive", + "resolved": "8.19.2", + "contentHash": "1XOcyY36cVymzE3qKdzKaUEZ4Pzt7ZpSa14JZoPPK1NLFUkQDs85TCqpV6XDo0YjFXj6nVK00AfOHppjghjhtw==", + "dependencies": { + "Microsoft.IdentityModel.Protocols": "8.19.2", + "System.IdentityModel.Tokens.Jwt": "8.19.2" + } + }, "Microsoft.IdentityModel.Tokens": { "type": "Transitive", "resolved": "8.23.0", @@ -91,16 +320,170 @@ "Microsoft.IdentityModel.Logging": "8.23.0" } }, + "Microsoft.NET.StringTools": { + "type": "Transitive", + "resolved": "17.11.4", + "contentHash": "mudqUHhNpeqIdJoUx2YDWZO/I9uEDYVowan89R6wsomfnUJQk6HteoQTlNjZDixhT2B4IXMkMtgZtoceIjLRmA==" + }, + "Microsoft.SqlServer.Server": { + "type": "Transitive", + "resolved": "1.0.0", + "contentHash": "N4KeF3cpcm1PUHym1RmakkzfkEv3GRMyofVv40uXsQhCQeglr2OHNcUk2WOG51AKpGO8ynGpo9M/kFXSzghwug==" + }, "Microsoft.Win32.SystemEvents": { "type": "Transitive", "resolved": "6.0.0", "contentHash": "hqTM5628jSsQiv+HGpiq3WKBl2c8v1KZfby2J6Pr7pEPlK9waPdgEO6b8A/+/xn/yZ9ulv8HuqK71ONy2tg67A==" }, + "MiniProfiler.AspNetCore": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "meedJsjpYOeHPhE8H6t+dGQ9zLxcCQVpi4DXzmxmYAXywmTzlo6jv2IASUv5QijTU0CxsROln3FHd8RsTO8Z8A==", + "dependencies": { + "MiniProfiler.Shared": "4.5.4" + } + }, + "Newtonsoft.Json": { + "type": "Transitive", + "resolved": "13.0.4", + "contentHash": "pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A==" + }, + "OpenTelemetry": { + "type": "Transitive", + "resolved": "1.20.1", + "contentHash": "+XDw3fYbiv1a40aFnDJSQleeuUJciXuhoIA19XmcGhT47Hy/xZRqk8NCjHUDKrg72Ixjthicecp8ygBDNeH/Jw==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "1.20.1" + } + }, + "OpenTelemetry.Api.ProviderBuilderExtensions": { + "type": "Transitive", + "resolved": "1.20.1", + "contentHash": "eDzDY/jTBqRytkYECmVKF7ZP5sKmCIqv1SSnA5BSWltIIvc3931TOMRyCW1qCGNIgmtldtJhISnsmFNxOCfauQ==", + "dependencies": { + "OpenTelemetry.Api": "1.20.1" + } + }, + "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" + } + }, + "RabbitMQ.Client": { + "type": "Transitive", + "resolved": "7.2.2", + "contentHash": "k4b6RnTXpLbsF96V93ooNYxgPMnoA2tEm24B6AXNJr1mG8wwNYdA1XJtgU66L5xqeGyveS7SJriRzlX3cbqQNA==" + }, + "RESPite": { + "type": "Transitive", + "resolved": "3.4.20", + "contentHash": "MRBfXbMStwHGzM2UsbWsmh7mF/WDh4kNonrhOj5HLfkVp+PIstu4MuElusyJLHu5MkOIQj9+u1xWQ5YeJTveHQ==" + }, + "Serilog": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "+cDryFR0GRhsGOnZSKwaDzRRl4MupvJ42FhCE4zhQRVanX0Jpg6WuCBk59OVhVDPmab1bB+nRykAnykYELA9qQ==" + }, + "Serilog.Extensions.Hosting": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "E7juuIc+gzoGxgzFooFgAV8g9BfiSXNKsUok9NmEpyAXg2odkcPsMa/Yo4axkJRlh0se7mkYQ1GXDaBemR+b6w==", + "dependencies": { + "Serilog": "4.3.0", + "Serilog.Extensions.Logging": "10.0.0" + } + }, + "Serilog.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "vx0kABKl2dWbBhhqAfTOk53/i8aV/5VaT3a6il9gn72Wqs2pM7EK2OB6No6xdqK2IaY6Zf9gdjLuK9BVa2rT+Q==", + "dependencies": { + "Serilog": "4.2.0" + } + }, + "Serilog.Formatting.Compact": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "wQsv14w9cqlfB5FX2MZpNsTawckN4a8dryuNGbebB/3Nh1pXnROHZov3swtu3Nj5oNG7Ba+xdu7Et/ulAUPanQ==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "Serilog.Settings.Configuration": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "LNq+ibS1sbhTqPV1FIE69/9AJJbfaOhnaqkzcjFy95o+4U+STsta9mi97f1smgXsWYKICDeGUf8xUGzd/52/uA==", + "dependencies": { + "Microsoft.Extensions.DependencyModel": "10.0.0", + "Serilog": "4.3.0" + } + }, + "Serilog.Sinks.Debug": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "4BzXcdrgRX7wde9PmHuYd9U6YqycCC28hhpKonK7hx0wb19eiuRj16fPcPSVp0o/Y1ipJuNLYQ00R3q2Zs8FDA==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "SQLite": { + "type": "Transitive", + "resolved": "3.53.4", + "contentHash": "KN7jeWqgUPeBRe1FlcpZURzxomuKKEKHmBBQfg+Nx7NkY1LjKhzHvH+3ASkNvhayESE34nMBinL9CV21JfPRJw==" + }, + "SQLitePCLRaw.config.e_sqlite3": { + "type": "Transitive", + "resolved": "3.0.5", + "contentHash": "aSk8WE5tF2MybESMgtZAEyMVCAWA0nBqOMc48HFoa9UoSdtm3goDXVzNRnefeKIwE6bV9NaNXptn1F9ReMQI0Q==", + "dependencies": { + "SQLitePCLRaw.provider.e_sqlite3": "3.0.5" + } + }, + "SQLitePCLRaw.core": { + "type": "Transitive", + "resolved": "3.0.5", + "contentHash": "k81AYXXRCw3Zj8rOhyBoCsx/U97KYDFI2CSKr/ijl5BwpsW/hX/4kBiDmerFaoust8nxBwa0IHQFw8MmSHRtnQ==" + }, + "SQLitePCLRaw.provider.e_sqlite3": { + "type": "Transitive", + "resolved": "3.0.5", + "contentHash": "um8YSWduhhuskTG2bHfZrBqMNQOydfU8pcseT+cu5RivOGyoUbCrGXxgoRNTmRYw2VbMWnEZVVFcneZT/5dsBg==", + "dependencies": { + "SQLitePCLRaw.core": "3.0.5" + } + }, "StyleCop.Analyzers.Unstable": { "type": "Transitive", "resolved": "1.2.0.556", "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.1.0", + "contentHash": "UocOlCkxLZrG2CKMAAImPcldJTxeesHnHGHwhJ0pNlZEvEXcWKuQvVOER2/NiOkJGRJk978SNdw3j6/7O9H1lg==", + "dependencies": { + "System.Memory.Data": "1.0.2" + } + }, + "System.Configuration.ConfigurationManager": { + "type": "Transitive", + "resolved": "9.0.18", + "contentHash": "/1q0MHB2xKyTFRC5tk+oL3Ahi+QK0UPI6Qk6Xc5z5BW6otR2T9wwWmEW/LZX98cq7UOmu+7sZ5HNwuq61zrNtg==", + "dependencies": { + "System.Security.Cryptography.ProtectedData": "9.0.18" + } + }, "System.Drawing.Common": { "type": "Transitive", "resolved": "6.0.0", @@ -109,6 +492,114 @@ "Microsoft.Win32.SystemEvents": "6.0.0" } }, + "System.IO.Hashing": { + "type": "Transitive", + "resolved": "10.0.13", + "contentHash": "ZlcywyQ7FJmgOV2nctdfOEPGS0kRK8T2CdOoPr6F4HPYpmjSo6GQfj3yTyOzNO6B+2U84/JKSPkJJMWqLmVsMw==" + }, + "System.Memory.Data": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "ntFHArH3I4Lpjf5m4DCXQHJuGwWPNVJPaAvM95Jy/u+2Yzt2ryiyIN04LAogkjP9DeRcEOiviAjQotfmPq/FrQ==" + }, + "System.Security.Cryptography.ProtectedData": { + "type": "Transitive", + "resolved": "9.0.18", + "contentHash": "1/iz9Eex1TBMYdAk+m3igaMvL+nk+rY1EqL6u93an/j1ghxmB24vGOKXkVFy3NSPA39s1H/+SNoK257tHoXoLA==" + }, + "mmca.common.api": { + "type": "Project", + "dependencies": { + "Asp.Versioning.Mvc": "[10.2.1, )", + "Asp.Versioning.Mvc.ApiExplorer": "[10.2.1, )", + "AspNet.Security.OAuth.Apple": "[10.0.0, )", + "AspNet.Security.OAuth.GitHub": "[10.0.0, )", + "MMCA.Common.Application": "[1.0.0, )", + "MMCA.Common.Infrastructure": "[1.0.0, )", + "Microsoft.AspNetCore.Authentication.Google": "[10.0.14, )", + "Microsoft.AspNetCore.Authentication.JwtBearer": "[10.0.14, )", + "Microsoft.AspNetCore.OpenApi": "[10.0.14, )", + "Microsoft.Data.SqlClient": "[7.1.1, )", + "Microsoft.FeatureManagement.AspNetCore": "[4.8.0, )", + "Microsoft.OpenApi": "[2.13.0, )", + "MiniProfiler.AspNetCore.Mvc": "[4.5.4, )", + "Scalar.AspNetCore": "[2.18.3, )", + "System.IdentityModel.Tokens.Jwt": "[8.23.0, )" + } + }, + "mmca.common.application": { + "type": "Project", + "dependencies": { + "FluentValidation.DependencyInjectionExtensions": "[12.2.0, )", + "MMCA.Common.Domain": "[1.0.0, )", + "Microsoft.FeatureManagement": "[4.8.0, )", + "MiniProfiler.Shared": "[4.5.4, )", + "Scrutor": "[7.0.0, )", + "System.Linq.Dynamic.Core": "[1.7.4, )" + } + }, + "mmca.common.aspire": { + "type": "Project", + "dependencies": { + "AspNetCore.HealthChecks.NpgSql": "[9.0.0, )", + "AspNetCore.HealthChecks.Rabbitmq": "[9.0.0, )", + "AspNetCore.HealthChecks.SqlServer": "[9.0.0, )", + "AspNetCore.HealthChecks.Sqlite": "[9.0.0, )", + "Aspire.StackExchange.Redis": "[13.6.4, )", + "Aspire.StackExchange.Redis.DistributedCaching": "[13.6.4, )", + "MMCA.Common.Shared": "[1.0.0, )", + "Microsoft.AspNetCore.OutputCaching.StackExchangeRedis": "[10.0.14, )", + "Microsoft.Data.SqlClient": "[7.1.1, )", + "Microsoft.Extensions.Http.Resilience": "[10.11.0, )", + "Microsoft.Extensions.ServiceDiscovery": "[10.11.0, )", + "Npgsql": "[10.0.3, )", + "OpenTelemetry.Api": "[1.20.1, )", + "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.20.1, )", + "OpenTelemetry.Extensions.Hosting": "[1.20.1, )", + "OpenTelemetry.Instrumentation.AspNetCore": "[1.20.1, )", + "OpenTelemetry.Instrumentation.Http": "[1.20.1, )", + "OpenTelemetry.Instrumentation.Runtime": "[1.20.1, )", + "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", + "Serilog.AspNetCore": "[10.0.0, )", + "Serilog.Sinks.Console": "[6.1.1, )", + "Serilog.Sinks.File": "[7.0.0, )", + "StackExchange.Redis": "[3.4.20, )", + "System.Security.Cryptography.Pkcs": "[10.0.14, )" + } + }, + "mmca.common.domain": { + "type": "Project", + "dependencies": { + "MMCA.Common.Shared": "[1.0.0, )" + } + }, + "mmca.common.infrastructure": { + "type": "Project", + "dependencies": { + "Cronos": "[0.13.0, )", + "MMCA.Common.Application": "[1.0.0, )", + "MassTransit": "[8.5.12, )", + "MassTransit.RabbitMQ": "[8.5.12, )", + "MassTransit.SqlTransport.PostgreSQL": "[8.5.12, )", + "MessagePack": "[3.1.12, )", + "Microsoft.AspNetCore.OutputCaching.StackExchangeRedis": "[10.0.14, )", + "Microsoft.AspNetCore.SignalR.StackExchangeRedis": "[10.0.14, )", + "Microsoft.Data.SqlClient": "[7.1.1, )", + "Microsoft.EntityFrameworkCore.Cosmos": "[10.0.14, )", + "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.14, )", + "Microsoft.EntityFrameworkCore.Sqlite": "[10.0.14, )", + "Microsoft.Extensions.Caching.Hybrid": "[10.11.0, )", + "Microsoft.Extensions.Http.Resilience": "[10.11.0, )", + "MiniProfiler.EntityFrameworkCore": "[4.5.4, )", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, )", + "Otp.NET": "[1.4.1, )", + "Polly.Core": "[8.8.1, )", + "SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )", + "StackExchange.Redis": "[3.4.20, )", + "System.IdentityModel.Tokens.Jwt": "[8.23.0, )", + "System.Security.Cryptography.Pkcs": "[10.0.14, )" + } + }, "mmca.common.shared": { "type": "Project" }, @@ -125,6 +616,203 @@ "System.IdentityModel.Tokens.Jwt": "[8.23.0, )" } }, + "mmca.common.ui.web": { + "type": "Project", + "dependencies": { + "MMCA.Common.API": "[1.0.0, )", + "MMCA.Common.Aspire": "[1.0.0, )", + "MMCA.Common.Shared": "[1.0.0, )", + "MMCA.Common.UI": "[1.0.0, )", + "Microsoft.Extensions.ServiceDiscovery": "[10.11.0, )", + "Yarp.ReverseProxy": "[2.3.0, )" + } + }, + "Asp.Versioning.Mvc": { + "type": "CentralTransitive", + "requested": "[10.2.1, )", + "resolved": "10.2.1", + "contentHash": "fMzUraYZOAobKQn2PffrgPsULbCWFeWroYRYndPasxPsiQl1+i8x5qYRuMYZAbzDrBnymPUMBxT2gZG2PwbkcQ==", + "dependencies": { + "Asp.Versioning.Http": "10.2.1" + } + }, + "Asp.Versioning.Mvc.ApiExplorer": { + "type": "CentralTransitive", + "requested": "[10.2.1, )", + "resolved": "10.2.1", + "contentHash": "Tv1megkpUy+3FN9yfVJKIcYMLXTe5CPs4zftBxGaZhADJe6h9CJZ2Okh5cG4PoE7wzHTef+AK++8IuZta3Ppog==", + "dependencies": { + "Asp.Versioning.Mvc": "10.2.1" + } + }, + "Aspire.StackExchange.Redis": { + "type": "CentralTransitive", + "requested": "[13.6.4, )", + "resolved": "13.6.4", + "contentHash": "DvCqdDJxkQWsMxSWklp4d0b8DvcZtNj0d+Bt+h6mqrS2pB887V+ZeX3fUKA3EuSW/ghpC9yrNMa93ZxBqGHzvA==", + "dependencies": { + "AspNetCore.HealthChecks.Redis": "9.0.0", + "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.10.0", + "OpenTelemetry.Extensions.Hosting": "1.17.0", + "StackExchange.Redis": "2.13.17", + "System.IO.Hashing": "10.0.12" + } + }, + "Aspire.StackExchange.Redis.DistributedCaching": { + "type": "CentralTransitive", + "requested": "[13.6.4, )", + "resolved": "13.6.4", + "contentHash": "8A2L8+R2d3+4E00fAFQi+meQcZIp5Hkib2joh34ZFix9VD8918ECUXvQBZW6RD8jfrOhhrVt6lB1XIH3kKtZfg==", + "dependencies": { + "AspNetCore.HealthChecks.Redis": "9.0.0", + "Aspire.StackExchange.Redis": "13.6.4", + "Microsoft.Extensions.Caching.StackExchangeRedis": "10.0.12", + "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.10.0", + "OpenTelemetry.Extensions.Hosting": "1.17.0", + "StackExchange.Redis": "2.13.17", + "System.IO.Hashing": "10.0.12" + } + }, + "AspNet.Security.OAuth.Apple": { + "type": "CentralTransitive", + "requested": "[10.0.0, )", + "resolved": "10.0.0", + "contentHash": "nbZRB7YLt+cByQPZ06mRWlZYXLhqNt9KtUArOqBS1g2gJ8A9f3J5qLeTjvmzKJjXI7CCC+jGwDLrMOD9H0yYjw==", + "dependencies": { + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.14.0" + } + }, + "AspNet.Security.OAuth.GitHub": { + "type": "CentralTransitive", + "requested": "[10.0.0, )", + "resolved": "10.0.0", + "contentHash": "PbOrAso/hlCS2p3YHHq94C5W/6851xyMT8ZEkAc3eGQNlsu3Siwu/D98nzCKyOKmB+KNu9MirWpmO66PmEIexQ==" + }, + "AspNetCore.HealthChecks.NpgSql": { + "type": "CentralTransitive", + "requested": "[9.0.0, )", + "resolved": "9.0.0", + "contentHash": "npc58/AD5zuVxERdhCl2Kb7WnL37mwX42SJcXIwvmEig0/dugOLg3SIwtfvvh3TnvTwR/sk5LYNkkPaBdks61A==", + "dependencies": { + "Npgsql": "8.0.3" + } + }, + "AspNetCore.HealthChecks.Rabbitmq": { + "type": "CentralTransitive", + "requested": "[9.0.0, )", + "resolved": "9.0.0", + "contentHash": "7WSQ7EwioA5niakzzLtGVcZMEOh+42fSwrI24vnNsT7gZuVGOViNekyz38G6wBPYKcpL/lUkMdg3ZaCiZTi/Dw==", + "dependencies": { + "RabbitMQ.Client": "7.0.0" + } + }, + "AspNetCore.HealthChecks.Sqlite": { + "type": "CentralTransitive", + "requested": "[9.0.0, )", + "resolved": "9.0.0", + "contentHash": "SHpWYRR7jh+OIERWK2iz/LhmhA17dL91J67J+0Pm/pkyEg6GyVYNAJzvj2SJPZo7Gf8oK6YVmLzosWbHck/eQQ==", + "dependencies": { + "Microsoft.Data.Sqlite": "8.0.0" + } + }, + "AspNetCore.HealthChecks.SqlServer": { + "type": "CentralTransitive", + "requested": "[9.0.0, )", + "resolved": "9.0.0", + "contentHash": "UxCf65iCF2nU1u7AcB320abjL4CRg5swCgJECY6mKk1j5lrGMfVtskWwriGs1T29pYdRig9Vra3SPnP+4G82pA==", + "dependencies": { + "Microsoft.Data.SqlClient": "5.2.2" + } + }, + "Cronos": { + "type": "CentralTransitive", + "requested": "[0.13.0, )", + "resolved": "0.13.0", + "contentHash": "Nkve+Yi0+ol3ntSBRHeW0ka9cJQ8vndSUvvkXqF9LVqwpoqWueyxu/HS275r98RDOmF7/mzRnZW5XXUBXob+TA==" + }, + "FluentValidation.DependencyInjectionExtensions": { + "type": "CentralTransitive", + "requested": "[12.2.0, )", + "resolved": "12.2.0", + "contentHash": "QpKXgiO9E6wXCh19X2Musn8MZM0xt7KQt/QrD6GDBn3MCUfy8a+rkhCzrYJNCfoxTsTRQ7bpKP8T3geTnJNNeQ==", + "dependencies": { + "FluentValidation": "12.2.0" + } + }, + "MassTransit": { + "type": "CentralTransitive", + "requested": "[8.5.12, )", + "resolved": "8.5.12", + "contentHash": "qpesi9ZPcT3+1w7HLw4rtkS0MRiX90WSaFNp3CXdaTGKhdmZn3nIozysvEpdoVfLM4Bwq9Kx7okGxRvLBY9Qcw==", + "dependencies": { + "MassTransit.Abstractions": "8.5.12" + } + }, + "MassTransit.RabbitMQ": { + "type": "CentralTransitive", + "requested": "[8.5.12, )", + "resolved": "8.5.12", + "contentHash": "j8MQni+zMmUpAQ8VKIcuBakJ2ptZy0wSahd1LCVyRUvFrI8Bg0YtFsRk6w0/R1hdD3u0TuMvPKQAaNIZe8nSxQ==", + "dependencies": { + "MassTransit": "8.5.12", + "RabbitMQ.Client": "7.2.2" + } + }, + "MassTransit.SqlTransport.PostgreSQL": { + "type": "CentralTransitive", + "requested": "[8.5.12, )", + "resolved": "8.5.12", + "contentHash": "BUeSTNizavmN1Xwhy+ZVmxmuUkhFx54w+hxgRapwvXkPoL0y0iU0iDz9R9mmvBNtuqBdvq9K7/7GtP1wnHnpaA==", + "dependencies": { + "Dapper": "2.1.89", + "MassTransit": "8.5.12", + "Npgsql": "8.0.7" + } + }, + "MessagePack": { + "type": "CentralTransitive", + "requested": "[3.1.12, )", + "resolved": "3.1.12", + "contentHash": "m1QEsd59gUj82ji5tEQbZiyjV6y0F7cYfGVhil6pAlNZpyzR7ze9TucMu4lPpi8cZAV8aNl3D9/T9J1HbFz15Q==", + "dependencies": { + "MessagePack.Annotations": "3.1.12", + "MessagePackAnalyzer": "3.1.12", + "Microsoft.NET.StringTools": "17.11.4" + } + }, + "Microsoft.AspNetCore.Authentication.Google": { + "type": "CentralTransitive", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "3enUvuEqorstWs1o2wc2hd8VgiF+fK0vZtGXl3wjE760887BNXUTh9vl86cLY+qdDujCHHWxA773nkWW4n8FBA==" + }, + "Microsoft.AspNetCore.Authentication.JwtBearer": { + "type": "CentralTransitive", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "DaTs32NtRkTabidrvhLhcXpa+Uguw0rN5FaX8Q1HmzbYtcI72iSauYlN4WmqbrXp6QQoB8fmZlHk5/bjiMTY7A==", + "dependencies": { + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.19.2" + } + }, + "Microsoft.AspNetCore.OpenApi": { + "type": "CentralTransitive", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "3M6yO4nv8fmvM/1X7DqQcMxw/ptNLBcUzZt19SBEyfZF32gqZuwoPNnYd1xlDnFvQOGOkZDncf7p9E24blcTkQ==", + "dependencies": { + "Microsoft.OpenApi": "[2.12.2, 3.0.0)" + } + }, + "Microsoft.AspNetCore.OutputCaching.StackExchangeRedis": { + "type": "CentralTransitive", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "AQALE3dbokVs4aEg/06gosTdhBilvquqsZU0DAlw4fmq7ZAbVKTlUC7b4X9LKTdL38bHldVIAuBSflLhXpy1Jg==", + "dependencies": { + "StackExchange.Redis": "2.7.27" + } + }, "Microsoft.AspNetCore.SignalR.Client": { "type": "CentralTransitive", "requested": "[10.0.14, )", @@ -135,18 +823,226 @@ "Microsoft.AspNetCore.SignalR.Client.Core": "10.0.14" } }, + "Microsoft.AspNetCore.SignalR.StackExchangeRedis": { + "type": "CentralTransitive", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "GO/fLS1/9UWayuLackhLraVdhxfPa/X+s74sNMu2zYhrQzMgYtIfJajjLDTssmBgFxVDja/2Hw6TwIRbk9PLUQ==", + "dependencies": { + "MessagePack": "2.5.303", + "StackExchange.Redis": "2.7.27" + } + }, + "Microsoft.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[7.1.1, )", + "resolved": "7.1.1", + "contentHash": "Moz4+bba/OdEM9I4jXWggduJ4sqoNcgVAQyXG/dNnGGvnS/YDr2fTjP83fg5YX3drgRki6fRAhR94P8dAZgZtQ==", + "dependencies": { + "Microsoft.Bcl.Cryptography": "9.0.18", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.1.1, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.1.1, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[7.1.0, 8.0.0)", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.18", + "System.Security.Cryptography.Pkcs": "9.0.18" + } + }, + "Microsoft.EntityFrameworkCore.Cosmos": { + "type": "CentralTransitive", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "MohabUkZjUVN0PZ0mGP0U/UmSvO2TOMDTvbEwyl2GOf+4AZI79NJXFQB+4qCqfypteG3gjMxB5Cs6HQ7tgbROw==", + "dependencies": { + "Microsoft.Azure.Cosmos": "3.63.1", + "Microsoft.EntityFrameworkCore": "10.0.14", + "Newtonsoft.Json": "13.0.4" + } + }, + "Microsoft.EntityFrameworkCore.Sqlite": { + "type": "CentralTransitive", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "lxrwnVwvlIfQD4IF4WUVupE6Qxfj3MfFftDVwo7tsGAWCKLL8Ttb8UjIt+gE4e9nRlH7EgdC6TrsArFGnNYREw==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Sqlite.Core": "10.0.14", + "Microsoft.Extensions.DependencyModel": "10.0.14", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.13", + "SQLitePCLRaw.core": "2.1.13" + } + }, + "Microsoft.EntityFrameworkCore.SqlServer": { + "type": "CentralTransitive", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "S3zuzJE5qcl4jjBwSI1x1WZp/GiwzBk1qlFjI77O1E/FZ0mtXNYRBDCfAY0x7nly2zZjM2U5XIkw7AD3DsSpEQ==", + "dependencies": { + "Microsoft.Data.SqlClient": "6.1.7", + "Microsoft.EntityFrameworkCore.Relational": "10.0.14" + } + }, + "Microsoft.Extensions.Caching.Hybrid": { + "type": "CentralTransitive", + "requested": "[10.11.0, )", + "resolved": "10.11.0", + "contentHash": "F4P+uZgDFnKfmHm0ReWJNSVXAlZmknQgkkrmEDtAdxWvVPCSZL7UPAY7Ewf8zs5qwPCGaYopZiRiPg2YGCfuhA==" + }, + "Microsoft.Extensions.Caching.StackExchangeRedis": { + "type": "CentralTransitive", + "requested": "[10.0.13, )", + "resolved": "10.0.12", + "contentHash": "iQoMgbt02dl49cv7GLNeh771xstAbg9xKpuWosYmnOU0CJ9ni10F3+1IrgvbjyaV0JGulauGRrNir50QKWonKQ==", + "dependencies": { + "StackExchange.Redis": "2.7.27" + } + }, + "Microsoft.Extensions.Http.Resilience": { + "type": "CentralTransitive", + "requested": "[10.11.0, )", + "resolved": "10.11.0", + "contentHash": "6/YEoPCcQLzExm4x4FH5c38JffbhkMaTtXsrDmYNozt9KRtdXK3TsDeuKSBZJno+41oIDGBONb2up0zCsuEERw==", + "dependencies": { + "Microsoft.Extensions.Http.Diagnostics": "10.11.0", + "Microsoft.Extensions.Resilience": "10.11.0" + } + }, + "Microsoft.Extensions.ServiceDiscovery": { + "type": "CentralTransitive", + "requested": "[10.11.0, )", + "resolved": "10.11.0", + "contentHash": "l1jvoPCZYEZOE2JZzcnzHLo1BBN/s+Azj8+FX0WRbqHoJY7QVq7cvTHasDWi1pixr0dXxbyC4HKt68Xm2KKpqQ==", + "dependencies": { + "Microsoft.Extensions.ServiceDiscovery.Abstractions": "10.11.0" + } + }, "Microsoft.FeatureManagement": { "type": "CentralTransitive", "requested": "[4.8.0, )", "resolved": "4.8.0", "contentHash": "p1dzpXano+DTet2/hQGb+J91QonETabPYmO5BdqpsWOPq2C3WsWbm1BICTNlWqL81EVGrRrjpQh9mRNX55ZKmQ==" }, + "Microsoft.FeatureManagement.AspNetCore": { + "type": "CentralTransitive", + "requested": "[4.8.0, )", + "resolved": "4.8.0", + "contentHash": "LBKVCjgNvJYtIiKb1IoXyuyzpZPmfVxnlDB0ByZ774EB1hNQLQlMQ9juZpJ3fRgEYodYs7aa7WKVvWshHx1CbQ==", + "dependencies": { + "Microsoft.FeatureManagement": "4.8.0" + } + }, + "Microsoft.OpenApi": { + "type": "CentralTransitive", + "requested": "[2.13.0, )", + "resolved": "2.13.0", + "contentHash": "wavlgBYnn7uU/ZGhFHNl0UlDOlwz+6KRduKkqdCCbfxxANaQ1rmBpETVGdwXanAM6twQOxsvI3CBEGF4OScbeQ==" + }, + "MiniProfiler.AspNetCore.Mvc": { + "type": "CentralTransitive", + "requested": "[4.5.4, )", + "resolved": "4.5.4", + "contentHash": "+NqXyCy9aNdroPm6leW5+cpngtCnkCdoyOlJzvVN62uucSx+MYkx8jmKbgAt+aCP6aghADfHBExwrTIldHxapg==", + "dependencies": { + "MiniProfiler.AspNetCore": "4.5.4" + } + }, + "MiniProfiler.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[4.5.4, )", + "resolved": "4.5.4", + "contentHash": "SSOuBYtNbM8AMmsYMP6Edr7iBfVYzswVt/yoIDboBRLLUgkA4SyROCJuTTtZ8eJSzlNuq5DIR+BLCCcigaV/vw==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "8.0.11", + "MiniProfiler.Shared": "4.5.4" + } + }, + "MiniProfiler.Shared": { + "type": "CentralTransitive", + "requested": "[4.5.4, )", + "resolved": "4.5.4", + "contentHash": "f8ckFm/xTS8C2Bn4BdVc94dNvg+tRfk0e4XFaETOqRi6r0PUOyn3Z9jTQCVpB3R1pP5WiRsEIrqqxux95BVpTA==" + }, "MudBlazor": { "type": "CentralTransitive", "requested": "[9.11.0, )", "resolved": "9.11.0", "contentHash": "hboxF5cQuMYjB0w6+tScmNt0ACuoCu35TGPsCmCq8OeQgvtPtzQ1s9auAOrINj/J6I/ZyBB1rmUzrcMKj14RFA==" }, + "Npgsql": { + "type": "CentralTransitive", + "requested": "[10.0.3, )", + "resolved": "10.0.3", + "contentHash": "7nb5YzXuvWWJxB0J8DiyL3we+X4FOctZrt0fIBnucOIaIevFEEwGQVZKtiu9olXdlNAK1eNgqSral6r/jlhI4w==" + }, + "Npgsql.EntityFrameworkCore.PostgreSQL": { + "type": "CentralTransitive", + "requested": "[10.0.3, )", + "resolved": "10.0.3", + "contentHash": "IPGrrZnRkuW7OlHDhUESZz4G5DLkW7Nej/O3Cx+0iTsgyU5XJxBgpsvTHLloo3WWuAKKbDHXBvWPVkX1deRh1Q==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "[10.0.4, 11.0.0)", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.4, 11.0.0)", + "Npgsql": "10.0.3" + } + }, + "OpenTelemetry.Api": { + "type": "CentralTransitive", + "requested": "[1.20.1, )", + "resolved": "1.20.1", + "contentHash": "QO9hlwadOdJGR4vDpJyDnl9B62v7epIBSTIHUA4C+bCtrRaB4TWmYSnu3QVOIe7caH8dt7NaHRei6zebESJJyw==" + }, + "OpenTelemetry.Exporter.OpenTelemetryProtocol": { + "type": "CentralTransitive", + "requested": "[1.20.1, )", + "resolved": "1.20.1", + "contentHash": "IlO8F0Y01ki0N5hJaeFJ5j3MVYJdbyNpDF9g7goU8wA3o8r/+ir9WJNnmte7QlUzM3iSV/aIuev1fqwF1CZOqg==", + "dependencies": { + "OpenTelemetry": "1.20.1" + } + }, + "OpenTelemetry.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[1.20.1, )", + "resolved": "1.20.1", + "contentHash": "wnoK07COxyQBR47QwP80SIO4cpD2xeF4PrBDYFXDMnhDLmOP4nN0Szy1wCBLo5UABU1I4xwWRGzZM0bFdCbRog==", + "dependencies": { + "OpenTelemetry": "1.20.1" + } + }, + "OpenTelemetry.Instrumentation.AspNetCore": { + "type": "CentralTransitive", + "requested": "[1.20.1, )", + "resolved": "1.20.1", + "contentHash": "pDO+Ed5iblMTvSVGcXzoLp8q20XHhXmK0wD/H3PGNHwDFlwZpV+bDWd/Euo6hNB4E0ruqzTFD76Btm+m0uCYNw==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.20.1, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Http": { + "type": "CentralTransitive", + "requested": "[1.20.1, )", + "resolved": "1.20.1", + "contentHash": "XJTM6imVztxLraOrzsdlZf5shdH9TVeEWNBxpyepB5e3Gy+KNeQf2hyic398210UxqlPtt4iOkBELtjfIFTzug==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.20.1, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Runtime": { + "type": "CentralTransitive", + "requested": "[1.20.1, )", + "resolved": "1.20.1", + "contentHash": "1ngVOV2ZYqFy38g2g+vZ50poeF66GJtinITBDB7TNRP4fmrDxYYyPfs1uGrPHkhJJRV5I7mElPFOctvlatu41w==", + "dependencies": { + "OpenTelemetry.Api": "[1.20.1, 2.0.0)" + } + }, + "Otp.NET": { + "type": "CentralTransitive", + "requested": "[1.4.1, )", + "resolved": "1.4.1", + "contentHash": "UXjZ80T6BfVACJWmEcz4UFZ93hwX3STKojKvVpPk3qUhubjnLwIiZMsI4Hh91HhYxC0JlatNdNrVK2wkv4O9/Q==" + }, "Polly": { "type": "CentralTransitive", "requested": "[8.8.1, )", @@ -171,6 +1067,12 @@ "System.Drawing.Common": "6.0.0" } }, + "Scalar.AspNetCore": { + "type": "CentralTransitive", + "requested": "[2.18.3, )", + "resolved": "2.18.3", + "contentHash": "6KXPOkCNnoZTXBl8GVNxq/zpS9UdGnz1a23EWy3CEiwYbZKQ5gi2APZ5mBruXcdXIr+ZXSZYiwX81UagjKFxeg==" + }, "Scrutor": { "type": "CentralTransitive", "requested": "[7.0.0, )", @@ -180,6 +1082,59 @@ "Microsoft.Extensions.DependencyModel": "10.0.0" } }, + "Serilog.AspNetCore": { + "type": "CentralTransitive", + "requested": "[10.0.0, )", + "resolved": "10.0.0", + "contentHash": "a/cNa1mY4On1oJlfGG1wAvxjp5g7OEzk/Jf/nm7NF9cWoE7KlZw1GldrifUBWm9oKibHkR7Lg/l5jy3y7ACR8w==", + "dependencies": { + "Serilog": "4.3.0", + "Serilog.Extensions.Hosting": "10.0.0", + "Serilog.Formatting.Compact": "3.0.0", + "Serilog.Settings.Configuration": "10.0.0", + "Serilog.Sinks.Console": "6.1.1", + "Serilog.Sinks.Debug": "3.0.0", + "Serilog.Sinks.File": "7.0.0" + } + }, + "Serilog.Sinks.Console": { + "type": "CentralTransitive", + "requested": "[6.1.1, )", + "resolved": "6.1.1", + "contentHash": "8jbqgjUyZlfCuSTaJk6lOca465OndqOz3KZP6Cryt/IqZYybyBu7GP0fE/AXBzrrQB3EBmQntBFAvMVz1COvAA==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "Serilog.Sinks.File": { + "type": "CentralTransitive", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "fKL7mXv7qaiNBUC71ssvn/dU0k9t0o45+qm2XgKAlSt19xF+ijjxyA3R6HmCgfKEKwfcfkwWjayuQtRueZFkYw==", + "dependencies": { + "Serilog": "4.2.0" + } + }, + "SQLitePCLRaw.bundle_e_sqlite3": { + "type": "CentralTransitive", + "requested": "[3.0.5, )", + "resolved": "3.0.5", + "contentHash": "SW8iASIyWMrLzqabUHYQRvALhvD4ylSBsj4PgEVGwc36kQjc9xT5kSV/XQ9rU7nIpBWD+LPyX3Hlw5FzyUzGeQ==", + "dependencies": { + "SQLite": "3.53.4", + "SQLitePCLRaw.config.e_sqlite3": "3.0.5" + } + }, + "StackExchange.Redis": { + "type": "CentralTransitive", + "requested": "[3.4.20, )", + "resolved": "3.4.20", + "contentHash": "eIPMxCzqw3BMWp1GOOcafs7RPrScSHiCT9b1DIEJ49h9b7tHBw21+rN6gLWdQmJzvR+Wzwx3obmCp3FpgKuUSg==", + "dependencies": { + "RESPite": "3.4.20", + "System.IO.Hashing": "10.0.13" + } + }, "System.IdentityModel.Tokens.Jwt": { "type": "CentralTransitive", "requested": "[8.23.0, )", @@ -189,6 +1144,27 @@ "Microsoft.IdentityModel.JsonWebTokens": "8.23.0", "Microsoft.IdentityModel.Tokens": "8.23.0" } + }, + "System.Linq.Dynamic.Core": { + "type": "CentralTransitive", + "requested": "[1.7.4, )", + "resolved": "1.7.4", + "contentHash": "2VJGKUdPjA59aqv/ehvBS+oVoFQqqsiVZlbcyDmuwypgy96Ss1/b8U13Yufk0TXtzveMWAPQAfnZzH+bs1r7Vw==" + }, + "System.Security.Cryptography.Pkcs": { + "type": "CentralTransitive", + "requested": "[10.0.14, )", + "resolved": "10.0.14", + "contentHash": "Wz+IgL2xpg8KJ4i2VWj6uz1PmZNu4Q0Ljlwd73P9Vze5NcOBtctLii3itV0PB2MpOqwqDEGfB6RCdv94A4E5yQ==" + }, + "Yarp.ReverseProxy": { + "type": "CentralTransitive", + "requested": "[2.3.0, )", + "resolved": "2.3.0", + "contentHash": "gxtkN3a+9biu9V9Zd5NaTO6VZWXAnS2mhQ0R/VXmSPoTuiQNZsakKikrKpDtKxrL5nUYzbRsHtl40WNq+ZBKKg==", + "dependencies": { + "System.IO.Hashing": "8.0.0" + } } } } diff --git a/Tests/Presentation/MMCA.Common.UI.Web.Tests/Pwa/ServiceWorkerEndpointTests.cs b/Tests/Presentation/MMCA.Common.UI.Web.Tests/Pwa/ServiceWorkerEndpointTests.cs new file mode 100644 index 00000000..9dbd3102 --- /dev/null +++ b/Tests/Presentation/MMCA.Common.UI.Web.Tests/Pwa/ServiceWorkerEndpointTests.cs @@ -0,0 +1,121 @@ +using System.Reflection; +using AwesomeAssertions; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using MMCA.Common.UI.Web.Pwa; + +namespace MMCA.Common.UI.Web.Tests.Pwa; + +/// +/// Tests for MapCommonServiceWorker: the served script (a JavaScript content type, never cached, +/// stamped with the package version), the configuration kill switch that serves the inert worker +/// instead, and the anonymous, undocumented endpoint metadata the browser's update check depends on. +/// The worker's own rule (navigations only, never caching a page) is pinned on the script text. +/// +public sealed class ServiceWorkerEndpointTests +{ + [Fact] + public async Task ServesTheActiveWorker_AsUncachedJavaScript() + { + await using var app = CreateApp(); + app.MapCommonServiceWorker(); + + var (context, script) = await InvokeAsync(app); + + context.Response.StatusCode.Should().Be(StatusCodes.Status200OK); + context.Response.ContentType.Should().StartWith("text/javascript"); + context.Response.Headers.CacheControl.ToString().Should().Be("no-cache"); + script.Should().Contain("addEventListener('fetch'"); + script.Should().Contain("/_content/MMCA.Common.UI.Web/offline.html"); + } + + [Fact] + public async Task TheActiveWorker_HandlesGetNavigationsOnly_AndNeverCachesAResponse() + { + await using var app = CreateApp(); + app.MapCommonServiceWorker(); + + var (_, script) = await InvokeAsync(app); + + script.Should().Contain("request.method !== 'GET' || request.mode !== 'navigate'"); + script.Should().NotContain("cache.put("); + script.Should().NotContain("cache.addAll("); + } + + [Fact] + public async Task TheScript_CarriesThePackageVersion_SoEachReleaseUpdatesTheWorker() + { + await using var app = CreateApp(); + app.MapCommonServiceWorker(); + + var (_, script) = await InvokeAsync(app); + + var version = typeof(ServiceWorkerEndpointExtensions).Assembly + .GetCustomAttribute()!.InformationalVersion; + script.Should().Contain($"const VERSION = '{version}';"); + script.Should().NotContain("__MMCA_SW_VERSION__"); + } + + [Fact] + public async Task WhenDisabled_ServesTheRetiredWorker_WithNoFetchHandler() + { + await using var app = CreateApp((ServiceWorkerEndpointExtensions.EnabledKey, "false")); + app.MapCommonServiceWorker(); + + var (context, script) = await InvokeAsync(app); + + context.Response.StatusCode.Should().Be(StatusCodes.Status200OK); + context.Response.Headers.CacheControl.ToString().Should().Be("no-cache"); + script.Should().Contain("RETIRED"); + script.Should().Contain("caches.delete("); + script.Should().NotContain("addEventListener('fetch'"); + } + + [Fact] + public async Task TheEndpoint_IsAnonymousAndExcludedFromTheApiDescription() + { + await using var app = CreateApp(); + app.MapCommonServiceWorker(); + + var endpoint = FindEndpoint(app); + + endpoint.Metadata.GetMetadata().Should().NotBeNull(); + endpoint.Metadata.GetMetadata()!.ExcludeFromDescription.Should().BeTrue(); + endpoint.RoutePattern.RawText.Should().Be(ServiceWorkerEndpointExtensions.ServiceWorkerPath); + } + + private static WebApplication CreateApp(params (string Key, string Value)[] settings) + { + var builder = WebApplication.CreateBuilder(new WebApplicationOptions { EnvironmentName = Environments.Production }); + builder.Configuration.AddInMemoryCollection( + settings.Select(setting => new KeyValuePair(setting.Key, setting.Value))); + return builder.Build(); + } + + private static RouteEndpoint FindEndpoint(WebApplication app) => + ((IEndpointRouteBuilder)app).DataSources + .SelectMany(source => source.Endpoints) + .OfType() + .Single(e => string.Equals(e.RoutePattern.RawText, ServiceWorkerEndpointExtensions.ServiceWorkerPath, StringComparison.Ordinal)); + + private static async Task<(HttpContext Context, string Script)> InvokeAsync(WebApplication app) + { + var endpoint = FindEndpoint(app); + await using var scope = app.Services.CreateAsyncScope(); + await using var body = new MemoryStream(); + var context = new DefaultHttpContext { RequestServices = scope.ServiceProvider }; + context.Request.Method = HttpMethods.Get; + context.Response.Body = body; + + await endpoint.RequestDelegate!(context); + + body.Position = 0; + using var reader = new StreamReader(body); + return (context, await reader.ReadToEndAsync(TestContext.Current.CancellationToken)); + } +} From 820c440104a15b8dfd9251d16057d7fba36a5624 Mon Sep 17 00:00:00 2001 From: Ivan Ball-llovera Date: Tue, 27 Oct 2026 09:18:15 -0400 Subject: [PATCH 4/5] release: v1.263.0 (promote PublicAPI) Promote-PublicApi.ps1 moves every PublicAPI.Unshipped.txt entry into its Shipped file: the six new UI.Web entries, plus entries earlier releases shipped without promoting (UI, Shared, Application, Infrastructure, Aspire, Aws, Gcp, Testing.Architecture). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VkaHCMhi84vqJ7KJFUUDa2 --- .../PublicAPI.Shipped.txt | 10 ++++- .../PublicAPI.Unshipped.txt | 10 ----- .../PublicAPI.Shipped.txt | 13 ++++--- .../PublicAPI.Unshipped.txt | 13 ------- .../MMCA.Common.Shared/PublicAPI.Shipped.txt | 19 ++++++++++ .../PublicAPI.Unshipped.txt | 19 ---------- .../MMCA.Common.Aspire/PublicAPI.Shipped.txt | 5 +++ .../PublicAPI.Unshipped.txt | 5 --- .../MMCA.Common.Aws/PublicAPI.Shipped.txt | 12 ++++++ .../MMCA.Common.Aws/PublicAPI.Unshipped.txt | 12 ------ .../MMCA.Common.Gcp/PublicAPI.Shipped.txt | 37 +++++++++++++++++++ .../MMCA.Common.Gcp/PublicAPI.Unshipped.txt | 37 ------------------- .../PublicAPI.Shipped.txt | 4 +- .../PublicAPI.Unshipped.txt | 4 -- .../MMCA.Common.UI.Web/PublicAPI.Shipped.txt | 6 +++ .../PublicAPI.Unshipped.txt | 6 --- .../MMCA.Common.UI/PublicAPI.Shipped.txt | 10 +++++ .../MMCA.Common.UI/PublicAPI.Unshipped.txt | 10 ----- 18 files changed, 107 insertions(+), 125 deletions(-) diff --git a/Source/Core/MMCA.Common.Application/PublicAPI.Shipped.txt b/Source/Core/MMCA.Common.Application/PublicAPI.Shipped.txt index 0cf38302..35524006 100644 --- a/Source/Core/MMCA.Common.Application/PublicAPI.Shipped.txt +++ b/Source/Core/MMCA.Common.Application/PublicAPI.Shipped.txt @@ -498,8 +498,6 @@ MMCA.Common.Application.Interfaces.Infrastructure.Storage.IFileStorageService.De MMCA.Common.Application.Interfaces.Infrastructure.Storage.IFileStorageService.IsConfigured.get -> bool MMCA.Common.Application.Interfaces.Infrastructure.Storage.IFileStorageService.UploadAsync(string! blobName, System.IO.Stream! content, string! contentType, MMCA.Common.Application.Interfaces.Infrastructure.Storage.FileUploadOptions! options, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!>! MMCA.Common.Application.Interfaces.Infrastructure.Storage.IFileStorageService.UploadAsync(string! blobName, System.IO.Stream! content, string! contentType, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!>! -MMCA.Common.Application.Interfaces.Infrastructure.Storage.IImageProcessor -MMCA.Common.Application.Interfaces.Infrastructure.Storage.IImageProcessor.NormalizeToSquareJpegAsync(System.IO.Stream! content, int size, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!>! MMCA.Common.Application.Interfaces.Infrastructure.Storage.ImageContentSniffer MMCA.Common.Application.Interfaces.Mapping.ICreateRequest MMCA.Common.Application.Interfaces.Mapping.IEntityDTOMapper @@ -1102,6 +1100,14 @@ MMCA.Common.Application.Validation.StateRules MMCA.Common.Application.Validation.StateRules.StateRules(System.Linq.Expressions.Expression!>! selector) -> void MMCA.Common.Application.Validation.StrongPasswordRules MMCA.Common.Application.Validation.StrongPasswordRules.StrongPasswordRules(System.Linq.Expressions.Expression!>! selector, string? errorCode = null) -> void +MMCA.Common.Application.Validation.UsAddressValidator +MMCA.Common.Application.Validation.UsAddressValidator.UsAddressValidator() -> void +MMCA.Common.Application.Validation.UsCityRules +MMCA.Common.Application.Validation.UsCityRules.UsCityRules(System.Linq.Expressions.Expression!>! selector) -> void +MMCA.Common.Application.Validation.UsStateRules +MMCA.Common.Application.Validation.UsStateRules.UsStateRules(System.Linq.Expressions.Expression!>! selector) -> void +MMCA.Common.Application.Validation.UsZipCodeRules +MMCA.Common.Application.Validation.UsZipCodeRules.UsZipCodeRules(System.Linq.Expressions.Expression!>! selector) -> void MMCA.Common.Application.Validation.ZipCodeRules MMCA.Common.Application.Validation.ZipCodeRules.ZipCodeRules(System.Linq.Expressions.Expression!>! selector) -> void abstract MMCA.Common.Application.Auth.AuthenticationServiceBase.CreateAccessToken(TUser! user) -> string! diff --git a/Source/Core/MMCA.Common.Application/PublicAPI.Unshipped.txt b/Source/Core/MMCA.Common.Application/PublicAPI.Unshipped.txt index d69f3861..ab058de6 100644 --- a/Source/Core/MMCA.Common.Application/PublicAPI.Unshipped.txt +++ b/Source/Core/MMCA.Common.Application/PublicAPI.Unshipped.txt @@ -1,11 +1 @@ #nullable enable -*REMOVED*MMCA.Common.Application.Interfaces.Infrastructure.Storage.IImageProcessor -*REMOVED*MMCA.Common.Application.Interfaces.Infrastructure.Storage.IImageProcessor.NormalizeToSquareJpegAsync(System.IO.Stream! content, int size, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!>! -MMCA.Common.Application.Validation.UsAddressValidator -MMCA.Common.Application.Validation.UsAddressValidator.UsAddressValidator() -> void -MMCA.Common.Application.Validation.UsCityRules -MMCA.Common.Application.Validation.UsCityRules.UsCityRules(System.Linq.Expressions.Expression!>! selector) -> void -MMCA.Common.Application.Validation.UsStateRules -MMCA.Common.Application.Validation.UsStateRules.UsStateRules(System.Linq.Expressions.Expression!>! selector) -> void -MMCA.Common.Application.Validation.UsZipCodeRules -MMCA.Common.Application.Validation.UsZipCodeRules.UsZipCodeRules(System.Linq.Expressions.Expression!>! selector) -> void diff --git a/Source/Core/MMCA.Common.Infrastructure/PublicAPI.Shipped.txt b/Source/Core/MMCA.Common.Infrastructure/PublicAPI.Shipped.txt index 86cc578b..a173954c 100644 --- a/Source/Core/MMCA.Common.Infrastructure/PublicAPI.Shipped.txt +++ b/Source/Core/MMCA.Common.Infrastructure/PublicAPI.Shipped.txt @@ -125,6 +125,7 @@ MMCA.Common.Infrastructure.DependencyInjection.extension(Microsoft.Extensions.De MMCA.Common.Infrastructure.DependencyInjection.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!).AddLegalAcceptance(Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! MMCA.Common.Infrastructure.DependencyInjection.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!).AddMultiTenancy(Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! MMCA.Common.Infrastructure.DependencyInjection.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!).AddNotificationInfrastructure() -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +MMCA.Common.Infrastructure.DependencyInjection.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!).AddNpgsqlDataSourceConfigurator(MMCA.Common.Infrastructure.Persistence.DbContexts.INpgsqlDataSourceConfigurator! configurator) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! MMCA.Common.Infrastructure.DependencyInjection.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!).AddPushNotifications(Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! MMCA.Common.Infrastructure.DependencyInjection.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!).AddScheduledJob() -> Microsoft.Extensions.DependencyInjection.IServiceCollection! MMCA.Common.Infrastructure.DependencyInjection.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!).AddScheduledJobs(Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! @@ -242,6 +243,7 @@ MMCA.Common.Infrastructure.Notifications.NotificationHub MMCA.Common.Infrastructure.Notifications.NotificationHub.JoinChannelAsync(string! channelKey) -> System.Threading.Tasks.Task! MMCA.Common.Infrastructure.Notifications.NotificationHub.LeaveChannelAsync(string! channelKey) -> System.Threading.Tasks.Task! MMCA.Common.Infrastructure.Notifications.NotificationHub.NotificationHub(Microsoft.Extensions.Options.IOptions! settings, MMCA.Common.Application.Interfaces.Infrastructure.Notifications.IChannelJoinAuthorizer? joinAuthorizer = null) -> void +MMCA.Common.Infrastructure.Notifications.Push.NativePushPayloads MMCA.Common.Infrastructure.Notifications.Push.NullNativePushSender MMCA.Common.Infrastructure.Notifications.Push.NullNativePushSender.BroadcastAsync(string! title, string! body, System.Collections.Generic.Dictionary? metadata = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! MMCA.Common.Infrastructure.Notifications.Push.NullNativePushSender.NullNativePushSender() -> void @@ -526,6 +528,8 @@ MMCA.Common.Infrastructure.Persistence.DbContexts.Factory.TransactionCommitAmbig MMCA.Common.Infrastructure.Persistence.DbContexts.Factory.TransactionCommitAmbiguousException.TransactionCommitAmbiguousException(System.Exception! innerException, System.Collections.Generic.IReadOnlyList! committedSources, string? ambiguousSource, System.Collections.Generic.IReadOnlyList! rolledBackSources) -> void MMCA.Common.Infrastructure.Persistence.DbContexts.Factory.TransactionCommitAmbiguousException.TransactionCommitAmbiguousException(string! message) -> void MMCA.Common.Infrastructure.Persistence.DbContexts.Factory.TransactionCommitAmbiguousException.TransactionCommitAmbiguousException(string! message, System.Exception! innerException) -> void +MMCA.Common.Infrastructure.Persistence.DbContexts.INpgsqlDataSourceConfigurator +MMCA.Common.Infrastructure.Persistence.DbContexts.INpgsqlDataSourceConfigurator.Configure(Npgsql.NpgsqlDataSourceBuilder! builder) -> void MMCA.Common.Infrastructure.Persistence.DbContexts.PostgreSQLDbContext MMCA.Common.Infrastructure.Persistence.DbContexts.PostgreSQLDbContext.PostgreSQLDbContext(Microsoft.EntityFrameworkCore.DbContextOptions! options, System.IServiceProvider! serviceProvider, MMCA.Common.Application.Interfaces.Infrastructure.Persistence.IEntityConfigurationAssemblyProvider! assemblyProvider, MMCA.Common.Infrastructure.Persistence.DataSources.PhysicalDataSource! physicalDataSource) -> void MMCA.Common.Infrastructure.Persistence.DbContexts.SQLServerDbContext @@ -871,9 +875,6 @@ MMCA.Common.Infrastructure.Scheduling.SchedulerSettings.LeaseSeconds.init -> voi MMCA.Common.Infrastructure.Scheduling.SchedulerSettings.PollingIntervalSeconds.get -> int MMCA.Common.Infrastructure.Scheduling.SchedulerSettings.PollingIntervalSeconds.init -> void MMCA.Common.Infrastructure.Scheduling.SchedulerSettings.SchedulerSettings() -> void -MMCA.Common.Infrastructure.Storage.ImageSharpImageProcessor -MMCA.Common.Infrastructure.Storage.ImageSharpImageProcessor.ImageSharpImageProcessor() -> void -MMCA.Common.Infrastructure.Storage.ImageSharpImageProcessor.NormalizeToSquareJpegAsync(System.IO.Stream! content, int size, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!>! MMCA.Common.Infrastructure.Storage.NullFileStorageService MMCA.Common.Infrastructure.Storage.NullFileStorageService.DeleteAsync(string! blobName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! MMCA.Common.Infrastructure.Storage.NullFileStorageService.IsConfigured.get -> bool @@ -898,6 +899,7 @@ const MMCA.Common.Infrastructure.Configuration.ApplicationNamespace.Configuratio const MMCA.Common.Infrastructure.Configuration.ApplicationNamespace.Fallback = "app" -> string! const MMCA.Common.Infrastructure.Mail.SmtpTransportSecurity.EnableSslConfigKey = "Smtp:EnableSsl" -> string! const MMCA.Common.Infrastructure.Messaging.Transports.MessageBusProviders.InProcess = "InProcess" -> string! +const MMCA.Common.Infrastructure.Messaging.Transports.MessageBusProviders.PostgreSql = "PostgreSql" -> string! const MMCA.Common.Infrastructure.Messaging.Transports.MessageBusProviders.RabbitMq = "RabbitMq" -> string! const MMCA.Common.Infrastructure.Notifications.NotificationHub.JoinChannelMethod = "JoinChannel" -> string! const MMCA.Common.Infrastructure.Notifications.NotificationHub.LeaveChannelMethod = "LeaveChannel" -> string! @@ -912,8 +914,6 @@ const MMCA.Common.Infrastructure.Persistence.Conventions.RestrictDeleteByDefault const MMCA.Common.Infrastructure.Persistence.Conventions.RestrictDeleteByDefaultConvention.DeleteBehaviorSourceAnnotation = "MMCA:DeleteBehaviorSource" -> string! const MMCA.Common.Infrastructure.Persistence.Conventions.RestrictDeleteByDefaultConvention.ExplicitSource = "Explicit" -> string! const MMCA.Common.Infrastructure.Persistence.Conventions.RestrictDeleteByDefaultConvention.OwnershipSource = "Ownership" -> string! -const MMCA.Common.Infrastructure.Storage.ImageSharpImageProcessor.MaxDecodedDimension = 20000 -> int -const MMCA.Common.Infrastructure.Storage.ImageSharpImageProcessor.MaxDecodedPixels = 50000000 -> long override MMCA.Common.Infrastructure.Hosting.Background.PeriodicBackgroundService.ExecuteAsync(System.Threading.CancellationToken stoppingToken) -> System.Threading.Tasks.Task! override MMCA.Common.Infrastructure.Notifications.NotificationHub.OnConnectedAsync() -> System.Threading.Tasks.Task! override MMCA.Common.Infrastructure.Notifications.NotificationHub.OnDisconnectedAsync(System.Exception? exception) -> System.Threading.Tasks.Task! @@ -965,6 +965,7 @@ static MMCA.Common.Infrastructure.DependencyInjection.AddInfrastructure(this Mic static MMCA.Common.Infrastructure.DependencyInjection.AddLegalAcceptance(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static MMCA.Common.Infrastructure.DependencyInjection.AddMultiTenancy(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static MMCA.Common.Infrastructure.DependencyInjection.AddNotificationInfrastructure(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static MMCA.Common.Infrastructure.DependencyInjection.AddNpgsqlDataSourceConfigurator(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, MMCA.Common.Infrastructure.Persistence.DbContexts.INpgsqlDataSourceConfigurator! configurator) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static MMCA.Common.Infrastructure.DependencyInjection.AddPushNotifications(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static MMCA.Common.Infrastructure.DependencyInjection.AddScheduledJob(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static MMCA.Common.Infrastructure.DependencyInjection.AddScheduledJobs(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! @@ -984,6 +985,8 @@ static MMCA.Common.Infrastructure.Messaging.Transports.BrokerTransportPolicies.A static MMCA.Common.Infrastructure.Messaging.Transports.BrokerTransportPolicies.ApplyReceivePolicies(MassTransit.IBusFactoryConfigurator! cfg, MMCA.Common.Infrastructure.Messaging.MessageBusSettings! settings, bool applyDelayedRedelivery) -> void static MMCA.Common.Infrastructure.Messaging.Transports.BrokerTransportPolicies.BuildRedeliveryIntervals(MMCA.Common.Infrastructure.Messaging.MessageBusSettings! settings) -> System.TimeSpan[]! static MMCA.Common.Infrastructure.Messaging.Transports.BrokerTransportPolicies.BuildRedeliveryIntervals(MMCA.Common.Infrastructure.Messaging.MessageBusSettings! settings, System.Collections.Generic.IReadOnlyList! defaultIntervalsSeconds) -> System.TimeSpan[]! +static MMCA.Common.Infrastructure.Notifications.Push.NativePushPayloads.BuildApnsPayload(string! title, string! body, System.Collections.Generic.IReadOnlyDictionary? metadata = null) -> string! +static MMCA.Common.Infrastructure.Notifications.Push.NativePushPayloads.BuildFcmV1Payload(string! title, string! body, System.Collections.Generic.IReadOnlyDictionary? metadata = null) -> string! static MMCA.Common.Infrastructure.Persistence.Auth.PermissionGrantModelBuilderExtensions.ApplyPermissionGrantConfiguration(this Microsoft.EntityFrameworkCore.ModelBuilder! modelBuilder, string? schema = "dbo") -> Microsoft.EntityFrameworkCore.ModelBuilder! static MMCA.Common.Infrastructure.Persistence.Auth.RefreshSessionModelBuilderExtensions.ApplyRefreshSessionConfiguration(this Microsoft.EntityFrameworkCore.ModelBuilder! modelBuilder, string? schema = "dbo") -> Microsoft.EntityFrameworkCore.ModelBuilder! static MMCA.Common.Infrastructure.Persistence.Configuration.EntityTypeBuilderExtensions.OwnsAddress(this Microsoft.EntityFrameworkCore.Metadata.Builders.EntityTypeBuilder! builder, System.Linq.Expressions.Expression!>! navigationExpression, string! columnPrefix = "Address", bool required = false) -> Microsoft.EntityFrameworkCore.Metadata.Builders.EntityTypeBuilder! diff --git a/Source/Core/MMCA.Common.Infrastructure/PublicAPI.Unshipped.txt b/Source/Core/MMCA.Common.Infrastructure/PublicAPI.Unshipped.txt index 32c030b4..7dc5c581 100644 --- a/Source/Core/MMCA.Common.Infrastructure/PublicAPI.Unshipped.txt +++ b/Source/Core/MMCA.Common.Infrastructure/PublicAPI.Unshipped.txt @@ -1,14 +1 @@ #nullable enable -MMCA.Common.Infrastructure.DependencyInjection.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!).AddNpgsqlDataSourceConfigurator(MMCA.Common.Infrastructure.Persistence.DbContexts.INpgsqlDataSourceConfigurator! configurator) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! -MMCA.Common.Infrastructure.Persistence.DbContexts.INpgsqlDataSourceConfigurator -MMCA.Common.Infrastructure.Persistence.DbContexts.INpgsqlDataSourceConfigurator.Configure(Npgsql.NpgsqlDataSourceBuilder! builder) -> void -static MMCA.Common.Infrastructure.DependencyInjection.AddNpgsqlDataSourceConfigurator(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, MMCA.Common.Infrastructure.Persistence.DbContexts.INpgsqlDataSourceConfigurator! configurator) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! -MMCA.Common.Infrastructure.Notifications.Push.NativePushPayloads -static MMCA.Common.Infrastructure.Notifications.Push.NativePushPayloads.BuildApnsPayload(string! title, string! body, System.Collections.Generic.IReadOnlyDictionary? metadata = null) -> string! -static MMCA.Common.Infrastructure.Notifications.Push.NativePushPayloads.BuildFcmV1Payload(string! title, string! body, System.Collections.Generic.IReadOnlyDictionary? metadata = null) -> string! -const MMCA.Common.Infrastructure.Messaging.Transports.MessageBusProviders.PostgreSql = "PostgreSql" -> string! -*REMOVED*MMCA.Common.Infrastructure.Storage.ImageSharpImageProcessor -*REMOVED*MMCA.Common.Infrastructure.Storage.ImageSharpImageProcessor.ImageSharpImageProcessor() -> void -*REMOVED*MMCA.Common.Infrastructure.Storage.ImageSharpImageProcessor.NormalizeToSquareJpegAsync(System.IO.Stream! content, int size, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!>! -*REMOVED*const MMCA.Common.Infrastructure.Storage.ImageSharpImageProcessor.MaxDecodedDimension = 20000 -> int -*REMOVED*const MMCA.Common.Infrastructure.Storage.ImageSharpImageProcessor.MaxDecodedPixels = 50000000 -> long diff --git a/Source/Core/MMCA.Common.Shared/PublicAPI.Shipped.txt b/Source/Core/MMCA.Common.Shared/PublicAPI.Shipped.txt index f7fc0bdd..4eb5e668 100644 --- a/Source/Core/MMCA.Common.Shared/PublicAPI.Shipped.txt +++ b/Source/Core/MMCA.Common.Shared/PublicAPI.Shipped.txt @@ -565,6 +565,16 @@ MMCA.Common.Shared.ValueObjects.Contact.PhoneNumber MMCA.Common.Shared.ValueObjects.Contact.PhoneNumber.Equals(MMCA.Common.Shared.ValueObjects.Contact.PhoneNumber? other) -> bool MMCA.Common.Shared.ValueObjects.Contact.PhoneNumber.Value.get -> string! MMCA.Common.Shared.ValueObjects.Contact.PhoneNumberInvariants +MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion +MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.$() -> MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion! +MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.Code.get -> string! +MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.Code.init -> void +MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.Deconstruct(out string! Code, out string! Name) -> void +MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.Equals(MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion? other) -> bool +MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.Name.get -> string! +MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.Name.init -> void +MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.UsPostalRegion(string! Code, string! Name) -> void +MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegions MMCA.Common.Shared.ValueObjects.Enumeration MMCA.Common.Shared.ValueObjects.Enumeration.Enumeration(int value, string! name) -> void MMCA.Common.Shared.ValueObjects.Enumeration.Name.get -> string! @@ -764,6 +774,9 @@ override MMCA.Common.Shared.ValueObjects.Contact.PhoneNumber.$() -> MMCA. override MMCA.Common.Shared.ValueObjects.Contact.PhoneNumber.Equals(object? obj) -> bool override MMCA.Common.Shared.ValueObjects.Contact.PhoneNumber.GetHashCode() -> int override MMCA.Common.Shared.ValueObjects.Contact.PhoneNumber.ToString() -> string! +override MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.Equals(object? obj) -> bool +override MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.GetHashCode() -> int +override MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.ToString() -> string! override MMCA.Common.Shared.ValueObjects.Enumeration.Equals(object? obj) -> bool override MMCA.Common.Shared.ValueObjects.Enumeration.GetHashCode() -> int override MMCA.Common.Shared.ValueObjects.Enumeration.ToString() -> string! @@ -994,6 +1007,12 @@ static MMCA.Common.Shared.ValueObjects.Contact.PhoneNumber.Create(string! value) static MMCA.Common.Shared.ValueObjects.Contact.PhoneNumber.operator !=(MMCA.Common.Shared.ValueObjects.Contact.PhoneNumber? left, MMCA.Common.Shared.ValueObjects.Contact.PhoneNumber? right) -> bool static MMCA.Common.Shared.ValueObjects.Contact.PhoneNumber.operator ==(MMCA.Common.Shared.ValueObjects.Contact.PhoneNumber? left, MMCA.Common.Shared.ValueObjects.Contact.PhoneNumber? right) -> bool static MMCA.Common.Shared.ValueObjects.Contact.PhoneNumberInvariants.EnsurePhoneNumberIsValid(string! phoneNumber, string! source) -> MMCA.Common.Shared.Abstractions.Result! +static MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.operator !=(MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion? left, MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion? right) -> bool +static MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.operator ==(MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion? left, MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion? right) -> bool +static MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegions.All.get -> System.Collections.Generic.IReadOnlyList! +static MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegions.IsKnownCode(string? code) -> bool +static MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegions.IsValidZipCode(string? zipCode) -> bool +static MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegions.ToCode(string? value) -> string? static MMCA.Common.Shared.ValueObjects.Enumeration.All.get -> System.Collections.Generic.IReadOnlyCollection! static MMCA.Common.Shared.ValueObjects.Enumeration.FromName(string! name) -> MMCA.Common.Shared.Abstractions.Result! static MMCA.Common.Shared.ValueObjects.Enumeration.FromValue(int value) -> MMCA.Common.Shared.Abstractions.Result! diff --git a/Source/Core/MMCA.Common.Shared/PublicAPI.Unshipped.txt b/Source/Core/MMCA.Common.Shared/PublicAPI.Unshipped.txt index 77bdbc2b..ab058de6 100644 --- a/Source/Core/MMCA.Common.Shared/PublicAPI.Unshipped.txt +++ b/Source/Core/MMCA.Common.Shared/PublicAPI.Unshipped.txt @@ -1,20 +1 @@ #nullable enable -MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion -MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.$() -> MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion! -MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.Code.get -> string! -MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.Code.init -> void -MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.Deconstruct(out string! Code, out string! Name) -> void -MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.Equals(MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion? other) -> bool -MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.Name.get -> string! -MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.Name.init -> void -MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.UsPostalRegion(string! Code, string! Name) -> void -MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegions -override MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.Equals(object? obj) -> bool -override MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.GetHashCode() -> int -override MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.ToString() -> string! -static MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.operator !=(MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion? left, MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion? right) -> bool -static MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion.operator ==(MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion? left, MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegion? right) -> bool -static MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegions.All.get -> System.Collections.Generic.IReadOnlyList! -static MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegions.IsKnownCode(string? code) -> bool -static MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegions.IsValidZipCode(string? zipCode) -> bool -static MMCA.Common.Shared.ValueObjects.Contact.UsPostalRegions.ToCode(string? value) -> string? diff --git a/Source/Hosting/MMCA.Common.Aspire/PublicAPI.Shipped.txt b/Source/Hosting/MMCA.Common.Aspire/PublicAPI.Shipped.txt index c8749139..e28e5b3f 100644 --- a/Source/Hosting/MMCA.Common.Aspire/PublicAPI.Shipped.txt +++ b/Source/Hosting/MMCA.Common.Aspire/PublicAPI.Shipped.txt @@ -140,9 +140,14 @@ const MMCA.Common.Aspire.HealthCheckTags.Ready = "ready" -> string! const MMCA.Common.Aspire.HealthEndpointPaths.Alive = "/alive" -> string! const MMCA.Common.Aspire.HealthEndpointPaths.Health = "/health" -> string! const MMCA.Common.Aspire.HealthEndpointPaths.Ready = "/health/ready" -> string! +const MMCA.Common.Aspire.Integrations.HostIntegrationNames.AwsDataProtection = "AwsDataProtection" -> string! +const MMCA.Common.Aspire.Integrations.HostIntegrationNames.AwsSecretsManagerConfiguration = "AwsSecretsManagerConfiguration" -> string! const MMCA.Common.Aspire.Integrations.HostIntegrationNames.AzureDataProtection = "AzureDataProtection" -> string! const MMCA.Common.Aspire.Integrations.HostIntegrationNames.AzureKeyVaultConfiguration = "AzureKeyVaultConfiguration" -> string! const MMCA.Common.Aspire.Integrations.HostIntegrationNames.AzureMonitorExporter = "AzureMonitorExporter" -> string! +const MMCA.Common.Aspire.Integrations.HostIntegrationNames.GoogleCloudDataProtection = "GoogleCloudDataProtection" -> string! +const MMCA.Common.Aspire.Integrations.HostIntegrationNames.GoogleCloudTelemetryExporter = "GoogleCloudTelemetryExporter" -> string! +const MMCA.Common.Aspire.Integrations.HostIntegrationNames.GoogleSecretManagerConfiguration = "GoogleSecretManagerConfiguration" -> string! const MMCA.Common.Aspire.Integrations.HostIntegrationNames.ServiceDefaultsTelemetry = "ServiceDefaultsTelemetry" -> string! const MMCA.Common.Aspire.Kestrel.KestrelEndpointExtensions.DefaultCleartextPort = 8080 -> int const MMCA.Common.Aspire.Kestrel.KestrelEndpointExtensions.HealthProbePortConfigKey = "HealthProbe:Port" -> string! diff --git a/Source/Hosting/MMCA.Common.Aspire/PublicAPI.Unshipped.txt b/Source/Hosting/MMCA.Common.Aspire/PublicAPI.Unshipped.txt index be530c35..7dc5c581 100644 --- a/Source/Hosting/MMCA.Common.Aspire/PublicAPI.Unshipped.txt +++ b/Source/Hosting/MMCA.Common.Aspire/PublicAPI.Unshipped.txt @@ -1,6 +1 @@ #nullable enable -const MMCA.Common.Aspire.Integrations.HostIntegrationNames.AwsDataProtection = "AwsDataProtection" -> string! -const MMCA.Common.Aspire.Integrations.HostIntegrationNames.AwsSecretsManagerConfiguration = "AwsSecretsManagerConfiguration" -> string! -const MMCA.Common.Aspire.Integrations.HostIntegrationNames.GoogleCloudDataProtection = "GoogleCloudDataProtection" -> string! -const MMCA.Common.Aspire.Integrations.HostIntegrationNames.GoogleSecretManagerConfiguration = "GoogleSecretManagerConfiguration" -> string! -const MMCA.Common.Aspire.Integrations.HostIntegrationNames.GoogleCloudTelemetryExporter = "GoogleCloudTelemetryExporter" -> string! diff --git a/Source/Hosting/MMCA.Common.Aws/PublicAPI.Shipped.txt b/Source/Hosting/MMCA.Common.Aws/PublicAPI.Shipped.txt index ee0c68eb..7bd53204 100644 --- a/Source/Hosting/MMCA.Common.Aws/PublicAPI.Shipped.txt +++ b/Source/Hosting/MMCA.Common.Aws/PublicAPI.Shipped.txt @@ -1,7 +1,15 @@ #nullable enable +MMCA.Common.Aws.AwsDataProtectionExtensions +MMCA.Common.Aws.AwsDataProtectionExtensions.extension(TBuilder) +MMCA.Common.Aws.AwsDataProtectionExtensions.extension(TBuilder).AddAwsDataProtection() -> TBuilder +MMCA.Common.Aws.AwsSecretsManagerConfigurationExtensions +MMCA.Common.Aws.AwsSecretsManagerConfigurationExtensions.extension(TBuilder) +MMCA.Common.Aws.AwsSecretsManagerConfigurationExtensions.extension(TBuilder).AddAwsSecretsManagerConfiguration() -> TBuilder MMCA.Common.Aws.AwsServiceCollectionExtensions MMCA.Common.Aws.AwsServiceCollectionExtensions.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!) +MMCA.Common.Aws.AwsServiceCollectionExtensions.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!).AddAmazonSnsPush(Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! MMCA.Common.Aws.AwsServiceCollectionExtensions.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!).AddAmazonSqsTransport() -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +MMCA.Common.Aws.AwsServiceCollectionExtensions.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!).AddAwsRdsIamAuthentication(Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! MMCA.Common.Aws.AwsServiceCollectionExtensions.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!).AddS3FileStorage(Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! MMCA.Common.Aws.Messaging.AmazonSqsTransportSettings MMCA.Common.Aws.Messaging.AmazonSqsTransportSettings.AccessKeyId.get -> string? @@ -39,7 +47,11 @@ MMCA.Common.Aws.Storage.S3FileStorageSettings.SecretAccessKey.get -> string? MMCA.Common.Aws.Storage.S3FileStorageSettings.SecretAccessKey.init -> void MMCA.Common.Aws.Storage.S3FileStorageSettings.ServiceUrl.get -> System.Uri? MMCA.Common.Aws.Storage.S3FileStorageSettings.ServiceUrl.init -> void +static MMCA.Common.Aws.AwsDataProtectionExtensions.AddAwsDataProtection(this TBuilder builder) -> TBuilder +static MMCA.Common.Aws.AwsSecretsManagerConfigurationExtensions.AddAwsSecretsManagerConfiguration(this TBuilder builder) -> TBuilder +static MMCA.Common.Aws.AwsServiceCollectionExtensions.AddAmazonSnsPush(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static MMCA.Common.Aws.AwsServiceCollectionExtensions.AddAmazonSqsTransport(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static MMCA.Common.Aws.AwsServiceCollectionExtensions.AddAwsRdsIamAuthentication(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static MMCA.Common.Aws.AwsServiceCollectionExtensions.AddS3FileStorage(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static readonly MMCA.Common.Aws.Messaging.AmazonSqsTransportSettings.SectionName -> string! static readonly MMCA.Common.Aws.Storage.S3FileStorageSettings.SectionName -> string! diff --git a/Source/Hosting/MMCA.Common.Aws/PublicAPI.Unshipped.txt b/Source/Hosting/MMCA.Common.Aws/PublicAPI.Unshipped.txt index b1e10322..7dc5c581 100644 --- a/Source/Hosting/MMCA.Common.Aws/PublicAPI.Unshipped.txt +++ b/Source/Hosting/MMCA.Common.Aws/PublicAPI.Unshipped.txt @@ -1,13 +1 @@ #nullable enable -MMCA.Common.Aws.AwsDataProtectionExtensions -MMCA.Common.Aws.AwsDataProtectionExtensions.extension(TBuilder) -MMCA.Common.Aws.AwsDataProtectionExtensions.extension(TBuilder).AddAwsDataProtection() -> TBuilder -MMCA.Common.Aws.AwsSecretsManagerConfigurationExtensions -MMCA.Common.Aws.AwsSecretsManagerConfigurationExtensions.extension(TBuilder) -MMCA.Common.Aws.AwsSecretsManagerConfigurationExtensions.extension(TBuilder).AddAwsSecretsManagerConfiguration() -> TBuilder -MMCA.Common.Aws.AwsServiceCollectionExtensions.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!).AddAmazonSnsPush(Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! -MMCA.Common.Aws.AwsServiceCollectionExtensions.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!).AddAwsRdsIamAuthentication(Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! -static MMCA.Common.Aws.AwsDataProtectionExtensions.AddAwsDataProtection(this TBuilder builder) -> TBuilder -static MMCA.Common.Aws.AwsSecretsManagerConfigurationExtensions.AddAwsSecretsManagerConfiguration(this TBuilder builder) -> TBuilder -static MMCA.Common.Aws.AwsServiceCollectionExtensions.AddAmazonSnsPush(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! -static MMCA.Common.Aws.AwsServiceCollectionExtensions.AddAwsRdsIamAuthentication(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! diff --git a/Source/Hosting/MMCA.Common.Gcp/PublicAPI.Shipped.txt b/Source/Hosting/MMCA.Common.Gcp/PublicAPI.Shipped.txt index 7dc5c581..52425de3 100644 --- a/Source/Hosting/MMCA.Common.Gcp/PublicAPI.Shipped.txt +++ b/Source/Hosting/MMCA.Common.Gcp/PublicAPI.Shipped.txt @@ -1 +1,38 @@ #nullable enable +MMCA.Common.Gcp.GcpServiceCollectionExtensions +MMCA.Common.Gcp.GcpServiceCollectionExtensions.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!) +MMCA.Common.Gcp.GcpServiceCollectionExtensions.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!).AddCloudSqlIamAuthentication(Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +MMCA.Common.Gcp.GcpServiceCollectionExtensions.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!).AddFirebaseCloudMessagingPush(Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +MMCA.Common.Gcp.GcpServiceCollectionExtensions.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!).AddGoogleCloudStorage(Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +MMCA.Common.Gcp.GoogleCloudDataProtectionExtensions +MMCA.Common.Gcp.GoogleCloudDataProtectionExtensions.extension(TBuilder) +MMCA.Common.Gcp.GoogleCloudDataProtectionExtensions.extension(TBuilder).AddGoogleCloudDataProtection() -> TBuilder +MMCA.Common.Gcp.GoogleCloudTelemetryExporterExtensions +MMCA.Common.Gcp.GoogleCloudTelemetryExporterExtensions.extension(TBuilder) +MMCA.Common.Gcp.GoogleCloudTelemetryExporterExtensions.extension(TBuilder).AddGoogleCloudTelemetryExporter() -> TBuilder +MMCA.Common.Gcp.GoogleSecretManagerConfigurationExtensions +MMCA.Common.Gcp.GoogleSecretManagerConfigurationExtensions.extension(TBuilder) +MMCA.Common.Gcp.GoogleSecretManagerConfigurationExtensions.extension(TBuilder).AddGoogleSecretManagerConfiguration() -> TBuilder +MMCA.Common.Gcp.Storage.GcsFileStorageService +MMCA.Common.Gcp.Storage.GcsFileStorageService.DeleteAsync(string! blobName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +MMCA.Common.Gcp.Storage.GcsFileStorageService.GcsFileStorageService(Google.Cloud.Storage.V1.StorageClient! storageClient, Microsoft.Extensions.Options.IOptions! options, Microsoft.Extensions.Logging.ILogger! logger) -> void +MMCA.Common.Gcp.Storage.GcsFileStorageService.IsConfigured.get -> bool +MMCA.Common.Gcp.Storage.GcsFileStorageService.UploadAsync(string! blobName, System.IO.Stream! content, string! contentType, MMCA.Common.Application.Interfaces.Infrastructure.Storage.FileUploadOptions! options, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!>! +MMCA.Common.Gcp.Storage.GcsFileStorageService.UploadAsync(string! blobName, System.IO.Stream! content, string! contentType, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!>! +MMCA.Common.Gcp.Storage.GcsFileStorageSettings +MMCA.Common.Gcp.Storage.GcsFileStorageSettings.GcsBucket.get -> string? +MMCA.Common.Gcp.Storage.GcsFileStorageSettings.GcsBucket.init -> void +MMCA.Common.Gcp.Storage.GcsFileStorageSettings.GcsFileStorageSettings() -> void +MMCA.Common.Gcp.Storage.GcsFileStorageSettings.GcsProjectId.get -> string? +MMCA.Common.Gcp.Storage.GcsFileStorageSettings.GcsProjectId.init -> void +MMCA.Common.Gcp.Storage.GcsFileStorageSettings.GcsPublicBaseUrl.get -> System.Uri? +MMCA.Common.Gcp.Storage.GcsFileStorageSettings.GcsPublicBaseUrl.init -> void +MMCA.Common.Gcp.Storage.GcsFileStorageSettings.GcsServiceUrl.get -> System.Uri? +MMCA.Common.Gcp.Storage.GcsFileStorageSettings.GcsServiceUrl.init -> void +static MMCA.Common.Gcp.GcpServiceCollectionExtensions.AddCloudSqlIamAuthentication(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static MMCA.Common.Gcp.GcpServiceCollectionExtensions.AddFirebaseCloudMessagingPush(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static MMCA.Common.Gcp.GcpServiceCollectionExtensions.AddGoogleCloudStorage(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static MMCA.Common.Gcp.GoogleCloudDataProtectionExtensions.AddGoogleCloudDataProtection(this TBuilder builder) -> TBuilder +static MMCA.Common.Gcp.GoogleCloudTelemetryExporterExtensions.AddGoogleCloudTelemetryExporter(this TBuilder builder) -> TBuilder +static MMCA.Common.Gcp.GoogleSecretManagerConfigurationExtensions.AddGoogleSecretManagerConfiguration(this TBuilder builder) -> TBuilder +static readonly MMCA.Common.Gcp.Storage.GcsFileStorageSettings.SectionName -> string! diff --git a/Source/Hosting/MMCA.Common.Gcp/PublicAPI.Unshipped.txt b/Source/Hosting/MMCA.Common.Gcp/PublicAPI.Unshipped.txt index 00ac0a46..7dc5c581 100644 --- a/Source/Hosting/MMCA.Common.Gcp/PublicAPI.Unshipped.txt +++ b/Source/Hosting/MMCA.Common.Gcp/PublicAPI.Unshipped.txt @@ -1,38 +1 @@ #nullable enable -MMCA.Common.Gcp.GcpServiceCollectionExtensions -MMCA.Common.Gcp.GcpServiceCollectionExtensions.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!) -MMCA.Common.Gcp.GcpServiceCollectionExtensions.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!).AddGoogleCloudStorage(Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! -MMCA.Common.Gcp.Storage.GcsFileStorageService -MMCA.Common.Gcp.Storage.GcsFileStorageService.DeleteAsync(string! blobName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! -MMCA.Common.Gcp.Storage.GcsFileStorageService.GcsFileStorageService(Google.Cloud.Storage.V1.StorageClient! storageClient, Microsoft.Extensions.Options.IOptions! options, Microsoft.Extensions.Logging.ILogger! logger) -> void -MMCA.Common.Gcp.Storage.GcsFileStorageService.IsConfigured.get -> bool -MMCA.Common.Gcp.Storage.GcsFileStorageService.UploadAsync(string! blobName, System.IO.Stream! content, string! contentType, MMCA.Common.Application.Interfaces.Infrastructure.Storage.FileUploadOptions! options, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!>! -MMCA.Common.Gcp.Storage.GcsFileStorageService.UploadAsync(string! blobName, System.IO.Stream! content, string! contentType, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!>! -MMCA.Common.Gcp.Storage.GcsFileStorageSettings -MMCA.Common.Gcp.Storage.GcsFileStorageSettings.GcsBucket.get -> string? -MMCA.Common.Gcp.Storage.GcsFileStorageSettings.GcsBucket.init -> void -MMCA.Common.Gcp.Storage.GcsFileStorageSettings.GcsFileStorageSettings() -> void -MMCA.Common.Gcp.Storage.GcsFileStorageSettings.GcsProjectId.get -> string? -MMCA.Common.Gcp.Storage.GcsFileStorageSettings.GcsProjectId.init -> void -MMCA.Common.Gcp.Storage.GcsFileStorageSettings.GcsPublicBaseUrl.get -> System.Uri? -MMCA.Common.Gcp.Storage.GcsFileStorageSettings.GcsPublicBaseUrl.init -> void -MMCA.Common.Gcp.Storage.GcsFileStorageSettings.GcsServiceUrl.get -> System.Uri? -MMCA.Common.Gcp.Storage.GcsFileStorageSettings.GcsServiceUrl.init -> void -static MMCA.Common.Gcp.GcpServiceCollectionExtensions.AddGoogleCloudStorage(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! -static readonly MMCA.Common.Gcp.Storage.GcsFileStorageSettings.SectionName -> string! -MMCA.Common.Gcp.GoogleCloudDataProtectionExtensions -MMCA.Common.Gcp.GoogleCloudDataProtectionExtensions.extension(TBuilder) -MMCA.Common.Gcp.GoogleCloudDataProtectionExtensions.extension(TBuilder).AddGoogleCloudDataProtection() -> TBuilder -MMCA.Common.Gcp.GoogleSecretManagerConfigurationExtensions -MMCA.Common.Gcp.GoogleSecretManagerConfigurationExtensions.extension(TBuilder) -MMCA.Common.Gcp.GoogleSecretManagerConfigurationExtensions.extension(TBuilder).AddGoogleSecretManagerConfiguration() -> TBuilder -static MMCA.Common.Gcp.GoogleCloudDataProtectionExtensions.AddGoogleCloudDataProtection(this TBuilder builder) -> TBuilder -static MMCA.Common.Gcp.GoogleSecretManagerConfigurationExtensions.AddGoogleSecretManagerConfiguration(this TBuilder builder) -> TBuilder -MMCA.Common.Gcp.GcpServiceCollectionExtensions.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!).AddCloudSqlIamAuthentication(Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! -static MMCA.Common.Gcp.GcpServiceCollectionExtensions.AddCloudSqlIamAuthentication(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! -MMCA.Common.Gcp.GcpServiceCollectionExtensions.extension(Microsoft.Extensions.DependencyInjection.IServiceCollection!).AddFirebaseCloudMessagingPush(Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! -static MMCA.Common.Gcp.GcpServiceCollectionExtensions.AddFirebaseCloudMessagingPush(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! -MMCA.Common.Gcp.GoogleCloudTelemetryExporterExtensions -MMCA.Common.Gcp.GoogleCloudTelemetryExporterExtensions.extension(TBuilder) -MMCA.Common.Gcp.GoogleCloudTelemetryExporterExtensions.extension(TBuilder).AddGoogleCloudTelemetryExporter() -> TBuilder -static MMCA.Common.Gcp.GoogleCloudTelemetryExporterExtensions.AddGoogleCloudTelemetryExporter(this TBuilder builder) -> TBuilder diff --git a/Source/Hosting/MMCA.Common.Testing.Architecture/PublicAPI.Shipped.txt b/Source/Hosting/MMCA.Common.Testing.Architecture/PublicAPI.Shipped.txt index 448720a6..af29d97d 100644 --- a/Source/Hosting/MMCA.Common.Testing.Architecture/PublicAPI.Shipped.txt +++ b/Source/Hosting/MMCA.Common.Testing.Architecture/PublicAPI.Shipped.txt @@ -88,7 +88,6 @@ MMCA.Common.Testing.Architecture.DeleteBehaviorConventionTestsBase.ConventionDel MMCA.Common.Testing.Architecture.DeleteBehaviorConventionTestsBase.DeleteBehaviorConventionTestsBase() -> void MMCA.Common.Testing.Architecture.DependencyVersionTestsBase MMCA.Common.Testing.Architecture.DependencyVersionTestsBase.DependencyVersionTestsBase() -> void -MMCA.Common.Testing.Architecture.DependencyVersionTestsBase.ImageSharp_MustNotExceed_MajorVersion3() -> void MMCA.Common.Testing.Architecture.DependencyVersionTestsBase.MassTransit_MustNotExceed_MajorVersion8() -> void MMCA.Common.Testing.Architecture.DomainEventHandlerSaveTestsBase MMCA.Common.Testing.Architecture.DomainEventHandlerSaveTestsBase.DomainEventHandlerSaveTestsBase() -> void @@ -423,6 +422,7 @@ abstract MMCA.Common.Testing.Architecture.StateManagementConventionTestsBase.Map abstract MMCA.Common.Testing.Architecture.StronglyTypedIdTestsBase.Map.get -> MMCA.Common.Testing.Architecture.IArchitectureMap! abstract MMCA.Common.Testing.Architecture.SubstitutabilityTestsBase.Map.get -> MMCA.Common.Testing.Architecture.IArchitectureMap! abstract MMCA.Common.Testing.Architecture.UIArchitectureConventionTestsBase.Map.get -> MMCA.Common.Testing.Architecture.IArchitectureMap! +const MMCA.Common.Testing.Architecture.ArchitectureRules.GovernedAiPackageNamespace = "MMCA.Common.AI" -> string! const MMCA.Common.Testing.Architecture.ArchitectureRules.GovernedAiPackagePrefix = "MMCA.Common.AI." -> string! const MMCA.Common.Testing.Architecture.ArchitectureRules.ServiceContractAttributeFullName = "MMCA.Common.Shared.Abstractions.ServiceContractAttribute" -> string! const MMCA.Common.Testing.Architecture.FormsConventionTestsBase.ChangePasswordCardTag = " string! @@ -601,7 +601,6 @@ virtual MMCA.Common.Testing.Architecture.ControllerConventionTestsBase.Controlle virtual MMCA.Common.Testing.Architecture.CostTagConventionTestsBase.BicepResource.get -> string! virtual MMCA.Common.Testing.Architecture.CostTagConventionTestsBase.ResourceAssembly.get -> System.Reflection.Assembly! virtual MMCA.Common.Testing.Architecture.DataResidencyTestsBase.ForbiddenResidencyClaims.get -> System.Collections.Generic.IReadOnlyList! -virtual MMCA.Common.Testing.Architecture.DependencyVersionTestsBase.ImageSharpPackageIds.get -> System.Collections.Generic.IReadOnlyList! virtual MMCA.Common.Testing.Architecture.DependencyVersionTestsBase.MassTransitPackageIds.get -> System.Collections.Generic.IReadOnlyList! virtual MMCA.Common.Testing.Architecture.DomainEventHandlerSaveTestsBase.AllowedSavingTypes.get -> System.Collections.Generic.IReadOnlyCollection! virtual MMCA.Common.Testing.Architecture.DomainEventHandlerSaveTestsBase.MaxCallDepth.get -> int @@ -615,6 +614,7 @@ virtual MMCA.Common.Testing.Architecture.FeatureFlagLifecycleTestsBase.Today.get virtual MMCA.Common.Testing.Architecture.FolderWidthTestsBase.ExemptFolderSuffixes.get -> System.Collections.Generic.IReadOnlyCollection! virtual MMCA.Common.Testing.Architecture.FolderWidthTestsBase.MaxDirectFiles.get -> int virtual MMCA.Common.Testing.Architecture.FormsConventionTestsBase.MinimumCreateForms.get -> int +virtual MMCA.Common.Testing.Architecture.FormsConventionTestsBase.ModulesRoot.get -> string! virtual MMCA.Common.Testing.Architecture.FormsConventionTestsBase.ProfileFormPath.get -> string? virtual MMCA.Common.Testing.Architecture.FormsConventionTestsBase.RequiredMarkers.get -> System.Collections.Generic.IReadOnlyList! virtual MMCA.Common.Testing.Architecture.ForwardedJwtAudienceTestsBase.SourceRoots.get -> System.Collections.Generic.IReadOnlyCollection! diff --git a/Source/Hosting/MMCA.Common.Testing.Architecture/PublicAPI.Unshipped.txt b/Source/Hosting/MMCA.Common.Testing.Architecture/PublicAPI.Unshipped.txt index 1ba119da..7dc5c581 100644 --- a/Source/Hosting/MMCA.Common.Testing.Architecture/PublicAPI.Unshipped.txt +++ b/Source/Hosting/MMCA.Common.Testing.Architecture/PublicAPI.Unshipped.txt @@ -1,5 +1 @@ #nullable enable -*REMOVED*MMCA.Common.Testing.Architecture.DependencyVersionTestsBase.ImageSharp_MustNotExceed_MajorVersion3() -> void -*REMOVED*virtual MMCA.Common.Testing.Architecture.DependencyVersionTestsBase.ImageSharpPackageIds.get -> System.Collections.Generic.IReadOnlyList! -const MMCA.Common.Testing.Architecture.ArchitectureRules.GovernedAiPackageNamespace = "MMCA.Common.AI" -> string! -virtual MMCA.Common.Testing.Architecture.FormsConventionTestsBase.ModulesRoot.get -> string! diff --git a/Source/Presentation/MMCA.Common.UI.Web/PublicAPI.Shipped.txt b/Source/Presentation/MMCA.Common.UI.Web/PublicAPI.Shipped.txt index 01c20c00..df04572b 100644 --- a/Source/Presentation/MMCA.Common.UI.Web/PublicAPI.Shipped.txt +++ b/Source/Presentation/MMCA.Common.UI.Web/PublicAPI.Shipped.txt @@ -44,6 +44,9 @@ MMCA.Common.UI.Web.Hardening.UiRateLimitingSettings.PermitLimit.init -> void MMCA.Common.UI.Web.Hardening.UiRateLimitingSettings.UiRateLimitingSettings() -> void MMCA.Common.UI.Web.Hardening.UiRateLimitingSettings.WindowSeconds.get -> int MMCA.Common.UI.Web.Hardening.UiRateLimitingSettings.WindowSeconds.init -> void +MMCA.Common.UI.Web.Pwa.ServiceWorkerEndpointExtensions +MMCA.Common.UI.Web.Pwa.ServiceWorkerEndpointExtensions.extension(Microsoft.AspNetCore.Routing.IEndpointRouteBuilder!) +MMCA.Common.UI.Web.Pwa.ServiceWorkerEndpointExtensions.extension(Microsoft.AspNetCore.Routing.IEndpointRouteBuilder!).MapCommonServiceWorker() -> Microsoft.AspNetCore.Builder.RouteHandlerBuilder! MMCA.Common.UI.Web.SameOriginProxy.SameOriginApiProxyEndpointExtensions MMCA.Common.UI.Web.SameOriginProxy.SameOriginApiProxyEndpointExtensions.extension(Microsoft.AspNetCore.Routing.IEndpointRouteBuilder!) MMCA.Common.UI.Web.SameOriginProxy.SameOriginApiProxyEndpointExtensions.extension(Microsoft.AspNetCore.Routing.IEndpointRouteBuilder!).MapCommonSameOriginApiProxy() -> Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! @@ -86,6 +89,8 @@ MMCA.Common.UI.Web._Imports.Execute() -> void MMCA.Common.UI.Web._Imports._Imports() -> void const MMCA.Common.UI.Web.ClientConfig.ClientConfigEndpointExtensions.ApiSectionName = "Api" -> string! const MMCA.Common.UI.Web.ClientConfig.ClientConfigEndpointExtensions.ClientConfigPath = "/client-config" -> string! +const MMCA.Common.UI.Web.Pwa.ServiceWorkerEndpointExtensions.EnabledKey = "Pwa:ServiceWorker:Enabled" -> string! +const MMCA.Common.UI.Web.Pwa.ServiceWorkerEndpointExtensions.ServiceWorkerPath = "/service-worker.js" -> string! const MMCA.Common.UI.Web.SameOriginProxy.SameOriginApiProxySettings.SectionName = "SameOriginApiProxy" -> string! const MMCA.Common.UI.Web.Security.BlazorCspSettings.SectionName = "BlazorCsp" -> string! override MMCA.Common.UI.Web.Components.Pages.Error.OnInitialized() -> void @@ -103,6 +108,7 @@ static MMCA.Common.UI.Web.Hardening.BlazorCircuitLimitSettings.SectionName.get - static MMCA.Common.UI.Web.Hardening.UiRateLimitingExtensions.AddUiRateLimiting(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static MMCA.Common.UI.Web.Hardening.UiRateLimitingExtensions.UseUiRateLimiting(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! static MMCA.Common.UI.Web.Hardening.UiRateLimitingSettings.SectionName.get -> string! +static MMCA.Common.UI.Web.Pwa.ServiceWorkerEndpointExtensions.MapCommonServiceWorker(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints) -> Microsoft.AspNetCore.Builder.RouteHandlerBuilder! static MMCA.Common.UI.Web.SameOriginProxy.SameOriginApiProxyEndpointExtensions.MapCommonSameOriginApiProxy(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints) -> Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! static MMCA.Common.UI.Web.SameOriginProxy.SameOriginApiProxyServiceExtensions.AddCommonSameOriginApiProxy(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, Microsoft.Extensions.Configuration.IConfiguration! configuration) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static readonly MMCA.Common.UI.Web.SameOriginProxy.SameOriginApiProxySettings.DefaultTokenIssuingPaths -> System.Collections.Generic.IReadOnlyList! diff --git a/Source/Presentation/MMCA.Common.UI.Web/PublicAPI.Unshipped.txt b/Source/Presentation/MMCA.Common.UI.Web/PublicAPI.Unshipped.txt index f6c1bcdc..ab058de6 100644 --- a/Source/Presentation/MMCA.Common.UI.Web/PublicAPI.Unshipped.txt +++ b/Source/Presentation/MMCA.Common.UI.Web/PublicAPI.Unshipped.txt @@ -1,7 +1 @@ #nullable enable -const MMCA.Common.UI.Web.Pwa.ServiceWorkerEndpointExtensions.EnabledKey = "Pwa:ServiceWorker:Enabled" -> string! -const MMCA.Common.UI.Web.Pwa.ServiceWorkerEndpointExtensions.ServiceWorkerPath = "/service-worker.js" -> string! -MMCA.Common.UI.Web.Pwa.ServiceWorkerEndpointExtensions -MMCA.Common.UI.Web.Pwa.ServiceWorkerEndpointExtensions.extension(Microsoft.AspNetCore.Routing.IEndpointRouteBuilder!) -MMCA.Common.UI.Web.Pwa.ServiceWorkerEndpointExtensions.extension(Microsoft.AspNetCore.Routing.IEndpointRouteBuilder!).MapCommonServiceWorker() -> Microsoft.AspNetCore.Builder.RouteHandlerBuilder! -static MMCA.Common.UI.Web.Pwa.ServiceWorkerEndpointExtensions.MapCommonServiceWorker(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints) -> Microsoft.AspNetCore.Builder.RouteHandlerBuilder! diff --git a/Source/Presentation/MMCA.Common.UI/PublicAPI.Shipped.txt b/Source/Presentation/MMCA.Common.UI/PublicAPI.Shipped.txt index 1f1b6175..f3b9aea7 100644 --- a/Source/Presentation/MMCA.Common.UI/PublicAPI.Shipped.txt +++ b/Source/Presentation/MMCA.Common.UI/PublicAPI.Shipped.txt @@ -29,8 +29,10 @@ MMCA.Common.UI.Common.Interfaces.IUIModule MMCA.Common.UI.Common.Interfaces.IUIModule.AppBarComponentTypes.get -> System.Collections.Generic.IReadOnlyList! MMCA.Common.UI.Common.Interfaces.IUIModule.Assembly.get -> System.Reflection.Assembly! MMCA.Common.UI.Common.Interfaces.IUIModule.ContentHeaderComponentTypes.get -> System.Collections.Generic.IReadOnlyList! +MMCA.Common.UI.Common.Interfaces.IUIModule.FooterComponentTypes.get -> System.Collections.Generic.IReadOnlyList! MMCA.Common.UI.Common.Interfaces.IUIModule.LayoutComponentTypes.get -> System.Collections.Generic.IReadOnlyList! MMCA.Common.UI.Common.Interfaces.IUIModule.NavItems.get -> System.Collections.Generic.IReadOnlyList! +MMCA.Common.UI.Common.Interfaces.IUIModule.NotFoundContentType.get -> System.Type? MMCA.Common.UI.Common.Interfaces.ToastSeverity MMCA.Common.UI.Common.Interfaces.ToastSeverity.Error = 4 -> MMCA.Common.UI.Common.Interfaces.ToastSeverity MMCA.Common.UI.Common.Interfaces.ToastSeverity.Info = 1 -> MMCA.Common.UI.Common.Interfaces.ToastSeverity @@ -87,6 +89,8 @@ MMCA.Common.UI.Common.Settings.LayoutSettings.BrandLogoUrl.get -> string! MMCA.Common.UI.Common.Settings.LayoutSettings.BrandLogoUrl.init -> void MMCA.Common.UI.Common.Settings.LayoutSettings.BrandName.get -> string! MMCA.Common.UI.Common.Settings.LayoutSettings.BrandName.init -> void +MMCA.Common.UI.Common.Settings.LayoutSettings.ClearToastsOnNavigation.get -> bool +MMCA.Common.UI.Common.Settings.LayoutSettings.ClearToastsOnNavigation.init -> void MMCA.Common.UI.Common.Settings.LayoutSettings.FooterText.get -> string! MMCA.Common.UI.Common.Settings.LayoutSettings.FooterText.init -> void MMCA.Common.UI.Common.Settings.LayoutSettings.HideNotificationPagesWhenUnregistered.get -> bool @@ -94,6 +98,8 @@ MMCA.Common.UI.Common.Settings.LayoutSettings.HideNotificationPagesWhenUnregiste MMCA.Common.UI.Common.Settings.LayoutSettings.LayoutSettings() -> void MMCA.Common.UI.Common.Settings.LayoutSettings.SessionsNavRequiredRole.get -> string? MMCA.Common.UI.Common.Settings.LayoutSettings.SessionsNavRequiredRole.init -> void +MMCA.Common.UI.Common.Settings.LayoutSettings.StampColorModeOnDocument.get -> bool +MMCA.Common.UI.Common.Settings.LayoutSettings.StampColorModeOnDocument.init -> void MMCA.Common.UI.Common.Settings.LegalSettings MMCA.Common.UI.Common.Settings.LegalSettings.CodeOfConductUrl.get -> string! MMCA.Common.UI.Common.Settings.LegalSettings.CodeOfConductUrl.init -> void @@ -305,6 +311,9 @@ MMCA.Common.UI.Components.Notifications.NotificationListener.DisposeAsync() -> S MMCA.Common.UI.Components.Notifications.NotificationListener.NotificationListener() -> void MMCA.Common.UI.Components.Notifications.PendingToastHost MMCA.Common.UI.Components.Notifications.PendingToastHost.PendingToastHost() -> void +MMCA.Common.UI.Components.Notifications.StaleToastSweeper +MMCA.Common.UI.Components.Notifications.StaleToastSweeper.Dispose() -> void +MMCA.Common.UI.Components.Notifications.StaleToastSweeper.StaleToastSweeper() -> void MMCA.Common.UI.Components.PageState.DetailLoadState MMCA.Common.UI.Components.PageState.DetailLoadState.Failed = 3 -> MMCA.Common.UI.Components.PageState.DetailLoadState MMCA.Common.UI.Components.PageState.DetailLoadState.Loaded = 1 -> MMCA.Common.UI.Components.PageState.DetailLoadState @@ -1533,6 +1542,7 @@ static readonly MMCA.Common.UI.Common.Settings.LegalSettings.SectionName -> stri static readonly MMCA.Common.UI.Common.Settings.NotificationBellOptions.SectionName -> string! static readonly MMCA.Common.UI.Common.Settings.RegistrationSettings.SectionName -> string! static readonly MMCA.Common.UI.Common.Settings.UiReadCacheOptions.SectionName -> string! +static readonly MMCA.Common.UI.Components.Notifications.StaleToastSweeper.Grace -> System.TimeSpan static readonly MMCA.Common.UI.Services.Api.AuthenticatedServiceBase.RetryPolicy -> Polly.Retry.AsyncRetryPolicy! static readonly MMCA.Common.UI.Services.Auth.AuthDelegatingHandler.SkipBearer -> System.Net.Http.HttpRequestOptionsKey virtual MMCA.Common.UI.Common.NavItem.$() -> MMCA.Common.UI.Common.NavItem! diff --git a/Source/Presentation/MMCA.Common.UI/PublicAPI.Unshipped.txt b/Source/Presentation/MMCA.Common.UI/PublicAPI.Unshipped.txt index 59438aa7..7dc5c581 100644 --- a/Source/Presentation/MMCA.Common.UI/PublicAPI.Unshipped.txt +++ b/Source/Presentation/MMCA.Common.UI/PublicAPI.Unshipped.txt @@ -1,11 +1 @@ #nullable enable -MMCA.Common.UI.Common.Interfaces.IUIModule.FooterComponentTypes.get -> System.Collections.Generic.IReadOnlyList! -MMCA.Common.UI.Common.Interfaces.IUIModule.NotFoundContentType.get -> System.Type? -MMCA.Common.UI.Common.Settings.LayoutSettings.ClearToastsOnNavigation.get -> bool -MMCA.Common.UI.Common.Settings.LayoutSettings.ClearToastsOnNavigation.init -> void -MMCA.Common.UI.Common.Settings.LayoutSettings.StampColorModeOnDocument.get -> bool -MMCA.Common.UI.Common.Settings.LayoutSettings.StampColorModeOnDocument.init -> void -MMCA.Common.UI.Components.Notifications.StaleToastSweeper -MMCA.Common.UI.Components.Notifications.StaleToastSweeper.Dispose() -> void -MMCA.Common.UI.Components.Notifications.StaleToastSweeper.StaleToastSweeper() -> void -static readonly MMCA.Common.UI.Components.Notifications.StaleToastSweeper.Grace -> System.TimeSpan From e08afe4b76c3305b9e7109337a6c63f49f085c4c Mon Sep 17 00:00:00 2001 From: Ivan Ball-llovera Date: Tue, 27 Oct 2026 09:23:52 -0400 Subject: [PATCH 5/5] release: v1.264.0 (promote the remaining PublicAPI entry) v1.263.0 landed on main while this PR was open, so this PR ships as v1.264.0. It also shipped UserPreferencesTestsBase.DarkPaletteBackgrounds without promoting it; promoted here so every Unshipped file is empty at the tag. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VkaHCMhi84vqJ7KJFUUDa2 --- Source/Hosting/MMCA.Common.Testing.E2E/PublicAPI.Shipped.txt | 1 + Source/Hosting/MMCA.Common.Testing.E2E/PublicAPI.Unshipped.txt | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Hosting/MMCA.Common.Testing.E2E/PublicAPI.Shipped.txt b/Source/Hosting/MMCA.Common.Testing.E2E/PublicAPI.Shipped.txt index 9b8db08f..c46607f3 100644 --- a/Source/Hosting/MMCA.Common.Testing.E2E/PublicAPI.Shipped.txt +++ b/Source/Hosting/MMCA.Common.Testing.E2E/PublicAPI.Shipped.txt @@ -332,3 +332,4 @@ virtual MMCA.Common.Testing.E2E.Workflows.Identity.ProfileManagementTestsBase.Ad virtual MMCA.Common.Testing.E2E.Workflows.Identity.ProfileManagementTestsBase.EmailSavedMessage.get -> string! virtual MMCA.Common.Testing.E2E.Workflows.Identity.ProfileManagementTestsBase.NameSavedMessage.get -> string! virtual MMCA.Common.Testing.E2E.Workflows.Identity.ProfileManagementTestsBase.ProfileSupportsEmailChange.get -> bool +virtual MMCA.Common.Testing.E2E.Workflows.Preferences.UserPreferencesTestsBase.DarkPaletteBackgrounds.get -> System.Collections.Generic.IReadOnlyList! diff --git a/Source/Hosting/MMCA.Common.Testing.E2E/PublicAPI.Unshipped.txt b/Source/Hosting/MMCA.Common.Testing.E2E/PublicAPI.Unshipped.txt index fff82e34..7dc5c581 100644 --- a/Source/Hosting/MMCA.Common.Testing.E2E/PublicAPI.Unshipped.txt +++ b/Source/Hosting/MMCA.Common.Testing.E2E/PublicAPI.Unshipped.txt @@ -1,2 +1 @@ #nullable enable -virtual MMCA.Common.Testing.E2E.Workflows.Preferences.UserPreferencesTestsBase.DarkPaletteBackgrounds.get -> System.Collections.Generic.IReadOnlyList!