From cee2bbb2ee3da15c0de63a8fbfc61aaade898c1a Mon Sep 17 00:00:00 2001 From: Ruben Vandeginste Date: Thu, 2 Apr 2026 15:40:09 +0200 Subject: [PATCH 1/8] Upgrade to .NET SDK 10.0.201 --- global.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global.json b/global.json index 3c540fe..c565347 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { "rollForward": "disable", - "version": "10.0.102" + "version": "10.0.201" } } From 54cbd0d7a89d6d932ebf7caeaae9d5f64bb1816f Mon Sep 17 00:00:00 2001 From: Ruben Vandeginste Date: Thu, 2 Apr 2026 15:41:09 +0200 Subject: [PATCH 2/8] Update package lock files, upgrading dependencies --- src/I.EntityFrameworkCore/packages.lock.json | 153 +++++++++++-------- src/I/packages.lock.json | 87 +++++++---- 2 files changed, 147 insertions(+), 93 deletions(-) diff --git a/src/I.EntityFrameworkCore/packages.lock.json b/src/I.EntityFrameworkCore/packages.lock.json index 03f89a7..f32968a 100644 --- a/src/I.EntityFrameworkCore/packages.lock.json +++ b/src/I.EntityFrameworkCore/packages.lock.json @@ -5,30 +5,31 @@ "Microsoft.EntityFrameworkCore": { "type": "Direct", "requested": "[10.*, )", - "resolved": "10.0.3", - "contentHash": "CDEImwD4A7BseABJMCpLZnhfFjmPY/bHwhhS70elc6gLI/bYUEOhxWt7PmaNGYGhIEzOnStlCy5QcVb+8dod5Q==", + "resolved": "10.0.5", + "contentHash": "9tNBmK3EpYVGRQLiqP+bqK2m+TD0Gv//4vCzR7ZOgl4FWzCFyOpYdIVka13M4kcBdPdSJcs3wbHr3rmzOqbIMA==", "dependencies": { - "Microsoft.EntityFrameworkCore.Abstractions": "10.0.3", - "Microsoft.EntityFrameworkCore.Analyzers": "10.0.3" + "Microsoft.EntityFrameworkCore.Abstractions": "10.0.5", + "Microsoft.EntityFrameworkCore.Analyzers": "10.0.5" } }, "Microsoft.EntityFrameworkCore.Relational": { "type": "Direct", "requested": "[10.*, )", - "resolved": "10.0.3", - "contentHash": "Pmh60OK9neVr/M0FJwm9hlzm2bD4Kd65SID8E6SP5c90tExNgXwORrlEWl0oGU/ig9ifpNN4PSpIrnHNozlT5w==", + "resolved": "10.0.5", + "contentHash": "uxmFjZEAB/KbsgWFSS4lLqkEHCfXxB2x0UcbiO4e5fCRpFFeTMSx/me6009nYJLu5IKlDwO1POh++P6RilFTDw==", "dependencies": { - "Microsoft.EntityFrameworkCore": "10.0.3" + "Microsoft.EntityFrameworkCore": "10.0.5" } }, "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.*, )", - "resolved": "10.0.103", - "contentHash": "qZk7r40ftpZY+/sO019sgWAWfNqC2CLSspDdAxNYCJU/bCi/8jVwvOMjzb/d5gjCRNzQ4OCYgBfhdpQyVwLTyw==", + "resolved": "10.0.201", + "contentHash": "qxYAmO4ktzd9L+HMdnqWucxpu7bI9undPyACXOMqPyhaiMtbpbYL/n0ACyWIJlbyEJrXFwxiOaBOSasLtDvsCg==", "dependencies": { - "Microsoft.Build.Tasks.Git": "10.0.103", - "Microsoft.SourceLink.Common": "10.0.103" + "Microsoft.Build.Tasks.Git": "10.0.201", + "Microsoft.SourceLink.Common": "10.0.201", + "System.IO.Hashing": "10.0.5" } }, "PPWCode.AspNetCore.Server.I": { @@ -81,18 +82,21 @@ }, "Microsoft.Build.Tasks.Git": { "type": "Transitive", - "resolved": "10.0.103", - "contentHash": "QoiCMcPuxC6eqRQmrmF9zBY96ejIznXtve/lJJbonGD9I5Aygf2AUCOWslGiCEtBbfWRSuUnepBjuuVOdAl5ag==" + "resolved": "10.0.201", + "contentHash": "DMYBnrFZvLnBKn14VavEuuIr31CY6YY2i2L9P8DorS/Qp6ifRR8ZPLdJCFLFfjikNq8DykbYyLd/RP6lSqHcWw==", + "dependencies": { + "System.IO.Hashing": "10.0.5" + } }, "Microsoft.EntityFrameworkCore.Abstractions": { "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "c7Uoz381xnMHNBRB8eHRhGgzUtXbgddlbODhwZRrTSzZWDharp3RkJsFwhxyESbeXhCqmML7VdvjMQ7uu+HreA==" + "resolved": "10.0.5", + "contentHash": "32c58Rnm47Qvhimawf67KO9PytgPz3QoWye7Abapt0Yocw/JnzMiSNj/pRoIKyn8Jxypkv86zxKD4Q/zNTc0Ag==" }, "Microsoft.EntityFrameworkCore.Analyzers": { "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "lVABgJTyTUNE7Bi0bSu4dWHiCHIXEGzTh/kLh0N07IgU/tIKwTeBPp8tgV4x2iKj4h7iPLo8oXzyHmLDGtAE1g==" + "resolved": "10.0.5", + "contentHash": "ipC4u1VojgEfoIZhtbS2Sx5IluJTP/Jf1hz3yGsxGBgSukYY/CquI6rAjxn5H58CZgVn36qcuPPtNMwZ0AUzMg==" }, "Microsoft.Extensions.ApiDescription.Server": { "type": "Transitive", @@ -106,8 +110,8 @@ }, "Microsoft.SourceLink.Common": { "type": "Transitive", - "resolved": "10.0.103", - "contentHash": "cMtGW5/r0ck72Jg2QwZcNTX59z+iB/B1kW84VMa/eX8L19DhHIuIcQjfK0pgLLBxd60Jl0Bj9GUolcM0MnJnZA==" + "resolved": "10.0.201", + "contentHash": "QbBYhkjgL6rCnBfDbzsAJLlsad13TlBHqYCFDIw56OO2g6ix+9RsmY8uxiQGdWwFKbZXaXyAA6jDCzFYVGCZDw==" }, "PPWCode.Util.Time.I": { "type": "Transitive", @@ -154,6 +158,11 @@ "resolved": "7.3.2", "contentHash": "SNQuFjYin9KhkoCSVOD5/Y4VEyAjKBDeZkIqqY6x+oI21HMKzzVkeJA9V7tWFXf5df4m/+pTIlbKO7g5W9UroQ==" }, + "System.IO.Hashing": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "8IBJWcCT9+e4Bmevm4T7+fQEiAh133KGiz4oiVTgJckd3Q76OFdR1falgn9lpz7+C4HJvogCDJeAa2QmvbeVtg==" + }, "ppwcode.aspnetcore.host.i": { "type": "Project", "dependencies": { @@ -190,8 +199,8 @@ "PPWCode.Vernacular.Persistence.V": { "type": "CentralTransitive", "requested": "[1.*, )", - "resolved": "1.0.0", - "contentHash": "YsfYBPHs+7UWS1gI4UbezhUS8xno1OfdYq0TaDCU7QSVQlDOiYTgCdOSN/xFy9hmZNz7u3BpcrEexUBUpWGAgQ==", + "resolved": "1.1.0", + "contentHash": "iXoTU962vqg7k4Xivj5yZKRBwes95XY2pEAQ1nAATv8i1+Krc9rXQsWvrLNCs5gD6Wf7racSjcr3ozoo3MHuWA==", "dependencies": { "PPWCode.Vernacular.Contracts.I": "1.5.0", "PPWCode.Vernacular.Exceptions.V": "1.1.0", @@ -235,30 +244,31 @@ "Microsoft.EntityFrameworkCore": { "type": "Direct", "requested": "[8.*, )", - "resolved": "8.0.24", - "contentHash": "Jf82MqfFU3Nte4Cpmtq5HXhQfXHYhJawFawWuy281uiibg/Ch9z9D/gMnORFhjmGSxzSA4CmRaHwDm2lU9H/ZA==", + "resolved": "8.0.25", + "contentHash": "1seNis+YnJwiQpwzBCQVWTlyfnlfwotQUkCC0MINwS6yt5Gco4XZ/xOz1fB5uwAWjO/TrDzL/sIMk2hXPxeHbg==", "dependencies": { - "Microsoft.EntityFrameworkCore.Abstractions": "8.0.24", - "Microsoft.EntityFrameworkCore.Analyzers": "8.0.24" + "Microsoft.EntityFrameworkCore.Abstractions": "8.0.25", + "Microsoft.EntityFrameworkCore.Analyzers": "8.0.25" } }, "Microsoft.EntityFrameworkCore.Relational": { "type": "Direct", "requested": "[8.*, )", - "resolved": "8.0.24", - "contentHash": "QMGORS3ltx2RWHBCUcBjadS0eNYGkTGXsOdZf3oSM6pZuNBBl16z6gThA3a+BF8T5HY3jThxVDFKaPHxmpueXA==", + "resolved": "8.0.25", + "contentHash": "/6S+I5PvmlzDeLMCXZGCXmnUNiJdLyucUrnwkItNhNRZB8ftVYXdyM0omNwm3UDvRSQVMnb3e5s7+YusLvvYeg==", "dependencies": { - "Microsoft.EntityFrameworkCore": "8.0.24" + "Microsoft.EntityFrameworkCore": "8.0.25" } }, "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.*, )", - "resolved": "10.0.103", - "contentHash": "qZk7r40ftpZY+/sO019sgWAWfNqC2CLSspDdAxNYCJU/bCi/8jVwvOMjzb/d5gjCRNzQ4OCYgBfhdpQyVwLTyw==", + "resolved": "10.0.201", + "contentHash": "qxYAmO4ktzd9L+HMdnqWucxpu7bI9undPyACXOMqPyhaiMtbpbYL/n0ACyWIJlbyEJrXFwxiOaBOSasLtDvsCg==", "dependencies": { - "Microsoft.Build.Tasks.Git": "10.0.103", - "Microsoft.SourceLink.Common": "10.0.103" + "Microsoft.Build.Tasks.Git": "10.0.201", + "Microsoft.SourceLink.Common": "10.0.201", + "System.IO.Hashing": "10.0.5" } }, "PPWCode.AspNetCore.Server.I": { @@ -311,18 +321,21 @@ }, "Microsoft.Build.Tasks.Git": { "type": "Transitive", - "resolved": "10.0.103", - "contentHash": "QoiCMcPuxC6eqRQmrmF9zBY96ejIznXtve/lJJbonGD9I5Aygf2AUCOWslGiCEtBbfWRSuUnepBjuuVOdAl5ag==" + "resolved": "10.0.201", + "contentHash": "DMYBnrFZvLnBKn14VavEuuIr31CY6YY2i2L9P8DorS/Qp6ifRR8ZPLdJCFLFfjikNq8DykbYyLd/RP6lSqHcWw==", + "dependencies": { + "System.IO.Hashing": "10.0.5" + } }, "Microsoft.EntityFrameworkCore.Abstractions": { "type": "Transitive", - "resolved": "8.0.24", - "contentHash": "epzWc4RnG6aQS+MfIK1gg1XbL8ZTYgKtW8L1lDVHG4C3nilLd6tX8moX6Sv8sXQkH/tMhWhT2e4Nm811kYeoxg==" + "resolved": "8.0.25", + "contentHash": "YGJD4/P34LsQetSH5R0J58nAWSFGn7BE11zThfCkILTW8wy+9/kwqM2P0ciHhuzlPzwApputDfQ5u35+fH6BGQ==" }, "Microsoft.EntityFrameworkCore.Analyzers": { "type": "Transitive", - "resolved": "8.0.24", - "contentHash": "nuMx9iCGkZgHvPKlnrYBjlxRgy8VDe443H0PbiDUvxQ8+4nC5JYhqQ9u5lg+FssnTh+QyvwVVVHvkCyAnrpajA==" + "resolved": "8.0.25", + "contentHash": "jHtsaYPDBoNsIA085ZbqrZGidG+rnoZGJ/0JTL6QHR0XV4JLnLoJgPao7zVsqhEVJUnS7JOfVClr0UThAxoiuQ==" }, "Microsoft.Extensions.ApiDescription.Server": { "type": "Transitive", @@ -336,8 +349,8 @@ }, "Microsoft.SourceLink.Common": { "type": "Transitive", - "resolved": "10.0.103", - "contentHash": "cMtGW5/r0ck72Jg2QwZcNTX59z+iB/B1kW84VMa/eX8L19DhHIuIcQjfK0pgLLBxd60Jl0Bj9GUolcM0MnJnZA==" + "resolved": "10.0.201", + "contentHash": "QbBYhkjgL6rCnBfDbzsAJLlsad13TlBHqYCFDIw56OO2g6ix+9RsmY8uxiQGdWwFKbZXaXyAA6jDCzFYVGCZDw==" }, "PPWCode.Util.Time.I": { "type": "Transitive", @@ -384,6 +397,11 @@ "resolved": "7.3.2", "contentHash": "SNQuFjYin9KhkoCSVOD5/Y4VEyAjKBDeZkIqqY6x+oI21HMKzzVkeJA9V7tWFXf5df4m/+pTIlbKO7g5W9UroQ==" }, + "System.IO.Hashing": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "8IBJWcCT9+e4Bmevm4T7+fQEiAh133KGiz4oiVTgJckd3Q76OFdR1falgn9lpz7+C4HJvogCDJeAa2QmvbeVtg==" + }, "ppwcode.aspnetcore.host.i": { "type": "Project", "dependencies": { @@ -420,8 +438,8 @@ "PPWCode.Vernacular.Persistence.V": { "type": "CentralTransitive", "requested": "[1.*, )", - "resolved": "1.0.0", - "contentHash": "YsfYBPHs+7UWS1gI4UbezhUS8xno1OfdYq0TaDCU7QSVQlDOiYTgCdOSN/xFy9hmZNz7u3BpcrEexUBUpWGAgQ==", + "resolved": "1.1.0", + "contentHash": "iXoTU962vqg7k4Xivj5yZKRBwes95XY2pEAQ1nAATv8i1+Krc9rXQsWvrLNCs5gD6Wf7racSjcr3ozoo3MHuWA==", "dependencies": { "PPWCode.Vernacular.Contracts.I": "1.5.0", "PPWCode.Vernacular.Exceptions.V": "1.1.0", @@ -465,30 +483,31 @@ "Microsoft.EntityFrameworkCore": { "type": "Direct", "requested": "[9.*, )", - "resolved": "9.0.13", - "contentHash": "irtGBQFEnjb17HRgxxbj3HgC14js48aYus9YhTpBEihqrdH50M7YqBtWippwpIJWwdMF7TFyQXpSTt4lFekPZw==", + "resolved": "9.0.14", + "contentHash": "Bxw540n++gVwFbrh3NyxwV4ZwPonhbBmhiq7JdDyBUibLAPGvqvsu73Us3LGfRoLbQrhPEgu6cKSvQq+5ABAJA==", "dependencies": { - "Microsoft.EntityFrameworkCore.Abstractions": "9.0.13", - "Microsoft.EntityFrameworkCore.Analyzers": "9.0.13" + "Microsoft.EntityFrameworkCore.Abstractions": "9.0.14", + "Microsoft.EntityFrameworkCore.Analyzers": "9.0.14" } }, "Microsoft.EntityFrameworkCore.Relational": { "type": "Direct", "requested": "[9.*, )", - "resolved": "9.0.13", - "contentHash": "eQgG7yfe3ULgRk7YS8oIeljbmtV8AJ+lmzd5ezbA1ceEa1gRo9Y/d8+AvHq9NATp7QWZoe+qhyDFvCX8+ByI/A==", + "resolved": "9.0.14", + "contentHash": "R73NifQ3oiAEmvQokCrUtDaVMRO9UQXp52cpwosTZkAmpK2XtmJbHIrZRUjvLWkCzTlwjTDP27bH04PlyNeJoA==", "dependencies": { - "Microsoft.EntityFrameworkCore": "9.0.13" + "Microsoft.EntityFrameworkCore": "9.0.14" } }, "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.*, )", - "resolved": "10.0.103", - "contentHash": "qZk7r40ftpZY+/sO019sgWAWfNqC2CLSspDdAxNYCJU/bCi/8jVwvOMjzb/d5gjCRNzQ4OCYgBfhdpQyVwLTyw==", + "resolved": "10.0.201", + "contentHash": "qxYAmO4ktzd9L+HMdnqWucxpu7bI9undPyACXOMqPyhaiMtbpbYL/n0ACyWIJlbyEJrXFwxiOaBOSasLtDvsCg==", "dependencies": { - "Microsoft.Build.Tasks.Git": "10.0.103", - "Microsoft.SourceLink.Common": "10.0.103" + "Microsoft.Build.Tasks.Git": "10.0.201", + "Microsoft.SourceLink.Common": "10.0.201", + "System.IO.Hashing": "10.0.5" } }, "PPWCode.AspNetCore.Server.I": { @@ -541,18 +560,21 @@ }, "Microsoft.Build.Tasks.Git": { "type": "Transitive", - "resolved": "10.0.103", - "contentHash": "QoiCMcPuxC6eqRQmrmF9zBY96ejIznXtve/lJJbonGD9I5Aygf2AUCOWslGiCEtBbfWRSuUnepBjuuVOdAl5ag==" + "resolved": "10.0.201", + "contentHash": "DMYBnrFZvLnBKn14VavEuuIr31CY6YY2i2L9P8DorS/Qp6ifRR8ZPLdJCFLFfjikNq8DykbYyLd/RP6lSqHcWw==", + "dependencies": { + "System.IO.Hashing": "10.0.5" + } }, "Microsoft.EntityFrameworkCore.Abstractions": { "type": "Transitive", - "resolved": "9.0.13", - "contentHash": "baCHd+W1QEl2HmWodnFhJ50eElH/Z+ku+aKod4GN9AGhkItqBCcVkETMz/b9QtqxOgyM+Pu0Srv7atLTBdXSFg==" + "resolved": "9.0.14", + "contentHash": "lU0DBe/uZ5hNW1G6tQcikcJhjmDE4eRjRQzaiFi41zxXUMndtZQaGGVNVWXeW6M9K6T212WnBA5cwydzBYmKNA==" }, "Microsoft.EntityFrameworkCore.Analyzers": { "type": "Transitive", - "resolved": "9.0.13", - "contentHash": "GQE2qm6U45Zgouw7PSojGmkDnNq+IMjO/+BOm8OHqzK0h+uNjL6MQeuansNQZ6gIM2e3w9KZTLXQTHA0FcuknQ==" + "resolved": "9.0.14", + "contentHash": "u7j9NgArLjf3OzeXX1jx9K59Ytki0CfhMloXxons/cIhq/35QilP6R+NfPlQy/nMax+edeGRRfEg9hWFsjqsXA==" }, "Microsoft.Extensions.ApiDescription.Server": { "type": "Transitive", @@ -566,8 +588,8 @@ }, "Microsoft.SourceLink.Common": { "type": "Transitive", - "resolved": "10.0.103", - "contentHash": "cMtGW5/r0ck72Jg2QwZcNTX59z+iB/B1kW84VMa/eX8L19DhHIuIcQjfK0pgLLBxd60Jl0Bj9GUolcM0MnJnZA==" + "resolved": "10.0.201", + "contentHash": "QbBYhkjgL6rCnBfDbzsAJLlsad13TlBHqYCFDIw56OO2g6ix+9RsmY8uxiQGdWwFKbZXaXyAA6jDCzFYVGCZDw==" }, "PPWCode.Util.Time.I": { "type": "Transitive", @@ -614,6 +636,11 @@ "resolved": "7.3.2", "contentHash": "SNQuFjYin9KhkoCSVOD5/Y4VEyAjKBDeZkIqqY6x+oI21HMKzzVkeJA9V7tWFXf5df4m/+pTIlbKO7g5W9UroQ==" }, + "System.IO.Hashing": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "8IBJWcCT9+e4Bmevm4T7+fQEiAh133KGiz4oiVTgJckd3Q76OFdR1falgn9lpz7+C4HJvogCDJeAa2QmvbeVtg==" + }, "ppwcode.aspnetcore.host.i": { "type": "Project", "dependencies": { @@ -650,8 +677,8 @@ "PPWCode.Vernacular.Persistence.V": { "type": "CentralTransitive", "requested": "[1.*, )", - "resolved": "1.0.0", - "contentHash": "YsfYBPHs+7UWS1gI4UbezhUS8xno1OfdYq0TaDCU7QSVQlDOiYTgCdOSN/xFy9hmZNz7u3BpcrEexUBUpWGAgQ==", + "resolved": "1.1.0", + "contentHash": "iXoTU962vqg7k4Xivj5yZKRBwes95XY2pEAQ1nAATv8i1+Krc9rXQsWvrLNCs5gD6Wf7racSjcr3ozoo3MHuWA==", "dependencies": { "PPWCode.Vernacular.Contracts.I": "1.5.0", "PPWCode.Vernacular.Exceptions.V": "1.1.0", diff --git a/src/I/packages.lock.json b/src/I/packages.lock.json index 8ea2c8b..2a00b9e 100644 --- a/src/I/packages.lock.json +++ b/src/I/packages.lock.json @@ -14,11 +14,12 @@ "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.*, )", - "resolved": "10.0.103", - "contentHash": "qZk7r40ftpZY+/sO019sgWAWfNqC2CLSspDdAxNYCJU/bCi/8jVwvOMjzb/d5gjCRNzQ4OCYgBfhdpQyVwLTyw==", + "resolved": "10.0.201", + "contentHash": "qxYAmO4ktzd9L+HMdnqWucxpu7bI9undPyACXOMqPyhaiMtbpbYL/n0ACyWIJlbyEJrXFwxiOaBOSasLtDvsCg==", "dependencies": { - "Microsoft.Build.Tasks.Git": "10.0.103", - "Microsoft.SourceLink.Common": "10.0.103" + "Microsoft.Build.Tasks.Git": "10.0.201", + "Microsoft.SourceLink.Common": "10.0.201", + "System.IO.Hashing": "10.0.5" } }, "PPWCode.AspNetCore.Server.I": { @@ -42,8 +43,8 @@ "PPWCode.Vernacular.Persistence.V": { "type": "Direct", "requested": "[1.*, )", - "resolved": "1.0.0", - "contentHash": "YsfYBPHs+7UWS1gI4UbezhUS8xno1OfdYq0TaDCU7QSVQlDOiYTgCdOSN/xFy9hmZNz7u3BpcrEexUBUpWGAgQ==", + "resolved": "1.1.0", + "contentHash": "iXoTU962vqg7k4Xivj5yZKRBwes95XY2pEAQ1nAATv8i1+Krc9rXQsWvrLNCs5gD6Wf7racSjcr3ozoo3MHuWA==", "dependencies": { "PPWCode.Vernacular.Contracts.I": "1.5.0", "PPWCode.Vernacular.Exceptions.V": "1.1.0", @@ -114,8 +115,11 @@ }, "Microsoft.Build.Tasks.Git": { "type": "Transitive", - "resolved": "10.0.103", - "contentHash": "QoiCMcPuxC6eqRQmrmF9zBY96ejIznXtve/lJJbonGD9I5Aygf2AUCOWslGiCEtBbfWRSuUnepBjuuVOdAl5ag==" + "resolved": "10.0.201", + "contentHash": "DMYBnrFZvLnBKn14VavEuuIr31CY6YY2i2L9P8DorS/Qp6ifRR8ZPLdJCFLFfjikNq8DykbYyLd/RP6lSqHcWw==", + "dependencies": { + "System.IO.Hashing": "10.0.5" + } }, "Microsoft.Extensions.ApiDescription.Server": { "type": "Transitive", @@ -129,8 +133,8 @@ }, "Microsoft.SourceLink.Common": { "type": "Transitive", - "resolved": "10.0.103", - "contentHash": "cMtGW5/r0ck72Jg2QwZcNTX59z+iB/B1kW84VMa/eX8L19DhHIuIcQjfK0pgLLBxd60Jl0Bj9GUolcM0MnJnZA==" + "resolved": "10.0.201", + "contentHash": "QbBYhkjgL6rCnBfDbzsAJLlsad13TlBHqYCFDIw56OO2g6ix+9RsmY8uxiQGdWwFKbZXaXyAA6jDCzFYVGCZDw==" }, "PPWCode.Util.Time.I": { "type": "Transitive", @@ -177,6 +181,11 @@ "resolved": "7.3.2", "contentHash": "SNQuFjYin9KhkoCSVOD5/Y4VEyAjKBDeZkIqqY6x+oI21HMKzzVkeJA9V7tWFXf5df4m/+pTIlbKO7g5W9UroQ==" }, + "System.IO.Hashing": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "8IBJWcCT9+e4Bmevm4T7+fQEiAh133KGiz4oiVTgJckd3Q76OFdR1falgn9lpz7+C4HJvogCDJeAa2QmvbeVtg==" + }, "PPWCode.Vernacular.Contracts.I": { "type": "CentralTransitive", "requested": "[1.*, )", @@ -203,11 +212,12 @@ "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.*, )", - "resolved": "10.0.103", - "contentHash": "qZk7r40ftpZY+/sO019sgWAWfNqC2CLSspDdAxNYCJU/bCi/8jVwvOMjzb/d5gjCRNzQ4OCYgBfhdpQyVwLTyw==", + "resolved": "10.0.201", + "contentHash": "qxYAmO4ktzd9L+HMdnqWucxpu7bI9undPyACXOMqPyhaiMtbpbYL/n0ACyWIJlbyEJrXFwxiOaBOSasLtDvsCg==", "dependencies": { - "Microsoft.Build.Tasks.Git": "10.0.103", - "Microsoft.SourceLink.Common": "10.0.103" + "Microsoft.Build.Tasks.Git": "10.0.201", + "Microsoft.SourceLink.Common": "10.0.201", + "System.IO.Hashing": "10.0.5" } }, "PPWCode.AspNetCore.Server.I": { @@ -231,8 +241,8 @@ "PPWCode.Vernacular.Persistence.V": { "type": "Direct", "requested": "[1.*, )", - "resolved": "1.0.0", - "contentHash": "YsfYBPHs+7UWS1gI4UbezhUS8xno1OfdYq0TaDCU7QSVQlDOiYTgCdOSN/xFy9hmZNz7u3BpcrEexUBUpWGAgQ==", + "resolved": "1.1.0", + "contentHash": "iXoTU962vqg7k4Xivj5yZKRBwes95XY2pEAQ1nAATv8i1+Krc9rXQsWvrLNCs5gD6Wf7racSjcr3ozoo3MHuWA==", "dependencies": { "PPWCode.Vernacular.Contracts.I": "1.5.0", "PPWCode.Vernacular.Exceptions.V": "1.1.0", @@ -303,8 +313,11 @@ }, "Microsoft.Build.Tasks.Git": { "type": "Transitive", - "resolved": "10.0.103", - "contentHash": "QoiCMcPuxC6eqRQmrmF9zBY96ejIznXtve/lJJbonGD9I5Aygf2AUCOWslGiCEtBbfWRSuUnepBjuuVOdAl5ag==" + "resolved": "10.0.201", + "contentHash": "DMYBnrFZvLnBKn14VavEuuIr31CY6YY2i2L9P8DorS/Qp6ifRR8ZPLdJCFLFfjikNq8DykbYyLd/RP6lSqHcWw==", + "dependencies": { + "System.IO.Hashing": "10.0.5" + } }, "Microsoft.Extensions.ApiDescription.Server": { "type": "Transitive", @@ -318,8 +331,8 @@ }, "Microsoft.SourceLink.Common": { "type": "Transitive", - "resolved": "10.0.103", - "contentHash": "cMtGW5/r0ck72Jg2QwZcNTX59z+iB/B1kW84VMa/eX8L19DhHIuIcQjfK0pgLLBxd60Jl0Bj9GUolcM0MnJnZA==" + "resolved": "10.0.201", + "contentHash": "QbBYhkjgL6rCnBfDbzsAJLlsad13TlBHqYCFDIw56OO2g6ix+9RsmY8uxiQGdWwFKbZXaXyAA6jDCzFYVGCZDw==" }, "PPWCode.Util.Time.I": { "type": "Transitive", @@ -366,6 +379,11 @@ "resolved": "7.3.2", "contentHash": "SNQuFjYin9KhkoCSVOD5/Y4VEyAjKBDeZkIqqY6x+oI21HMKzzVkeJA9V7tWFXf5df4m/+pTIlbKO7g5W9UroQ==" }, + "System.IO.Hashing": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "8IBJWcCT9+e4Bmevm4T7+fQEiAh133KGiz4oiVTgJckd3Q76OFdR1falgn9lpz7+C4HJvogCDJeAa2QmvbeVtg==" + }, "PPWCode.Vernacular.Contracts.I": { "type": "CentralTransitive", "requested": "[1.*, )", @@ -392,11 +410,12 @@ "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.*, )", - "resolved": "10.0.103", - "contentHash": "qZk7r40ftpZY+/sO019sgWAWfNqC2CLSspDdAxNYCJU/bCi/8jVwvOMjzb/d5gjCRNzQ4OCYgBfhdpQyVwLTyw==", + "resolved": "10.0.201", + "contentHash": "qxYAmO4ktzd9L+HMdnqWucxpu7bI9undPyACXOMqPyhaiMtbpbYL/n0ACyWIJlbyEJrXFwxiOaBOSasLtDvsCg==", "dependencies": { - "Microsoft.Build.Tasks.Git": "10.0.103", - "Microsoft.SourceLink.Common": "10.0.103" + "Microsoft.Build.Tasks.Git": "10.0.201", + "Microsoft.SourceLink.Common": "10.0.201", + "System.IO.Hashing": "10.0.5" } }, "PPWCode.AspNetCore.Server.I": { @@ -420,8 +439,8 @@ "PPWCode.Vernacular.Persistence.V": { "type": "Direct", "requested": "[1.*, )", - "resolved": "1.0.0", - "contentHash": "YsfYBPHs+7UWS1gI4UbezhUS8xno1OfdYq0TaDCU7QSVQlDOiYTgCdOSN/xFy9hmZNz7u3BpcrEexUBUpWGAgQ==", + "resolved": "1.1.0", + "contentHash": "iXoTU962vqg7k4Xivj5yZKRBwes95XY2pEAQ1nAATv8i1+Krc9rXQsWvrLNCs5gD6Wf7racSjcr3ozoo3MHuWA==", "dependencies": { "PPWCode.Vernacular.Contracts.I": "1.5.0", "PPWCode.Vernacular.Exceptions.V": "1.1.0", @@ -492,8 +511,11 @@ }, "Microsoft.Build.Tasks.Git": { "type": "Transitive", - "resolved": "10.0.103", - "contentHash": "QoiCMcPuxC6eqRQmrmF9zBY96ejIznXtve/lJJbonGD9I5Aygf2AUCOWslGiCEtBbfWRSuUnepBjuuVOdAl5ag==" + "resolved": "10.0.201", + "contentHash": "DMYBnrFZvLnBKn14VavEuuIr31CY6YY2i2L9P8DorS/Qp6ifRR8ZPLdJCFLFfjikNq8DykbYyLd/RP6lSqHcWw==", + "dependencies": { + "System.IO.Hashing": "10.0.5" + } }, "Microsoft.Extensions.ApiDescription.Server": { "type": "Transitive", @@ -507,8 +529,8 @@ }, "Microsoft.SourceLink.Common": { "type": "Transitive", - "resolved": "10.0.103", - "contentHash": "cMtGW5/r0ck72Jg2QwZcNTX59z+iB/B1kW84VMa/eX8L19DhHIuIcQjfK0pgLLBxd60Jl0Bj9GUolcM0MnJnZA==" + "resolved": "10.0.201", + "contentHash": "QbBYhkjgL6rCnBfDbzsAJLlsad13TlBHqYCFDIw56OO2g6ix+9RsmY8uxiQGdWwFKbZXaXyAA6jDCzFYVGCZDw==" }, "PPWCode.Util.Time.I": { "type": "Transitive", @@ -555,6 +577,11 @@ "resolved": "7.3.2", "contentHash": "SNQuFjYin9KhkoCSVOD5/Y4VEyAjKBDeZkIqqY6x+oI21HMKzzVkeJA9V7tWFXf5df4m/+pTIlbKO7g5W9UroQ==" }, + "System.IO.Hashing": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "8IBJWcCT9+e4Bmevm4T7+fQEiAh133KGiz4oiVTgJckd3Q76OFdR1falgn9lpz7+C4HJvogCDJeAa2QmvbeVtg==" + }, "PPWCode.Vernacular.Contracts.I": { "type": "CentralTransitive", "requested": "[1.*, )", From c40877d16b84272eed4ccbeeca7eb9cea29a9190 Mon Sep 17 00:00:00 2001 From: Ruben Vandeginste Date: Thu, 2 Apr 2026 16:03:59 +0200 Subject: [PATCH 3/8] Upgrade Swashbuckle.AspNetCore to 10.x --- src/Directory.Packages.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 615f997..3153056 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -50,8 +50,8 @@ - - + + From 45a2f0028fa2e1289b133e3c3cc1b480c0b000ff Mon Sep 17 00:00:00 2001 From: Ruben Vandeginste Date: Thu, 2 Apr 2026 16:04:09 +0200 Subject: [PATCH 4/8] Upgrade package lock files --- src/I.EntityFrameworkCore/packages.lock.json | 150 +++++++++---------- src/I/packages.lock.json | 138 ++++++++--------- 2 files changed, 144 insertions(+), 144 deletions(-) diff --git a/src/I.EntityFrameworkCore/packages.lock.json b/src/I.EntityFrameworkCore/packages.lock.json index f32968a..02187ad 100644 --- a/src/I.EntityFrameworkCore/packages.lock.json +++ b/src/I.EntityFrameworkCore/packages.lock.json @@ -100,13 +100,13 @@ }, "Microsoft.Extensions.ApiDescription.Server": { "type": "Transitive", - "resolved": "6.0.5", - "contentHash": "Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==" + "resolved": "10.0.0", + "contentHash": "NCWCGiwRwje8773yzPQhvucYnnfeR+ZoB1VRIrIMp4uaeUNw7jvEPHij3HIbwCDuNCrNcphA00KSAR9yD9qmbg==" }, "Microsoft.OpenApi": { "type": "Transitive", - "resolved": "1.6.22", - "contentHash": "aBvunmrdu/x+4CaA/UP1Jx4xWGwk4kymhoIRnn2Vp+zi5/KOPQJ9EkSXHRUr01WcGKtYl3Au7XfkPJbU1G2sjQ==" + "resolved": "2.4.1", + "contentHash": "u7QhXCISMQuab3flasb1hoaiERmUqyWsW7tmQODyILoQ7mJV5IRGM+2KKZYo0QUfC13evEOcHAb6TPWgqEQtrw==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -139,24 +139,24 @@ }, "Swashbuckle.AspNetCore.Swagger": { "type": "Transitive", - "resolved": "7.3.2", - "contentHash": "39Z2N3cLHDcDinu2IW5IaQO9wGPKTbc+vKbjIT/6gN3jFYypWY5U3O8i7Y9rmYDgxkm6niICnkcFZ3hEvikIHA==", + "resolved": "10.1.7", + "contentHash": "EjLibt/d/QuRv170GoihTbcPUpgzSFm2WKHhnGJFZQ03JYzfuitsM79azaAR8NBwRunU7yScSX6HRE5JUlrEMQ==", "dependencies": { - "Microsoft.OpenApi": "1.6.22" + "Microsoft.OpenApi": "2.4.1" } }, "Swashbuckle.AspNetCore.SwaggerGen": { "type": "Transitive", - "resolved": "7.3.2", - "contentHash": "x5famjpcgazpT/8eEIlpSYSTZDq6ojMARhuJgj6O67Uk+Yb1DdDM5yikdL7GK1pMk5rYBETUCRWYP6rp+vHnlA==", + "resolved": "10.1.7", + "contentHash": "PuubO9BjvNn6U3D9kLpuWKY1JtziWw7SsGBq0age1E50uQjQ8Fzl8s0EwzrLfANqYJNgDnJi9l7N1QxcGVB2Zw==", "dependencies": { - "Swashbuckle.AspNetCore.Swagger": "7.3.2" + "Swashbuckle.AspNetCore.Swagger": "10.1.7" } }, "Swashbuckle.AspNetCore.SwaggerUI": { "type": "Transitive", - "resolved": "7.3.2", - "contentHash": "SNQuFjYin9KhkoCSVOD5/Y4VEyAjKBDeZkIqqY6x+oI21HMKzzVkeJA9V7tWFXf5df4m/+pTIlbKO7g5W9UroQ==" + "resolved": "10.1.7", + "contentHash": "iJo3ODyUb/M8Vm8AH1r9y9iAba0w95xsCn3zFVl96ISRHbTDWxi+l7oFVCZqUEdjd97B8VMDPnMliWAdomR8uw==" }, "System.IO.Hashing": { "type": "Transitive", @@ -171,8 +171,8 @@ "PPWCode.Util.Authorization.I": "[1.*, )", "PPWCode.Vernacular.Persistence.V": "[1.*, )", "PPWCode.Vernacular.RequestContext.I": "[1.*, )", - "Swashbuckle.AspNetCore": "[7.*, )", - "Swashbuckle.AspNetCore.Annotations": "[7.*, )" + "Swashbuckle.AspNetCore": "[10.*, )", + "Swashbuckle.AspNetCore.Annotations": "[10.*, )" } }, "Asp.Versioning.Mvc.ApiExplorer": { @@ -220,23 +220,23 @@ }, "Swashbuckle.AspNetCore": { "type": "CentralTransitive", - "requested": "[7.*, )", - "resolved": "7.3.2", - "contentHash": "WEkW7Cl8bexT75eURuqrqM/TQx+ftWKOWlCHzmw3Fl3oAmxiBO/lDVOuuqZsaBCHQIBcZxA6BbyiG5dv2mD2tw==", + "requested": "[10.*, )", + "resolved": "10.1.7", + "contentHash": "vgef8DPT411JU5JjHiDbr0WOxsIVuAvegPGtqmm4Na4JRl/264dfBJcGkiPHsAr5P+Vda+qN1rZKRtBl1rF9aA==", "dependencies": { - "Microsoft.Extensions.ApiDescription.Server": "6.0.5", - "Swashbuckle.AspNetCore.Swagger": "7.3.2", - "Swashbuckle.AspNetCore.SwaggerGen": "7.3.2", - "Swashbuckle.AspNetCore.SwaggerUI": "7.3.2" + "Microsoft.Extensions.ApiDescription.Server": "10.0.0", + "Swashbuckle.AspNetCore.Swagger": "10.1.7", + "Swashbuckle.AspNetCore.SwaggerGen": "10.1.7", + "Swashbuckle.AspNetCore.SwaggerUI": "10.1.7" } }, "Swashbuckle.AspNetCore.Annotations": { "type": "CentralTransitive", - "requested": "[7.*, )", - "resolved": "7.3.2", - "contentHash": "JaGYVVuiHzv3WWanFh/Fzx8ZYOtayNAhso5rwmHdxVYxn3AYJLYdijIBvQaEt4MIcsN0I1zXZfC/YKh47y3ocQ==", + "requested": "[10.*, )", + "resolved": "10.1.7", + "contentHash": "qHNQghKAzrjDEECIlyKEanmWxXDzrh6PyjGWVdql2qZfap0Ionuxam5OrUozibjbgQbVjRmgSXxWC8giIuCbGA==", "dependencies": { - "Swashbuckle.AspNetCore.SwaggerGen": "7.3.2" + "Swashbuckle.AspNetCore.SwaggerGen": "10.1.7" } } }, @@ -339,13 +339,13 @@ }, "Microsoft.Extensions.ApiDescription.Server": { "type": "Transitive", - "resolved": "6.0.5", - "contentHash": "Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==" + "resolved": "8.0.0", + "contentHash": "jDM3a95WerM8g6IcMiBXq1qRS9dqmEUpgnCk2DeMWpPkYtp1ia+CkXabOnK93JmhVlUmv8l9WMPsCSUm+WqkIA==" }, "Microsoft.OpenApi": { "type": "Transitive", - "resolved": "1.6.22", - "contentHash": "aBvunmrdu/x+4CaA/UP1Jx4xWGwk4kymhoIRnn2Vp+zi5/KOPQJ9EkSXHRUr01WcGKtYl3Au7XfkPJbU1G2sjQ==" + "resolved": "2.4.1", + "contentHash": "u7QhXCISMQuab3flasb1hoaiERmUqyWsW7tmQODyILoQ7mJV5IRGM+2KKZYo0QUfC13evEOcHAb6TPWgqEQtrw==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -378,24 +378,24 @@ }, "Swashbuckle.AspNetCore.Swagger": { "type": "Transitive", - "resolved": "7.3.2", - "contentHash": "39Z2N3cLHDcDinu2IW5IaQO9wGPKTbc+vKbjIT/6gN3jFYypWY5U3O8i7Y9rmYDgxkm6niICnkcFZ3hEvikIHA==", + "resolved": "10.1.7", + "contentHash": "EjLibt/d/QuRv170GoihTbcPUpgzSFm2WKHhnGJFZQ03JYzfuitsM79azaAR8NBwRunU7yScSX6HRE5JUlrEMQ==", "dependencies": { - "Microsoft.OpenApi": "1.6.22" + "Microsoft.OpenApi": "2.4.1" } }, "Swashbuckle.AspNetCore.SwaggerGen": { "type": "Transitive", - "resolved": "7.3.2", - "contentHash": "x5famjpcgazpT/8eEIlpSYSTZDq6ojMARhuJgj6O67Uk+Yb1DdDM5yikdL7GK1pMk5rYBETUCRWYP6rp+vHnlA==", + "resolved": "10.1.7", + "contentHash": "PuubO9BjvNn6U3D9kLpuWKY1JtziWw7SsGBq0age1E50uQjQ8Fzl8s0EwzrLfANqYJNgDnJi9l7N1QxcGVB2Zw==", "dependencies": { - "Swashbuckle.AspNetCore.Swagger": "7.3.2" + "Swashbuckle.AspNetCore.Swagger": "10.1.7" } }, "Swashbuckle.AspNetCore.SwaggerUI": { "type": "Transitive", - "resolved": "7.3.2", - "contentHash": "SNQuFjYin9KhkoCSVOD5/Y4VEyAjKBDeZkIqqY6x+oI21HMKzzVkeJA9V7tWFXf5df4m/+pTIlbKO7g5W9UroQ==" + "resolved": "10.1.7", + "contentHash": "iJo3ODyUb/M8Vm8AH1r9y9iAba0w95xsCn3zFVl96ISRHbTDWxi+l7oFVCZqUEdjd97B8VMDPnMliWAdomR8uw==" }, "System.IO.Hashing": { "type": "Transitive", @@ -410,8 +410,8 @@ "PPWCode.Util.Authorization.I": "[1.*, )", "PPWCode.Vernacular.Persistence.V": "[1.*, )", "PPWCode.Vernacular.RequestContext.I": "[1.*, )", - "Swashbuckle.AspNetCore": "[7.*, )", - "Swashbuckle.AspNetCore.Annotations": "[7.*, )" + "Swashbuckle.AspNetCore": "[10.*, )", + "Swashbuckle.AspNetCore.Annotations": "[10.*, )" } }, "Asp.Versioning.Mvc.ApiExplorer": { @@ -459,23 +459,23 @@ }, "Swashbuckle.AspNetCore": { "type": "CentralTransitive", - "requested": "[7.*, )", - "resolved": "7.3.2", - "contentHash": "WEkW7Cl8bexT75eURuqrqM/TQx+ftWKOWlCHzmw3Fl3oAmxiBO/lDVOuuqZsaBCHQIBcZxA6BbyiG5dv2mD2tw==", + "requested": "[10.*, )", + "resolved": "10.1.7", + "contentHash": "vgef8DPT411JU5JjHiDbr0WOxsIVuAvegPGtqmm4Na4JRl/264dfBJcGkiPHsAr5P+Vda+qN1rZKRtBl1rF9aA==", "dependencies": { - "Microsoft.Extensions.ApiDescription.Server": "6.0.5", - "Swashbuckle.AspNetCore.Swagger": "7.3.2", - "Swashbuckle.AspNetCore.SwaggerGen": "7.3.2", - "Swashbuckle.AspNetCore.SwaggerUI": "7.3.2" + "Microsoft.Extensions.ApiDescription.Server": "8.0.0", + "Swashbuckle.AspNetCore.Swagger": "10.1.7", + "Swashbuckle.AspNetCore.SwaggerGen": "10.1.7", + "Swashbuckle.AspNetCore.SwaggerUI": "10.1.7" } }, "Swashbuckle.AspNetCore.Annotations": { "type": "CentralTransitive", - "requested": "[7.*, )", - "resolved": "7.3.2", - "contentHash": "JaGYVVuiHzv3WWanFh/Fzx8ZYOtayNAhso5rwmHdxVYxn3AYJLYdijIBvQaEt4MIcsN0I1zXZfC/YKh47y3ocQ==", + "requested": "[10.*, )", + "resolved": "10.1.7", + "contentHash": "qHNQghKAzrjDEECIlyKEanmWxXDzrh6PyjGWVdql2qZfap0Ionuxam5OrUozibjbgQbVjRmgSXxWC8giIuCbGA==", "dependencies": { - "Swashbuckle.AspNetCore.SwaggerGen": "7.3.2" + "Swashbuckle.AspNetCore.SwaggerGen": "10.1.7" } } }, @@ -578,13 +578,13 @@ }, "Microsoft.Extensions.ApiDescription.Server": { "type": "Transitive", - "resolved": "6.0.5", - "contentHash": "Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==" + "resolved": "9.0.0", + "contentHash": "1Kzzf7pRey40VaUkHN9/uWxrKVkLu2AQjt+GVeeKLLpiEHAJ1xZRsLSh4ZZYEnyS7Kt2OBOPmsXNdU+wbcOl5w==" }, "Microsoft.OpenApi": { "type": "Transitive", - "resolved": "1.6.22", - "contentHash": "aBvunmrdu/x+4CaA/UP1Jx4xWGwk4kymhoIRnn2Vp+zi5/KOPQJ9EkSXHRUr01WcGKtYl3Au7XfkPJbU1G2sjQ==" + "resolved": "2.4.1", + "contentHash": "u7QhXCISMQuab3flasb1hoaiERmUqyWsW7tmQODyILoQ7mJV5IRGM+2KKZYo0QUfC13evEOcHAb6TPWgqEQtrw==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -617,24 +617,24 @@ }, "Swashbuckle.AspNetCore.Swagger": { "type": "Transitive", - "resolved": "7.3.2", - "contentHash": "39Z2N3cLHDcDinu2IW5IaQO9wGPKTbc+vKbjIT/6gN3jFYypWY5U3O8i7Y9rmYDgxkm6niICnkcFZ3hEvikIHA==", + "resolved": "10.1.7", + "contentHash": "EjLibt/d/QuRv170GoihTbcPUpgzSFm2WKHhnGJFZQ03JYzfuitsM79azaAR8NBwRunU7yScSX6HRE5JUlrEMQ==", "dependencies": { - "Microsoft.OpenApi": "1.6.22" + "Microsoft.OpenApi": "2.4.1" } }, "Swashbuckle.AspNetCore.SwaggerGen": { "type": "Transitive", - "resolved": "7.3.2", - "contentHash": "x5famjpcgazpT/8eEIlpSYSTZDq6ojMARhuJgj6O67Uk+Yb1DdDM5yikdL7GK1pMk5rYBETUCRWYP6rp+vHnlA==", + "resolved": "10.1.7", + "contentHash": "PuubO9BjvNn6U3D9kLpuWKY1JtziWw7SsGBq0age1E50uQjQ8Fzl8s0EwzrLfANqYJNgDnJi9l7N1QxcGVB2Zw==", "dependencies": { - "Swashbuckle.AspNetCore.Swagger": "7.3.2" + "Swashbuckle.AspNetCore.Swagger": "10.1.7" } }, "Swashbuckle.AspNetCore.SwaggerUI": { "type": "Transitive", - "resolved": "7.3.2", - "contentHash": "SNQuFjYin9KhkoCSVOD5/Y4VEyAjKBDeZkIqqY6x+oI21HMKzzVkeJA9V7tWFXf5df4m/+pTIlbKO7g5W9UroQ==" + "resolved": "10.1.7", + "contentHash": "iJo3ODyUb/M8Vm8AH1r9y9iAba0w95xsCn3zFVl96ISRHbTDWxi+l7oFVCZqUEdjd97B8VMDPnMliWAdomR8uw==" }, "System.IO.Hashing": { "type": "Transitive", @@ -649,8 +649,8 @@ "PPWCode.Util.Authorization.I": "[1.*, )", "PPWCode.Vernacular.Persistence.V": "[1.*, )", "PPWCode.Vernacular.RequestContext.I": "[1.*, )", - "Swashbuckle.AspNetCore": "[7.*, )", - "Swashbuckle.AspNetCore.Annotations": "[7.*, )" + "Swashbuckle.AspNetCore": "[10.*, )", + "Swashbuckle.AspNetCore.Annotations": "[10.*, )" } }, "Asp.Versioning.Mvc.ApiExplorer": { @@ -698,23 +698,23 @@ }, "Swashbuckle.AspNetCore": { "type": "CentralTransitive", - "requested": "[7.*, )", - "resolved": "7.3.2", - "contentHash": "WEkW7Cl8bexT75eURuqrqM/TQx+ftWKOWlCHzmw3Fl3oAmxiBO/lDVOuuqZsaBCHQIBcZxA6BbyiG5dv2mD2tw==", + "requested": "[10.*, )", + "resolved": "10.1.7", + "contentHash": "vgef8DPT411JU5JjHiDbr0WOxsIVuAvegPGtqmm4Na4JRl/264dfBJcGkiPHsAr5P+Vda+qN1rZKRtBl1rF9aA==", "dependencies": { - "Microsoft.Extensions.ApiDescription.Server": "6.0.5", - "Swashbuckle.AspNetCore.Swagger": "7.3.2", - "Swashbuckle.AspNetCore.SwaggerGen": "7.3.2", - "Swashbuckle.AspNetCore.SwaggerUI": "7.3.2" + "Microsoft.Extensions.ApiDescription.Server": "9.0.0", + "Swashbuckle.AspNetCore.Swagger": "10.1.7", + "Swashbuckle.AspNetCore.SwaggerGen": "10.1.7", + "Swashbuckle.AspNetCore.SwaggerUI": "10.1.7" } }, "Swashbuckle.AspNetCore.Annotations": { "type": "CentralTransitive", - "requested": "[7.*, )", - "resolved": "7.3.2", - "contentHash": "JaGYVVuiHzv3WWanFh/Fzx8ZYOtayNAhso5rwmHdxVYxn3AYJLYdijIBvQaEt4MIcsN0I1zXZfC/YKh47y3ocQ==", + "requested": "[10.*, )", + "resolved": "10.1.7", + "contentHash": "qHNQghKAzrjDEECIlyKEanmWxXDzrh6PyjGWVdql2qZfap0Ionuxam5OrUozibjbgQbVjRmgSXxWC8giIuCbGA==", "dependencies": { - "Swashbuckle.AspNetCore.SwaggerGen": "7.3.2" + "Swashbuckle.AspNetCore.SwaggerGen": "10.1.7" } } } diff --git a/src/I/packages.lock.json b/src/I/packages.lock.json index 2a00b9e..7b31f48 100644 --- a/src/I/packages.lock.json +++ b/src/I/packages.lock.json @@ -73,23 +73,23 @@ }, "Swashbuckle.AspNetCore": { "type": "Direct", - "requested": "[7.*, )", - "resolved": "7.3.2", - "contentHash": "WEkW7Cl8bexT75eURuqrqM/TQx+ftWKOWlCHzmw3Fl3oAmxiBO/lDVOuuqZsaBCHQIBcZxA6BbyiG5dv2mD2tw==", + "requested": "[10.*, )", + "resolved": "10.1.7", + "contentHash": "vgef8DPT411JU5JjHiDbr0WOxsIVuAvegPGtqmm4Na4JRl/264dfBJcGkiPHsAr5P+Vda+qN1rZKRtBl1rF9aA==", "dependencies": { - "Microsoft.Extensions.ApiDescription.Server": "6.0.5", - "Swashbuckle.AspNetCore.Swagger": "7.3.2", - "Swashbuckle.AspNetCore.SwaggerGen": "7.3.2", - "Swashbuckle.AspNetCore.SwaggerUI": "7.3.2" + "Microsoft.Extensions.ApiDescription.Server": "10.0.0", + "Swashbuckle.AspNetCore.Swagger": "10.1.7", + "Swashbuckle.AspNetCore.SwaggerGen": "10.1.7", + "Swashbuckle.AspNetCore.SwaggerUI": "10.1.7" } }, "Swashbuckle.AspNetCore.Annotations": { "type": "Direct", - "requested": "[7.*, )", - "resolved": "7.3.2", - "contentHash": "JaGYVVuiHzv3WWanFh/Fzx8ZYOtayNAhso5rwmHdxVYxn3AYJLYdijIBvQaEt4MIcsN0I1zXZfC/YKh47y3ocQ==", + "requested": "[10.*, )", + "resolved": "10.1.7", + "contentHash": "qHNQghKAzrjDEECIlyKEanmWxXDzrh6PyjGWVdql2qZfap0Ionuxam5OrUozibjbgQbVjRmgSXxWC8giIuCbGA==", "dependencies": { - "Swashbuckle.AspNetCore.SwaggerGen": "7.3.2" + "Swashbuckle.AspNetCore.SwaggerGen": "10.1.7" } }, "Asp.Versioning.Abstractions": { @@ -123,13 +123,13 @@ }, "Microsoft.Extensions.ApiDescription.Server": { "type": "Transitive", - "resolved": "6.0.5", - "contentHash": "Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==" + "resolved": "10.0.0", + "contentHash": "NCWCGiwRwje8773yzPQhvucYnnfeR+ZoB1VRIrIMp4uaeUNw7jvEPHij3HIbwCDuNCrNcphA00KSAR9yD9qmbg==" }, "Microsoft.OpenApi": { "type": "Transitive", - "resolved": "1.6.22", - "contentHash": "aBvunmrdu/x+4CaA/UP1Jx4xWGwk4kymhoIRnn2Vp+zi5/KOPQJ9EkSXHRUr01WcGKtYl3Au7XfkPJbU1G2sjQ==" + "resolved": "2.4.1", + "contentHash": "u7QhXCISMQuab3flasb1hoaiERmUqyWsW7tmQODyILoQ7mJV5IRGM+2KKZYo0QUfC13evEOcHAb6TPWgqEQtrw==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -162,24 +162,24 @@ }, "Swashbuckle.AspNetCore.Swagger": { "type": "Transitive", - "resolved": "7.3.2", - "contentHash": "39Z2N3cLHDcDinu2IW5IaQO9wGPKTbc+vKbjIT/6gN3jFYypWY5U3O8i7Y9rmYDgxkm6niICnkcFZ3hEvikIHA==", + "resolved": "10.1.7", + "contentHash": "EjLibt/d/QuRv170GoihTbcPUpgzSFm2WKHhnGJFZQ03JYzfuitsM79azaAR8NBwRunU7yScSX6HRE5JUlrEMQ==", "dependencies": { - "Microsoft.OpenApi": "1.6.22" + "Microsoft.OpenApi": "2.4.1" } }, "Swashbuckle.AspNetCore.SwaggerGen": { "type": "Transitive", - "resolved": "7.3.2", - "contentHash": "x5famjpcgazpT/8eEIlpSYSTZDq6ojMARhuJgj6O67Uk+Yb1DdDM5yikdL7GK1pMk5rYBETUCRWYP6rp+vHnlA==", + "resolved": "10.1.7", + "contentHash": "PuubO9BjvNn6U3D9kLpuWKY1JtziWw7SsGBq0age1E50uQjQ8Fzl8s0EwzrLfANqYJNgDnJi9l7N1QxcGVB2Zw==", "dependencies": { - "Swashbuckle.AspNetCore.Swagger": "7.3.2" + "Swashbuckle.AspNetCore.Swagger": "10.1.7" } }, "Swashbuckle.AspNetCore.SwaggerUI": { "type": "Transitive", - "resolved": "7.3.2", - "contentHash": "SNQuFjYin9KhkoCSVOD5/Y4VEyAjKBDeZkIqqY6x+oI21HMKzzVkeJA9V7tWFXf5df4m/+pTIlbKO7g5W9UroQ==" + "resolved": "10.1.7", + "contentHash": "iJo3ODyUb/M8Vm8AH1r9y9iAba0w95xsCn3zFVl96ISRHbTDWxi+l7oFVCZqUEdjd97B8VMDPnMliWAdomR8uw==" }, "System.IO.Hashing": { "type": "Transitive", @@ -271,23 +271,23 @@ }, "Swashbuckle.AspNetCore": { "type": "Direct", - "requested": "[7.*, )", - "resolved": "7.3.2", - "contentHash": "WEkW7Cl8bexT75eURuqrqM/TQx+ftWKOWlCHzmw3Fl3oAmxiBO/lDVOuuqZsaBCHQIBcZxA6BbyiG5dv2mD2tw==", + "requested": "[10.*, )", + "resolved": "10.1.7", + "contentHash": "vgef8DPT411JU5JjHiDbr0WOxsIVuAvegPGtqmm4Na4JRl/264dfBJcGkiPHsAr5P+Vda+qN1rZKRtBl1rF9aA==", "dependencies": { - "Microsoft.Extensions.ApiDescription.Server": "6.0.5", - "Swashbuckle.AspNetCore.Swagger": "7.3.2", - "Swashbuckle.AspNetCore.SwaggerGen": "7.3.2", - "Swashbuckle.AspNetCore.SwaggerUI": "7.3.2" + "Microsoft.Extensions.ApiDescription.Server": "8.0.0", + "Swashbuckle.AspNetCore.Swagger": "10.1.7", + "Swashbuckle.AspNetCore.SwaggerGen": "10.1.7", + "Swashbuckle.AspNetCore.SwaggerUI": "10.1.7" } }, "Swashbuckle.AspNetCore.Annotations": { "type": "Direct", - "requested": "[7.*, )", - "resolved": "7.3.2", - "contentHash": "JaGYVVuiHzv3WWanFh/Fzx8ZYOtayNAhso5rwmHdxVYxn3AYJLYdijIBvQaEt4MIcsN0I1zXZfC/YKh47y3ocQ==", + "requested": "[10.*, )", + "resolved": "10.1.7", + "contentHash": "qHNQghKAzrjDEECIlyKEanmWxXDzrh6PyjGWVdql2qZfap0Ionuxam5OrUozibjbgQbVjRmgSXxWC8giIuCbGA==", "dependencies": { - "Swashbuckle.AspNetCore.SwaggerGen": "7.3.2" + "Swashbuckle.AspNetCore.SwaggerGen": "10.1.7" } }, "Asp.Versioning.Abstractions": { @@ -321,13 +321,13 @@ }, "Microsoft.Extensions.ApiDescription.Server": { "type": "Transitive", - "resolved": "6.0.5", - "contentHash": "Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==" + "resolved": "8.0.0", + "contentHash": "jDM3a95WerM8g6IcMiBXq1qRS9dqmEUpgnCk2DeMWpPkYtp1ia+CkXabOnK93JmhVlUmv8l9WMPsCSUm+WqkIA==" }, "Microsoft.OpenApi": { "type": "Transitive", - "resolved": "1.6.22", - "contentHash": "aBvunmrdu/x+4CaA/UP1Jx4xWGwk4kymhoIRnn2Vp+zi5/KOPQJ9EkSXHRUr01WcGKtYl3Au7XfkPJbU1G2sjQ==" + "resolved": "2.4.1", + "contentHash": "u7QhXCISMQuab3flasb1hoaiERmUqyWsW7tmQODyILoQ7mJV5IRGM+2KKZYo0QUfC13evEOcHAb6TPWgqEQtrw==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -360,24 +360,24 @@ }, "Swashbuckle.AspNetCore.Swagger": { "type": "Transitive", - "resolved": "7.3.2", - "contentHash": "39Z2N3cLHDcDinu2IW5IaQO9wGPKTbc+vKbjIT/6gN3jFYypWY5U3O8i7Y9rmYDgxkm6niICnkcFZ3hEvikIHA==", + "resolved": "10.1.7", + "contentHash": "EjLibt/d/QuRv170GoihTbcPUpgzSFm2WKHhnGJFZQ03JYzfuitsM79azaAR8NBwRunU7yScSX6HRE5JUlrEMQ==", "dependencies": { - "Microsoft.OpenApi": "1.6.22" + "Microsoft.OpenApi": "2.4.1" } }, "Swashbuckle.AspNetCore.SwaggerGen": { "type": "Transitive", - "resolved": "7.3.2", - "contentHash": "x5famjpcgazpT/8eEIlpSYSTZDq6ojMARhuJgj6O67Uk+Yb1DdDM5yikdL7GK1pMk5rYBETUCRWYP6rp+vHnlA==", + "resolved": "10.1.7", + "contentHash": "PuubO9BjvNn6U3D9kLpuWKY1JtziWw7SsGBq0age1E50uQjQ8Fzl8s0EwzrLfANqYJNgDnJi9l7N1QxcGVB2Zw==", "dependencies": { - "Swashbuckle.AspNetCore.Swagger": "7.3.2" + "Swashbuckle.AspNetCore.Swagger": "10.1.7" } }, "Swashbuckle.AspNetCore.SwaggerUI": { "type": "Transitive", - "resolved": "7.3.2", - "contentHash": "SNQuFjYin9KhkoCSVOD5/Y4VEyAjKBDeZkIqqY6x+oI21HMKzzVkeJA9V7tWFXf5df4m/+pTIlbKO7g5W9UroQ==" + "resolved": "10.1.7", + "contentHash": "iJo3ODyUb/M8Vm8AH1r9y9iAba0w95xsCn3zFVl96ISRHbTDWxi+l7oFVCZqUEdjd97B8VMDPnMliWAdomR8uw==" }, "System.IO.Hashing": { "type": "Transitive", @@ -469,23 +469,23 @@ }, "Swashbuckle.AspNetCore": { "type": "Direct", - "requested": "[7.*, )", - "resolved": "7.3.2", - "contentHash": "WEkW7Cl8bexT75eURuqrqM/TQx+ftWKOWlCHzmw3Fl3oAmxiBO/lDVOuuqZsaBCHQIBcZxA6BbyiG5dv2mD2tw==", + "requested": "[10.*, )", + "resolved": "10.1.7", + "contentHash": "vgef8DPT411JU5JjHiDbr0WOxsIVuAvegPGtqmm4Na4JRl/264dfBJcGkiPHsAr5P+Vda+qN1rZKRtBl1rF9aA==", "dependencies": { - "Microsoft.Extensions.ApiDescription.Server": "6.0.5", - "Swashbuckle.AspNetCore.Swagger": "7.3.2", - "Swashbuckle.AspNetCore.SwaggerGen": "7.3.2", - "Swashbuckle.AspNetCore.SwaggerUI": "7.3.2" + "Microsoft.Extensions.ApiDescription.Server": "9.0.0", + "Swashbuckle.AspNetCore.Swagger": "10.1.7", + "Swashbuckle.AspNetCore.SwaggerGen": "10.1.7", + "Swashbuckle.AspNetCore.SwaggerUI": "10.1.7" } }, "Swashbuckle.AspNetCore.Annotations": { "type": "Direct", - "requested": "[7.*, )", - "resolved": "7.3.2", - "contentHash": "JaGYVVuiHzv3WWanFh/Fzx8ZYOtayNAhso5rwmHdxVYxn3AYJLYdijIBvQaEt4MIcsN0I1zXZfC/YKh47y3ocQ==", + "requested": "[10.*, )", + "resolved": "10.1.7", + "contentHash": "qHNQghKAzrjDEECIlyKEanmWxXDzrh6PyjGWVdql2qZfap0Ionuxam5OrUozibjbgQbVjRmgSXxWC8giIuCbGA==", "dependencies": { - "Swashbuckle.AspNetCore.SwaggerGen": "7.3.2" + "Swashbuckle.AspNetCore.SwaggerGen": "10.1.7" } }, "Asp.Versioning.Abstractions": { @@ -519,13 +519,13 @@ }, "Microsoft.Extensions.ApiDescription.Server": { "type": "Transitive", - "resolved": "6.0.5", - "contentHash": "Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==" + "resolved": "9.0.0", + "contentHash": "1Kzzf7pRey40VaUkHN9/uWxrKVkLu2AQjt+GVeeKLLpiEHAJ1xZRsLSh4ZZYEnyS7Kt2OBOPmsXNdU+wbcOl5w==" }, "Microsoft.OpenApi": { "type": "Transitive", - "resolved": "1.6.22", - "contentHash": "aBvunmrdu/x+4CaA/UP1Jx4xWGwk4kymhoIRnn2Vp+zi5/KOPQJ9EkSXHRUr01WcGKtYl3Au7XfkPJbU1G2sjQ==" + "resolved": "2.4.1", + "contentHash": "u7QhXCISMQuab3flasb1hoaiERmUqyWsW7tmQODyILoQ7mJV5IRGM+2KKZYo0QUfC13evEOcHAb6TPWgqEQtrw==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -558,24 +558,24 @@ }, "Swashbuckle.AspNetCore.Swagger": { "type": "Transitive", - "resolved": "7.3.2", - "contentHash": "39Z2N3cLHDcDinu2IW5IaQO9wGPKTbc+vKbjIT/6gN3jFYypWY5U3O8i7Y9rmYDgxkm6niICnkcFZ3hEvikIHA==", + "resolved": "10.1.7", + "contentHash": "EjLibt/d/QuRv170GoihTbcPUpgzSFm2WKHhnGJFZQ03JYzfuitsM79azaAR8NBwRunU7yScSX6HRE5JUlrEMQ==", "dependencies": { - "Microsoft.OpenApi": "1.6.22" + "Microsoft.OpenApi": "2.4.1" } }, "Swashbuckle.AspNetCore.SwaggerGen": { "type": "Transitive", - "resolved": "7.3.2", - "contentHash": "x5famjpcgazpT/8eEIlpSYSTZDq6ojMARhuJgj6O67Uk+Yb1DdDM5yikdL7GK1pMk5rYBETUCRWYP6rp+vHnlA==", + "resolved": "10.1.7", + "contentHash": "PuubO9BjvNn6U3D9kLpuWKY1JtziWw7SsGBq0age1E50uQjQ8Fzl8s0EwzrLfANqYJNgDnJi9l7N1QxcGVB2Zw==", "dependencies": { - "Swashbuckle.AspNetCore.Swagger": "7.3.2" + "Swashbuckle.AspNetCore.Swagger": "10.1.7" } }, "Swashbuckle.AspNetCore.SwaggerUI": { "type": "Transitive", - "resolved": "7.3.2", - "contentHash": "SNQuFjYin9KhkoCSVOD5/Y4VEyAjKBDeZkIqqY6x+oI21HMKzzVkeJA9V7tWFXf5df4m/+pTIlbKO7g5W9UroQ==" + "resolved": "10.1.7", + "contentHash": "iJo3ODyUb/M8Vm8AH1r9y9iAba0w95xsCn3zFVl96ISRHbTDWxi+l7oFVCZqUEdjd97B8VMDPnMliWAdomR8uw==" }, "System.IO.Hashing": { "type": "Transitive", From 33a559388b2875656ede645d1205de50954766c6 Mon Sep 17 00:00:00 2001 From: Ruben Vandeginste Date: Thu, 2 Apr 2026 17:45:26 +0200 Subject: [PATCH 5/8] Upgrade IOperationFilter implementations Fix implementation after backwards incompatible changes in the IOperationFilter interface. --- src/I/Swagger/AddDefaultRequiredFields.cs | 37 +++++++++++++------ src/I/Swagger/AddNoContentCodes.cs | 4 +- src/I/Swagger/AddNotFoundResponseCodes.cs | 4 +- src/I/Swagger/AddRequestSimulationHeader.cs | 8 ++-- .../Swagger/AddSemanticFaultResponseCodes.cs | 6 +-- src/I/Swagger/AddTransactionalInformation.cs | 4 +- src/I/Swagger/PpwOperationFilter.cs | 12 ++++-- 7 files changed, 48 insertions(+), 27 deletions(-) diff --git a/src/I/Swagger/AddDefaultRequiredFields.cs b/src/I/Swagger/AddDefaultRequiredFields.cs index b9d715e..5e4f4ec 100644 --- a/src/I/Swagger/AddDefaultRequiredFields.cs +++ b/src/I/Swagger/AddDefaultRequiredFields.cs @@ -1,4 +1,4 @@ -// Copyright 2025 by PeopleWare n.v.. +// Copyright 2026 by PeopleWare n.v.. // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at @@ -11,14 +11,16 @@ using System.Collections.ObjectModel; using System.Diagnostics.CodeAnalysis; +using System.Text.Json.Nodes; using Asp.Versioning; using Microsoft.AspNetCore.Mvc.ApiExplorer; -using Microsoft.OpenApi.Any; -using Microsoft.OpenApi.Models; +using Microsoft.OpenApi; using PPWCode.AspNetCore.Host.I.Bootstrap; +using PPWCode.Vernacular.Contracts.I; +using PPWCode.Vernacular.Exceptions.V; using Swashbuckle.AspNetCore.SwaggerGen; @@ -36,7 +38,7 @@ static AddDefaultRequiredFields() new( typeof(ApiVersion), [ - (pd => $"{pd.ParameterDescriptor.Name}", new OpenApiString($"{Startup.DefaultApiVersion.ToString(Startup.ApiVersionFormat)}")) + (pd => $"{pd.ParameterDescriptor.Name}", JsonValue.Create($"{Startup.DefaultApiVersion.ToString(Startup.ApiVersionFormat)}")) ]); _requiredFieldsWithDefaultValues.Add(defaultRequiredField); } @@ -63,28 +65,41 @@ public override void Apply(OpenApiOperation operation, OperationFilterContext co continue; } - foreach ((Func, IOpenApiAny) tuple in defaultRequiredField.ParamLambdas) + foreach ((Func, JsonNode) tuple in defaultRequiredField.ParamLambdas) { SetParamValue(operation, tuple.Item1.Invoke(parameter), tuple.Item2); } } } - protected void SetParamValue(OpenApiOperation operation, string name, IOpenApiAny defaultValue) + protected void SetParamValue(OpenApiOperation operation, string name, JsonNode defaultValue) { - OpenApiParameter? param = + Contract.Requires(operation.Parameters is not null); + IOpenApiParameter? parameter = operation .Parameters .SingleOrDefault(p => string.Equals(p.Name, name, StringComparison.OrdinalIgnoreCase)); - if (param is { Required: true }) + + if (parameter is not null) { - param.Example = defaultValue; + OpenApiParameter? openApiParameter = + parameter switch + { + OpenApiParameter openApiParameterTemp => openApiParameterTemp, + OpenApiParameterReference openApiParameterReference => openApiParameterReference.RecursiveTarget, + _ => throw new ProgrammingError("Unsupported configuration") + }; + + if (openApiParameter is not null && openApiParameter.Required) + { + openApiParameter.Example = defaultValue; + } } } public class DefaultRequiredField { - public DefaultRequiredField(Type type, (Func, IOpenApiAny)[] paramLambdas) + public DefaultRequiredField(Type type, (Func, JsonNode)[] paramLambdas) { Type = type; ParamLambdas = paramLambdas; @@ -92,7 +107,7 @@ public DefaultRequiredField(Type type, (Func, I public Type Type { get; } - public (Func, IOpenApiAny)[] ParamLambdas { get; } + public (Func, JsonNode)[] ParamLambdas { get; } } } } diff --git a/src/I/Swagger/AddNoContentCodes.cs b/src/I/Swagger/AddNoContentCodes.cs index d0eda48..9d10d51 100644 --- a/src/I/Swagger/AddNoContentCodes.cs +++ b/src/I/Swagger/AddNoContentCodes.cs @@ -1,4 +1,4 @@ -// Copyright 2025 by PeopleWare n.v.. +// Copyright 2026 by PeopleWare n.v.. // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at @@ -12,7 +12,7 @@ using System.Diagnostics.CodeAnalysis; using System.Net; -using Microsoft.OpenApi.Models; +using Microsoft.OpenApi; using Swashbuckle.AspNetCore.SwaggerGen; diff --git a/src/I/Swagger/AddNotFoundResponseCodes.cs b/src/I/Swagger/AddNotFoundResponseCodes.cs index d378ebe..6ada7ff 100644 --- a/src/I/Swagger/AddNotFoundResponseCodes.cs +++ b/src/I/Swagger/AddNotFoundResponseCodes.cs @@ -1,4 +1,4 @@ -// Copyright 2025 by PeopleWare n.v.. +// Copyright 2026 by PeopleWare n.v.. // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at @@ -16,7 +16,7 @@ using Microsoft.AspNetCore.Mvc.ApiExplorer; using Microsoft.AspNetCore.Mvc.ModelBinding; -using Microsoft.OpenApi.Models; +using Microsoft.OpenApi; using Swashbuckle.AspNetCore.SwaggerGen; diff --git a/src/I/Swagger/AddRequestSimulationHeader.cs b/src/I/Swagger/AddRequestSimulationHeader.cs index e4e81f5..bce8021 100644 --- a/src/I/Swagger/AddRequestSimulationHeader.cs +++ b/src/I/Swagger/AddRequestSimulationHeader.cs @@ -1,4 +1,4 @@ -// Copyright 2025 by PeopleWare n.v.. +// Copyright 2026 by PeopleWare n.v.. // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at @@ -11,7 +11,7 @@ using System.Diagnostics.CodeAnalysis; -using Microsoft.OpenApi.Models; +using Microsoft.OpenApi; using PPWCode.AspNetCore.Host.I.Transactional; @@ -32,7 +32,7 @@ public override void Apply(OpenApiOperation operation, OperationFilterContext co { if (IsPost(context) || IsPut(context) || IsDelete(context)) { - operation.Parameters ??= new List(); + operation.Parameters ??= new List(); operation.Parameters.Add( new OpenApiParameter { @@ -42,7 +42,7 @@ public override void Apply(OpenApiOperation operation, OperationFilterContext co Schema = new OpenApiSchema { - Type = "string" + Type = JsonSchemaType.String }, Required = false, }); diff --git a/src/I/Swagger/AddSemanticFaultResponseCodes.cs b/src/I/Swagger/AddSemanticFaultResponseCodes.cs index 5e8bcfe..99f0366 100644 --- a/src/I/Swagger/AddSemanticFaultResponseCodes.cs +++ b/src/I/Swagger/AddSemanticFaultResponseCodes.cs @@ -1,4 +1,4 @@ -// Copyright 2025 by PeopleWare n.v.. +// Copyright 2026 by PeopleWare n.v.. // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at @@ -12,7 +12,7 @@ using System.Diagnostics.CodeAnalysis; using System.Net; -using Microsoft.OpenApi.Models; +using Microsoft.OpenApi; using Swashbuckle.AspNetCore.SwaggerGen; @@ -25,7 +25,7 @@ public class AddSemanticFaultResponseCodes : PpwOperationFilter /// public override void Apply(OpenApiOperation operation, OperationFilterContext context) { - OpenApiResponse response = new OpenApiResponse { Description = "Parameter validation failed or some business rules were not fulfilled." }; + OpenApiResponse response = new() { Description = "Parameter validation failed or some business rules were not fulfilled." }; ConditionalAddResponse(operation, $"{HttpStatusCode.BadRequest:D}", response); } } diff --git a/src/I/Swagger/AddTransactionalInformation.cs b/src/I/Swagger/AddTransactionalInformation.cs index f9d5b96..b760956 100644 --- a/src/I/Swagger/AddTransactionalInformation.cs +++ b/src/I/Swagger/AddTransactionalInformation.cs @@ -1,4 +1,4 @@ -// Copyright 2025 by PeopleWare n.v.. +// Copyright 2026 by PeopleWare n.v.. // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at @@ -14,7 +14,7 @@ using System.Text; using Microsoft.AspNetCore.Mvc.Controllers; -using Microsoft.OpenApi.Models; +using Microsoft.OpenApi; using PPWCode.AspNetCore.Server.I.Transactional; diff --git a/src/I/Swagger/PpwOperationFilter.cs b/src/I/Swagger/PpwOperationFilter.cs index 4e3514c..766002b 100644 --- a/src/I/Swagger/PpwOperationFilter.cs +++ b/src/I/Swagger/PpwOperationFilter.cs @@ -1,4 +1,4 @@ -// Copyright 2025 by PeopleWare n.v.. +// Copyright 2026 by PeopleWare n.v.. // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at @@ -13,8 +13,9 @@ using Microsoft.AspNetCore.Mvc.ApiExplorer; using Microsoft.AspNetCore.Mvc.Controllers; -using Microsoft.OpenApi.Models; +using Microsoft.OpenApi; +using PPWCode.Vernacular.Contracts.I; using PPWCode.Vernacular.Persistence.V; using Swashbuckle.AspNetCore.SwaggerGen; @@ -69,15 +70,20 @@ protected virtual string GetIdentifications(ApiDescription apiDescription, Func< .Select(GetIdentification)); protected virtual bool ResponseExists(OpenApiOperation operation, string key) - => operation.Responses.ContainsKey(key); + { + Contract.Requires(operation.Responses is not null); + return operation.Responses.ContainsKey(key); + } protected virtual void AddResponse(OpenApiOperation operation, string key, OpenApiResponse response) { + Contract.Requires(operation.Responses is not null); operation.Responses.Add(key, response); } protected virtual void RemoveResponse(OpenApiOperation operation, string key) { + Contract.Requires(operation.Responses is not null); if (ResponseExists(operation, key)) { operation.Responses.Remove(key); From 2d61a05407c23bd2ca4347db5bbf0482a7d216a6 Mon Sep 17 00:00:00 2001 From: Ruben Vandeginste Date: Thu, 2 Apr 2026 17:46:18 +0200 Subject: [PATCH 6/8] Upgrade and rename ISchemaFilter implementation - upgrade after changes in ISchemaFilter - rename INSSSchemaFilter to ForceTypeToStringSchemaFilter --- .../Swagger/ForceTypeToStringSchemaFilter.cs | 34 +++++++++++++++++++ src/I/Swagger/INSSSchemaFilter.cs | 22 ------------ 2 files changed, 34 insertions(+), 22 deletions(-) create mode 100644 src/I/Swagger/ForceTypeToStringSchemaFilter.cs delete mode 100644 src/I/Swagger/INSSSchemaFilter.cs diff --git a/src/I/Swagger/ForceTypeToStringSchemaFilter.cs b/src/I/Swagger/ForceTypeToStringSchemaFilter.cs new file mode 100644 index 0000000..44d2102 --- /dev/null +++ b/src/I/Swagger/ForceTypeToStringSchemaFilter.cs @@ -0,0 +1,34 @@ +using Microsoft.OpenApi; + +using PPWCode.Vernacular.Contracts.I; +using PPWCode.Vernacular.Exceptions.V; + +using Swashbuckle.AspNetCore.SwaggerGen; + +namespace PPWCode.AspNetCore.Host.I.Swagger; + +public class ForceTypeToStringSchemaFilter : ISchemaFilter + where T : class +{ + /// + public void Apply(IOpenApiSchema schema, SchemaFilterContext context) + { + OpenApiSchema? openApiSchema = + schema switch + { + OpenApiSchema openApiSchemaTemp => openApiSchemaTemp, + OpenApiSchemaReference openApiSchemaReference => openApiSchemaReference.RecursiveTarget, + _ => throw new ProgrammingError("Unsupported configuration") + }; + + if (openApiSchema is not null && (context.Type == typeof(T))) + { + // Override schema to be a string + openApiSchema.Type = JsonSchemaType.String; + + // Remove properties (e.g., "value") + Contract.Assert(openApiSchema.Properties != null); + openApiSchema.Properties.Clear(); + } + } +} diff --git a/src/I/Swagger/INSSSchemaFilter.cs b/src/I/Swagger/INSSSchemaFilter.cs deleted file mode 100644 index a3eb20e..0000000 --- a/src/I/Swagger/INSSSchemaFilter.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Microsoft.OpenApi.Models; - -using Swashbuckle.AspNetCore.SwaggerGen; - -namespace PPWCode.AspNetCore.Host.I.Swagger; - -public class INSSSchemaFilter : ISchemaFilter - where T : class -{ - /// - public void Apply(OpenApiSchema schema, SchemaFilterContext context) - { - if (context.Type == typeof(T)) - { - // Override schema to be a string - schema.Type = "string"; - - // Remove properties (e.g., "value") - schema.Properties.Clear(); - } - } -} From 61d6684840733e35f3a23c27edca62cf6185e3ae Mon Sep 17 00:00:00 2001 From: Ruben Vandeginste Date: Thu, 2 Apr 2026 16:00:32 +0200 Subject: [PATCH 7/8] Changelog for 2.0.0 --- docs/modules/ROOT/pages/changelog.adoc | 5 +++++ docs/modules/ROOT/partials/changelog-2.0.0.adoc | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 docs/modules/ROOT/partials/changelog-2.0.0.adoc diff --git a/docs/modules/ROOT/pages/changelog.adoc b/docs/modules/ROOT/pages/changelog.adoc index a814bef..7415add 100644 --- a/docs/modules/ROOT/pages/changelog.adoc +++ b/docs/modules/ROOT/pages/changelog.adoc @@ -20,6 +20,11 @@ the link to the GitHub tag is only added once we are ready to release. :github-issue: https://github.com/peopleware/net-ppwcode-aspnetcore-host/issues/ +:release: 2.0.0 +== `{release}` +include::partial$changelog-release-section.adoc[] +include::partial$changelog-{release}.adoc[] + :release: 1.0.0 == `{release}` include::partial$changelog-release-section.adoc[] diff --git a/docs/modules/ROOT/partials/changelog-2.0.0.adoc b/docs/modules/ROOT/partials/changelog-2.0.0.adoc new file mode 100644 index 0000000..41e0c16 --- /dev/null +++ b/docs/modules/ROOT/partials/changelog-2.0.0.adoc @@ -0,0 +1,17 @@ +//// +The changelog for a specific release. +Note that it is best to update the changelog as new code is developed. + +All attributes used, must be included in this file to keep it self-contained. + +This file is translated into markdown and used for the release notes in the GitHub release! +//// + +=== Changes +* Switch to .NET SDK `10.0.201` +* Upgrade `Swashbuckle.AspNetCore` from `7.3.2` to `10.1.7` + + +=== Note: breaking change +* Rename `INSSSchemaFilter` to `ForceTypeToStringSchemaFilter` +* Changes to the provided `IOperationFilter` implementations after upgrade to new major version of `Swashbuckle.AspNetCore` From ea5c66c2124c6b1e35201ebc3601e17a2f414753 Mon Sep 17 00:00:00 2001 From: Ruben Vandeginste Date: Thu, 2 Apr 2026 23:48:27 +0200 Subject: [PATCH 8/8] Update changelog for 2.0.0 --- docs/modules/ROOT/partials/changelog-2.0.0.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/modules/ROOT/partials/changelog-2.0.0.adoc b/docs/modules/ROOT/partials/changelog-2.0.0.adoc index 41e0c16..18cf01c 100644 --- a/docs/modules/ROOT/partials/changelog-2.0.0.adoc +++ b/docs/modules/ROOT/partials/changelog-2.0.0.adoc @@ -10,6 +10,7 @@ This file is translated into markdown and used for the release notes in the GitH === Changes * Switch to .NET SDK `10.0.201` * Upgrade `Swashbuckle.AspNetCore` from `7.3.2` to `10.1.7` +** Fixes link:{github-issue}1[#1] in link:{github-pr}2[#2] by link:{github-user}rvdginste[@rvdginste] === Note: breaking change