diff --git a/src/utils.tsx b/src/utils.tsx index d26a256c..94a2536e 100644 --- a/src/utils.tsx +++ b/src/utils.tsx @@ -4,6 +4,15 @@ const CODE_RE = /[?&]code=[^&]+/; const STATE_RE = /[?&]state=[^&]+/; const ERROR_RE = /[?&]error=[^&]+/; +interface WithError { + error: string; +} + +interface WithErrorAndDescription { + error: string; + error_description: string; +} + export const hasAuthParams = (searchParams = window.location.search): boolean => (CODE_RE.test(searchParams) || ERROR_RE.test(searchParams)) && STATE_RE.test(searchParams); @@ -19,15 +28,17 @@ const normalizeErrorFn = error !== null && typeof error === 'object' && 'error' in error && - typeof error.error === 'string' + typeof (error as WithError).error === 'string' ) { if ( 'error_description' in error && - typeof error.error_description === 'string' + typeof (error as WithErrorAndDescription).error_description === 'string' ) { - return new OAuthError(error.error, error.error_description); + const e = error as WithErrorAndDescription; + return new OAuthError(e.error, e.error_description); } - return new OAuthError(error.error); + const e = error as WithError; + return new OAuthError(e.error); } return new Error(fallbackMessage); };