This repository has been archived on 2023-12-17. You can view files and clone it, but cannot push or open issues or pull requests.
extension/src/vars.ts

137 lines
2.6 KiB
TypeScript

import type { KernelAuthStatus } from "@lumeweb/libweb";
import defer from "p-defer";
import type { DeferredPromise } from "p-defer";
import Emittery from "emittery";
import objectDiff from "object-diff";
let queriesNonce = 1;
let queries: any = {};
let portsNonce = 0;
let openPorts = {} as any;
let timer = 20000;
let authStatus: KernelAuthStatus;
let authStatusKnown = false;
let authStatusDefer = defer();
let kernelFrame: HTMLIFrameElement;
let loggedInDefer = defer();
let booted = false;
let bootedDefer = defer();
bootedDefer.promise.then(() => {
booted = true;
});
export const events = new Emittery();
export function getAuthStatusKnown() {
return authStatusKnown;
}
export function setAuthStatusKnown(status: boolean) {
authStatusKnown = status;
}
export function getAuthStatus(): KernelAuthStatus {
return authStatus;
}
export function setAuthStatus(status: KernelAuthStatus) {
let diff;
if (!authStatus) {
diff = status;
} else {
diff = objectDiff(authStatus, status);
}
authStatus = status;
events.emit("authStatus", diff);
}
export function getQueriesNonce(): number {
return queriesNonce;
}
export function increaseQueriesNonce() {
queriesNonce++;
}
export function getTimer(): number {
return timer;
}
export function setTimer(interval: number) {
timer = interval;
}
export function getOpenPorts() {
return openPorts;
}
export function setOpenPort(port: number, value: any) {
openPorts[port] = value;
}
export function deleteOpenPort(port: number) {
delete openPorts[port];
}
export function getPortsNonce(): number {
return portsNonce;
}
export function increasePortsNonce() {
portsNonce++;
}
export function addQuery(nonce: any, func: Function) {
queries[nonce] = func;
}
export function getQueries() {
return queries;
}
export function getQuery(nonce: any) {
return queries[nonce];
}
export function deleteQuery(nonce: any) {
delete queries[nonce];
}
export function clearOpenPorts() {
openPorts = {};
}
export function getKernelIframe(): HTMLIFrameElement {
return kernelFrame;
}
export function setKernelIframe(iframe: HTMLIFrameElement) {
kernelFrame = iframe;
}
export function getAuthStatusDefer() {
return authStatusDefer;
}
export function getLoggedInDefer() {
return loggedInDefer;
}
export function resetLoggedInDefer() {
loggedInDefer = defer();
}
export function awaitBooted(): Promise<unknown> {
return bootedDefer.promise;
}
export function getBooted() {
return booted;
}
export function resetBooted(): void {
bootedDefer = defer();
bootedDefer.promise.then(() => {
booted = true;
});
}
export function weAreBooted(): void {
bootedDefer.resolve();
}