blockstack
Version:
The Blockstack Javascript library for authentication, identity, and storage.
67 lines (53 loc) • 1.52 kB
text/typescript
import { GaiaHubConfig } from '../storage/hub'
import { InvalidStateError } from '../errors'
import { UserData } from './authApp'
const SESSION_VERSION = '1.0.0'
type EtagMap = { [key: string]: string; };
export interface SessionOptions {
coreNode?: string,
userData?: UserData,
transitKey?: string,
etags?: EtagMap,
localStorageKey?: string,
storeOptions?: {
localStorageKey?: string
}
}
/**
* @ignore
*/
export class SessionData {
version: string
transitKey?: string
// using this in place of
// window.localStorage.setItem(BLOCKSTACK_STORAGE_LABEL, JSON.stringify(userData))
userData?: UserData
etags?: EtagMap
constructor(options: SessionOptions) {
this.version = SESSION_VERSION
this.userData = options.userData
this.transitKey = options.transitKey
this.etags = options.etags ? options.etags : {}
}
getGaiaHubConfig(): GaiaHubConfig {
return this.userData && this.userData.gaiaHubConfig
}
setGaiaHubConfig(config: GaiaHubConfig): void {
this.userData.gaiaHubConfig = config
}
static fromJSON(json: any): SessionData {
if (json.version !== SESSION_VERSION) {
throw new InvalidStateError(`JSON data version ${json.version} not supported by SessionData`)
}
const options: SessionOptions = {
coreNode: json.coreNode,
userData: json.userData,
transitKey: json.transitKey,
etags: json.etags
}
return new SessionData(options)
}
toString(): string {
return JSON.stringify(this)
}
}