@nats-io/jwt
Version:
NATS jwt.js
50 lines (49 loc) • 2.4 kB
TypeScript
import type { Account, Activation, AuthorizationResponse, ClaimsData, Generic, Operator, SigningKey, User, UserPermissionsLimits, ValidDates } from "./types";
import type { Key } from "./keys";
import type { KeyPair } from "./nkeys";
/**
* Enum capturing the JWT algorithm
*/
export declare enum Algorithms {
v1 = "ed25519",
v2 = "ed25519-nkey"
}
export interface UserEncodingOptions extends EncodingOptions {
scopedUser?: boolean;
}
export interface EncodingOptions extends ValidDates {
aud?: string;
algorithm: Algorithms;
signer?: Key;
}
/**
* Generates an operator JWT
* @param name - the operator name
* @param okp - a key representing the operator
* @param operator - operator options
* @param opts - encoding options
*/
export declare function encodeOperator(name: string, okp: Key, operator?: Partial<Operator>, opts?: Partial<EncodingOptions>): Promise<string>;
/**
* Generates an account JWT with the specified name having the identity of the
* providedd Key.
* @param name
* @param akp
* @param account
* @param opts
*/
export declare function encodeAccount(name: string, akp: Key, account?: Partial<Account>, opts?: Partial<EncodingOptions>): Promise<string>;
export declare function encodeUser(name: string, ukp: Key, issuer: Key, user?: Partial<User>, opts?: Partial<UserEncodingOptions>): Promise<string>;
export declare function encodeActivation(name: string, subject: Key, issuer: Key, kind: "service" | "stream", data?: Partial<Activation>, opts?: Partial<EncodingOptions>): Promise<string>;
export declare function encodeGeneric(name: string, akp: Key, kind: string, data?: Partial<Generic>, opts?: Partial<EncodingOptions>): Promise<string>;
export declare function encodeAuthorizationResponse(user: Key, server: Key, issuer: Key, data: Partial<AuthorizationResponse>, opts: Partial<EncodingOptions>): Promise<string>;
export declare function decode<T = unknown>(jwt: string): ClaimsData<T>;
export declare function encode(version: Algorithms, claim: ClaimsData<unknown>, kp: KeyPair): Promise<string>;
export declare function newScopedSigner(signer: Key, role: string, limits: Partial<UserPermissionsLimits>): SigningKey;
export declare function fmtCreds(token: string, kp: KeyPair): Uint8Array;
export declare function parseCreds(creds: Uint8Array): Promise<{
key: string;
jwt: string;
uc: ClaimsData<User>;
aid: string;
}>;