fix(deps): update bun minor and patch dependencies - #1102
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
renovate
Bot
force-pushed
the
renovate/bun-minor-and-patch-dependencies
branch
27 times, most recently
from
August 23, 2026 05:57
c768856 to
b2bc832
Compare
renovate
Bot
force-pushed
the
renovate/bun-minor-and-patch-dependencies
branch
2 times, most recently
from
August 23, 2026 12:15
4dd67dd to
be17bf8
Compare
renovate
Bot
force-pushed
the
renovate/bun-minor-and-patch-dependencies
branch
28 times, most recently
from
August 30, 2026 14:34
a557240 to
4de677c
Compare
renovate
Bot
force-pushed
the
renovate/bun-minor-and-patch-dependencies
branch
from
August 30, 2026 18:28
4de677c to
d24850a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
1.6.27→1.7.2^1.6.27→^1.7.2^1.6.27→^1.7.20.4.2→0.5.0^1.52.0→^1.54.1^10.5.0→^10.6.0^5.7.1→^5.9.1^8.5.2→^8.7.0^0.11.13→^0.11.16^0.8.3→^0.8.5^0.10.10→^0.10.12^5.101.4→^5.102.8^5.101.4→^5.102.8^1.170.27→^1.170.32^1.167.1→^1.167.2^1.168.44→^1.168.49^9.1.2→^9.2.3^1.168.30→^1.168.35^16.3.2→^16.3.3^14.6.4→^14.6.6^1.3.14→^1.4.0^26.2.0→^26.4.0^19.2.4→^19.2.5^6.0.5→^6.1.0^1.6.27→^1.7.2^5.8.1→^5.10.0^1.0.0-rc.4-ca0f029→^1.0.0-rc.5-ab785fc1.0.0-rc.4-5d5b77c→1.0.0-rc.5-ab785fc^43.4.0→^43.4.1^1.50.0→^1.51.0^16.14.3→^16.15.4^15.2.3→^15.4.0^16.14.3→^16.15.4^20.11.2→^20.11.12^4.13.1→^4.13.5^1.4.2→^1.5.0^1.31.0→^1.34.00.63.0→0.65.01.78.0→1.80.0^7.85.0→^7.86.0^4.17.0→^4.19.0^8.2.1→^8.2.2^0.2.9→^0.3.0^4.1.10→^4.1.11^4.122.0→^4.127.0Release Notes
better-auth/better-auth (@better-auth/api-key)
v1.7.2Compare Source
v1.7.1v1.7.0v1.6.30Compare Source
Patch Changes
07c1718]:v1.6.29Compare Source
Patch Changes
e6e1b4e]:v1.6.28Compare Source
Patch Changes
773de54,2ad2928]:better-auth/better-auth (@better-auth/passkey)
v1.7.2Compare Source
v1.7.1v1.7.0Minor Changes
2f3a714Thanks @GautamBytes! - Add the optionalcreateSessionsetting to passkey registration. When enabled, successful registration signs the user in, sets the session cookie, and returns the session and user with the registered passkey.v1.6.30Compare Source
Patch Changes
07c1718]:v1.6.29Compare Source
Patch Changes
e6e1b4e]:v1.6.28Compare Source
Patch Changes
773de54,2ad2928]:better-auth/better-auth (@better-auth/sso)
v1.7.2Compare Source
Patch Changes
fced1a5Thanks @bytaesu! - Allow relative callback and redirect URLs to use standard path, query, and fragment syntax while preserving open-redirect protections.v1.7.1v1.7.0Minor Changes
#8805
602ec40Thanks @OscarCornish! - Rolling certificate rotationSAML signing certificates now accept an array of PEM strings, so administrators can publish a new IdP cert alongside the old one and complete the rotation without forcing every active session to re-authenticate. Responses signed by any listed cert are accepted.
Both
samlConfig.certandsamlConfig.idpMetadata.certaccept either a single PEM string or an array. When both are set,idpMetadata.certwins.Breaking: response shape
The management endpoints (
getSSOProvider,listSSOProviders,updateSSOProvider) now returnsamlConfig.certificateas an array of parsed certificates in every case, even when a single cert is configured. The field is absent only when certs live insideidpMetadata.metadata. Update consumers to read an array; no moreArray.isArraybranching.Validation
Registration now rejects SAML configs that supply no signing-cert source. samlify needs either an
idpMetadata.metadataXML document (which embeds the certs) or an explicit PEM undercertoridpMetadata.cert. Configs missing both fail withCERT_SOURCE_MISSING.Fix
SAML Single Logout could fail to decrypt encrypted
LogoutResponsepayloads because the IdP entity was constructed withoutprivateKey,encPrivateKey, orencPrivateKeyPasson that code path. All three are now applied on every IdP construction.#10403
dbd302eThanks @gustavovalverde! - Scope account identity by trusted issuer instead of provider configuration. Accounts now use the unique(issuer, accountId)key, so aliases for one OpenID Connect issuer deduplicate one external identity while equal subjects from different issuers remain separate. This identity deduplication does not introduce independent grant or provider lifecycle records for aliases.This release requires
Account.issuerbut preservesAccount.accountIdas the provider-assigned account identifier. Account-specific APIs select the localAccount.idthrough theaccountIdrequest property; token and provider-profile APIs can instead select the signed account cookie withuseAccountCookie: true. Credential accounts uselocal:credentialand the linked user's stableidas their provider identity.OAuth provider identity now comes from raw verified profiles. OpenID Connect discovery uses
sub, plain OAuth usesid, and providers can declareaccountSubjectfor another immutable field; Better Auth no longer switches betweensubandidat runtime.getUserInfo().userno longer carries provider identity, andmapProfileToUsercannot returnid. Read the selected identity fromaccountInfo.account.accountIdinstead ofaccountInfo.user.id. The genericmicrosoftEntraIdhelper now requires a concrete tenant GUID; use the built-in Microsoft provider for multi-tenant authorities.SSO account subjects are now protocol-defined. OIDC uses the verified
subclaim, and SAML uses the signedNameID;mapping.idis removed from both configurations. A manual SAML configuration without metadata XML must setidpMetadata.entityID, becausesamlConfig.issueridentifies the service provider and no longer acts as the IdP identity.Apply the reviewed account-identity backfill in the Better Auth 1.7 upgrade guide before deploying. The generated schema migration cannot assign trusted issuers or resolve existing identity collisions automatically.
#9305
e7eb45bThanks @gustavovalverde! - feat(oauth): per-requestadditionalParamsandloginHintparity acrosssignIn.social,linkSocial, andsignIn.ssoUnified escape hatch for customizing the provider authorization URL on a per-request basis. Previously, dynamic parameters like Google's
access_type=offline/prompt=consent, Cognito'sidentity_provider=Google, or Microsoft'sdomain_hintcould only be set as static server configuration.New capabilities
signIn.social,linkSocial, andsignIn.ssoacceptadditionalParams: Record<string, string>. Values are appended to the authorization URL as query parameters.linkSocialalso acceptsloginHint, matching the surface ofsignIn.socialandsignIn.sso.OAuthProvider.createAuthorizationURLgainsadditionalParamsin its input contract; every built-in provider forwards it to the shared helper.additionalParamswith the config-levelauthorizationUrlParams; call-time wins on key collision.identityProvider?: stringconfig option that maps to theidentity_providerquery parameter, avoiding magic strings.Security
createAuthorizationURLhelper silently drops any caller-supplied key inRESERVED_AUTHORIZATION_PARAMS(state,client_id,redirect_uri,response_type,code_challenge,code_challenge_method,nonce,scope). The request-body Zod schema rejects the same keys with 400, so misuse is visible at the edge rather than silently overriding security-critical parameters.nonceis reserved so a caller cannot replace the OIDC nonce Better Auth generates when binding a discovery provider'sid_tokento the authorization request.wechat→appid,tiktok→client_key) additionally filter those keys so a caller cannot swap the configured OAuth app.atlassian→audience,notion→owner) are merged last so caller-suppliedadditionalParamscannot override them. Configured defaults that represent operator intent (e.g. Googleinclude_granted_scopes, CognitoidentityProvider) remain caller-overridable.signIn.ssorejectsadditionalParamswith 400 when the resolved provider is SAML; the SAML AuthnRequest is signed and cannot carry caller-supplied query parameters, so silently dropping them would mislead integrators.OpenAPI
ZodRecordhandling to the OpenAPI generator soz.record()fields emittype: objectwith typedadditionalProperties. Incidentally fixes a long-standing bug whereadditionalDatawas rendered astype: string.Refactors
discord,roblox,zoom, andslackproviders now delegate to the sharedcreateAuthorizationURLhelper and inherit its RFC behavior and reserved-key guard.tiktokandwechatkeep their manual URL construction (non-standard OAuth2 parameter names and URL fragment requirements) but threadadditionalParamswith the same reserved-key filter.Closes #2351.
Closes #5441.
Closes #5592.
Closes #5604.
Supersedes #4992 and #5443.
#8836
93d3871Thanks @gustavovalverde! - Add client authentication configuration for token endpoint requests across the stack, includingprivate_key_jwt(RFC 7523).Generic OAuth providers now accept
tokenEndpointAuthfor token endpoint client authentication. UsetokenEndpointAuth: { method: "private_key_jwt", getClientAssertion }for JWT client assertions,{ method: "none" }for public clients, and{ method: "client_secret_basic" }or{ method: "client_secret_post" }withclientSecretfor explicit secret-based client authentication. The existingauthentication: "basic" | "post"option remains available for secret-based token requests.Use
createPrivateKeyJwtClientAssertionGetter()to sign RFC 7523 assertions from a private key. The assertion getter receives{ clientId, tokenEndpoint, grantType }, so integrations do not duplicate client ID or token endpoint values inside assertion helpers. Core OAuth2 now exports private-key JWT-specific helpers and types:signPrivateKeyJwtClientAssertion,createPrivateKeyJwtClientAssertionGetter,PrivateKeyJwtSigningAlgorithm, andPRIVATE_KEY_JWT_SIGNING_ALGORITHMS.Token endpoint client authentication parameters are derived from
clientId,clientSecret, andtokenEndpointAuth. Configured token endpoint authentication requiresclientId; secret-based token endpoint authentication also requiresclientSecret. Custom token parameters are for provider-specific fields and do not replace the configured client authentication values.refreshAccessToken()now forwardsresourcevalues to refresh-token requests, so RFC 8707 resource indicators work through both the high-level refresh helper andrefreshAccessTokenRequest().The synchronous OAuth2 request builders
createAuthorizationCodeRequest,createRefreshAccessTokenRequest, andcreateClientCredentialsTokenRequesthave been removed. Use the asyncauthorizationCodeRequest,refreshAccessTokenRequest, andclientCredentialsTokenRequesthelpers instead.Servers verify JWT client assertions signed with asymmetric keys, and clients can use the same token endpoint authentication contract for authorization code, refresh, and client credentials token requests.
#9055
b790144Thanks @gustavovalverde! - IdP-initiated SSO now defaults to disabled; setsaml.allowIdpInitiated: trueto opt in. SP-initiated flows now validateInResponseTocorrectly, and SAML Single Logout stores and compares the actualSessionIndexstring.#10473
ed61b47Thanks @gustavovalverde! - Add transactional OIDC user resolution so applications can link verified issuer and subject pairs to exact existing users while preserving or updating the local profile.#9445
48070adThanks @GautamBytes! - Addschema.ssoProvider.additionalFieldssupport for storing and returning custom SSO provider fields.#9117
b70f025Thanks @gustavovalverde! - ### Breaking: SAML configuration changescallbackUrlno longer configures the ACS URL.The default ACS URL is derived from
baseURLandproviderId. UsecallbackUrlas the provider-level post-auth redirect, or pass
callbackURLtosignIn.sso()for an SP-initiated request:
/sso/saml2/callback/:providerIdendpoint removed.Update your IdP's ACS URL to
/sso/saml2/sp/acs/:providerId. This endpoint handles both GET and POST requests.spMetadatais now optional.You no longer need to pass
spMetadata: {}when registering a provider. SP metadata is auto-generated from your configuration.Removed unused fields from
SAMLConfig:decryptionPvk,additionalParams,idpMetadata.entityURL,idpMetadata.redirectURL. These were stored but never read. Remove them from your configuration if present.Bug fixes
Fix SLO SessionIndex matching: LogoutRequests with a SessionIndex were silently failing to delete the correct session.
Audience validation now defaults to the SP entity ID when
audienceis not configured, per SAML Core section 2.5.1.Restore
AllowCreatein AuthnRequests, required by IdPs that use JIT provisioning.SP metadata endpoint now reflects actual SP capabilities (encryption, signing, SLO).
#10621
59c4c83Thanks @gustavovalverde! - ExtendresolveUserto SAML sign-ins. The callback now receives a discriminatedprotocolfield: OIDC input keepsverifiedIdTokenClaimsandproviderClaims, while SAML input carries the verified assertion'sproviderAttributes. Both variants include aproviderReference, an opaque reference to the accepted provider configuration that detects provider replacement or configuration changes mid-flow.Add
guardProviderMutation, a callback that authorizes updates and deletions of a persisted SSO provider before Better Auth applies them.Patch Changes
#9930
0cbaf81Thanks @gustavovalverde! - Anonymous account linking now works after social and generic OAuth sign-in in Expo and other in-app browsers, where the OAuth callback returns without the session cookie.onLinkAccountfires and the anonymous user is migrated; before, it was silently skipped.Plugins can now carry server-trusted data across an OAuth redirect with the new
addOAuthServerContextAPI, read back on the callback viagetOAuthState().serverContext. UnlikeadditionalData, it cannot be set from the request body, so it is the right place for values the server must trust.For
@better-auth/oauth-provider, the post-login authorization query now travels through that server-only channel, so it can no longer be injected throughadditionalData.#9301
03e6c94Thanks @gustavovalverde! - AddallowIdpInitiatedtoGenericOAuthConfigand SSOOIDCConfigto support providers that initiate OAuth without astateparameter (e.g. Clever). When enabled, stateless callbacks restart the OAuth flow server-side with fresh state and PKCE, preserving CSRF protection. Also hardensparseStateagainst undefined request bodies on GET callbacks.#9657
1e5b808Thanks @gustavovalverde! - Hardenprivate_key_jwtand token endpoint client authentication, and add the helpers that make the fix structural.@better-auth/core/oauth2now exposesencodeBasicCredentialsanddecodeBasicCredentials, a round-trip-tested pair that follows RFC 6749 §2.3.1 (application/x-www-form-urlencodedeach value, split on the first:only). The decoder accepts the scheme case-insensitively and tolerates one or more spaces before the credentials per RFC 7235 §2.1.client_secret_basicon the client side and the Better Auth OAuth provider on the server side both go through these helpers, so credentials containing reserved characters round-trip cleanly across the stack and headers likebasic xxxorBasic xxxare accepted.createPrivateKeyJwtClientAssertionGettervalidates options eagerly. Unsupported algorithms (HS256,none), a JWK with no key material, and disagreement between an explicitalgorithmand the JWK-embeddedalgall throw at construction rather than on the first token request.signPrivateKeyJwtClientAssertionenforces the same checks for direct callers. Breaking: configurations that paired an unsupported JWKalgwith a different explicitalgorithmused to silently sign with the explicit option; they now fail at construction.Breaking:
@better-auth/oauth-provideraccepts clientjwksmetadata only as an RFC 7517 JWK Set object with a non-emptykeysarray. Replacejwks: [key]withjwks: { keys: [key] }in DCR payloads, administrative and user client creation, Client ID Metadata Documents, test fixtures, and generated client code. Remotely fetchedjwks_uriresponses must use the same object shape. EC keys must use P-256, P-384, or P-521; OKP keys must useEd25519. When a key declaresalg, it must be a supportedprivate_key_jwtalgorithm that matches the key type and curve; omitalgwhen the client chooses the algorithm in its assertion header. OAuth client rows previously written throughoauthToSchemaare already stored as JWK Set objects, so this is a request, configuration, and type migration rather than another database rewrite; audit rows written outside Better Auth separately.The SSO
private_key_jwtflow redirects witherror_description=no_private_key_availablewhen aresolvePrivateKeycallback returns noprivateKeyJwkorprivateKeyPem. The redirect path previously short-circuited only when the resolver was absent entirely; an empty resolver return fell through into an internal signing error.better-auth/testaddsgetHttpTestInstance, a counterpart togetTestInstancethat binds a real HTTP listener on an OS-assigned port and constructs the auth instance against the discovered URL. It removes the temp-server-then-rebind race that test files have been individually copy-pasting.#9864
41cca60Thanks @GautamBytes! - Add auser.validateUserInfoprovisioning gate that lets applications reject an identity before a user is created or a new account is linked. It runs once at the creation step for every method that provisions a user (OAuth, SSO/SAML, email/password, magic link, email OTP, anonymous, SIWE, phone number, admin-created users, and SCIM), including stateless setups with no persistent database.It also re-runs when an existing OAuth or SSO user signs in again (
source.actionis"sign-in"), where it receives the fresh provider email and profile so a domain or org policy can reject a user whose provider identity moved out of bounds. Non-provider returning sign-ins are not re-validated.The callback receives the mapped
userplus asourcedescribing theaction(create-user,link-account, orsign-in), themethod, and provider metadata:source.oauthfor OAuth providers andsource.ssofor OIDC/SAML SSO providers. Return{ error, errorDescription }to reject: browser flows redirect to the error URL and programmatic flows return a403.#10072
4475f4aThanks @gustavovalverde! - OIDC SSO now works on Cloudflare Workers when discovery is enabled. Redirecting OIDC discovery, token, userinfo, and JWKS endpoints are rejected with a clear configuration error; configure the final endpoint URL instead.#10621
59c4c83Thanks @gustavovalverde! - Verify SAML assertion signatures directly instead of trusting an already-parsed response, and enforce a signing policy and size limit on SP metadata the same way IdP metadata is already enforced.wantAssertionsSignednow controls whether the SP requires signed assertions instead of signed response messages, matching how IdPs sign SAML responses in practice.A SAML callback that supplies RelayState now validates it unconditionally; a malformed or expired value is rejected even when
enableInResponseToValidationis disabled. Service Provider metadata with an ACS location containing a URL fragment is rejected.Redact provider claims and resolver-thrown errors from log output on SAML and OIDC resolution failures.
#10592
26b1949Thanks @gustavovalverde! - Allow SSO provider registration to reuse a SCIM connection ID. SCIM connections no longer participate in the authentication provider namespace.#9121
9603043Thanks @gustavovalverde! - ### Security: upgrade samlify to 2.12.0Upgrades the SAML XML processing library from 2.10.2 to 2.12.0:
node-forge,pako,uuid, andcamelcasein favor of Node built-insPEM keys and certificates with leading whitespace are now normalized automatically before being passed to samlify. This prevents
DECODER routines::unsupportederrors when keys are copied from indented config files or environment variables.Requires Node 20+.
v1.6.30Compare Source
Patch Changes
07c1718]:v1.6.29Compare Source
Patch Changes
e6e1b4e]:v1.6.28Compare Source
Patch Changes
773de54,2ad2928]:better-auth/utils (@better-auth/utils)
v0.5.0Compare Source
🐞 Bug Fixes
View changes on GitHub
v0.4.3Compare Source
🐞 Bug Fixes
View changes on GitHub
cloudflare/workers-sdk (@cloudflare/vite-plugin)
v1.54.1Compare Source
Patch Changes
412c79e,92874f6,fe265f8]:v1.54.0Compare Source
Minor Changes
#15134
c66d2d5Thanks @gpanders! - Enable FUSE-capable local container developmentMiniflare now automatically passes the Docker privileges needed for FUSE to local Durable Object containers when using local rootless Docker on Linux with
/dev/fuseavailable, or a local Docker engine on macOS or through WSL where Linux containers run in a VM. This applies to Wrangler, the Cloudflare Vite plugin, and direct Miniflare use.#15326
9fcb1c9Thanks @jamesopstad! - Record the selected mode in the Build Output Specification top-levelconfig.jsonThe mode a build was produced in is now written to
.cloudflare/output/v0/config.jsonas amodefield, alongside the account and compliance settings.Patch Changes
aa54b49,4a67a28,2d78137,04e8564,d1cc3af,693ca29,693ca29,693ca29,daefb3c,37ed753,f76b68e,ad89456,c809851,c66d2d5,693ca29,74de3ab,0cb8690,9fcb1c9,22182da,a4c3458,433fa98,d589d30,dd5148d,82d11fc]:v1.53.1Compare Source
Patch Changes
59872c4,c68f9cb,99a1f49,5ae9d5b,4b52975,ce9b151, [ef73a28](https://redirect.github.com/cloudflare/workers-sdk/commit