UNPKG

4.15 kBJavaScriptView Raw
1String.prototype.replaceAll = function (search, replacement) {
2 var target = this;
3 return target.replace(new RegExp(search, 'g'), replacement);
4};
5
6function escapeRegExp(str) {
7 return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
8}
9
10function processReturn(retVal) {
11 return retVal;
12 retVal = retVal.replaceAll(escapeRegExp(" ;/*CLOSE TAG*/"), "")
13 .replaceAll(escapeRegExp("\";/*CLOSE TAG*/"), "")
14 .replaceAll(escapeRegExp("/*OPEN TAG*/$_SERVER.Response += \""), "")
15 .replaceAll(escapeRegExp("/*OPEN TAG*/ $_SERVER.Response += \""), "")
16}
17
18module.exports = class BlazeError extends Error {
19 constructor(error, id) {
20 super(error);
21
22 if (error instanceof Error) {
23 this.code = error.code;
24 this.stack = error.stack;
25 this.message = error.message;
26 }
27
28 this.http = BlazeError.getError(id);
29 }
30
31 format() {
32 let errMessage = "";
33 errMessage += "<table border='1'>";
34 errMessage += "<tr>";
35 errMessage += "<th colspan='2'>";
36 errMessage += "Internal Server Error";
37 errMessage += "</th>";
38 errMessage += "</tr>";
39 if (this.code) {
40 errMessage += "<tr>";
41 errMessage += "<td>Status Code</td>";
42 errMessage += "<td>" + this.code + "</td>";
43 errMessage += "</tr>";
44 }
45 if (this.message) {
46 errMessage += "<tr>";
47 errMessage += "<td>Message</td>";
48 errMessage += "<td>" + processReturn(this.message) + "</td>";
49 errMessage += "</tr>";
50 }
51 if (this.stack) {
52 errMessage += "<tr>";
53 errMessage += "<td>Stack Trace</td>";
54 errMessage += "<td style='white-space:pre;'>" + processReturn(this.stack) + "</td>";
55 errMessage += "</tr>";
56 }
57 if (this.http) {
58 if (this.http.code) {
59 errMessage += "<tr>";
60 errMessage += "<td>Status Code</td>";
61 errMessage += "<td style='white-space:pre;'>" + this.http.code + "</td>";
62 errMessage += "</tr>";
63 }
64 if (this.http.message) {
65 errMessage += "<tr>";
66 errMessage += "<td>Status Message</td>";
67 errMessage += "<td style='white-space:pre;'>" + this.http.message + "</td>";
68 errMessage += "</tr>";
69 }
70 }
71 errMessage += "</table>";
72 return errMessage;
73 }
74
75 static getError(id = null) {
76 let retVal = {
77 code: 500,
78 message: "Internal Server Error"
79 }
80
81 let match = Object.entries(BlazeError.codes).find(entry => Number(entry[0]) === id || entry[1] === id);
82 if (match) {
83 retVal.code = match[0];
84 retVal.message = match[1];
85 }
86
87 return retVal;
88 }
89
90 static get codes() {
91 return {
92 100: "Continue",
93 101: "Switching Protocols",
94 102: "Processing",
95 103: "Early Hints",
96 200: "OK",
97 201: "Created",
98 202: "Accepted",
99 203: "Non-Authoritative Information",
100 204: "No Content",
101 205: "Reset Content",
102 206: "Partial Content",
103 207: "Multi-Status",
104 208: "Already Reported",
105 226: "IM Used",
106 300: "Multiple Choices",
107 301: "Moved Permanently",
108 302: "Found",
109 303: "See Other",
110 304: "Not Modified",
111 305: "Use Proxy",
112 307: "Temporary Redirect",
113 308: "Permanent Redirect",
114 400: "Bad Request",
115 401: "Unauthorized",
116 402: "Payment Required",
117 403: "Forbidden",
118 404: "Not Found",
119 405: "Method Not Allowed",
120 406: "Not Acceptable",
121 407: "Proxy Authentication Required",
122 408: "Request Timeout",
123 409: "Conflict",
124 410: "Gone",
125 411: "Length Required",
126 412: "Precondition Failed",
127 413: "Payload Too Large",
128 414: "URI Too Long",
129 415: "Unsupported Media Type",
130 416: "Range Not Satisfiable",
131 417: "Expectation Failed",
132 418: "I'm a teapot",
133 421: "Misdirected Request",
134 422: "Unprocessable Entity",
135 423: "Locked",
136 424: "Failed Dependency",
137 425: "Unordered Collection",
138 426: "Upgrade Required",
139 428: "Precondition Required",
140 429: "Too Many Requests",
141 431: "Request Header Fields Too Large",
142 451: "Unavailable For Legal Reasons",
143 500: "Internal Server Error",
144 501: "Not Implemented",
145 502: "Bad Gateway",
146 503: "Service Unavailable",
147 504: "Gateway Timeout",
148 505: "HTTP Version Not Supported",
149 506: "Variant Also Negotiates",
150 507: "Insufficient Storage",
151 508: "Loop Detected",
152 509: "Bandwidth Limit Exceeded",
153 510: "Not Extended",
154 511: "Network Authentication Required"
155 }
156 }
157}
\No newline at end of file