UNPKG

@e280/authlocal

Version:

User-sovereign login system for everybody

46 lines (36 loc) 843 B
import {defer} from "@e280/stz" import {Messenger, WindowConduit} from "@e280/renraku" import {AppFns} from "./app-fns.js" // // this facilitates postMessages, // and is installed on the authority side // export function setupInPopup( popupWindow: Window, appWindow: WindowProxy, ) { const conduit = new WindowConduit( popupWindow, appWindow, "*", () => true, ) const appOriginDeferred = defer<string>() conduit.recv.sub((_m, {origin}) => { conduit.targetOrigin = origin appOriginDeferred.resolve(origin) }) const messenger = new Messenger<AppFns>({ conduit, timeout: Infinity, }) async function helloAndGetAppOrigin() { await messenger.remote.v1.hello() return appOriginDeferred.promise } return { helloAndGetAppOrigin, app: messenger.remote as AppFns, dispose: () => conduit.dispose(), } }