-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathutil.ts
78 lines (73 loc) · 2.06 KB
/
util.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import { JSONEntity, serialize } from "@deepkit/type";
export function autoSerialize<T>(target: T | T[]): typeof target extends any[] ? JSONEntity<T>[] : JSONEntity<T> {
if (Array.isArray(target)) {
return target.map((e) => serialize(e, undefined, undefined, undefined, (e as any).constructor)) as any;
} else {
return serialize(target, undefined, undefined, undefined, (target as any).constructor) as any;
}
}
// Http status code mappings
export const httpStatusCodes = {
400: "Bad Request",
401: "Unauthorized",
402: "Payment Required",
403: "Forbidden",
404: "Not Found",
405: "Method Not Allowed",
406: "Not Acceptable",
407: "Proxy Authentication Required",
408: "Request Timeout",
409: "Conflict",
410: "Gone",
411: "Length Required",
412: "Precondition Failed",
413: "Request Entity Too Large",
414: "Request-URI Too Long",
415: "Unsupported Media Type",
416: "Requested Range Not Satisfiable",
417: "Expectation Failed",
418: "I'm a teapot",
422: "Unprocessable Entity",
423: "Locked",
424: "Failed Dependency",
425: "Unordered Collection",
426: "Upgrade Required",
428: "Precondition Required",
429: "Too Many Requests",
431: "Request Header Fields Too Large",
500: "Internal Server Error",
501: "Not Implemented",
502: "Bad Gateway",
503: "Service Unavailable",
504: "Gateway Timeout",
505: "HTTP Version Not Supported",
506: "Variant Also Negotiates",
507: "Insufficient Storage",
508: "Loop Detected",
510: "Not Extended",
511: "Network Authentication Required",
};
// declare global {
// namespace NodeJS {
// interface Global {
// HttpError: typeof HttpError;
// }
// }
// }
class _HttpError extends Error {
constructor(public status: keyof typeof httpStatusCodes, public message: string) {
super(`${status}: ${httpStatusCodes[status]}\nmessage`);
if (!(status in httpStatusCodes)) {
throw new _HttpError(500, "Unknown HTTP error status code: " + status);
}
}
}
declare global {
const HttpError: typeof _HttpError;
namespace NodeJS {
interface Global {
HttpError: typeof _HttpError;
}
}
}
global.HttpError = _HttpError;