@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