diff --git a/packages/nextlove/src/types/index.ts b/packages/nextlove/src/types/index.ts index 53c681b6f..e140e4b2a 100644 --- a/packages/nextlove/src/types/index.ts +++ b/packages/nextlove/src/types/index.ts @@ -40,6 +40,8 @@ export interface RouteSpec< * add x-fern-sdk-return-value to the openapi spec, useful when you want to return only a subset of the response */ sdkReturnValue?: string | string[] + + onMultipleAuthMiddlewareFailures?: (errors: unknown[]) => void } export type MiddlewareChainOutput< diff --git a/packages/nextlove/src/with-route-spec/index.ts b/packages/nextlove/src/with-route-spec/index.ts index fe907667d..0f701c066 100644 --- a/packages/nextlove/src/with-route-spec/index.ts +++ b/packages/nextlove/src/with-route-spec/index.ts @@ -101,6 +101,10 @@ export const createWithRouteSpec: CreateWithRouteSpecFunction = (( let errors: unknown[] = [] let didAuthMiddlewareThrow = true + const handleMultipleAuthMiddlewareFailures = + spec.onMultipleAuthMiddlewareFailures ?? + onMultipleAuthMiddlewareFailures + for (const middleware of authMiddlewares) { try { return await middleware((...args) => { @@ -118,8 +122,8 @@ export const createWithRouteSpec: CreateWithRouteSpecFunction = (( } } - if (onMultipleAuthMiddlewareFailures && didAuthMiddlewareThrow) { - onMultipleAuthMiddlewareFailures(errors) + if (handleMultipleAuthMiddlewareFailures && didAuthMiddlewareThrow) { + handleMultipleAuthMiddlewareFailures(errors) } throw errors[errors.length - 1]