From 794a4fe02c1d2e91143acd08ba209a0c6f0de086 Mon Sep 17 00:00:00 2001 From: mrjvs Date: Fri, 29 Dec 2023 22:06:31 +0100 Subject: [PATCH] Error handling --- src/index.ts | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/index.ts b/src/index.ts index d3edff0..c6b4ddf 100644 --- a/src/index.ts +++ b/src/index.ts @@ -61,6 +61,10 @@ async function writeSSEEvent( }); } +function stringifyError(err: any): any { + return err ? { name: err.name, message: err.message, stack: err.stack } : undefined; +} + app.get('/scrape', async (context) => { const queryParams = context.req.query(); @@ -112,7 +116,11 @@ app.get('/scrape', async (context) => { writeSSEEvent(stream, 'start', evt); }, update(evt) { - writeSSEEvent(stream, 'update', evt); + const err = evt.error as any; + writeSSEEvent(stream, 'update', { + ...evt, + error: stringifyError(evt.error), + }); }, }, }); @@ -125,11 +133,7 @@ app.get('/scrape', async (context) => { await writeSSEEvent(stream, 'noOutput', ''); return await stream.close(); } catch (e: any) { - await writeSSEEvent(stream, 'error', { - name: e.name, - message: e.message, - stack: e.stack, - }); + await writeSSEEvent(stream, 'error', stringifyError(e) ?? {}); return await stream.close(); } }); @@ -177,7 +181,10 @@ app.get('/scrape/embed', async (context) => { url: embedInput.url, events: { update(evt) { - writeSSEEvent(stream, 'update', evt); + writeSSEEvent(stream, 'update', { + ...evt, + error: stringifyError(evt.error), + }); }, }, }); @@ -190,11 +197,7 @@ app.get('/scrape/embed', async (context) => { await writeSSEEvent(stream, 'noOutput', ''); return await stream.close(); } catch (e: any) { - await writeSSEEvent(stream, 'error', { - name: e.name, - message: e.message, - stack: e.stack, - }); + await writeSSEEvent(stream, 'error', stringifyError(e) ?? {}); return await stream.close(); } }); @@ -242,7 +245,10 @@ app.get('/scrape/source', async (context) => { media: sourceInput, events: { update(evt) { - writeSSEEvent(stream, 'update', evt); + writeSSEEvent(stream, 'update', { + ...evt, + error: stringifyError(evt.error), + }); }, }, }); @@ -255,11 +261,7 @@ app.get('/scrape/source', async (context) => { await writeSSEEvent(stream, 'noOutput', ''); return await stream.close(); } catch (e: any) { - await writeSSEEvent(stream, 'error', { - name: e.name, - message: e.message, - stack: e.stack, - }); + await writeSSEEvent(stream, 'error', stringifyError(e) ?? {}); return await stream.close(); } });