Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | import { PostmateError } from "@hypernetlabs/objects"; import { ResultAsync } from "neverthrow"; import Postmate from "postmate"; export interface IIFrameCallData<T> { callId: number; data: T; } class IFrameCallData<T> implements IIFrameCallData<T> { constructor(public callId: number, public data: T) {} } export abstract class ChildProxy { protected parent: Postmate.ChildAPI | undefined; protected abstract getModel(): Postmate.Model; protected abstract onModelActivated(parent: Postmate.ChildAPI): void; public activateModel(): ResultAsync<Postmate.ChildAPI, PostmateError> { const handshake = this.getModel(); return ResultAsync.fromPromise( handshake.then((initializedParent) => { this.parent = initializedParent; this.onModelActivated(initializedParent); return initializedParent; }), (e) => new PostmateError("Postmate handshake failed", e), ); } protected returnForModel<T, E>( func: () => ResultAsync<T, E>, callId: number, ): void { func().match( (result) => { if (this.parent != null) { this.parent.emit("callSuccess", new IFrameCallData(callId, result)); } }, (e) => { if (this.parent != null) { this.parent.emit("callError", new IFrameCallData(callId, e)); } }, ); } } |