UNPKG

@casual-simulation/aux-vm-browser

Version:

A set of utilities required to securely run an AUX in a web browser.

65 lines 2.65 kB
import { Subject } from 'rxjs'; import { map, startWith } from 'rxjs/operators'; import { AuthEndpointHelper } from './AuthEndpointHelper'; export class AuthHelper { get endpoints() { return this._auths; } get onEndpointDiscovered() { return this._onEndpointDiscovered.pipe(startWith(...[...this._auths.entries()].map(([endpoint, helper]) => ({ endpoint, helper, })))); } get primaryAuthOrigin() { return this._primary.origin; } constructor(primaryAuthOrigin, primaryRecordsOrigin, factory, requirePrivoLogin, primarySessionKey, primaryConnectionKey) { this._useCustomUI = false; this._onEndpointDiscovered = new Subject(); this._factory = factory !== null && factory !== void 0 ? factory : ((primaryAuthOrigin, primaryRecordsOrigin, sessionKey, connectionKey) => new AuthEndpointHelper(primaryAuthOrigin, primaryRecordsOrigin, requirePrivoLogin, sessionKey, connectionKey)); this._primary = this._factory(primaryAuthOrigin, primaryRecordsOrigin, primarySessionKey, primaryConnectionKey); this._auths = new Map(); this._loginUIStatus = new Subject(); this._requirePrivoLogin = requirePrivoLogin !== null && requirePrivoLogin !== void 0 ? requirePrivoLogin : false; this._primary.loginUIStatus .pipe(map((s) => ({ ...s, endpoint: primaryAuthOrigin }))) .subscribe(this._loginUIStatus); this._auths.set(primaryAuthOrigin, this._primary); } get primary() { return this._primary; } get loginUIStatus() { return this._loginUIStatus; } getOrCreateEndpoint(endpoint) { let e = this.getEndpoint(endpoint); if (!e) { e = this._createEndpoint(endpoint); this._onEndpointDiscovered.next({ endpoint, helper: e }); } return e; } getEndpoint(endpoint) { return this._auths.get(endpoint); } _createEndpoint(endpoint) { console.log('[AuthHelper] Creating endpoint', endpoint); const helper = new AuthEndpointHelper(endpoint, undefined, this._requirePrivoLogin); helper.loginUIStatus .pipe(map((s) => ({ ...s, endpoint }))) .subscribe(this._loginUIStatus); this._auths.set(endpoint, helper); helper.setUseCustomUI(this._useCustomUI); return helper; } setUseCustomUI(useCustomUI) { this._useCustomUI = useCustomUI; for (let auth of this._auths.values()) { auth.setUseCustomUI(useCustomUI); } } } //# sourceMappingURL=AuthHelper.js.map