Skip to content

Commit 31af2e3

Browse files
Fixed error handling
1 parent 34e1e37 commit 31af2e3

3 files changed

Lines changed: 21 additions & 26 deletions

File tree

src/index.ts

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { triggerAlarm } from "./controllers/alarms/triggerAlarm";
22
import createRouter from "./domains/router";
3-
import D1Error from "./models/D1Error";
43

54
const router = createRouter();
65

@@ -22,33 +21,32 @@ export default {
2221
try {
2322
const response = await getRequest(request, env, context);
2423

25-
if(response.status >= 200 && response.status <= 299) {
26-
response.headers.set("Access-Control-Allow-Origin", "*");
27-
response.headers.set("Access-Control-Allow-Methods", "GET, POST, PUT, PATCH, DELETE, OPTIONS");
28-
response.headers.set("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
29-
}
30-
else
31-
context.waitUntil(new Promise(async (resolve) => {
24+
if(response.status < 200 || response.status > 299) {
25+
context.waitUntil(new Promise<void>(async (resolve) => {
3226
const text = await response.text();
3327

34-
if(text.length)
35-
await triggerAlarm(env, "Unsuccessful Status Code Alarm", `A response has returned an unsuccessfull status code.\n \n\`\`\`\n${response.status} ${response.statusText}\n\`\`\`\`\`\`\n${text}\n\`\`\`\n${request.method} ${request.url}\nRemote Address: || ${request.headers.get("CF-Connecting-IP")} ||`);
36-
else
37-
await triggerAlarm(env, "Unsuccessful Status Code Alarm", `A response has returned an unsuccessfull status code.\n \n\`\`\`\n${response.status} ${response.statusText}\n\`\`\`\n${request.method} ${request.url}\nRemote Address: || ${request.headers.get("CF-Connecting-IP")} ||`);
28+
await triggerAlarm(env, "Unsuccessful Status Code Alarm", `A response has returned an unsuccessfull status code.\n \n\`\`\`\n${response.status} ${response.statusText}\n\`\`\`${(text.length)?(`\`\`\`\n${text}\n\`\`\``):("")}\n${request.method} ${request.url}\nRemote Address: || ${request.headers.get("CF-Connecting-IP")} ||`);
29+
30+
resolve();
3831
}));
32+
}
33+
34+
response.headers.set("Access-Control-Allow-Origin", "*");
35+
response.headers.set("Access-Control-Allow-Methods", "GET, POST, PUT, PATCH, DELETE, OPTIONS");
36+
response.headers.set("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
3937

4038
return response;
4139
}
4240
catch(error: any) {
43-
if((error as Error).message.startsWith("D1_")) {
44-
const d1Error: D1Error = error;
45-
46-
context.waitUntil(triggerAlarm(env, "D1 Error Alarm", `An error was thrown by D1 during execution.\n \n\`\`\`\n${d1Error.message}\n\`\`\`\`\`\`\n${d1Error.cause.message}\n\`\`\`\n${request.method} ${request.url}\nRemote Address: || ${request.headers.get("CF-Connecting-IP")} ||`));
47-
48-
return new Response(undefined, {
49-
status: 502,
50-
statusText: "Bad Gateway"
51-
});
41+
if(error instanceof Error) {
42+
if(error.message.startsWith("D1_") && error.cause instanceof Error) {
43+
context.waitUntil(triggerAlarm(env, "D1 Error Alarm", `An error was thrown by D1 during execution.\n \n\`\`\`\n${error.message}\n\`\`\`\`\`\`\n${error.cause.message}\n\`\`\`\n${request.method} ${request.url}\nRemote Address: || ${request.headers.get("CF-Connecting-IP")} ||`));
44+
45+
return new Response(undefined, {
46+
status: 502,
47+
statusText: "Bad Gateway"
48+
});
49+
}
5250
}
5351

5452
context.waitUntil(triggerAlarm(env, "Uncaught Error Alarm", `An uncaught error was thrown during a response.\n \n\`\`\`\n${error}\n\`\`\`\n${request.method} ${request.url}\nRemote Address: || ${request.headers.get("CF-Connecting-IP")} ||`));

src/models/D1Error.ts

Lines changed: 0 additions & 3 deletions
This file was deleted.

tsconfig.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
// "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
1212

1313
/* Language and Environment */
14-
"target": "es2020" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,
14+
"target": "ES2022" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,
1515
"lib": [
16-
"es2020"
16+
"ES2022"
1717
] /* Specify a set of bundled library declaration files that describe the target runtime environment. */,
1818
// "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
1919
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */

0 commit comments

Comments
 (0)