@altostra/core
Version:
Core library for shared types and logic
49 lines (48 loc) • 1.57 kB
TypeScript
import type { Result } from "../common/Result";
export declare type JwtValidatorConfig = JwtValidatorConfigMultipleKeys | JwtValidatorConfigSingleKey;
export interface JwtValidatorConfigBase {
audience: string[];
ignoreExpiration?: boolean;
skipSignatureVerification?: boolean;
}
export interface JwtValidatorConfigSingleKey extends JwtValidatorConfigBase {
publicKey: string;
}
export interface JwtValidatorConfigMultipleKeys extends JwtValidatorConfigBase {
publicKeys: string[];
}
export declare enum ErrorCodes {
MissingToken = 400,
InvalidToken = 401,
MalformedPayload = 500,
MissingUserPayload = 501,
WrongPayloadType = 502
}
export interface ValidationError {
code: ErrorCodes;
message?: string;
data?: any;
inner?: Error;
}
export interface JwtValidationResult {
user: string;
expires: Date;
claims: JwtClaims;
}
export interface JwtClaims {
sub: string;
iss: string;
iat: number;
exp: number;
scope?: string;
altostra?: Record<string, unknown>;
permissions?: string[];
}
export declare const AltostraClaimNamespace = "https://altostra.com";
export declare class JwtValidator {
#private;
constructor(config: JwtValidatorConfig);
validate(token?: string): Result<JwtValidationResult, ValidationError>;
static decodeUnverified(cleanToken: string, config: DecodeUnverifiedConfig): Result<JwtValidationResult, ValidationError>;
}
export declare type DecodeUnverifiedConfig = Pick<JwtValidatorConfigBase, 'ignoreExpiration' | 'skipSignatureVerification'>;