diff --git a/types/solid-auth-client/index.d.ts b/types/solid-auth-client/index.d.ts index 9508804eb2..4c3e9bbaa1 100644 --- a/types/solid-auth-client/index.d.ts +++ b/types/solid-auth-client/index.d.ts @@ -1,6 +1,7 @@ // Type definitions for solid-auth-client 2.3 // Project: https://github.com/solid/solid-auth-client#readme // Definitions by: Vincent +// James // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.2 import { EventEmitter } from 'events'; @@ -8,13 +9,26 @@ import { EventEmitter } from 'events'; export interface Session { webId: string; } + +export interface AsyncStorage { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} + +interface LoginOptions { + callbackUri?: string; + popupUri?: string; + storage?: Storage | AsyncStorage; +} + export interface SolidAuthClient extends EventEmitter { - fetch(input: RequestInfo, init?: RequestInit): Promise; - currentSession(): Promise; - trackSession(callback: (session?: Session) => void): void; - login(identityProvider: string): Promise; - logout(): Promise; - popupLogin(params: { popupUri: string }): Promise; + fetch(input: RequestInfo, init?: RequestInit): Promise; + currentSession(storage?: AsyncStorage): Promise; + trackSession(callback: (session?: Session) => void): void; + login(identityProvider: string, options?: LoginOptions): Promise; + logout(storage?: AsyncStorage): Promise; + popupLogin(params?: LoginOptions): Promise; } declare const instantiated: SolidAuthClient; diff --git a/types/solid-auth-client/solid-auth-client-tests.ts b/types/solid-auth-client/solid-auth-client-tests.ts index f574a87460..8b813f0411 100644 --- a/types/solid-auth-client/solid-auth-client-tests.ts +++ b/types/solid-auth-client/solid-auth-client-tests.ts @@ -17,6 +17,17 @@ async function login(idp: string) { alert(`Logged in as ${session.webId}`); } +async function loginWithOptions(idp: string) { + const session = await auth.currentSession(); + if (!session) + await auth.login(idp, { + callbackUri: '/callback', + popupUri: 'https://solid.community/common/popup.html', + storage: localStorage, + }); + else alert(`Logged in as ${session.webId}`); +} + async function popupLogin() { let session = await auth.currentSession(); const popupUri = 'https://solid.community/common/popup.html'; @@ -25,6 +36,18 @@ async function popupLogin() { alert(`Logged in as ${session.webId}`); } +async function popupLoginWIthOptions() { + let session = await auth.currentSession(); + const popupUri = 'https://solid.community/common/popup.html'; + if (!session) + session = await auth.popupLogin({ + callbackUri: '/callback', + popupUri, + storage: localStorage, + }); + alert(`Logged in as ${session.webId}`); +} + auth.logout().then(() => alert('Goodbye!')); async function greetUser() {