/** * A list of errors that can be thrown by OpenAuth. * * You can use these errors to check the type of error and handle it. For example. * * ```ts * import { InvalidAuthorizationCodeError } from "@openauthjs/openauth/error" * * if (err instanceof InvalidAuthorizationCodeError) { * // handle invalid code error * } * ``` * * @packageDocumentation */ /** * The OAuth server returned an error. */ export class OauthError extends Error { constructor( public error: | 'invalid_request' | 'invalid_grant' | 'unauthorized_client' | 'access_denied' | 'unsupported_grant_type' | 'server_error' | 'temporarily_unavailable', public description: string ) { super(error + ' - ' + description); } } /** * The `provider` needs to be passed in. */ export class MissingProviderError extends OauthError { constructor() { super( 'invalid_request', 'Must specify `provider` query parameter if `select` callback on issuer is not specified' ); } } /** * The given parameter is missing. */ export class MissingParameterError extends OauthError { constructor(public parameter: string) { super('invalid_request', 'Missing parameter: ' + parameter); } } /** * The given client is not authorized to use the redirect URI that was passed in. */ export class UnauthorizedClientError extends OauthError { constructor( public clientID: string, redirectURI: string ) { super( 'unauthorized_client', `Client ${clientID} is not authorized to use this redirect_uri: ${redirectURI}` ); } } /** * The browser was in an unknown state. * * This can happen when certain cookies have expired. Or the browser was switched in the middle * of the authentication flow. */ export class UnknownStateError extends Error { constructor() { super( 'The browser was in an unknown state. This could be because certain cookies expired or the browser was switched in the middle of an authentication flow.' ); } } /** * The given subject is invalid. */ export class InvalidSubjectError extends Error { constructor() { super('Invalid subject'); } } /** * The given refresh token is invalid. */ export class InvalidRefreshTokenError extends Error { constructor() { super('Invalid refresh token'); } } /** * The given access token is invalid. */ export class InvalidAccessTokenError extends Error { constructor() { super('Invalid access token'); } } /** * The given authorization code is invalid. */ export class InvalidAuthorizationCodeError extends Error { constructor() { super('Invalid authorization code'); } }