diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index e0dff62..afd751a 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -1,11 +1,13 @@
-name: Publish Release to GitHub Packages
+name: Publish
on:
push:
tags:
- "v*.*.*"
+ - "v*.*.*-*"
permissions:
+ contents: read
packages: write
defaults:
@@ -13,7 +15,9 @@ defaults:
shell: bash
jobs:
- publish:
+ nuget:
+ name: NuGet
+ environment: nuget
runs-on: ubuntu-latest
steps:
@@ -24,18 +28,18 @@ jobs:
with:
dotnet-version: 8.x.x
- - name: Build and strong name
- run: dotnet build --configuration Release --no-incremental -p:version=${GITHUB_REF#refs/*/v} -p:SignAssembly=true -p:AssemblyOriginatorKeyFile=../key.snk
-
- - name: Pack SDK
- run: dotnet pack -p:version=${GITHUB_REF#refs/*/v} -o ./publish
-
- - name: Configure NuGet source
- run: dotnet nuget add source --username ${GITHUB_REPOSITORY_OWNER} --password ${GITHUB_TOKEN} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/${GITHUB_REPOSITORY_OWNER}/index.json"
+ - name: Write strong name key file
+ run: |
+ set +x # Disable command echoing for security
+ echo "$STRONG_NAME_KEY" > NatsDistributedCache.snk
+ chmod 600 NatsDistributedCache.snk
env:
- GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
+ STRONG_NAME_KEY: ${{secrets.STRONG_NAME_KEY}}
+
+ - name: Pack SDK
+ run: dotnet pack -c Release -p:version=${GITHUB_REF#refs/*/v} -o ./publish
- - name: Publish to GitHub Packages
- run: dotnet nuget push ./publish/*.nupkg --skip-duplicate --source github
+ - name: Publish to NuGet.org
+ run: dotnet nuget push ./publish/*.nupkg --api-key $NUGET_API_KEY --source https://api.nuget.org/v3/index.json --skip-duplicate
env:
- NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
+ NUGET_API_KEY: ${{secrets.NUGET_API_KEY}}
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..5749330
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,47 @@
+# Contributing
+
+## Updating Packages
+
+Use the `dotnet outdated` tool to update packages in `.csproj` files. When updating packages in a project with lock
+files, always use the `-n` flag to prevent automatic restoration. To update tools themselves, edit
+`.config/dotnet-tools.json`.
+
+```bash
+# all updates
+# view
+dotnet outdated
+# apply all (with -n to prevent automatic restore)
+dotnet outdated -n -u
+# prompt
+dotnet outdated -n -u:prompt
+
+# minor updates only
+# view
+dotnet outdated -vl Major
+# apply all (with -n to prevent automatic restore)
+dotnet outdated -n -vl Major -u
+# prompt
+dotnet outdated -n -vl Major -u:prompt
+
+After updating dependencies, you must update the lock files for all supported platforms by running the update script (see next section).
+
+## Updating NuGet Lock Files
+
+This project uses NuGet package lock files for reproducible builds across different platforms. When packages are updated, the lock files need to be regenerated for all supported platforms.
+
+Use the provided script to update all platform-specific lock files:
+
+```bash
+./dev/update-nuget-lockfiles.sh
+```
+
+This will generate lock files for:
+
+- Linux x64: `packages.linux-x64.lock.json`
+- macOS ARM64: `packages.osx-arm64.lock.json`
+- Windows x64: `packages.win-x64.lock.json`
+
+These lock files are used automatically based on the runtime identifier specified during build/restore.
+
+**Important**: Always run this script after updating package dependencies to ensure all platform-specific lock files are
+properly regenerated.
diff --git a/README.md b/README.md
index b148015..33db7e5 100644
--- a/README.md
+++ b/README.md
@@ -1,47 +1,59 @@
+
+
# CodeCargo.Nats.DistributedCache
-## Updating Packages
+## Overview
+
+A .NET 8+ library for integrating NATS as a distributed cache in ASP.NET Core applications. Supports the new HybridCache system for fast, scalable caching.
+
+## Requirements
+
+- NATS 2.11 or later
+- A NATS KV bucket with `LimitMarkerTTL` set for per-key TTL support. Example:
+ ```csharp
+ // assuming an INatsConnection natsConnection
+ var kvContext = natsConnection.CreateKeyValueStoreContext();
+ await kvContext.CreateOrUpdateStoreAsync(
+ new NatsKVConfig("cache") { LimitMarkerTTL = TimeSpan.FromSeconds(1), });
+ ```
-Use the `dotnet outdated` tool to update packages in `.csproj` files. When updating packages in a project with lock
-files, always use the `-n` flag to prevent automatic restoration. To update tools themselves, edit
-`.config/dotnet-tools.json`.
+## Installation
```bash
-# all updates
-# view
-dotnet outdated
-# apply all (with -n to prevent automatic restore)
-dotnet outdated -n -u
-# prompt
-dotnet outdated -n -u:prompt
+dotnet add package CodeCargo.Nats.DistributedCache
+```
-# minor updates only
-# view
-dotnet outdated -vl Major
-# apply all (with -n to prevent automatic restore)
-dotnet outdated -n -vl Major -u
-# prompt
-dotnet outdated -n -vl Major -u:prompt
+## Usage
-After updating dependencies, you must update the lock files for all supported platforms by running the update script (see next section).
+```csharp
+using Microsoft.Extensions.DependencyInjection;
+using NATS.Client.Core;
+using CodeCargo.NatsDistributedCache;
-## Updating NuGet Lock Files
+var builder = WebApplication.CreateBuilder(args);
-This project uses NuGet package lock files for reproducible builds across different platforms. When packages are updated, the lock files need to be regenerated for all supported platforms.
+// Add a NATS connection
+var natsOpts = NatsOpts.Default with { Url = "nats://localhost:4222" }
+builder.Services.AddNats(opts => natsOpts);
-Use the provided script to update all platform-specific lock files:
+// Add a NATS distributed cache
+builder.Services.AddNatsDistributedCache(options =>
+{
+ options.BucketName = "cache";
+});
-```bash
-./dev/update-nuget-lockfiles.sh
-```
+// (Optional) Add HybridCache
+var hybridCacheServices = builder.Services.AddHybridCache();
-This will generate lock files for:
+// (Optional) Use NATS Serializer for HybridCache
+hybridCacheServices.AddSerializerFactory(
+ natsOpts.SerializerRegistry.ToHybridCacheSerializerFactory());
-- Linux x64: `packages.linux-x64.lock.json`
-- macOS ARM64: `packages.osx-arm64.lock.json`
-- Windows x64: `packages.win-x64.lock.json`
+var app = builder.Build();
+app.Run();
+```
-These lock files are used automatically based on the runtime identifier specified during build/restore.
+## Additional Resources
-**Important**: Always run this script after updating package dependencies to ensure all platform-specific lock files are
-properly regenerated.
+* [ASP.NET Core Hybrid Cache Documentation](https://learn.microsoft.com/en-us/aspnet/core/performance/caching/hybrid?view=aspnetcore-9.0)
+* [NATS .NET Client Documentation](https://nats-io.github.io/nats.net/api/NATS.Client.Core.NatsOpts.html)
diff --git a/dev/generate-snk.sh b/dev/generate-snk.sh
new file mode 100755
index 0000000..792cf02
--- /dev/null
+++ b/dev/generate-snk.sh
@@ -0,0 +1,57 @@
+#!/bin/bash
+set -e
+
+# Navigate to the root directory containing the .sln file
+cd "$(dirname "$0")/.."
+
+# Find the .sln file in the current directory
+CUR_DIR="$(pwd)"
+SLN_FILE=$(ls "$CUR_DIR"/*.sln 2>/dev/null | head -n 1)
+if [ -z "$SLN_FILE" ]; then
+ echo "Error: No .sln file found."
+ exit 1
+fi
+
+# Extract the solution name without the extension
+SLN_NAME=$(basename "$SLN_FILE" .sln)
+
+# Get the current date
+DATE="$(date "+%Y-%m-%d")"
+
+# Define key names
+KEYS_DIR="$CUR_DIR/keys"
+SNK_FILE="${KEYS_DIR}/${SLN_NAME}.${DATE}.snk"
+PUB_FILE="${KEYS_DIR}/${SLN_NAME}.${DATE}.pub"
+
+# Function to run sn tool using Docker
+run_sn_docker() {
+ docker run --rm \
+ -v "$KEYS_DIR:/mnt/keys" \
+ -w "/mnt/keys" \
+ -u "$(id -u):$(id -g)" \
+ mono:latest sn "$@"
+}
+
+# Create the keys directory if it doesn't exist
+mkdir -p "$KEYS_DIR"
+
+# Add .gitignore to prevent committing private keys
+echo "*.snk" > "${KEYS_DIR}/.gitignore"
+
+# Generate the SNK file directly using sn tool
+echo "Generating SNK file..."
+run_sn_docker -k "$(basename "${SNK_FILE}")"
+
+# Extract the public key
+echo "Extracting public key..."
+PUB_KEY_NAME="$(basename "${PUB_FILE}")"
+run_sn_docker -p "$(basename "${SNK_FILE}")" "${PUB_KEY_NAME}"
+
+# Display the public key token (helpful for reference)
+echo "Public key token:"
+run_sn_docker -tp "${PUB_KEY_NAME}"
+
+# Print success message
+echo "Generated SNK file: ${SNK_FILE}"
+echo "Generated public key file: ${PUB_FILE}"
+echo "Done."
diff --git a/keys/.gitignore b/keys/.gitignore
new file mode 100644
index 0000000..322d15d
--- /dev/null
+++ b/keys/.gitignore
@@ -0,0 +1 @@
+*.snk
diff --git a/keys/NatsDistributedCache.2025-05-12.pub b/keys/NatsDistributedCache.2025-05-12.pub
new file mode 100644
index 0000000..72c3350
Binary files /dev/null and b/keys/NatsDistributedCache.2025-05-12.pub differ
diff --git a/src/NatsDistributedCache/NatsCacheServiceCollectionExtensions.cs b/src/NatsDistributedCache/NatsCacheServiceCollectionExtensions.cs
index bb81332..2cea755 100644
--- a/src/NatsDistributedCache/NatsCacheServiceCollectionExtensions.cs
+++ b/src/NatsDistributedCache/NatsCacheServiceCollectionExtensions.cs
@@ -5,53 +5,52 @@
using Microsoft.Extensions.Options;
using NATS.Client.Core;
-namespace CodeCargo.Nats.DistributedCache
+namespace CodeCargo.Nats.DistributedCache;
+
+///
+/// Extension methods for setting up NATS distributed cache related services in an .
+///
+public static class NatsCacheServiceCollectionExtensions
{
///
- /// Extension methods for setting up NATS distributed cache related services in an .
+ /// Adds NATS distributed caching services to the specified .
///
- public static class NatsCacheServiceCollectionExtensions
+ /// The to add services to.
+ /// An to configure the provided
+ /// .
+ /// If set, used keyed service to resolve
+ /// The so that additional calls can be chained.
+ public static IServiceCollection AddNatsDistributedCache(
+ this IServiceCollection services,
+ Action configureOptions,
+ object? connectionServiceKey = null)
{
- ///
- /// Adds NATS distributed caching services to the specified .
- ///
- /// The to add services to.
- /// An to configure the provided
- /// .
- /// If set, used keyed service to resolve
- /// The so that additional calls can be chained.
- public static IServiceCollection AddNatsDistributedCache(
- this IServiceCollection services,
- Action configureOptions,
- object? connectionServiceKey = null)
+ services.AddOptions();
+ services.Configure(configureOptions);
+ services.Add(ServiceDescriptor.Singleton(serviceProvider =>
{
- services.AddOptions();
- services.Configure(configureOptions);
- services.Add(ServiceDescriptor.Singleton(serviceProvider =>
- {
- var optionsAccessor = serviceProvider.GetRequiredService>();
- var logger = serviceProvider.GetService>();
-
- var natsConnection = connectionServiceKey == null
- ? serviceProvider.GetRequiredService()
- : serviceProvider.GetRequiredKeyedService(connectionServiceKey);
+ var optionsAccessor = serviceProvider.GetRequiredService>();
+ var logger = serviceProvider.GetService>();
- return logger != null
- ? new NatsCacheImpl(optionsAccessor, logger, serviceProvider, natsConnection)
- : new NatsCacheImpl(optionsAccessor, serviceProvider, natsConnection);
- }));
+ var natsConnection = connectionServiceKey == null
+ ? serviceProvider.GetRequiredService()
+ : serviceProvider.GetRequiredKeyedService(connectionServiceKey);
- return services;
- }
+ return logger != null
+ ? new NatsCacheImpl(optionsAccessor, logger, serviceProvider, natsConnection)
+ : new NatsCacheImpl(optionsAccessor, serviceProvider, natsConnection);
+ }));
- ///
- /// Creates an that uses the provided
- /// to perform serialization.
- ///
- /// The instance
- /// The instance
- public static IHybridCacheSerializerFactory ToHybridCacheSerializerFactory(
- this INatsSerializerRegistry serializerRegistry) =>
- new NatsHybridCacheSerializerFactory(serializerRegistry);
+ return services;
}
+
+ ///
+ /// Creates an that uses the provided
+ /// to perform serialization.
+ ///
+ /// The instance
+ /// The instance
+ public static IHybridCacheSerializerFactory ToHybridCacheSerializerFactory(
+ this INatsSerializerRegistry serializerRegistry) =>
+ new NatsHybridCacheSerializerFactory(serializerRegistry);
}
diff --git a/src/NatsDistributedCache/NatsDistributedCache.csproj b/src/NatsDistributedCache/NatsDistributedCache.csproj
index 7f4bd49..617e9ab 100644
--- a/src/NatsDistributedCache/NatsDistributedCache.csproj
+++ b/src/NatsDistributedCache/NatsDistributedCache.csproj
@@ -5,7 +5,26 @@
enable
CodeCargo.Nats.DistributedCache
NATS implementation of Microsoft.Extensions.Caching.Distributed.IDistributedCache.
- cache;caching;distributed;nats
+
+
+ true
+ $(MSBuildThisFileDirectory)..\..\keys\NatsDistributedCache.2025-05-12.snk
+
+
+ CodeCargo
+ CodeCargo
+ Copyright © $([System.DateTime]::Now.Year) CodeCargo
+ CodeCargo.Nats.DistributedCache
+ distributed cache;hybrid cache;nats
+ MIT
+ README.md
+ https://github.com/code-cargo/NatsDistributedCache
+ https://github.com/code-cargo/NatsDistributedCache
+ git
+ true
+ true
+ true
+ snupkg
@@ -13,6 +32,11 @@
+
+
+
+
+
diff --git a/src/NatsDistributedCache/packages.linux-x64.lock.json b/src/NatsDistributedCache/packages.linux-x64.lock.json
index ca7d676..d86a379 100644
--- a/src/NatsDistributedCache/packages.linux-x64.lock.json
+++ b/src/NatsDistributedCache/packages.linux-x64.lock.json
@@ -31,6 +31,16 @@
"Microsoft.Extensions.Primitives": "9.0.4"
}
},
+ "Microsoft.SourceLink.GitHub": {
+ "type": "Direct",
+ "requested": "[8.0.0, )",
+ "resolved": "8.0.0",
+ "contentHash": "G5q7OqtwIyGTkeIOAc3u2ZuV/kicQaec5EaRnc0pIeSnh9LUjj+PYQrJYBURvDt7twGl2PKA7nSN0kz1Zw5bnQ==",
+ "dependencies": {
+ "Microsoft.Build.Tasks.Git": "8.0.0",
+ "Microsoft.SourceLink.Common": "8.0.0"
+ }
+ },
"NATS.Client.KeyValueStore": {
"type": "Direct",
"requested": "[2.6.0, )",
@@ -49,6 +59,11 @@
"StyleCop.Analyzers.Unstable": "1.2.0.556"
}
},
+ "Microsoft.Build.Tasks.Git": {
+ "type": "Transitive",
+ "resolved": "8.0.0",
+ "contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ=="
+ },
"Microsoft.Extensions.DependencyInjection.Abstractions": {
"type": "Transitive",
"resolved": "9.0.4",
@@ -59,6 +74,11 @@
"resolved": "9.0.4",
"contentHash": "SPFyMjyku1nqTFFJ928JAMd0QnRe4xjE7KeKnZMWXf3xk+6e0WiOZAluYtLdbJUXtsl2cCRSi8cBquJ408k8RA=="
},
+ "Microsoft.SourceLink.Common": {
+ "type": "Transitive",
+ "resolved": "8.0.0",
+ "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw=="
+ },
"NATS.Client.Core": {
"type": "Transitive",
"resolved": "2.6.0",
diff --git a/src/NatsDistributedCache/packages.osx-arm64.lock.json b/src/NatsDistributedCache/packages.osx-arm64.lock.json
index ca7d676..d86a379 100644
--- a/src/NatsDistributedCache/packages.osx-arm64.lock.json
+++ b/src/NatsDistributedCache/packages.osx-arm64.lock.json
@@ -31,6 +31,16 @@
"Microsoft.Extensions.Primitives": "9.0.4"
}
},
+ "Microsoft.SourceLink.GitHub": {
+ "type": "Direct",
+ "requested": "[8.0.0, )",
+ "resolved": "8.0.0",
+ "contentHash": "G5q7OqtwIyGTkeIOAc3u2ZuV/kicQaec5EaRnc0pIeSnh9LUjj+PYQrJYBURvDt7twGl2PKA7nSN0kz1Zw5bnQ==",
+ "dependencies": {
+ "Microsoft.Build.Tasks.Git": "8.0.0",
+ "Microsoft.SourceLink.Common": "8.0.0"
+ }
+ },
"NATS.Client.KeyValueStore": {
"type": "Direct",
"requested": "[2.6.0, )",
@@ -49,6 +59,11 @@
"StyleCop.Analyzers.Unstable": "1.2.0.556"
}
},
+ "Microsoft.Build.Tasks.Git": {
+ "type": "Transitive",
+ "resolved": "8.0.0",
+ "contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ=="
+ },
"Microsoft.Extensions.DependencyInjection.Abstractions": {
"type": "Transitive",
"resolved": "9.0.4",
@@ -59,6 +74,11 @@
"resolved": "9.0.4",
"contentHash": "SPFyMjyku1nqTFFJ928JAMd0QnRe4xjE7KeKnZMWXf3xk+6e0WiOZAluYtLdbJUXtsl2cCRSi8cBquJ408k8RA=="
},
+ "Microsoft.SourceLink.Common": {
+ "type": "Transitive",
+ "resolved": "8.0.0",
+ "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw=="
+ },
"NATS.Client.Core": {
"type": "Transitive",
"resolved": "2.6.0",
diff --git a/src/NatsDistributedCache/packages.win-x64.lock.json b/src/NatsDistributedCache/packages.win-x64.lock.json
index ca7d676..d86a379 100644
--- a/src/NatsDistributedCache/packages.win-x64.lock.json
+++ b/src/NatsDistributedCache/packages.win-x64.lock.json
@@ -31,6 +31,16 @@
"Microsoft.Extensions.Primitives": "9.0.4"
}
},
+ "Microsoft.SourceLink.GitHub": {
+ "type": "Direct",
+ "requested": "[8.0.0, )",
+ "resolved": "8.0.0",
+ "contentHash": "G5q7OqtwIyGTkeIOAc3u2ZuV/kicQaec5EaRnc0pIeSnh9LUjj+PYQrJYBURvDt7twGl2PKA7nSN0kz1Zw5bnQ==",
+ "dependencies": {
+ "Microsoft.Build.Tasks.Git": "8.0.0",
+ "Microsoft.SourceLink.Common": "8.0.0"
+ }
+ },
"NATS.Client.KeyValueStore": {
"type": "Direct",
"requested": "[2.6.0, )",
@@ -49,6 +59,11 @@
"StyleCop.Analyzers.Unstable": "1.2.0.556"
}
},
+ "Microsoft.Build.Tasks.Git": {
+ "type": "Transitive",
+ "resolved": "8.0.0",
+ "contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ=="
+ },
"Microsoft.Extensions.DependencyInjection.Abstractions": {
"type": "Transitive",
"resolved": "9.0.4",
@@ -59,6 +74,11 @@
"resolved": "9.0.4",
"contentHash": "SPFyMjyku1nqTFFJ928JAMd0QnRe4xjE7KeKnZMWXf3xk+6e0WiOZAluYtLdbJUXtsl2cCRSi8cBquJ408k8RA=="
},
+ "Microsoft.SourceLink.Common": {
+ "type": "Transitive",
+ "resolved": "8.0.0",
+ "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw=="
+ },
"NATS.Client.Core": {
"type": "Transitive",
"resolved": "2.6.0",
diff --git a/test/IntegrationTests/packages.linux-x64.lock.json b/test/IntegrationTests/packages.linux-x64.lock.json
index a65d86c..5813dfd 100644
--- a/test/IntegrationTests/packages.linux-x64.lock.json
+++ b/test/IntegrationTests/packages.linux-x64.lock.json
@@ -1052,16 +1052,7 @@
"resolved": "16.3.0",
"contentHash": "SgMOdxbz8X65z8hraIs6hOEdnkH6hESTAIUa7viEngHOYaH+6q5XJmwr1+yb9vJpNQ19hCQY69xbFsLtXpobQA=="
},
- "natsapphost": {
- "type": "Project",
- "dependencies": {
- "Aspire.Dashboard.Sdk.linux-x64": "[9.2.1, )",
- "Aspire.Hosting.AppHost": "[9.2.1, )",
- "Aspire.Hosting.Orchestration.linux-x64": "[9.2.1, )",
- "NatsDistributedCache": "[1.0.0, )"
- }
- },
- "natsdistributedcache": {
+ "CodeCargo.Nats.DistributedCache": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "[9.0.4, )",
@@ -1070,12 +1061,21 @@
"NATS.Client.KeyValueStore": "[2.6.0, )"
}
},
+ "natsapphost": {
+ "type": "Project",
+ "dependencies": {
+ "Aspire.Dashboard.Sdk.linux-x64": "[9.2.1, )",
+ "Aspire.Hosting.AppHost": "[9.2.1, )",
+ "Aspire.Hosting.Orchestration.linux-x64": "[9.2.1, )",
+ "CodeCargo.Nats.DistributedCache": "[1.0.0, )"
+ }
+ },
"testutils": {
"type": "Project",
"dependencies": {
+ "CodeCargo.Nats.DistributedCache": "[1.0.0, )",
"Microsoft.Extensions.Logging": "[9.0.4, )",
"NATS.Net": "[2.6.0, )",
- "NatsDistributedCache": "[1.0.0, )",
"xunit.v3.assert": "[2.0.2, )",
"xunit.v3.extensibility.core": "[2.0.2, )"
}
diff --git a/test/IntegrationTests/packages.osx-arm64.lock.json b/test/IntegrationTests/packages.osx-arm64.lock.json
index cd80cc3..4d0c6d1 100644
--- a/test/IntegrationTests/packages.osx-arm64.lock.json
+++ b/test/IntegrationTests/packages.osx-arm64.lock.json
@@ -1052,16 +1052,7 @@
"resolved": "16.3.0",
"contentHash": "SgMOdxbz8X65z8hraIs6hOEdnkH6hESTAIUa7viEngHOYaH+6q5XJmwr1+yb9vJpNQ19hCQY69xbFsLtXpobQA=="
},
- "natsapphost": {
- "type": "Project",
- "dependencies": {
- "Aspire.Dashboard.Sdk.osx-arm64": "[9.2.1, )",
- "Aspire.Hosting.AppHost": "[9.2.1, )",
- "Aspire.Hosting.Orchestration.osx-arm64": "[9.2.1, )",
- "NatsDistributedCache": "[1.0.0, )"
- }
- },
- "natsdistributedcache": {
+ "CodeCargo.Nats.DistributedCache": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "[9.0.4, )",
@@ -1070,12 +1061,21 @@
"NATS.Client.KeyValueStore": "[2.6.0, )"
}
},
+ "natsapphost": {
+ "type": "Project",
+ "dependencies": {
+ "Aspire.Dashboard.Sdk.osx-arm64": "[9.2.1, )",
+ "Aspire.Hosting.AppHost": "[9.2.1, )",
+ "Aspire.Hosting.Orchestration.osx-arm64": "[9.2.1, )",
+ "CodeCargo.Nats.DistributedCache": "[1.0.0, )"
+ }
+ },
"testutils": {
"type": "Project",
"dependencies": {
+ "CodeCargo.Nats.DistributedCache": "[1.0.0, )",
"Microsoft.Extensions.Logging": "[9.0.4, )",
"NATS.Net": "[2.6.0, )",
- "NatsDistributedCache": "[1.0.0, )",
"xunit.v3.assert": "[2.0.2, )",
"xunit.v3.extensibility.core": "[2.0.2, )"
}
diff --git a/test/IntegrationTests/packages.win-x64.lock.json b/test/IntegrationTests/packages.win-x64.lock.json
index 220f5a7..6f21006 100644
--- a/test/IntegrationTests/packages.win-x64.lock.json
+++ b/test/IntegrationTests/packages.win-x64.lock.json
@@ -1052,16 +1052,7 @@
"resolved": "16.3.0",
"contentHash": "SgMOdxbz8X65z8hraIs6hOEdnkH6hESTAIUa7viEngHOYaH+6q5XJmwr1+yb9vJpNQ19hCQY69xbFsLtXpobQA=="
},
- "natsapphost": {
- "type": "Project",
- "dependencies": {
- "Aspire.Dashboard.Sdk.win-x64": "[9.2.1, )",
- "Aspire.Hosting.AppHost": "[9.2.1, )",
- "Aspire.Hosting.Orchestration.win-x64": "[9.2.1, )",
- "NatsDistributedCache": "[1.0.0, )"
- }
- },
- "natsdistributedcache": {
+ "CodeCargo.Nats.DistributedCache": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "[9.0.4, )",
@@ -1070,12 +1061,21 @@
"NATS.Client.KeyValueStore": "[2.6.0, )"
}
},
+ "natsapphost": {
+ "type": "Project",
+ "dependencies": {
+ "Aspire.Dashboard.Sdk.win-x64": "[9.2.1, )",
+ "Aspire.Hosting.AppHost": "[9.2.1, )",
+ "Aspire.Hosting.Orchestration.win-x64": "[9.2.1, )",
+ "CodeCargo.Nats.DistributedCache": "[1.0.0, )"
+ }
+ },
"testutils": {
"type": "Project",
"dependencies": {
+ "CodeCargo.Nats.DistributedCache": "[1.0.0, )",
"Microsoft.Extensions.Logging": "[9.0.4, )",
"NATS.Net": "[2.6.0, )",
- "NatsDistributedCache": "[1.0.0, )",
"xunit.v3.assert": "[2.0.2, )",
"xunit.v3.extensibility.core": "[2.0.2, )"
}
diff --git a/test/TestUtils/packages.linux-x64.lock.json b/test/TestUtils/packages.linux-x64.lock.json
index 52157d7..c41655f 100644
--- a/test/TestUtils/packages.linux-x64.lock.json
+++ b/test/TestUtils/packages.linux-x64.lock.json
@@ -237,7 +237,7 @@
"Microsoft.Bcl.AsyncInterfaces": "6.0.0"
}
},
- "natsdistributedcache": {
+ "CodeCargo.Nats.DistributedCache": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "[9.0.4, )",
diff --git a/test/TestUtils/packages.osx-arm64.lock.json b/test/TestUtils/packages.osx-arm64.lock.json
index 52157d7..c41655f 100644
--- a/test/TestUtils/packages.osx-arm64.lock.json
+++ b/test/TestUtils/packages.osx-arm64.lock.json
@@ -237,7 +237,7 @@
"Microsoft.Bcl.AsyncInterfaces": "6.0.0"
}
},
- "natsdistributedcache": {
+ "CodeCargo.Nats.DistributedCache": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "[9.0.4, )",
diff --git a/test/TestUtils/packages.win-x64.lock.json b/test/TestUtils/packages.win-x64.lock.json
index 52157d7..c41655f 100644
--- a/test/TestUtils/packages.win-x64.lock.json
+++ b/test/TestUtils/packages.win-x64.lock.json
@@ -237,7 +237,7 @@
"Microsoft.Bcl.AsyncInterfaces": "6.0.0"
}
},
- "natsdistributedcache": {
+ "CodeCargo.Nats.DistributedCache": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "[9.0.4, )",
diff --git a/test/UnitTests/packages.linux-x64.lock.json b/test/UnitTests/packages.linux-x64.lock.json
index ca0522a..5e11b64 100644
--- a/test/UnitTests/packages.linux-x64.lock.json
+++ b/test/UnitTests/packages.linux-x64.lock.json
@@ -369,7 +369,7 @@
"xunit.v3.runner.common": "[2.0.2]"
}
},
- "natsdistributedcache": {
+ "CodeCargo.Nats.DistributedCache": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "[9.0.4, )",
@@ -381,9 +381,9 @@
"testutils": {
"type": "Project",
"dependencies": {
+ "CodeCargo.Nats.DistributedCache": "[1.0.0, )",
"Microsoft.Extensions.Logging": "[9.0.4, )",
"NATS.Net": "[2.6.0, )",
- "NatsDistributedCache": "[1.0.0, )",
"xunit.v3.assert": "[2.0.2, )",
"xunit.v3.extensibility.core": "[2.0.2, )"
}
diff --git a/test/UnitTests/packages.osx-arm64.lock.json b/test/UnitTests/packages.osx-arm64.lock.json
index ca0522a..5e11b64 100644
--- a/test/UnitTests/packages.osx-arm64.lock.json
+++ b/test/UnitTests/packages.osx-arm64.lock.json
@@ -369,7 +369,7 @@
"xunit.v3.runner.common": "[2.0.2]"
}
},
- "natsdistributedcache": {
+ "CodeCargo.Nats.DistributedCache": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "[9.0.4, )",
@@ -381,9 +381,9 @@
"testutils": {
"type": "Project",
"dependencies": {
+ "CodeCargo.Nats.DistributedCache": "[1.0.0, )",
"Microsoft.Extensions.Logging": "[9.0.4, )",
"NATS.Net": "[2.6.0, )",
- "NatsDistributedCache": "[1.0.0, )",
"xunit.v3.assert": "[2.0.2, )",
"xunit.v3.extensibility.core": "[2.0.2, )"
}
diff --git a/test/UnitTests/packages.win-x64.lock.json b/test/UnitTests/packages.win-x64.lock.json
index ca0522a..5e11b64 100644
--- a/test/UnitTests/packages.win-x64.lock.json
+++ b/test/UnitTests/packages.win-x64.lock.json
@@ -369,7 +369,7 @@
"xunit.v3.runner.common": "[2.0.2]"
}
},
- "natsdistributedcache": {
+ "CodeCargo.Nats.DistributedCache": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "[9.0.4, )",
@@ -381,9 +381,9 @@
"testutils": {
"type": "Project",
"dependencies": {
+ "CodeCargo.Nats.DistributedCache": "[1.0.0, )",
"Microsoft.Extensions.Logging": "[9.0.4, )",
"NATS.Net": "[2.6.0, )",
- "NatsDistributedCache": "[1.0.0, )",
"xunit.v3.assert": "[2.0.2, )",
"xunit.v3.extensibility.core": "[2.0.2, )"
}
diff --git a/util/NatsAppHost/packages.linux-x64.lock.json b/util/NatsAppHost/packages.linux-x64.lock.json
index d6599d0..61d3339 100644
--- a/util/NatsAppHost/packages.linux-x64.lock.json
+++ b/util/NatsAppHost/packages.linux-x64.lock.json
@@ -711,7 +711,7 @@
"resolved": "16.3.0",
"contentHash": "SgMOdxbz8X65z8hraIs6hOEdnkH6hESTAIUa7viEngHOYaH+6q5XJmwr1+yb9vJpNQ19hCQY69xbFsLtXpobQA=="
},
- "natsdistributedcache": {
+ "CodeCargo.Nats.DistributedCache": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "[9.0.4, )",
diff --git a/util/NatsAppHost/packages.osx-arm64.lock.json b/util/NatsAppHost/packages.osx-arm64.lock.json
index 13463fe..6382e51 100644
--- a/util/NatsAppHost/packages.osx-arm64.lock.json
+++ b/util/NatsAppHost/packages.osx-arm64.lock.json
@@ -711,7 +711,7 @@
"resolved": "16.3.0",
"contentHash": "SgMOdxbz8X65z8hraIs6hOEdnkH6hESTAIUa7viEngHOYaH+6q5XJmwr1+yb9vJpNQ19hCQY69xbFsLtXpobQA=="
},
- "natsdistributedcache": {
+ "CodeCargo.Nats.DistributedCache": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "[9.0.4, )",
diff --git a/util/NatsAppHost/packages.win-x64.lock.json b/util/NatsAppHost/packages.win-x64.lock.json
index 5730200..e305cad 100644
--- a/util/NatsAppHost/packages.win-x64.lock.json
+++ b/util/NatsAppHost/packages.win-x64.lock.json
@@ -711,7 +711,7 @@
"resolved": "16.3.0",
"contentHash": "SgMOdxbz8X65z8hraIs6hOEdnkH6hESTAIUa7viEngHOYaH+6q5XJmwr1+yb9vJpNQ19hCQY69xbFsLtXpobQA=="
},
- "natsdistributedcache": {
+ "CodeCargo.Nats.DistributedCache": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "[9.0.4, )",
diff --git a/util/PerfTest/packages.linux-x64.lock.json b/util/PerfTest/packages.linux-x64.lock.json
index 9315996..346ec48 100644
--- a/util/PerfTest/packages.linux-x64.lock.json
+++ b/util/PerfTest/packages.linux-x64.lock.json
@@ -944,16 +944,7 @@
"resolved": "16.3.0",
"contentHash": "SgMOdxbz8X65z8hraIs6hOEdnkH6hESTAIUa7viEngHOYaH+6q5XJmwr1+yb9vJpNQ19hCQY69xbFsLtXpobQA=="
},
- "natsapphost": {
- "type": "Project",
- "dependencies": {
- "Aspire.Dashboard.Sdk.linux-x64": "[9.2.1, )",
- "Aspire.Hosting.AppHost": "[9.2.1, )",
- "Aspire.Hosting.Orchestration.linux-x64": "[9.2.1, )",
- "NatsDistributedCache": "[1.0.0, )"
- }
- },
- "natsdistributedcache": {
+ "CodeCargo.Nats.DistributedCache": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "[9.0.4, )",
@@ -962,12 +953,21 @@
"NATS.Client.KeyValueStore": "[2.6.0, )"
}
},
+ "natsapphost": {
+ "type": "Project",
+ "dependencies": {
+ "Aspire.Dashboard.Sdk.linux-x64": "[9.2.1, )",
+ "Aspire.Hosting.AppHost": "[9.2.1, )",
+ "Aspire.Hosting.Orchestration.linux-x64": "[9.2.1, )",
+ "CodeCargo.Nats.DistributedCache": "[1.0.0, )"
+ }
+ },
"testutils": {
"type": "Project",
"dependencies": {
+ "CodeCargo.Nats.DistributedCache": "[1.0.0, )",
"Microsoft.Extensions.Logging": "[9.0.4, )",
"NATS.Net": "[2.6.0, )",
- "NatsDistributedCache": "[1.0.0, )",
"xunit.v3.assert": "[2.0.2, )",
"xunit.v3.extensibility.core": "[2.0.2, )"
}
diff --git a/util/PerfTest/packages.osx-arm64.lock.json b/util/PerfTest/packages.osx-arm64.lock.json
index b3330df..cc3d194 100644
--- a/util/PerfTest/packages.osx-arm64.lock.json
+++ b/util/PerfTest/packages.osx-arm64.lock.json
@@ -944,16 +944,7 @@
"resolved": "16.3.0",
"contentHash": "SgMOdxbz8X65z8hraIs6hOEdnkH6hESTAIUa7viEngHOYaH+6q5XJmwr1+yb9vJpNQ19hCQY69xbFsLtXpobQA=="
},
- "natsapphost": {
- "type": "Project",
- "dependencies": {
- "Aspire.Dashboard.Sdk.osx-arm64": "[9.2.1, )",
- "Aspire.Hosting.AppHost": "[9.2.1, )",
- "Aspire.Hosting.Orchestration.osx-arm64": "[9.2.1, )",
- "NatsDistributedCache": "[1.0.0, )"
- }
- },
- "natsdistributedcache": {
+ "CodeCargo.Nats.DistributedCache": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "[9.0.4, )",
@@ -962,12 +953,21 @@
"NATS.Client.KeyValueStore": "[2.6.0, )"
}
},
+ "natsapphost": {
+ "type": "Project",
+ "dependencies": {
+ "Aspire.Dashboard.Sdk.osx-arm64": "[9.2.1, )",
+ "Aspire.Hosting.AppHost": "[9.2.1, )",
+ "Aspire.Hosting.Orchestration.osx-arm64": "[9.2.1, )",
+ "CodeCargo.Nats.DistributedCache": "[1.0.0, )"
+ }
+ },
"testutils": {
"type": "Project",
"dependencies": {
+ "CodeCargo.Nats.DistributedCache": "[1.0.0, )",
"Microsoft.Extensions.Logging": "[9.0.4, )",
"NATS.Net": "[2.6.0, )",
- "NatsDistributedCache": "[1.0.0, )",
"xunit.v3.assert": "[2.0.2, )",
"xunit.v3.extensibility.core": "[2.0.2, )"
}
diff --git a/util/PerfTest/packages.win-x64.lock.json b/util/PerfTest/packages.win-x64.lock.json
index b8ae234..0e84cdf 100644
--- a/util/PerfTest/packages.win-x64.lock.json
+++ b/util/PerfTest/packages.win-x64.lock.json
@@ -944,16 +944,7 @@
"resolved": "16.3.0",
"contentHash": "SgMOdxbz8X65z8hraIs6hOEdnkH6hESTAIUa7viEngHOYaH+6q5XJmwr1+yb9vJpNQ19hCQY69xbFsLtXpobQA=="
},
- "natsapphost": {
- "type": "Project",
- "dependencies": {
- "Aspire.Dashboard.Sdk.win-x64": "[9.2.1, )",
- "Aspire.Hosting.AppHost": "[9.2.1, )",
- "Aspire.Hosting.Orchestration.win-x64": "[9.2.1, )",
- "NatsDistributedCache": "[1.0.0, )"
- }
- },
- "natsdistributedcache": {
+ "CodeCargo.Nats.DistributedCache": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "[9.0.4, )",
@@ -962,12 +953,21 @@
"NATS.Client.KeyValueStore": "[2.6.0, )"
}
},
+ "natsapphost": {
+ "type": "Project",
+ "dependencies": {
+ "Aspire.Dashboard.Sdk.win-x64": "[9.2.1, )",
+ "Aspire.Hosting.AppHost": "[9.2.1, )",
+ "Aspire.Hosting.Orchestration.win-x64": "[9.2.1, )",
+ "CodeCargo.Nats.DistributedCache": "[1.0.0, )"
+ }
+ },
"testutils": {
"type": "Project",
"dependencies": {
+ "CodeCargo.Nats.DistributedCache": "[1.0.0, )",
"Microsoft.Extensions.Logging": "[9.0.4, )",
"NATS.Net": "[2.6.0, )",
- "NatsDistributedCache": "[1.0.0, )",
"xunit.v3.assert": "[2.0.2, )",
"xunit.v3.extensibility.core": "[2.0.2, )"
}