@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
JavaScript
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