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}