this repo has no description
1import { 2 type Fetch, 3 type OAuthClientMetadataInput, 4 type OAuthClientOptions, 5 type OAuthResponseMode, 6 atprotoLoopbackClientMetadata, 7 OAuthClient, 8} from "@atproto/oauth-client"; 9import { ReactNativeRuntimeImplementation } from "./react-native-runtime-implementation"; 10import { ReactNativeOAuthDatabase } from "./react-native-oauth-database"; 11 12export type Simplify<T> = { [K in keyof T]: T[K] } & NonNullable<unknown>; 13 14export type ReactNativeOAuthClientOptions = Simplify< 15 { 16 clientMetadata?: Readonly<OAuthClientMetadataInput>; 17 responseMode?: Exclude<OAuthResponseMode, "form_post">; 18 fetch?: Fetch; 19 } & Omit< 20 OAuthClientOptions, 21 | "clientMetadata" 22 | "responseMode" 23 | "keyset" 24 | "fetch" 25 | "runtimeImplementation" 26 | "sessionStore" 27 | "stateStore" 28 | "didCache" 29 | "handleCache" 30 | "dpopNonceCache" 31 | "authorizationServerMetadataCache" 32 | "protectedResourceMetadataCache" 33 > 34>; 35 36export class ReactNativeOAuthClient extends OAuthClient { 37 constructor({ 38 responseMode = "fragment", 39 ...options 40 }: ReactNativeOAuthClientOptions) { 41 const database = new ReactNativeOAuthDatabase(); 42 43 if (!["query", "fragment"].includes(responseMode)) { 44 throw new TypeError(`Invalid response mode: ${responseMode}`); 45 } 46 47 if (!options.clientMetadata) { 48 throw new TypeError(`No client metadata provided`); 49 } 50 51 super({ 52 ...options, 53 clientMetadata: 54 options.clientMetadata ?? atprotoLoopbackClientMetadata("localhost"), // HACK: this fixes a type error for now, look into it later 55 responseMode, 56 keyset: undefined, 57 runtimeImplementation: new ReactNativeRuntimeImplementation(), 58 sessionStore: database.getSessionStore(), 59 stateStore: database.getStateStore(), 60 didCache: database.getDidCache(), 61 handleCache: database.getHandleCache(), 62 dpopNonceCache: database.getDpopNonceCache(), 63 authorizationServerMetadataCache: 64 database.getAuthorizationServerMetadataCache(), 65 protectedResourceMetadataCache: 66 database.getProtectedResourceMetadataCache(), 67 }); 68 } 69}