MCPcopy Create free account
hub / github.com/PaperDebugger/paperdebugger / fn

Function fn

webapp/_webapp/src/intermediate.ts:118–147  ·  view source on GitHub ↗
(args: A)

Source from the content-addressed store, hash-verified

116 // The callable function - works in both MAIN and ISOLATED world
117 // Dispatches event and waits for response from ISOLATED world's handler
118 const fn = (args: A): Promise<T> => {
119 const seq = uuidv4();
120 window.dispatchEvent(new CustomEvent(reqEvtName, { detail: { seq, req: args } }));
121 return new Promise((resolve, reject) => {
122 function resListener(evt: Event): void {
123 const customEvt = evt as CustomEvent;
124 const { res } = customEvt.detail;
125 cleanup();
126 resolve(res);
127 }
128 function errListener(evt: Event): void {
129 const customEvt = evt as CustomEvent;
130 const { err } = customEvt.detail;
131 cleanup();
132 reject(err);
133 }
134 function cleanup(): void {
135 window.removeEventListener(`${resEvtName}/${seq}`, resListener);
136 window.removeEventListener(`${errEvtName}/${seq}`, errListener);
137 }
138 window.addEventListener(`${resEvtName}/${seq}`, resListener);
139 window.addEventListener(`${errEvtName}/${seq}`, errListener);
140 if (!opts?.wait) {
141 setTimeout(() => {
142 cleanup();
143 reject(new Error(`${handlerName} request timeout`));
144 }, REQUEST_TIMEOUT_MS);
145 }
146 });
147 };
148 return fn;
149}
150

Callers 4

withDelayFunction · 0.85
highlightFunction · 0.85
debouncePromiseFunction · 0.85

Calls 1

cleanupFunction · 0.85

Tested by

no test coverage detected