@lucasroll62/nuxt3-auth
Version:
An alternative module to @nuxtjs/auth
87 lines (86 loc) • 2.97 kB
TypeScript
import type { HTTPRequest, HTTPResponse } from '.';
import type { Auth } from '../runtime/core';
import type { Token, IdToken, RefreshToken, RefreshController, RequestHandler } from '../runtime/inc';
import type { PartialExcept } from './utils';
export interface UserOptions {
property: string | false;
autoFetch: boolean;
}
export interface CookieUserOptions {
property: {
client: string | false;
server: string | false;
};
autoFetch: boolean;
}
export interface EndpointsOption {
[endpoint: string]: string | HTTPRequest | false;
}
export interface SchemeOptions {
name?: string;
}
export type SchemePartialOptions<Options extends SchemeOptions> = PartialExcept<Options, keyof SchemeOptions>;
export interface SchemeCheck {
valid: boolean;
tokenExpired?: boolean;
refreshTokenExpired?: boolean;
idTokenExpired?: boolean;
isRefreshable?: boolean;
}
export interface Scheme<OptionsT extends SchemeOptions = SchemeOptions> {
options: OptionsT;
name?: string;
$auth: Auth;
mounted?(...args: any[]): Promise<HTTPResponse | void>;
check?(checkStatus: boolean): SchemeCheck;
login(...args: any[]): Promise<HTTPResponse | void>;
fetchUser(endpoint?: HTTPRequest): Promise<HTTPResponse | void>;
setUserToken?(token: string | boolean, refreshToken?: string | boolean): Promise<HTTPResponse | void>;
logout?(endpoint?: HTTPRequest): Promise<void> | void;
reset?(options?: {
resetInterceptor: boolean;
}): void;
}
export interface TokenOptions {
property: string;
type: string | false;
name: string;
maxAge: number | false;
global: boolean;
required: boolean;
prefix: string;
expirationPrefix: string;
}
export interface TokenableSchemeOptions extends SchemeOptions {
token?: TokenOptions;
endpoints: EndpointsOption;
}
export interface TokenableScheme<OptionsT extends TokenableSchemeOptions = TokenableSchemeOptions> extends Scheme<OptionsT> {
token?: Token;
requestHandler: RequestHandler;
}
export interface IdTokenableSchemeOptions extends SchemeOptions {
idToken: TokenOptions;
}
export interface IdTokenableScheme<OptionsT extends IdTokenableSchemeOptions = IdTokenableSchemeOptions> extends Scheme<OptionsT> {
idToken: IdToken;
requestHandler: RequestHandler;
}
export interface RefreshTokenOptions {
property: string | false;
type: string | false;
data: string | false;
maxAge: number | false;
required: boolean;
tokenRequired: boolean;
prefix: string;
expirationPrefix: string;
}
export interface RefreshableSchemeOptions extends TokenableSchemeOptions {
refreshToken: RefreshTokenOptions;
}
export interface RefreshableScheme<OptionsT extends RefreshableSchemeOptions = RefreshableSchemeOptions> extends TokenableScheme<OptionsT> {
refreshToken: RefreshToken;
refreshController: RefreshController;
refreshTokens(): Promise<HTTPResponse | void>;
}