@atproto/oauth-client-browser
Version: 
ATPROTO OAuth client for the browser (relies on WebCrypto & Indexed DB)
58 lines • 2.48 kB
TypeScript
import { DidDocument } from '@atproto/did';
import { InternalStateData, Session, TokenSet } from '@atproto/oauth-client';
import { OAuthAuthorizationServerMetadata, OAuthProtectedResourceMetadata } from '@atproto/oauth-types';
import { ResolvedHandle } from '@atproto-labs/handle-resolver';
import { SimpleStore, Value } from '@atproto-labs/simple-store';
import { DBObjectStore } from './indexed-db/index.js';
type Item<V> = {
    value: V;
    expiresAt?: string;
};
type EncodedKey = {
    keyId: string;
    keyPair: CryptoKeyPair;
};
export type Schema = {
    state: Item<{
        dpopKey: EncodedKey;
        iss: string;
        verifier?: string;
        appState?: string;
    }>;
    session: Item<{
        dpopKey: EncodedKey;
        tokenSet: TokenSet;
    }>;
    didCache: Item<DidDocument>;
    dpopNonceCache: Item<string>;
    handleCache: Item<ResolvedHandle>;
    authorizationServerMetadataCache: Item<OAuthAuthorizationServerMetadata>;
    protectedResourceMetadataCache: Item<OAuthProtectedResourceMetadata>;
};
export type DatabaseStore<V extends Value> = SimpleStore<string, V>;
export type BrowserOAuthDatabaseOptions = {
    name?: string;
    durability?: 'strict' | 'relaxed';
    cleanupInterval?: number;
};
export declare class BrowserOAuthDatabase {
    #private;
    constructor(options?: BrowserOAuthDatabaseOptions);
    protected run<N extends keyof Schema, R>(storeName: N, mode: 'readonly' | 'readwrite', fn: (s: DBObjectStore<Schema[N]>) => R | Promise<R>): Promise<R>;
    protected createStore<N extends keyof Schema, V extends Value>(name: N, { encode, decode, expiresAt, }: {
        encode: (value: V) => Schema[N]['value'] | PromiseLike<Schema[N]['value']>;
        decode: (encoded: Schema[N]['value']) => V | PromiseLike<V>;
        expiresAt: (value: V) => null | Date;
    }): DatabaseStore<V>;
    getSessionStore(): DatabaseStore<Session>;
    getStateStore(): DatabaseStore<InternalStateData>;
    getDpopNonceCache(): undefined | DatabaseStore<string>;
    getDidCache(): undefined | DatabaseStore<DidDocument>;
    getHandleCache(): undefined | DatabaseStore<ResolvedHandle>;
    getAuthorizationServerMetadataCache(): undefined | DatabaseStore<OAuthAuthorizationServerMetadata>;
    getProtectedResourceMetadataCache(): undefined | DatabaseStore<OAuthProtectedResourceMetadata>;
    cleanup(): Promise<void>;
    [Symbol.asyncDispose](): Promise<void>;
}
export {};
//# sourceMappingURL=browser-oauth-database.d.ts.map