From 195b987461ce1ffe1825f38fa8232584319baab5 Mon Sep 17 00:00:00 2001 From: Matthew DeVenny Date: Tue, 28 Jul 2026 08:47:17 -0700 Subject: [PATCH 1/2] #45 Enable AOT/trim analyzers and source-generate key regex Enable `IsAotCompatible` on the core and hybrid packages; both build clean with zero IL2xxx/IL3xxx warnings under `-p TreatWarningsAsErrors=true` on net8.0 and net10.0, including the generic NatsHybridCacheSerializer path. Convert the `RegexOptions.Compiled` key-validation regex in NatsExtensions to a source-generated `[GeneratedRegex]` partial method (pattern semantics preserved) so it does not fall back to the interpreter under AOT. Enabling the analyzers pulls in the SDK-implicit, build-time-only `Microsoft.NET.ILLink.Tasks` package, so the NuGet lock files are regenerated (that one package is the only delta; PrivateAssets, never flows to consumers). Add unit tests covering the key-validation regex accept/reject behavior. Co-Authored-By: Claude Opus 4.8 (1M context) Signed-off-by: Matthew DeVenny --- .../NatsDistributedCache.csproj | 5 ++ src/NatsDistributedCache/NatsExtensions.cs | 10 +++- .../packages.linux-arm64.lock.json | 12 ++++ .../packages.linux-x64.lock.json | 12 ++++ .../packages.osx-arm64.lock.json | 12 ++++ .../packages.win-x64.lock.json | 12 ++++ .../NatsHybridCacheExtensions.csproj | 5 ++ .../packages.linux-arm64.lock.json | 12 ++++ .../packages.linux-x64.lock.json | 12 ++++ .../packages.osx-arm64.lock.json | 12 ++++ .../packages.win-x64.lock.json | 12 ++++ .../NatsExtensionsKeyValidationTests.cs | 59 +++++++++++++++++++ 12 files changed, 172 insertions(+), 3 deletions(-) create mode 100644 test/UnitTests/Extensions/NatsExtensionsKeyValidationTests.cs diff --git a/src/NatsDistributedCache/NatsDistributedCache.csproj b/src/NatsDistributedCache/NatsDistributedCache.csproj index d6b07b0..9efca0a 100644 --- a/src/NatsDistributedCache/NatsDistributedCache.csproj +++ b/src/NatsDistributedCache/NatsDistributedCache.csproj @@ -6,6 +6,11 @@ CodeCargo.Nats.DistributedCache NATS implementation of IDistributedCache. + + true + true $(MSBuildThisFileDirectory)..\..\keys\NatsDistributedCache.2025-05-12.snk diff --git a/src/NatsDistributedCache/NatsExtensions.cs b/src/NatsDistributedCache/NatsExtensions.cs index a0731b4..6a5ac49 100644 --- a/src/NatsDistributedCache/NatsExtensions.cs +++ b/src/NatsDistributedCache/NatsExtensions.cs @@ -16,11 +16,10 @@ namespace CodeCargo.Nats.DistributedCache; /// nats-io/nats.net#852 was backed out. Re-check on future NATS.Net upgrades — once /// PutAsync/UpdateAsync gain TTL overloads, this class can be deleted in favor of them. /// -public static class NatsExtensions +public static partial class NatsExtensions { private const string NatsExpectedLastSubjectSequence = "Nats-Expected-Last-Subject-Sequence"; private const string NatsTtl = "Nats-TTL"; - private static readonly Regex ValidKeyRegex = new(pattern: @"\A[-/_=\.a-zA-Z0-9]+\z", RegexOptions.Compiled); private static readonly NatsKVException KeyCannotBeEmptyException = new("Key cannot be empty"); private static readonly NatsKVException KeyCannotStartOrEndWithPeriodException = @@ -245,7 +244,7 @@ private static NatsResult TryValidateKey(string key) return KeyCannotStartOrEndWithPeriodException; } - if (!ValidKeyRegex.IsMatch(key)) + if (!ValidKeyRegex().IsMatch(key)) { return KeyContainsInvalidCharactersException; } @@ -263,4 +262,9 @@ private static string ToTtlString(TimeSpan ttl) [MethodImpl(MethodImplOptions.NoInlining)] private static void ThrowException(Exception exception) => throw exception; + + // Source-generated (AOT/trim-safe) replacement for a RegexOptions.Compiled Regex, which relied on + // reflection-emit. Pattern is unchanged: \A[-/_=\.a-zA-Z0-9]+\z (\A/\z anchors plus the / = . chars). + [GeneratedRegex(@"\A[-/_=\.a-zA-Z0-9]+\z", RegexOptions.Compiled)] + private static partial Regex ValidKeyRegex(); } diff --git a/src/NatsDistributedCache/packages.linux-arm64.lock.json b/src/NatsDistributedCache/packages.linux-arm64.lock.json index c94be27..17c83db 100644 --- a/src/NatsDistributedCache/packages.linux-arm64.lock.json +++ b/src/NatsDistributedCache/packages.linux-arm64.lock.json @@ -30,6 +30,12 @@ "Microsoft.Extensions.Primitives": "10.0.9" } }, + "Microsoft.NET.ILLink.Tasks": { + "type": "Direct", + "requested": "[10.0.1, )", + "resolved": "10.0.1", + "contentHash": "ISahzLHsHY7vrwqr2p1YWZ+gsxoBRtH7gWRDK8fDUst9pp2He0GiesaqEfeX0V8QMCJM3eNEHGGpnIcPjFo2NQ==" + }, "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.0.300, )", @@ -161,6 +167,12 @@ "Microsoft.Extensions.Primitives": "10.0.9" } }, + "Microsoft.NET.ILLink.Tasks": { + "type": "Direct", + "requested": "[8.0.22, )", + "resolved": "8.0.22", + "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" + }, "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.0.300, )", diff --git a/src/NatsDistributedCache/packages.linux-x64.lock.json b/src/NatsDistributedCache/packages.linux-x64.lock.json index c94be27..17c83db 100644 --- a/src/NatsDistributedCache/packages.linux-x64.lock.json +++ b/src/NatsDistributedCache/packages.linux-x64.lock.json @@ -30,6 +30,12 @@ "Microsoft.Extensions.Primitives": "10.0.9" } }, + "Microsoft.NET.ILLink.Tasks": { + "type": "Direct", + "requested": "[10.0.1, )", + "resolved": "10.0.1", + "contentHash": "ISahzLHsHY7vrwqr2p1YWZ+gsxoBRtH7gWRDK8fDUst9pp2He0GiesaqEfeX0V8QMCJM3eNEHGGpnIcPjFo2NQ==" + }, "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.0.300, )", @@ -161,6 +167,12 @@ "Microsoft.Extensions.Primitives": "10.0.9" } }, + "Microsoft.NET.ILLink.Tasks": { + "type": "Direct", + "requested": "[8.0.22, )", + "resolved": "8.0.22", + "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" + }, "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.0.300, )", diff --git a/src/NatsDistributedCache/packages.osx-arm64.lock.json b/src/NatsDistributedCache/packages.osx-arm64.lock.json index c94be27..17c83db 100644 --- a/src/NatsDistributedCache/packages.osx-arm64.lock.json +++ b/src/NatsDistributedCache/packages.osx-arm64.lock.json @@ -30,6 +30,12 @@ "Microsoft.Extensions.Primitives": "10.0.9" } }, + "Microsoft.NET.ILLink.Tasks": { + "type": "Direct", + "requested": "[10.0.1, )", + "resolved": "10.0.1", + "contentHash": "ISahzLHsHY7vrwqr2p1YWZ+gsxoBRtH7gWRDK8fDUst9pp2He0GiesaqEfeX0V8QMCJM3eNEHGGpnIcPjFo2NQ==" + }, "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.0.300, )", @@ -161,6 +167,12 @@ "Microsoft.Extensions.Primitives": "10.0.9" } }, + "Microsoft.NET.ILLink.Tasks": { + "type": "Direct", + "requested": "[8.0.22, )", + "resolved": "8.0.22", + "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" + }, "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.0.300, )", diff --git a/src/NatsDistributedCache/packages.win-x64.lock.json b/src/NatsDistributedCache/packages.win-x64.lock.json index c94be27..17c83db 100644 --- a/src/NatsDistributedCache/packages.win-x64.lock.json +++ b/src/NatsDistributedCache/packages.win-x64.lock.json @@ -30,6 +30,12 @@ "Microsoft.Extensions.Primitives": "10.0.9" } }, + "Microsoft.NET.ILLink.Tasks": { + "type": "Direct", + "requested": "[10.0.1, )", + "resolved": "10.0.1", + "contentHash": "ISahzLHsHY7vrwqr2p1YWZ+gsxoBRtH7gWRDK8fDUst9pp2He0GiesaqEfeX0V8QMCJM3eNEHGGpnIcPjFo2NQ==" + }, "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.0.300, )", @@ -161,6 +167,12 @@ "Microsoft.Extensions.Primitives": "10.0.9" } }, + "Microsoft.NET.ILLink.Tasks": { + "type": "Direct", + "requested": "[8.0.22, )", + "resolved": "8.0.22", + "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" + }, "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.0.300, )", diff --git a/src/NatsHybridCacheExtensions/NatsHybridCacheExtensions.csproj b/src/NatsHybridCacheExtensions/NatsHybridCacheExtensions.csproj index 989e792..19160c1 100644 --- a/src/NatsHybridCacheExtensions/NatsHybridCacheExtensions.csproj +++ b/src/NatsHybridCacheExtensions/NatsHybridCacheExtensions.csproj @@ -6,6 +6,11 @@ CodeCargo.Nats.HybridCacheExtensions Extensions for using HybridCache with NATS. + + true + true $(MSBuildThisFileDirectory)..\..\keys\NatsDistributedCache.2025-05-12.snk diff --git a/src/NatsHybridCacheExtensions/packages.linux-arm64.lock.json b/src/NatsHybridCacheExtensions/packages.linux-arm64.lock.json index 597e28b..ec1ae5b 100644 --- a/src/NatsHybridCacheExtensions/packages.linux-arm64.lock.json +++ b/src/NatsHybridCacheExtensions/packages.linux-arm64.lock.json @@ -14,6 +14,12 @@ "Microsoft.Extensions.Options": "10.0.9" } }, + "Microsoft.NET.ILLink.Tasks": { + "type": "Direct", + "requested": "[10.0.1, )", + "resolved": "10.0.1", + "contentHash": "ISahzLHsHY7vrwqr2p1YWZ+gsxoBRtH7gWRDK8fDUst9pp2He0GiesaqEfeX0V8QMCJM3eNEHGGpnIcPjFo2NQ==" + }, "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.0.300, )", @@ -167,6 +173,12 @@ "Microsoft.Extensions.Options": "10.0.9" } }, + "Microsoft.NET.ILLink.Tasks": { + "type": "Direct", + "requested": "[8.0.22, )", + "resolved": "8.0.22", + "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" + }, "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.0.300, )", diff --git a/src/NatsHybridCacheExtensions/packages.linux-x64.lock.json b/src/NatsHybridCacheExtensions/packages.linux-x64.lock.json index 597e28b..ec1ae5b 100644 --- a/src/NatsHybridCacheExtensions/packages.linux-x64.lock.json +++ b/src/NatsHybridCacheExtensions/packages.linux-x64.lock.json @@ -14,6 +14,12 @@ "Microsoft.Extensions.Options": "10.0.9" } }, + "Microsoft.NET.ILLink.Tasks": { + "type": "Direct", + "requested": "[10.0.1, )", + "resolved": "10.0.1", + "contentHash": "ISahzLHsHY7vrwqr2p1YWZ+gsxoBRtH7gWRDK8fDUst9pp2He0GiesaqEfeX0V8QMCJM3eNEHGGpnIcPjFo2NQ==" + }, "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.0.300, )", @@ -167,6 +173,12 @@ "Microsoft.Extensions.Options": "10.0.9" } }, + "Microsoft.NET.ILLink.Tasks": { + "type": "Direct", + "requested": "[8.0.22, )", + "resolved": "8.0.22", + "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" + }, "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.0.300, )", diff --git a/src/NatsHybridCacheExtensions/packages.osx-arm64.lock.json b/src/NatsHybridCacheExtensions/packages.osx-arm64.lock.json index 597e28b..ec1ae5b 100644 --- a/src/NatsHybridCacheExtensions/packages.osx-arm64.lock.json +++ b/src/NatsHybridCacheExtensions/packages.osx-arm64.lock.json @@ -14,6 +14,12 @@ "Microsoft.Extensions.Options": "10.0.9" } }, + "Microsoft.NET.ILLink.Tasks": { + "type": "Direct", + "requested": "[10.0.1, )", + "resolved": "10.0.1", + "contentHash": "ISahzLHsHY7vrwqr2p1YWZ+gsxoBRtH7gWRDK8fDUst9pp2He0GiesaqEfeX0V8QMCJM3eNEHGGpnIcPjFo2NQ==" + }, "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.0.300, )", @@ -167,6 +173,12 @@ "Microsoft.Extensions.Options": "10.0.9" } }, + "Microsoft.NET.ILLink.Tasks": { + "type": "Direct", + "requested": "[8.0.22, )", + "resolved": "8.0.22", + "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" + }, "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.0.300, )", diff --git a/src/NatsHybridCacheExtensions/packages.win-x64.lock.json b/src/NatsHybridCacheExtensions/packages.win-x64.lock.json index 597e28b..ec1ae5b 100644 --- a/src/NatsHybridCacheExtensions/packages.win-x64.lock.json +++ b/src/NatsHybridCacheExtensions/packages.win-x64.lock.json @@ -14,6 +14,12 @@ "Microsoft.Extensions.Options": "10.0.9" } }, + "Microsoft.NET.ILLink.Tasks": { + "type": "Direct", + "requested": "[10.0.1, )", + "resolved": "10.0.1", + "contentHash": "ISahzLHsHY7vrwqr2p1YWZ+gsxoBRtH7gWRDK8fDUst9pp2He0GiesaqEfeX0V8QMCJM3eNEHGGpnIcPjFo2NQ==" + }, "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.0.300, )", @@ -167,6 +173,12 @@ "Microsoft.Extensions.Options": "10.0.9" } }, + "Microsoft.NET.ILLink.Tasks": { + "type": "Direct", + "requested": "[8.0.22, )", + "resolved": "8.0.22", + "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" + }, "Microsoft.SourceLink.GitHub": { "type": "Direct", "requested": "[10.0.300, )", diff --git a/test/UnitTests/Extensions/NatsExtensionsKeyValidationTests.cs b/test/UnitTests/Extensions/NatsExtensionsKeyValidationTests.cs new file mode 100644 index 0000000..0167427 --- /dev/null +++ b/test/UnitTests/Extensions/NatsExtensionsKeyValidationTests.cs @@ -0,0 +1,59 @@ +using Moq; +using NATS.Client.KeyValueStore; + +namespace CodeCargo.Nats.DistributedCache.UnitTests.Extensions; + +/// +/// Verifies the source-generated [GeneratedRegex] key validator in +/// accepts and rejects exactly the same keys as the previous RegexOptions.Compiled implementation. +/// TryValidateKey is private, so validation is exercised through the public TryPutWithTtlAsync entry +/// point: a valid key passes validation and reaches the store, while an invalid key short-circuits +/// with a NatsKVException before the store is touched. +/// +public class NatsExtensionsKeyValidationTests +{ + [Theory] + [InlineData("abc123")] + [InlineData("a-b_c.d/e=f")] // full character set: - _ . / = plus letters and digits + [InlineData("UPPER-lower-0-9")] + [InlineData("path/to/key")] + [InlineData("has.dots.inside")] // internal dots are allowed + public async Task TryPutWithTtlAsync_ValidKey_PassesValidationAndReachesStore(string key) + { + // A valid key must pass validation and proceed to the store. The mocked store throws a + // sentinel the moment its JetStreamContext is read (the first store member the extension + // touches), so observing that exact sentinel proves validation accepted the key. + var sentinel = new InvalidOperationException("reached-store"); + var store = new Mock(); + store.SetupGet(s => s.JetStreamContext).Throws(sentinel); + + var thrown = await Assert.ThrowsAsync( + async () => await store.Object.TryPutWithTtlAsync(key, "value")); + + Assert.Same(sentinel, thrown); + } + + [Theory] + [InlineData("", "Key cannot be empty")] + [InlineData(" ", "Key cannot be empty")] + [InlineData(".lead", "Key cannot start or end with a period")] + [InlineData("trail.", "Key cannot start or end with a period")] + [InlineData(".", "Key cannot start or end with a period")] + [InlineData("has space", "Key contains invalid characters")] + [InlineData("bad!char", "Key contains invalid characters")] + [InlineData("with@sign", "Key contains invalid characters")] + public async Task TryPutWithTtlAsync_InvalidKey_ReturnsErrorWithoutTouchingStore( + string key, + string expectedMessage) + { + // MockBehavior.Strict fails the test on any store access, proving invalid keys are rejected + // before the extension touches the store. + var store = new Mock(MockBehavior.Strict); + + var result = await store.Object.TryPutWithTtlAsync(key, "value"); + + Assert.False(result.Success); + Assert.IsType(result.Error); + Assert.Equal(expectedMessage, result.Error.Message); + } +} From 2db1806c5e4b9e02a30bb1eb5b949314f71dac00 Mon Sep 17 00:00:00 2001 From: Matthew DeVenny Date: Tue, 28 Jul 2026 10:14:51 -0700 Subject: [PATCH 2/2] #45 Regenerate lock files against current .NET SDK The ILLink.Tasks version in the lock files floats with the SDK/runtime patch level. Regenerate against the current .NET 8/10 SDK so the entries match what CI resolves (10.0.10 / 8.0.29), fixing the "NuGet lock files are out of date" drift check. Only Microsoft.NET.ILLink.Tasks changes; no other packages. Co-Authored-By: Claude Opus 4.8 (1M context) Signed-off-by: Matthew DeVenny --- .../packages.linux-arm64.lock.json | 12 ++++++------ .../packages.linux-x64.lock.json | 12 ++++++------ .../packages.osx-arm64.lock.json | 12 ++++++------ src/NatsDistributedCache/packages.win-x64.lock.json | 12 ++++++------ .../packages.linux-arm64.lock.json | 12 ++++++------ .../packages.linux-x64.lock.json | 12 ++++++------ .../packages.osx-arm64.lock.json | 12 ++++++------ .../packages.win-x64.lock.json | 12 ++++++------ 8 files changed, 48 insertions(+), 48 deletions(-) diff --git a/src/NatsDistributedCache/packages.linux-arm64.lock.json b/src/NatsDistributedCache/packages.linux-arm64.lock.json index 17c83db..cfd83cd 100644 --- a/src/NatsDistributedCache/packages.linux-arm64.lock.json +++ b/src/NatsDistributedCache/packages.linux-arm64.lock.json @@ -32,9 +32,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[10.0.1, )", - "resolved": "10.0.1", - "contentHash": "ISahzLHsHY7vrwqr2p1YWZ+gsxoBRtH7gWRDK8fDUst9pp2He0GiesaqEfeX0V8QMCJM3eNEHGGpnIcPjFo2NQ==" + "requested": "[10.0.10, )", + "resolved": "10.0.10", + "contentHash": "f5VCIE7AJpd5YvzNTeMGVzQIgyE9tX+AreTYwQF+REbu+DZo/2Ae+jNSwhPEYrVz6RRkd7y8ubXjk6Nn6Ka+Cg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", @@ -169,9 +169,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[8.0.22, )", - "resolved": "8.0.22", - "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" + "requested": "[8.0.29, )", + "resolved": "8.0.29", + "contentHash": "HSBTfrkIZijz8z3ybLRKB7E8rHk4QQufFwpHa9fc5CMIgRhRzdn4mBGmlyXZqaueiMPtuJcnjresGvSTfaW8Mg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/src/NatsDistributedCache/packages.linux-x64.lock.json b/src/NatsDistributedCache/packages.linux-x64.lock.json index 17c83db..cfd83cd 100644 --- a/src/NatsDistributedCache/packages.linux-x64.lock.json +++ b/src/NatsDistributedCache/packages.linux-x64.lock.json @@ -32,9 +32,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[10.0.1, )", - "resolved": "10.0.1", - "contentHash": "ISahzLHsHY7vrwqr2p1YWZ+gsxoBRtH7gWRDK8fDUst9pp2He0GiesaqEfeX0V8QMCJM3eNEHGGpnIcPjFo2NQ==" + "requested": "[10.0.10, )", + "resolved": "10.0.10", + "contentHash": "f5VCIE7AJpd5YvzNTeMGVzQIgyE9tX+AreTYwQF+REbu+DZo/2Ae+jNSwhPEYrVz6RRkd7y8ubXjk6Nn6Ka+Cg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", @@ -169,9 +169,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[8.0.22, )", - "resolved": "8.0.22", - "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" + "requested": "[8.0.29, )", + "resolved": "8.0.29", + "contentHash": "HSBTfrkIZijz8z3ybLRKB7E8rHk4QQufFwpHa9fc5CMIgRhRzdn4mBGmlyXZqaueiMPtuJcnjresGvSTfaW8Mg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/src/NatsDistributedCache/packages.osx-arm64.lock.json b/src/NatsDistributedCache/packages.osx-arm64.lock.json index 17c83db..cfd83cd 100644 --- a/src/NatsDistributedCache/packages.osx-arm64.lock.json +++ b/src/NatsDistributedCache/packages.osx-arm64.lock.json @@ -32,9 +32,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[10.0.1, )", - "resolved": "10.0.1", - "contentHash": "ISahzLHsHY7vrwqr2p1YWZ+gsxoBRtH7gWRDK8fDUst9pp2He0GiesaqEfeX0V8QMCJM3eNEHGGpnIcPjFo2NQ==" + "requested": "[10.0.10, )", + "resolved": "10.0.10", + "contentHash": "f5VCIE7AJpd5YvzNTeMGVzQIgyE9tX+AreTYwQF+REbu+DZo/2Ae+jNSwhPEYrVz6RRkd7y8ubXjk6Nn6Ka+Cg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", @@ -169,9 +169,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[8.0.22, )", - "resolved": "8.0.22", - "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" + "requested": "[8.0.29, )", + "resolved": "8.0.29", + "contentHash": "HSBTfrkIZijz8z3ybLRKB7E8rHk4QQufFwpHa9fc5CMIgRhRzdn4mBGmlyXZqaueiMPtuJcnjresGvSTfaW8Mg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/src/NatsDistributedCache/packages.win-x64.lock.json b/src/NatsDistributedCache/packages.win-x64.lock.json index 17c83db..cfd83cd 100644 --- a/src/NatsDistributedCache/packages.win-x64.lock.json +++ b/src/NatsDistributedCache/packages.win-x64.lock.json @@ -32,9 +32,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[10.0.1, )", - "resolved": "10.0.1", - "contentHash": "ISahzLHsHY7vrwqr2p1YWZ+gsxoBRtH7gWRDK8fDUst9pp2He0GiesaqEfeX0V8QMCJM3eNEHGGpnIcPjFo2NQ==" + "requested": "[10.0.10, )", + "resolved": "10.0.10", + "contentHash": "f5VCIE7AJpd5YvzNTeMGVzQIgyE9tX+AreTYwQF+REbu+DZo/2Ae+jNSwhPEYrVz6RRkd7y8ubXjk6Nn6Ka+Cg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", @@ -169,9 +169,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[8.0.22, )", - "resolved": "8.0.22", - "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" + "requested": "[8.0.29, )", + "resolved": "8.0.29", + "contentHash": "HSBTfrkIZijz8z3ybLRKB7E8rHk4QQufFwpHa9fc5CMIgRhRzdn4mBGmlyXZqaueiMPtuJcnjresGvSTfaW8Mg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/src/NatsHybridCacheExtensions/packages.linux-arm64.lock.json b/src/NatsHybridCacheExtensions/packages.linux-arm64.lock.json index ec1ae5b..c978076 100644 --- a/src/NatsHybridCacheExtensions/packages.linux-arm64.lock.json +++ b/src/NatsHybridCacheExtensions/packages.linux-arm64.lock.json @@ -16,9 +16,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[10.0.1, )", - "resolved": "10.0.1", - "contentHash": "ISahzLHsHY7vrwqr2p1YWZ+gsxoBRtH7gWRDK8fDUst9pp2He0GiesaqEfeX0V8QMCJM3eNEHGGpnIcPjFo2NQ==" + "requested": "[10.0.10, )", + "resolved": "10.0.10", + "contentHash": "f5VCIE7AJpd5YvzNTeMGVzQIgyE9tX+AreTYwQF+REbu+DZo/2Ae+jNSwhPEYrVz6RRkd7y8ubXjk6Nn6Ka+Cg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", @@ -175,9 +175,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[8.0.22, )", - "resolved": "8.0.22", - "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" + "requested": "[8.0.29, )", + "resolved": "8.0.29", + "contentHash": "HSBTfrkIZijz8z3ybLRKB7E8rHk4QQufFwpHa9fc5CMIgRhRzdn4mBGmlyXZqaueiMPtuJcnjresGvSTfaW8Mg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/src/NatsHybridCacheExtensions/packages.linux-x64.lock.json b/src/NatsHybridCacheExtensions/packages.linux-x64.lock.json index ec1ae5b..c978076 100644 --- a/src/NatsHybridCacheExtensions/packages.linux-x64.lock.json +++ b/src/NatsHybridCacheExtensions/packages.linux-x64.lock.json @@ -16,9 +16,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[10.0.1, )", - "resolved": "10.0.1", - "contentHash": "ISahzLHsHY7vrwqr2p1YWZ+gsxoBRtH7gWRDK8fDUst9pp2He0GiesaqEfeX0V8QMCJM3eNEHGGpnIcPjFo2NQ==" + "requested": "[10.0.10, )", + "resolved": "10.0.10", + "contentHash": "f5VCIE7AJpd5YvzNTeMGVzQIgyE9tX+AreTYwQF+REbu+DZo/2Ae+jNSwhPEYrVz6RRkd7y8ubXjk6Nn6Ka+Cg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", @@ -175,9 +175,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[8.0.22, )", - "resolved": "8.0.22", - "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" + "requested": "[8.0.29, )", + "resolved": "8.0.29", + "contentHash": "HSBTfrkIZijz8z3ybLRKB7E8rHk4QQufFwpHa9fc5CMIgRhRzdn4mBGmlyXZqaueiMPtuJcnjresGvSTfaW8Mg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/src/NatsHybridCacheExtensions/packages.osx-arm64.lock.json b/src/NatsHybridCacheExtensions/packages.osx-arm64.lock.json index ec1ae5b..c978076 100644 --- a/src/NatsHybridCacheExtensions/packages.osx-arm64.lock.json +++ b/src/NatsHybridCacheExtensions/packages.osx-arm64.lock.json @@ -16,9 +16,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[10.0.1, )", - "resolved": "10.0.1", - "contentHash": "ISahzLHsHY7vrwqr2p1YWZ+gsxoBRtH7gWRDK8fDUst9pp2He0GiesaqEfeX0V8QMCJM3eNEHGGpnIcPjFo2NQ==" + "requested": "[10.0.10, )", + "resolved": "10.0.10", + "contentHash": "f5VCIE7AJpd5YvzNTeMGVzQIgyE9tX+AreTYwQF+REbu+DZo/2Ae+jNSwhPEYrVz6RRkd7y8ubXjk6Nn6Ka+Cg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", @@ -175,9 +175,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[8.0.22, )", - "resolved": "8.0.22", - "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" + "requested": "[8.0.29, )", + "resolved": "8.0.29", + "contentHash": "HSBTfrkIZijz8z3ybLRKB7E8rHk4QQufFwpHa9fc5CMIgRhRzdn4mBGmlyXZqaueiMPtuJcnjresGvSTfaW8Mg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/src/NatsHybridCacheExtensions/packages.win-x64.lock.json b/src/NatsHybridCacheExtensions/packages.win-x64.lock.json index ec1ae5b..c978076 100644 --- a/src/NatsHybridCacheExtensions/packages.win-x64.lock.json +++ b/src/NatsHybridCacheExtensions/packages.win-x64.lock.json @@ -16,9 +16,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[10.0.1, )", - "resolved": "10.0.1", - "contentHash": "ISahzLHsHY7vrwqr2p1YWZ+gsxoBRtH7gWRDK8fDUst9pp2He0GiesaqEfeX0V8QMCJM3eNEHGGpnIcPjFo2NQ==" + "requested": "[10.0.10, )", + "resolved": "10.0.10", + "contentHash": "f5VCIE7AJpd5YvzNTeMGVzQIgyE9tX+AreTYwQF+REbu+DZo/2Ae+jNSwhPEYrVz6RRkd7y8ubXjk6Nn6Ka+Cg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", @@ -175,9 +175,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[8.0.22, )", - "resolved": "8.0.22", - "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" + "requested": "[8.0.29, )", + "resolved": "8.0.29", + "contentHash": "HSBTfrkIZijz8z3ybLRKB7E8rHk4QQufFwpHa9fc5CMIgRhRzdn4mBGmlyXZqaueiMPtuJcnjresGvSTfaW8Mg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct",