@e280/authlocal
Version:
User-sovereign login system for everybody
28 lines • 874 B
JavaScript
import { defer } from "@e280/stz";
import { Messenger, WindowConduit } from "@e280/renraku";
//
// this facilitates postMessages,
// and is installed on the authority side
//
export function setupInPopup(popupWindow, appWindow) {
const conduit = new WindowConduit(popupWindow, appWindow, "*", () => true);
const appOriginDeferred = defer();
conduit.recv.sub((_m, { origin }) => {
conduit.targetOrigin = origin;
appOriginDeferred.resolve(origin);
});
const messenger = new Messenger({
conduit,
timeout: Infinity,
});
async function helloAndGetAppOrigin() {
await messenger.remote.v1.hello();
return appOriginDeferred.promise;
}
return {
helloAndGetAppOrigin,
app: messenger.remote,
dispose: () => conduit.dispose(),
};
}
//# sourceMappingURL=setup-in-popup.js.map