From d2ba9f86797d3b7d7c39b30ff96bb64bd25a15d5 Mon Sep 17 00:00:00 2001
From: micah686 <3616220+micah686@users.noreply.github.com>
Date: Sat, 2 May 2026 15:05:08 -0700
Subject: [PATCH] Updated package references and dependencies
---
.../FlySwattr.NATS.Abstractions.csproj | 2 +-
.../ValueObjects/Ids.cs | 27 ++++++++-----------
.../FlySwattr.NATS.Caching.csproj | 2 +-
.../FlySwattr.NATS.Core.csproj | 8 +++---
.../FlySwattr.NATS.DistributedLock.csproj | 4 +--
.../FlySwattr.NATS.Hosting.csproj | 8 +++---
.../FlySwattr.NATS.Resilience.csproj | 12 ++++-----
.../FlySwattr.NATS.Topology.csproj | 6 ++---
Samples/NatsTester/NatsTester.csproj | 6 ++---
Samples/Service1/Service1.csproj | 4 +--
Samples/Service2/Service2.csproj | 4 +--
Tests/Benchmarks/Benchmarks.csproj | 2 +-
.../Infrastructure/NatsContainerFixture.cs | 3 +--
.../IntegrationTests/IntegrationTests.csproj | 16 +++++------
.../Core/Messaging/NatsJetStreamBusTests.cs | 2 +-
.../NatsJetStreamBusTelemetryTests.cs | 16 ++++++++---
.../Core/Telemetry/NatsTelemetryTests.cs | 4 +--
.../NatsConsumerBackgroundServiceTests.cs | 8 +++---
Tests/UnitTests/UnitTests.csproj | 18 ++++++-------
19 files changed, 77 insertions(+), 75 deletions(-)
diff --git a/FlySwattr.NATS.Abstractions/FlySwattr.NATS.Abstractions.csproj b/FlySwattr.NATS.Abstractions/FlySwattr.NATS.Abstractions.csproj
index 285d6dc..80d67a2 100644
--- a/FlySwattr.NATS.Abstractions/FlySwattr.NATS.Abstractions.csproj
+++ b/FlySwattr.NATS.Abstractions/FlySwattr.NATS.Abstractions.csproj
@@ -12,7 +12,7 @@
-
+
diff --git a/FlySwattr.NATS.Abstractions/ValueObjects/Ids.cs b/FlySwattr.NATS.Abstractions/ValueObjects/Ids.cs
index 7936d93..3cd9f13 100644
--- a/FlySwattr.NATS.Abstractions/ValueObjects/Ids.cs
+++ b/FlySwattr.NATS.Abstractions/ValueObjects/Ids.cs
@@ -7,8 +7,7 @@ namespace FlySwattr.NATS.Abstractions;
[ValueObject]
public partial struct StreamName
{
- [GeneratedRegex(@"^[a-zA-Z0-9_-]+$")]
- private static partial Regex ValidPattern();
+ private static readonly Regex ValidPattern = new("^[a-zA-Z0-9_-]+$", RegexOptions.Compiled | RegexOptions.CultureInvariant);
private static Validation Validate(string value)
{
@@ -16,7 +15,7 @@ private static Validation Validate(string value)
return Validation.Invalid("Stream name cannot be empty");
if (value.Length > 256)
return Validation.Invalid("Stream name cannot exceed 256 characters");
- if (!ValidPattern().IsMatch(value))
+ if (!ValidPattern.IsMatch(value))
return Validation.Invalid("Stream name can only contain letters, numbers, underscores, and hyphens");
return Validation.Ok;
}
@@ -25,8 +24,7 @@ private static Validation Validate(string value)
[ValueObject]
public partial struct ConsumerName
{
- [GeneratedRegex(@"^[a-zA-Z0-9_-]+$")]
- private static partial Regex ValidPattern();
+ private static readonly Regex ValidPattern = new("^[a-zA-Z0-9_-]+$", RegexOptions.Compiled | RegexOptions.CultureInvariant);
private static Validation Validate(string value)
{
@@ -34,7 +32,7 @@ private static Validation Validate(string value)
return Validation.Invalid("Consumer name cannot be empty");
if (value.Length > 256)
return Validation.Invalid("Consumer name cannot exceed 256 characters");
- if (!ValidPattern().IsMatch(value))
+ if (!ValidPattern.IsMatch(value))
return Validation.Invalid("Consumer name can only contain letters, numbers, underscores, and hyphens");
return Validation.Ok;
}
@@ -45,8 +43,7 @@ public partial struct SubjectName
{
// NATS subjects allow alphanumeric, dots (hierarchy), and wildcards (* for single token, > for multi)
// Wildcards should only appear in subscription patterns, not in publish subjects
- [GeneratedRegex(@"^[a-zA-Z0-9_\-.*>]+$")]
- private static partial Regex ValidPattern();
+ private static readonly Regex ValidPattern = new("^[a-zA-Z0-9_\\-.*>]+$", RegexOptions.Compiled | RegexOptions.CultureInvariant);
private static Validation Validate(string value)
{
@@ -72,7 +69,7 @@ private static Validation Validate(string value)
if (value.Contains("..") || value.Contains("**") || value.Contains(">>"))
return Validation.Invalid("Subject contains invalid pattern sequences");
- if (!ValidPattern().IsMatch(value))
+ if (!ValidPattern.IsMatch(value))
return Validation.Invalid("Subject name contains invalid characters");
// Check for invalid wildcard positions (> must be at end if present)
if (value.Contains('>') && !value.EndsWith('>'))
@@ -86,8 +83,7 @@ private static Validation Validate(string value)
public partial struct BucketName
{
// KV/Object store bucket names: alphanumeric, underscores, hyphens only
- [GeneratedRegex(@"^[a-zA-Z0-9_-]+$")]
- private static partial Regex ValidPattern();
+ private static readonly Regex ValidPattern = new("^[a-zA-Z0-9_-]+$", RegexOptions.Compiled | RegexOptions.CultureInvariant);
private static Validation Validate(string value)
{
@@ -95,7 +91,7 @@ private static Validation Validate(string value)
return Validation.Invalid("Bucket name cannot be empty");
if (value.Length > 256)
return Validation.Invalid("Bucket name cannot exceed 256 characters");
- if (!ValidPattern().IsMatch(value))
+ if (!ValidPattern.IsMatch(value))
return Validation.Invalid("Bucket name can only contain letters, numbers, underscores, and hyphens");
return Validation.Ok;
}
@@ -105,8 +101,7 @@ private static Validation Validate(string value)
public partial struct QueueGroup
{
// Queue groups: no spaces, dots, or wildcards
- [GeneratedRegex(@"^[a-zA-Z0-9_-]+$")]
- private static partial Regex ValidPattern();
+ private static readonly Regex ValidPattern = new("^[a-zA-Z0-9_-]+$", RegexOptions.Compiled | RegexOptions.CultureInvariant);
private static Validation Validate(string value)
{
@@ -114,8 +109,8 @@ private static Validation Validate(string value)
return Validation.Invalid("Queue group cannot be empty");
if (value.Length > 256)
return Validation.Invalid("Queue group cannot exceed 256 characters");
- if (!ValidPattern().IsMatch(value))
+ if (!ValidPattern.IsMatch(value))
return Validation.Invalid("Queue group can only contain letters, numbers, underscores, and hyphens");
return Validation.Ok;
}
-}
\ No newline at end of file
+}
diff --git a/FlySwattr.NATS.Caching/FlySwattr.NATS.Caching.csproj b/FlySwattr.NATS.Caching/FlySwattr.NATS.Caching.csproj
index e3f2839..25930e8 100644
--- a/FlySwattr.NATS.Caching/FlySwattr.NATS.Caching.csproj
+++ b/FlySwattr.NATS.Caching/FlySwattr.NATS.Caching.csproj
@@ -16,7 +16,7 @@
-
+
\ No newline at end of file
diff --git a/FlySwattr.NATS.Core/FlySwattr.NATS.Core.csproj b/FlySwattr.NATS.Core/FlySwattr.NATS.Core.csproj
index c7b4b8a..0a29f60 100644
--- a/FlySwattr.NATS.Core/FlySwattr.NATS.Core.csproj
+++ b/FlySwattr.NATS.Core/FlySwattr.NATS.Core.csproj
@@ -15,10 +15,10 @@
-
-
-
-
+
+
+
+
diff --git a/FlySwattr.NATS.DistributedLock/FlySwattr.NATS.DistributedLock.csproj b/FlySwattr.NATS.DistributedLock/FlySwattr.NATS.DistributedLock.csproj
index 6b65127..790c8bf 100644
--- a/FlySwattr.NATS.DistributedLock/FlySwattr.NATS.DistributedLock.csproj
+++ b/FlySwattr.NATS.DistributedLock/FlySwattr.NATS.DistributedLock.csproj
@@ -16,8 +16,8 @@
-
-
+
+
diff --git a/FlySwattr.NATS.Hosting/FlySwattr.NATS.Hosting.csproj b/FlySwattr.NATS.Hosting/FlySwattr.NATS.Hosting.csproj
index 1855f7d..3c3b8c2 100644
--- a/FlySwattr.NATS.Hosting/FlySwattr.NATS.Hosting.csproj
+++ b/FlySwattr.NATS.Hosting/FlySwattr.NATS.Hosting.csproj
@@ -17,10 +17,10 @@
-
-
-
-
+
+
+
+
diff --git a/FlySwattr.NATS.Resilience/FlySwattr.NATS.Resilience.csproj b/FlySwattr.NATS.Resilience/FlySwattr.NATS.Resilience.csproj
index 73a9fc3..bba7b1e 100644
--- a/FlySwattr.NATS.Resilience/FlySwattr.NATS.Resilience.csproj
+++ b/FlySwattr.NATS.Resilience/FlySwattr.NATS.Resilience.csproj
@@ -16,12 +16,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/FlySwattr.NATS.Topology/FlySwattr.NATS.Topology.csproj b/FlySwattr.NATS.Topology/FlySwattr.NATS.Topology.csproj
index 4490d64..77966ba 100644
--- a/FlySwattr.NATS.Topology/FlySwattr.NATS.Topology.csproj
+++ b/FlySwattr.NATS.Topology/FlySwattr.NATS.Topology.csproj
@@ -16,9 +16,9 @@
-
-
-
+
+
+
diff --git a/Samples/NatsTester/NatsTester.csproj b/Samples/NatsTester/NatsTester.csproj
index 00dfba7..1ae11d9 100644
--- a/Samples/NatsTester/NatsTester.csproj
+++ b/Samples/NatsTester/NatsTester.csproj
@@ -5,9 +5,9 @@
-
-
-
+
+
+
diff --git a/Samples/Service1/Service1.csproj b/Samples/Service1/Service1.csproj
index 1b0a399..71317ba 100644
--- a/Samples/Service1/Service1.csproj
+++ b/Samples/Service1/Service1.csproj
@@ -5,8 +5,8 @@
-
-
+
+
diff --git a/Samples/Service2/Service2.csproj b/Samples/Service2/Service2.csproj
index 1b0a399..71317ba 100644
--- a/Samples/Service2/Service2.csproj
+++ b/Samples/Service2/Service2.csproj
@@ -5,8 +5,8 @@
-
-
+
+
diff --git a/Tests/Benchmarks/Benchmarks.csproj b/Tests/Benchmarks/Benchmarks.csproj
index f8b99b7..151640f 100644
--- a/Tests/Benchmarks/Benchmarks.csproj
+++ b/Tests/Benchmarks/Benchmarks.csproj
@@ -9,7 +9,7 @@
-
+
diff --git a/Tests/IntegrationTests/Infrastructure/NatsContainerFixture.cs b/Tests/IntegrationTests/Infrastructure/NatsContainerFixture.cs
index c59a72c..c34034d 100644
--- a/Tests/IntegrationTests/Infrastructure/NatsContainerFixture.cs
+++ b/Tests/IntegrationTests/Infrastructure/NatsContainerFixture.cs
@@ -8,8 +8,7 @@ public class NatsContainerFixture : IAsyncDisposable
public NatsContainerFixture()
{
- _container = new NatsBuilder()
- .WithImage("nats:2.10") // Explicit version
+ _container = new NatsBuilder("nats:2.10")
.WithCommand("--jetstream")
.Build();
}
diff --git a/Tests/IntegrationTests/IntegrationTests.csproj b/Tests/IntegrationTests/IntegrationTests.csproj
index c07812a..d93656d 100644
--- a/Tests/IntegrationTests/IntegrationTests.csproj
+++ b/Tests/IntegrationTests/IntegrationTests.csproj
@@ -11,16 +11,16 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
diff --git a/Tests/UnitTests/Core/Messaging/NatsJetStreamBusTests.cs b/Tests/UnitTests/Core/Messaging/NatsJetStreamBusTests.cs
index 2d3cb69..fd5f3d7 100644
--- a/Tests/UnitTests/Core/Messaging/NatsJetStreamBusTests.cs
+++ b/Tests/UnitTests/Core/Messaging/NatsJetStreamBusTests.cs
@@ -146,7 +146,7 @@ public async Task PublishAsync_ShouldStampConfiguredWireVersionHeader()
// Assert
await Assert.That(publishedHeaders).IsNotNull();
- await Assert.That(publishedHeaders!["X-Test-Wire-Version"]).IsEqualTo("7");
+ await Assert.That(publishedHeaders!["X-Test-Wire-Version"].Single()).IsEqualTo("7");
}
private record TestMessage(string Data);
diff --git a/Tests/UnitTests/Core/Telemetry/NatsJetStreamBusTelemetryTests.cs b/Tests/UnitTests/Core/Telemetry/NatsJetStreamBusTelemetryTests.cs
index 591e686..a9f4970 100644
--- a/Tests/UnitTests/Core/Telemetry/NatsJetStreamBusTelemetryTests.cs
+++ b/Tests/UnitTests/Core/Telemetry/NatsJetStreamBusTelemetryTests.cs
@@ -387,9 +387,19 @@ public async Task PublishAsync_WithoutParentActivity_ShouldCreateNewTrace()
SetupPublishMock();
var startCount = _capturedActivities.Count;
- // Act - publish without a parent activity
- await _bus.PublishAsync(subject1, message, "msg-1");
- await _bus.PublishAsync(subject2, message, "msg-2");
+ var previousActivity = Activity.Current;
+ try
+ {
+ Activity.Current = null;
+
+ // Act - publish without a parent activity
+ await _bus.PublishAsync(subject1, message, "msg-1");
+ await _bus.PublishAsync(subject2, message, "msg-2");
+ }
+ finally
+ {
+ Activity.Current = previousActivity;
+ }
// Assert - find our specific activities
var ourActivities = _capturedActivities.Skip(startCount).Where(a => a.OperationName.Contains(prefix)).ToList();
diff --git a/Tests/UnitTests/Core/Telemetry/NatsTelemetryTests.cs b/Tests/UnitTests/Core/Telemetry/NatsTelemetryTests.cs
index 3de6e13..bed9523 100644
--- a/Tests/UnitTests/Core/Telemetry/NatsTelemetryTests.cs
+++ b/Tests/UnitTests/Core/Telemetry/NatsTelemetryTests.cs
@@ -195,9 +195,7 @@ public void InjectTraceContext_WithActivityWithNoId_ShouldNotModifyHeaders()
{
// Arrange
var headers = new NatsHeaders();
- // Create an activity that won't be sampled (no listener for this source)
- using var tempSource = new ActivitySource("temp-test-source");
- using var activity = tempSource.StartActivity("test"); // Will be null without listener
+ using var activity = new Activity("test");
// Act
NatsTelemetry.InjectTraceContext(activity, headers);
diff --git a/Tests/UnitTests/Hosting/Services/NatsConsumerBackgroundServiceTests.cs b/Tests/UnitTests/Hosting/Services/NatsConsumerBackgroundServiceTests.cs
index cf904f7..83a37a0 100644
--- a/Tests/UnitTests/Hosting/Services/NatsConsumerBackgroundServiceTests.cs
+++ b/Tests/UnitTests/Hosting/Services/NatsConsumerBackgroundServiceTests.cs
@@ -169,7 +169,7 @@ public async Task ExecuteAsync_ShouldBlockInsteadOfNak_WhenChannelFull_Backpress
var msg = Substitute.For>();
msg.Data.Returns($"message-{i}");
msg.Subject.Returns("test.subject");
- msg.NakAsync(default, default, default)
+ msg.NakAsync(default, default)
.ReturnsForAnyArgs(ValueTask.CompletedTask)
.AndDoes(x => Interlocked.Increment(ref nakCount));
mockMessages.Add(msg);
@@ -372,7 +372,7 @@ public async Task ExecuteAsync_ShouldDrainQueuedMessagesAndNakOnShutdown()
var secondMsg = Substitute.For>();
secondMsg.Data.Returns("second");
secondMsg.Subject.Returns("test.subject.2");
- secondMsg.NakAsync(default, default, default).ReturnsForAnyArgs(ValueTask.CompletedTask);
+ secondMsg.NakAsync(default, default).ReturnsForAnyArgs(ValueTask.CompletedTask);
consumer.ConsumeAsync(
Arg.Any>(),
@@ -469,7 +469,7 @@ private static async Task WaitForNakAsync(INatsJSMsg message, TimeSpan t
{
try
{
- await message.Received(1).NakAsync(default, TimeSpan.FromSeconds(1), Arg.Any());
+ await message.Received(1).NakAsync(Arg.Is(opts => opts != null && opts.Value.NakDelay == TimeSpan.FromSeconds(1)), Arg.Any());
return;
}
catch
@@ -478,6 +478,6 @@ private static async Task WaitForNakAsync(INatsJSMsg message, TimeSpan t
}
}
- await message.Received(1).NakAsync(default, TimeSpan.FromSeconds(1), Arg.Any());
+ await message.Received(1).NakAsync(Arg.Is(opts => opts != null && opts.Value.NakDelay == TimeSpan.FromSeconds(1)), Arg.Any());
}
}
diff --git a/Tests/UnitTests/UnitTests.csproj b/Tests/UnitTests/UnitTests.csproj
index ddb9671..39b7912 100644
--- a/Tests/UnitTests/UnitTests.csproj
+++ b/Tests/UnitTests/UnitTests.csproj
@@ -11,18 +11,18 @@
-
+
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+