
Security News
The Hidden Blast Radius of the Axios Compromise
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.
FQ.Functions
Advanced tools
Azure Functions (isolated worker) utilities for FQ Framework. Adds correlation ID, idempotency, and exception-to-ProblemDetails middleware, plus WriteResultAsync extensions for seamless FQ.Results integration in HTTP triggers. Targets Microsoft.Azure.Functions.Worker 2.2+ and .NET 9+.
A modern, minimal, and production-ready foundation for building .NET 9 services and APIs —
designed around Clean Architecture, CQRS, and unified result handling.
This ecosystem includes:
| Package | Purpose |
|---|---|
| FQ.Results | Uniform success/error result handling, HTTP mapping, and problem-details integration |
| FQ.Cqrs | MediatR pipeline behaviors for CQRS (validation, authorization, idempotency, logging, performance) |
| FQ.AspNetCore | ASP.NET Core utilities (correlation, idempotency, versioning, result mapping) |
| FQ.Functions | Azure Functions utilities (correlation, idempotency, exception handling, result writers) |
| FQ.Mapping | Tiny abstraction over object mapping with first‑class Result<T> support |
All libraries target .NET 9 and work with:
dotnet add package FQ.Results
dotnet add package FQ.Cqrs
dotnet add package FQ.AspNetCore
dotnet add package FQ.Functions
dotnet add package FQ.Mapping
Provides lightweight primitives for handling outcomes and errors across your entire stack.
using FQ.Results;
var ok = Result.Ok();
var user = Result<User>.Ok(new User("alice"));
var notFound = Result.Fail(Error.NotFound("user_not_found", "User does not exist"));
var e1 = Error.Validation("email", "Invalid format");
var e2 = Error.Forbidden("no_access", "User has no permission");
var e3 = Error.Conflict("duplicate", "Email already exists");
var shape = e1.ToProblemShape("/api/users/1");
Console.WriteLine(shape.Status); // 400
Console.WriteLine(shape.Type); // urn:problem-type:validation
All result and error types are fully serializable with System.Text.Json.
var json = JsonSerializer.Serialize(Result.Fail(Error.NotFound("x", "missing")));
Due to immutability of the record classes, use FQ.Results.JsonResultSerializer for deserialization purposes.
var result = JsonResultSerializer.Deserialize<ResultType>(json, _serializerOptions);
Integrates clean CQRS patterns using MediatR pipeline behaviors and Result semantics.
In your Startup or DI registration:
services.AddCqrsUtilities()
public sealed record CreateUser(string Email, string Password) : ICommand<Result<Guid>>;
public sealed class CreateUserHandler : IRequestHandler<CreateUser, Result<Guid>>
{
public async Task<Result<Guid>> Handle(CreateUser cmd, CancellationToken ct)
{
if (string.IsNullOrWhiteSpace(cmd.Email))
return Result<Guid>.Fail(Error.Validation("email", "Email is required"));
var id = Guid.NewGuid();
return Result<Guid>.Ok(id);
}
}
public sealed class CreateUserAuthorizer : IAuthorizer<CreateUser>
{
public Task<Result> AuthorizeAsync(CreateUser request, CancellationToken ct)
{
if (request.Email.EndsWith("@futeq.com"))
return Task.FromResult(Result.Ok());
return Task.FromResult(Result.Fail(Error.Forbidden("domain_not_allowed")));
}
}
public sealed record CreateOrder(Guid Id, string Customer)
: ICommand<Result<Guid>>, IIdempotentRequest
{
public TimeSpan IdempotencyTtl => TimeSpan.FromMinutes(5);
}
Utilities for ASP.NET Core 9.0 projects — standardized middleware and extensions.
builder.Services.AddAspNetCoreUtilities();
app.UseAspNetCoreUtilities();
[HttpPost("users")]
public IActionResult Create([FromBody] CreateUser command)
{
var result = _mediator.Send(command).Result;
return result.ToActionResult(this);
}
Azure Functions isolated worker helpers.
var host = new HostBuilder()
.ConfigureFunctionsWorkerDefaults(builder =>
{
builder.UseFunctionsUtilities();
})
.ConfigureServices(services =>
{
services.AddFunctionsUtilities();
})
.Build();
host.Run();
public class UsersFunctions
{
[Function("GetUser")]
public async Task<HttpResponseData> GetUser(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = "users/{id}")] HttpRequestData req, string id)
{
if (id == "404")
{
return await req.WriteResultAsync(Result.Fail(Error.NotFound("user", "Not found")));
}
return await req.WriteResultAsync(Result.Ok());
}
}
All packages have tests (xUnit + FluentAssertions + NSubstitute).
dotnet test -c Release
MIT © 2025 Futeq
FAQs
Azure Functions (isolated worker) utilities for FQ Framework. Adds correlation ID, idempotency, and exception-to-ProblemDetails middleware, plus WriteResultAsync extensions for seamless FQ.Results integration in HTTP triggers. Targets Microsoft.Azure.Functions.Worker 2.2+ and .NET 9+.
We found that fq.functions demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.

Research
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.

Research
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.