From acc06735522ec59923bd417086031bcb128223a9 Mon Sep 17 00:00:00 2001 From: James Durand Date: Thu, 15 Aug 2019 04:33:25 +1000 Subject: [PATCH] Added arguments to solid-auth-client methods (#37603) There are a few optional arguments that can be passed to the client methods that aren't present in the types currently. I've added them as they are in the 2.3.0 version of the client the existing types say they target. --- types/solid-auth-client/index.d.ts | 26 ++++++++++++++----- .../solid-auth-client-tests.ts | 23 ++++++++++++++++ 2 files changed, 43 insertions(+), 6 deletions(-) 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() {