Error handling

This commit is contained in:
mrjvs
2023-12-29 22:06:31 +01:00
parent e2c08db886
commit 794a4fe02c

View File

@@ -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) => { app.get('/scrape', async (context) => {
const queryParams = context.req.query(); const queryParams = context.req.query();
@@ -112,7 +116,11 @@ app.get('/scrape', async (context) => {
writeSSEEvent(stream, 'start', evt); writeSSEEvent(stream, 'start', evt);
}, },
update(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', ''); await writeSSEEvent(stream, 'noOutput', '');
return await stream.close(); return await stream.close();
} catch (e: any) { } catch (e: any) {
await writeSSEEvent(stream, 'error', { await writeSSEEvent(stream, 'error', stringifyError(e) ?? {});
name: e.name,
message: e.message,
stack: e.stack,
});
return await stream.close(); return await stream.close();
} }
}); });
@@ -177,7 +181,10 @@ app.get('/scrape/embed', async (context) => {
url: embedInput.url, url: embedInput.url,
events: { events: {
update(evt) { 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', ''); await writeSSEEvent(stream, 'noOutput', '');
return await stream.close(); return await stream.close();
} catch (e: any) { } catch (e: any) {
await writeSSEEvent(stream, 'error', { await writeSSEEvent(stream, 'error', stringifyError(e) ?? {});
name: e.name,
message: e.message,
stack: e.stack,
});
return await stream.close(); return await stream.close();
} }
}); });
@@ -242,7 +245,10 @@ app.get('/scrape/source', async (context) => {
media: sourceInput, media: sourceInput,
events: { events: {
update(evt) { 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', ''); await writeSSEEvent(stream, 'noOutput', '');
return await stream.close(); return await stream.close();
} catch (e: any) { } catch (e: any) {
await writeSSEEvent(stream, 'error', { await writeSSEEvent(stream, 'error', stringifyError(e) ?? {});
name: e.name,
message: e.message,
stack: e.stack,
});
return await stream.close(); return await stream.close();
} }
}); });