import * as plugins from './plugins.js'; export class TypedElectronFrontend { // STATIC public static async createTypedElectronFrontend() { return new TypedElectronFrontend(); } // INSTANCE public typedrouter = new plugins.typedrequest.TypedRouter(); constructor() { plugins.electronApi.receiveMessage('typedrequest', (payloadArg) => { this.typedrouter.routeAndAddResponse(payloadArg); }); } createTypedRequest( methodName: T['method'], ) { const typedrequest = new plugins.typedrequest.TypedRequest(new plugins.typedrequest.TypedTarget({ typedRouterRef: this.typedrouter, postMethodWithTypedRouter: async (payloadArg: T) => { plugins.electronApi.sendMessage('typedrequest', payloadArg); } }), methodName); return typedrequest; } }