Mostlylucid.Common
7.5.2
See the version list below for details.
dotnet add package Mostlylucid.Common --version 7.5.2
NuGet\Install-Package Mostlylucid.Common -Version 7.5.2
<PackageReference Include="Mostlylucid.Common" Version="7.5.2" />
<PackageVersion Include="Mostlylucid.Common" Version="7.5.2" />
<PackageReference Include="Mostlylucid.Common" />
paket add Mostlylucid.Common --version 7.5.2
#r "nuget: Mostlylucid.Common, 7.5.2"
#:package Mostlylucid.Common@7.5.2
#addin nuget:?package=Mostlylucid.Common&version=7.5.2
#tool nuget:?package=Mostlylucid.Common&version=7.5.2
Mostlylucid.Common
Shared abstractions, base classes, and utilities for Mostlylucid NuGet packages.
Features
Caching
Generic caching service abstraction with memory cache implementation:
// Register caching service
services.AddMemoryCachingService<MyData>(options =>
{
options.DefaultExpiration = TimeSpan.FromMinutes(30);
options.MaxEntries = 5000;
});
// Use in your service
public class MyService
{
private readonly ICachingService<MyData> _cache;
public async Task<MyData?> GetDataAsync(string key)
{
return await _cache.GetOrAddAsync(key, async () =>
{
// Fetch from source if not cached
return await FetchFromSourceAsync(key);
});
}
}
Statistics Tracking
Base interfaces and implementations for service statistics:
public class MyService : IServiceStatistics
{
private readonly ServiceStatisticsTracker _stats = new();
public async Task<Result> ProcessAsync(Request request)
{
_stats.IncrementRequests();
var cached = GetFromCache(request);
if (cached != null)
{
_stats.IncrementCacheHit();
return cached;
}
// Process...
}
public long TotalRequests => _stats.TotalRequests;
public long CacheHits => _stats.CacheHits;
public double CacheHitRate => _stats.CacheHitRate;
}
Periodic Update Service
Base class for background services that periodically update data:
public class MyUpdateService : PeriodicUpdateService
{
protected override TimeSpan UpdateInterval => TimeSpan.FromHours(24);
protected override Task<DateTime?> GetLastUpdateTimeAsync(CancellationToken ct)
{
return Task.FromResult(File.GetLastWriteTimeUtc("data.db") as DateTime?);
}
protected override async Task PerformUpdateAsync(CancellationToken ct)
{
await DownloadLatestDataAsync(ct);
}
}
Configuration Interfaces
Standard options interfaces for consistent configuration:
public class MyOptions : ICacheableOptions, ITestableOptions
{
public bool Enabled { get; set; } = true;
public TimeSpan CacheDuration { get; set; } = TimeSpan.FromHours(1);
public int MaxCacheEntries { get; set; } = 10000;
public bool EnableTestMode { get; set; } = false;
public string TestModeHeader => "X-Test-Mode";
}
Middleware Base
Base class for middleware with test mode support:
public class MyMiddleware : TestModeMiddlewareBase<MyResult>
{
protected override string ResultKey => "MyResult";
protected override string TestModeHeader => "X-Test-Mode";
protected override bool IsTestModeEnabled => _options.EnableTestMode;
protected override MyResult? CreateTestModeResult(string testValue)
{
return new MyResult { TestValue = testValue };
}
protected override async Task<MyResult?> ProcessRequestAsync(HttpContext context)
{
var ip = context.GetClientIpAddress();
return await _service.ProcessAsync(ip);
}
}
IP Address Extraction
Helper for getting client IP addresses with proxy/CDN support:
// Automatically checks CF-Connecting-IP, X-Forwarded-For, X-Real-IP, etc.
var clientIp = context.GetClientIpAddress();
Entity Interfaces
Standard interfaces for database entities:
public class CachedItem : ICachedEntity
{
public string Key { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; }
public DateTime ExpiresAt { get; set; }
public bool IsExpired => DateTime.UtcNow > ExpiresAt;
}
OpenTelemetry Support
Base classes and helpers for OpenTelemetry instrumentation across all Mostlylucid packages:
using Mostlylucid.Common.Telemetry;
// Get all Mostlylucid activity source names for OpenTelemetry configuration
var sources = TelemetryExtensions.GetMostlylucidActivitySourceNames();
foreach (var source in sources)
{
tracing.AddSource(source);
}
// Activity source names are available as constants
// ActivitySources.BotDetection = "Mostlylucid.BotDetection"
// ActivitySources.GeoDetection = "Mostlylucid.GeoDetection"
// etc.
Available telemetry utilities:
TelemetryActivitySource- Wrapper for System.Diagnostics.ActivitySourceTelemetryOptions- Configuration for telemetry behaviorTelemetryConstants- Standard attribute names following OpenTelemetry semantic conventionsTelemetryExtensions- Helper methods for service registrationActivityExtensions- Extension methods for recording results and exceptions
Installation
dotnet add package Mostlylucid.Common
License
GNU AGPLv3
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.AspNetCore.Http.Abstractions (>= 2.3.10)
- Microsoft.Extensions.Caching.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Caching.Memory (>= 10.0.8)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Options (>= 10.0.8)
-
net8.0
- Microsoft.AspNetCore.Http.Abstractions (>= 2.3.10)
- Microsoft.Extensions.Caching.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Caching.Memory (>= 10.0.8)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Options (>= 10.0.8)
-
net9.0
- Microsoft.AspNetCore.Http.Abstractions (>= 2.3.10)
- Microsoft.Extensions.Caching.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Caching.Memory (>= 10.0.8)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Options (>= 10.0.8)
NuGet packages (5)
Showing the top 5 NuGet packages that depend on Mostlylucid.Common:
| Package | Downloads |
|---|---|
|
mostlylucid.botdetection
Enterprise bot detection and anonymous entity resolution for ASP.NET Core — the detection engine behind StyloBot (https://stylo.bot). Probabilistic and behavioural, not just User-Agent matching: UA/header/IP analysis, JA3/JA4/HTTP2/QUIC/TCP-IP fingerprinting, Leiden cluster discovery, 129-dim Markov session vectors, metastable fingerprint identity, and optional LLM classification. Zero-PII (HMAC-SHA256), SQLite-backed, single-call UseStyloBot() setup. |
|
|
mostlylucid.geodetection
Geographic location detection and routing middleware for ASP.NET Core applications with country-based routing and IP geolocation. |
|
|
Mostlylucid.Ephemeral.Atoms.Llm
Meta-package for the Ephemeral LLM coordinator atom. References Mostlylucid.Ephemeral.Atoms.Llm.Abstractions (contracts) and Mostlylucid.Ephemeral.Atoms.Llm.Coordinator (runtime). Install this to get the full prompt / pick / invoke / writeback pipeline; reference .Abstractions alone if you only implement the contracts (net8.0/net9.0/net10.0). |
|
|
Mostlylucid.Atoms.Ephemeral
Ephemeral LLM coordinator atom: a prompt / pick / invoke / writeback pipeline that drives scheduling-coordinated LLM calls. Depends only on Mostlylucid.Common scheduling and the Microsoft.Extensions abstractions. |
|
|
Mostlylucid.Ephemeral.Atoms.Llm.Coordinator
Ephemeral LLM coordinator runtime: a tick-driven prompt / pick / invoke / writeback pipeline (EphemeralLlmCoordinator + AddEphemeralLlmCoordinator DI) built on the Llm.Abstractions contracts and Mostlylucid.Common scheduling. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 8.1.0-alpha0 | 48 | 7/6/2026 |
| 8.0.0-alpha2 | 281 | 7/3/2026 |
| 8.0.0-alpha1 | 67 | 7/2/2026 |
| 7.5.5 | 100 | 6/16/2026 |
| 7.5.3 | 98 | 6/16/2026 |
| 7.5.2 | 104 | 6/16/2026 |
| 7.5.1 | 123 | 6/16/2026 |
| 7.5.0 | 111 | 6/16/2026 |
| 7.0.1-alpha0 | 96 | 6/4/2026 |
| 7.0.0 | 123 | 6/1/2026 |
| 7.0.0-rc0 | 100 | 5/31/2026 |
| 7.0.0-alpha2 | 96 | 5/31/2026 |
| 7.0.0-alpha1 | 100 | 5/31/2026 |
| 7.0.0-alpha0 | 107 | 5/31/2026 |
| 6.9.0-alpha0 | 103 | 5/28/2026 |
| 6.8.9 | 109 | 5/26/2026 |
| 6.8.8 | 113 | 5/26/2026 |
| 6.8.6 | 108 | 5/26/2026 |
| 6.8.5 | 114 | 5/25/2026 |
| 6.8.4 | 107 | 5/25/2026 |