Repository navigation
Bump Refit from 9.0.2 to 16.4.0 - #218
dependabot[bot] wants to merge 1 commit into
Conversation
--- updated-dependencies: - dependency-name: Refit dependency-version: 16.4.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
|
Important Review skippedBot user detected. To trigger a single review, invoke the
|
…ansitives - NSubstitute 5.3.0 -> 6.2.0 (#217), Refit 9.0.2 -> 16.4.0 (#218), StackExchange.Redis 2.13.17 -> 3.4.20 (#219), SQLitePCLRaw.bundle_e_sqlite3 2.1.14 -> 3.0.5 (#220). No code changes. - OpenTelemetry.Instrumentation.StackExchangeRedis 1.0.0-rc9.15 -> 1.20.1-beta.1: the old pre-release caps StackExchange.Redis below 3. - Turn on CentralPackageTransitivePinningEnabled, so indirect dependencies use the central versions (JWT 8.23, Http.Resilience 10.11 everywhere). Replaces #221's per-project direct references. - Microsoft.Extensions.Http.Polly 10.0.0 -> 10.0.14: pinning exposed that OpenIddict needs >= 10.0.11. - Dependabot: ignore Microsoft.OpenApi majors. Microsoft.AspNetCore.OpenApi 10.x requires Microsoft.OpenApi < 3.0 (#216). Lock files regenerated with --force-evaluate. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014QCSL3vKBpaY5vx6epF7wE
…ansitives - NSubstitute 5.3.0 -> 6.2.0 (#217), Refit 9.0.2 -> 16.4.0 (#218), StackExchange.Redis 2.13.17 -> 3.4.20 (#219), SQLitePCLRaw.bundle_e_sqlite3 2.1.14 -> 3.0.5 (#220). No code changes. - OpenTelemetry.Instrumentation.StackExchangeRedis 1.0.0-rc9.15 -> 1.20.1-beta.1: the old pre-release caps StackExchange.Redis below 3. - Turn on CentralPackageTransitivePinningEnabled, so indirect dependencies use the central versions (JWT 8.23, Http.Resilience 10.11 everywhere). Replaces #221's per-project direct references. - Microsoft.Extensions.Http.Polly 10.0.0 -> 10.0.14: pinning exposed that OpenIddict needs >= 10.0.11. - Dependabot: ignore Microsoft.OpenApi majors. Microsoft.AspNetCore.OpenApi 10.x requires Microsoft.OpenApi < 3.0 (#216). Lock files regenerated with --force-evaluate. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014QCSL3vKBpaY5vx6epF7wE
…transitives (#215) * chore(deps): Microsoft.Graph 6, Test.Sdk 18, prettier-plugin-astro 1 - Microsoft.Graph 5.105.0 -> 6.9.0. Graph.Core 4 floors Microsoft.Kiota.Abstractions at 2.0.0, past GHSA-7j59-v9qr-6fq9, so the direct Kiota pin in Notifications is removed as its comment asked. Replaces #209 and #210 (each failed alone: Graph 6 needs Kiota 2). - Microsoft.NET.Test.Sdk 17.14.1 -> 18.11.0 (#211). - Scope: prettier-plugin-astro 0.14.1 -> 1.1.2 (#213). The new plugin formats .astro markup differently, so the affected files are reformatted (whitespace only). Lock files regenerated with --force-evaluate. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014QCSL3vKBpaY5vx6epF7wE * chore(deps): eslint-plugin-astro 3.2.1 in Scope Replaces #214. No config change needed; lint is unchanged (0 errors). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014QCSL3vKBpaY5vx6epF7wE * chore(deps): NSubstitute 6, Refit 16, Redis 3, SQLitePCLRaw 3; pin transitives - NSubstitute 5.3.0 -> 6.2.0 (#217), Refit 9.0.2 -> 16.4.0 (#218), StackExchange.Redis 2.13.17 -> 3.4.20 (#219), SQLitePCLRaw.bundle_e_sqlite3 2.1.14 -> 3.0.5 (#220). No code changes. - OpenTelemetry.Instrumentation.StackExchangeRedis 1.0.0-rc9.15 -> 1.20.1-beta.1: the old pre-release caps StackExchange.Redis below 3. - Turn on CentralPackageTransitivePinningEnabled, so indirect dependencies use the central versions (JWT 8.23, Http.Resilience 10.11 everywhere). Replaces #221's per-project direct references. - Microsoft.Extensions.Http.Polly 10.0.0 -> 10.0.14: pinning exposed that OpenIddict needs >= 10.0.11. - Dependabot: ignore Microsoft.OpenApi majors. Microsoft.AspNetCore.OpenApi 10.x requires Microsoft.OpenApi < 3.0 (#216). Lock files regenerated with --force-evaluate. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014QCSL3vKBpaY5vx6epF7wE --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
|
Superseded by #215, which includes this update (merged). |
|
OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting If you change your mind, just re-open this PR and I'll resolve any conflicts on it. |
Updated Refit from 9.0.2 to 16.4.0.
Release notes
Sourced from Refit's releases.
16.4.0
Summary
Refit 16.4.0 adds opt-in HTTP-aware retries, new query naming and relative URL options, and fixes for parameter binding and response handling. Existing clients keep their current behavior unless you enable the new options.
HTTP-aware retries
HttpRetryHandlerworks with Refit clients and ordinaryHttpClientcalls. It needs no extra resilience package or changes to your API interface.HttpRequestException. A 403 retries only when the configured delay reader finds a valid timing hint.Retry-Afterheaders.RetryDelayProviders.Azure,.Aws,.GitHuband.Jiraalso read provider-specific timing headers. Custom readers can useReadHeaderwith seconds, milliseconds, Unix timestamps or date formats.RetryJitterMode.Symmetric.MaxDelayreturns the response rather than retrying too early.ServerDelayJitterRatiocan add a small positive variation to a server delay.Quick start
Put the retry handler in the client's handler chain, then create your Refit client as usual:
IGitHubApiis your existing Refit interface. OmitDelayProviderto use standardRetry-Afterhandling. WithRefit.HttpClientFactory, register a fresh handler for the client:Set
MaxRetries = 0to disable retries. UseShouldRetryto replace the response rules, andBaseDelay/MaxDelayto tune waits. POST, PUT, PATCH and DELETE requireRetryUnsafeMethods = true; enable this only when replay is safe for the endpoint, such as when it supports an idempotency key. Avoid unbounded streaming uploads and stacking this handler with another retry strategy.... (truncated)
16.3.0
🗞️ What's Changed
✨ Features
🔗 Full Changelog: reactiveui/refit@v16.2.0...v16.3.0
🙌 Contributions
💖 Thanks to all the contributors: @glennawatson
16.2.0
🗞️ What's Changed
✨ Features
🧹 General Changes
✅ Tests
📝 Documentation
📦 Dependencies
🔗 Full Changelog: reactiveui/refit@v16.1.0...v16.2.0
🙌 Contributions
💖 Thanks to all the contributors: @glennawatson
🤖 Automated services that contributed: renovate[bot]
16.1.0
🗞️ What's Changed
✨ Features
📝 Documentation
📌 Other
🔗 Full Changelog: reactiveui/refit@v16.0.0...v16.1.0
🙌 Contributions
💖 Thanks to all the contributors: @glennawatson
16.0.0
Summary
Refit 16.0.0 is a major version because the .NET 11 assemblies are built without runtime-async. The public API does not change.
Why runtime-async is off
await.UseMonoRuntime=truealso run on Mono.Other changes
src/examples/Documentationhas a project for every website page, plus larger samples for topics such as multipart uploads, serializers and compression. Each project builds withRefit.slnxand checks its results against local replies, so none needs a live service.[Options]sendsOPTIONS, that[Url]accepts an empty path or/, and that[PathPrefix]does not add a leading slash. The Refit.Testing docs state thatVerifyAllCalledignores reusable and fallback routes.SECURITY.mdlists the supported versions and explains how to report a vulnerability through GitHub private reporting.sourceRefto the shared release workflow. Renovate handles package updates per target framework, and the generator snapshot tests use a small in-repo helper instead of the Verify packages.🗞️ What's Changed
✨ Features
🧹 General Changes
📝 Documentation
📦 Dependencies
... (truncated)
15.2.0
🗞️ What's Changed
✨ Features
🐛 Fixes
📦 Dependencies
🔗 Full Changelog: reactiveui/refit@v15.1.0...v15.2.0
🙌 Contributions
💖 Thanks to all the contributors: @glennawatson
🤖 Automated services that contributed: renovate[bot]
15.1.0
🗞️ What's Changed
🐛 Fixes
⚡ Performance
🧹 General Changes
📦 Dependencies
🔗 Full Changelog: reactiveui/refit@v15.0.0...v15.1.0
🙌 Contributions
💖 Thanks to all the contributors: @glennawatson
🤖 Automated services that contributed: renovate[bot]
15.0.0
🗞️ What's Changed
✨ Features
🐛 Fixes
🧹 General Changes
📦 Dependencies
🔗 Full Changelog: reactiveui/refit@v14.0.1...v15.0.0
🙌 Contributions
🌱 New contributors since the last release: @Lukas, @radixy0
💖 Thanks to all the contributors: @glennawatson, @jgarciadelanoceda, @Lukas, @radixy0, @rmja
🤖 Automated services that contributed: @renovate[bot]
15.0.0-beta.1
🗞️ What's Changed
✨ Features
🐛 Fixes
🧹 General Changes
📦 Dependencies
🔗 Full Changelog: reactiveui/refit@v14.0.1...v15.0.0-beta.1
🙌 Contributions
🌱 New contributors since the last release: @Lukas, @radixy0
💖 Thanks to all the contributors: @glennawatson, @JavierGarcíadelaNocedaArgüelles, @jgarciadelanoceda, @Lukas, @radixy0
🤖 Automated services that contributed: @renovate[bot]
14.0.1
🗞️ What's Changed
🐛 Fixes
⚡ Performance
🔗 Full Changelog: reactiveui/refit@v14.0.0...v14.0.1
🙌 Contributions
🌱 New contributors since the last release: @JavierGarciadelaNocedaArguelles
💖 Thanks to all the contributors: @glennawatson, @JavierGarciadelaNocedaArguelles, @JavierGarcíadelaNocedaArgüelles, @jgarciadelanoceda
14.0.0
Refit 14.0.0
Refit 14 is a major bug-fix and request-generation release. It fixes a broad set of correctness issues while completing the move to source-generated request building. Most clients can now build requests without runtime reflection, improving trimming, Native AOT support, startup time, and allocations.
What end users need to know
Refit.Reflectionpackage. Fully generated clients should not add it.ValueTask. This affects the success-guard methods,DefaultApiExceptionFactory.CreateAsync, and severalRefitSettingsdelegates. Most callers can continue toawaitthem; code that stores aTaskmay need.AsTask().ToString().ApiExceptionstack traces.AuthorizationHeaderValueGetterno longer sends a blankAuthorizationheader.Major fixes
InternalsVisibleToassemblies, and null parameter values round-trip correctly.Highlights
[PathPrefix], per-method[Timeout], absolute URLs with[Url], optional route segments, indexed query collections, header validation, and returning a builtHttpRequestMessagewithout sending it.IAsyncEnumerable<T>, and transport exceptions can be customized withTransportExceptionFactory.See the V14 migration details and complete feature documentation.
🗞️ What's Changed
💥 Breaking Changes
✨ Features
ReflectionTests(#2195) @TimothyMakkisonAttributeProviderfield when not empty (#2271) @TimothyMakkisonAddConfiguredRequestOptions(#2214) @glennawatson @TimothyMakkison... (truncated)
14.0.0-beta.5
🗞️ What's Changed
💥 Breaking Changes
✨ Features
AttributeProviderfield when not empty (#2271) @TimothyMakkisonReflectionTests(#2195) @TimothyMakkisonAddConfiguredRequestOptions(#2214) @glennawatson @TimothyMakkison♻️ Refactoring
🐛 Fixes
⚡ Performance
AllAttributesCachereplaceLazywith laziliy initialised code (#2211) @TimothyMakkisonStringBuilderwithValueStringBuilder(#2270) @TimothyMakkisonallowUnmatchedParameterbefore callingIndexOf(#2252) @TimothyMakkisonMethodImplOptions.AggressiveInlining(#2260) @TimothyMakkisonStringBuilderwithValueStringBuilderinRoundTripEscapePath(#2253) @TimothyMakkison🧹 General Changes
... (truncated)
14.0.0-beta.4
🗞️ What's Changed
💥 Breaking Changes
✨ Features
ReflectionTests(#2195) @TimothyMakkisonAddConfiguredRequestOptions(#2214) @glennawatson @TimothyMakkison🐛 Fixes
⚡ Performance
AllAttributesCachereplaceLazywith laziliy initialised code (#2211) @TimothyMakkisonallowUnmatchedParameterbefore callingIndexOf(#2252) @TimothyMakkisonMethodImplOptions.AggressiveInlining(#2260) @TimothyMakkisonStringBuilderwithValueStringBuilderinRoundTripEscapePath(#2253) @TimothyMakkison🧹 General Changes
... (truncated)
14.0.0-beta.3
🗞️ What's Changed
💥 Breaking Changes
✨ Features
ReflectionTests(#2195) @TimothyMakkisonAddConfiguredRequestOptions(#2214) @glennawatson @TimothyMakkison🐛 Fixes
⚡ Performance
AllAttributesCachereplaceLazywith laziliy initialised code (#2211) @TimothyMakkisonallowUnmatchedParameterbefore callingIndexOf(#2252) @TimothyMakkisonMethodImplOptions.AggressiveInlining(#2260) @TimothyMakkisonStringBuilderwithValueStringBuilderinRoundTripEscapePath(#2253) @TimothyMakkison🧹 General Changes
✅ Tests
... (truncated)
14.0.0-beta.2
🗞️ What's Changed
💥 Breaking Changes
✨ Features
ReflectionTests(#2195) @TimothyMakkisonAddConfiguredRequestOptions(#2214) @glennawatson @TimothyMakkison🐛 Fixes
⚡ Performance
AllAttributesCachereplaceLazywith laziliy initialised code (#2211) @TimothyMakkison🧹 General Changes
✅ Tests
📝 Documentation
... (truncated)
14.0.0-beta.1
Summary
Refit 14 completes the shift to reflection-free, source-generated request building: interfaces whose methods all generate inline no longer touch the reflection request builder, so they are trim- and Native AOT-clean. The reflection request builder is now an opt-in package, and a few hot-path async members return
ValueTaskinstead ofTask. These are breaking changes - read the Breaking Changes below and the full v14 migration notes before upgrading.Alongside that, this release adds a batch of request-shaping features - the new
[Url],[PathPrefix],[Timeout], and[FormObject]attributes, optional{name?}URL segments, Server-Sent Events streaming, a per-type URL parameter formatter registry, optional/scoped authorization, building a request without sending it, and exposing call arguments to delegating handlers - plus bug fixes, a performance pass, and new analyzer diagnostics for invalid Refit interfaces.🗞️ What's Changed
💥 Breaking Changes
✨ Features
ReflectionTests(#2195) @TimothyMakkisonAddConfiguredRequestOptions(#2214) @glennawatson @TimothyMakkison🐛 Fixes
⚡ Performance
AllAttributesCachereplaceLazywith laziliy initialised code (#2211) @TimothyMakkison🧹 General Changes
✅ Tests
... (truncated)
13.1.0
🗞️ What's Changed
CS0436build error fromPrimitivesR3BridgeGeneratedAttribute(#2176, #2194). BumpsReactiveUI.Primitivesto 6.0.0, which moves the R3 bridge generator out of the runtime package. Projects usingInternalsVisibleTo(e.g. test projects) build again, and the<Analyzer Remove=... />workaround is no longer needed.AddRefitGeneratedClientand NativeAOT. Now coversenum,Guid,DateTime/DateTimeOffset/DateOnly/TimeOnly/TimeSpan, all integer widths (incl.Int128/UInt128/Half), and anyIFormattable(#2193).✨ Features
🧹 General Changes
🔗 Full Changelog: reactiveui/refit@v13.0.0...13.1.0
🙌 Contributions
🌱 New contributors since the last release: @calebkiage
💖 Thanks to all the contributors: @calebkiage, @glennawatson
13.0.0
🗞️ What's Changed
Refit 13 is a major release focused on security hardening and a brand-new testing package.
TypeNameHandlingby default (blocking type-confusion/deserialization attacks), and sensitive values (auth headers, tokens) are now redacted from exception and log output. This is the main reason for the major version bump: if you relied on permissive Newtonsoft type handling you may need to opt back in explicitly.Refit.Testingpackage (#2184) — a first-party way to stub and verify Refit clients in tests without spinning up a realHttpClient. Supply canned responses for interface calls and assert which requests your code made, instead of hand-rollingHttpMessageHandlerfakes.✨ Features
🧹 General Changes
📝 Documentation
📌 Other
🔗 Full Changelog: reactiveui/refit@v12.1.0...v13.0.0
🙌 Contributions
💖 Thanks to all the contributors: @ChrisPulman, @glennawatson
12.1.0
🗞️ What's Changed
✨ Features
🐛 Fixes
📝 Documentation
📦 Dependencies
🔗 Full Changelog: reactiveui/refit@v12.0.0...12.1.0
🙌 Contributions
💖 Thanks to all the contributors: @ChrisPulman, @glennawatson, @HulinCedric
🤖 Automated services that contributed: @renovate[bot]
12.0.0
Overview
Refit 12.0 is a large release centred on a near-complete rewrite of how requests are built. The source generator now constructs HTTP requests inline at compile time instead of going through the reflection pipeline, making generated clients faster and friendly to trimming and Native AOT. On top of that foundation it adds response streaming, JSON Lines, naming-convention presets, and a batch of long-standing fixes. Two small, well-scoped breaking changes are called out below.
This release also removed netstandard2.0 and netstandard2.1 support. You should to use net462/net8 as your base lines, and use multiple targets if you need to target both.
Highlights
IAsyncEnumerable<T>response streaming. Stream large responses, auto-detecting a JSON array vs JSON Lines from the content type, generated inline on the hot path.[Body(BodySerializationMethod.JsonLines)]plus a streamingJsonLinesContent(application/x-ndjson), wired through both the reflection and source-gen paths.RefitSettings.CamelCase()/SnakeCase()/KebabCase()configure query keys, form-url-encoded keys, and JSON body property names consistently, plus snake/kebab URL key formatters. Opt-in, so existing behaviour is unchanged.EnsureSuccessStatusCodeAsync()/EnsureSuccessfulAsync()are now available directly onIApiResponse<T>; a newIsSuccessfulWithContent(andHasContent) gives a single, mock-safe success-with-content check; nullable annotations onIApiResponse<T>were corrected to be sound.RefitSettings.UrlResolution, andRefitSettings.AllowUnmatchedRouteParametersto leave an unmatched{token}for aDelegatingHandlerto rewrite.SystemTextJsonContentSerializer.GetFastPathJsonSerializerOptions()) and buffered/streamed request-body modes that run through it.[Query(SerializeNull = true)]to send a null property askey=instead of omitting it, and a publicUniqueName.ForType<T>()to resolve the generatedIHttpClientFactoryclient name.Guid/DateTime/DateTimeOffset/TimeSpan(andDateOnly/TimeOnly) are sent as plain text (#2016); property-level[Query(delimiter, prefix)]is honoured when flattening complex objects (#1334);[Query(Format = "")]serializes a complex value viaToString()(#1281); andIApiResponse<T>no longer shadows base members (#1933).Breaking changes and migration
IApiResponse<T>no longer shadows base members. Thenew-shadowedError,ContentHeaders,IsSuccessStatusCode, andIsSuccessfulmembers are removed from the generic interface. Source that reads these still compiles (they bind to the inherited base members), but code compiled against v8-v11 that bound to the generic-interface slots needs a recompile. If you relied onIsSuccessfulto narrowContentto non-null on anIApiResponse<T>-typed value, switch toHasContent/IsSuccessfulWithContent.System.Text.Jsonserializer now reads numbers from JSON strings (NumberHandling = AllowReadingFromString). Opt back out withNumberHandling = JsonNumberHandling.Stricton yourJsonSerializerOptions.🗞️ What's Changed
💥 Breaking Changes
✨ Features
♻️ Refactoring
⚡ Performance
🧹 General Changes
🔗 Full Changelog: reactiveui/refit@v11.2.0...v12.0.0
... (truncated)
11.2.0
🗞️ What's Changed
🐛 Fixes
🔗 Full Changelog: reactiveui/refit@v11.1.0...v11.2.0
🙌 Contributions
💖 Thanks to all the contributors: @glennawatson
11.1.0
🗞️ What's Changed
🐛 Fixes
🧹 General Changes
📝 Documentation
Description has been truncated
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badg...
Description has been truncated