UNPKG

@auth0/auth0-spa-js

Version:

Auth0 SDK for Single Page Applications using Authorization Code Grant Flow with PKCE

54 lines (41 loc) 1.28 kB
import { CACHE_KEY_PREFIX, ICache, KeyManifestEntry, MaybePromise } from './shared'; export class CacheKeyManifest { private readonly manifestKey: string; constructor(private cache: ICache, private clientId: string) { this.manifestKey = this.createManifestKeyFrom(this.clientId); } async add(key: string): Promise<void> { const keys = new Set( (await this.cache.get<KeyManifestEntry>(this.manifestKey))?.keys || [] ); keys.add(key); await this.cache.set<KeyManifestEntry>(this.manifestKey, { keys: [...keys] }); } async remove(key: string): Promise<void> { const entry = await this.cache.get<KeyManifestEntry>(this.manifestKey); if (entry) { const keys = new Set(entry.keys); keys.delete(key); if (keys.size > 0) { return await this.cache.set(this.manifestKey, { keys: [...keys] }); } return await this.cache.remove(this.manifestKey); } } get(): MaybePromise<KeyManifestEntry | undefined> { return this.cache.get<KeyManifestEntry>(this.manifestKey); } clear(): MaybePromise<void> { return this.cache.remove(this.manifestKey); } private createManifestKeyFrom(clientId: string): string { return `${CACHE_KEY_PREFIX}::${clientId}`; } }