- WIP on negundo's JS client
This commit is contained in:
parent
abd530d146
commit
419d9d55df
@ -1,4 +1,7 @@
|
||||
class ErrorHandler {
|
||||
|
||||
#unhandledRection = false
|
||||
|
||||
constructor(options) {
|
||||
if (!options) throw new Error("Options not provided");
|
||||
if (!options.url) throw new Error("URL is required");
|
||||
@ -6,7 +9,8 @@ class ErrorHandler {
|
||||
|
||||
this.url = options.url;
|
||||
this.apikey = options.apikey;
|
||||
|
||||
this.catchError();
|
||||
}
|
||||
|
||||
getErrorPosition(script) {
|
||||
let totalLines = 0;
|
||||
@ -36,19 +40,19 @@ class ErrorHandler {
|
||||
};
|
||||
|
||||
window.addEventListener('unhandledrejection', event => {
|
||||
if (! this.#unhandledRection) {
|
||||
this.#unhandledRection = true;
|
||||
this.reportError(event.reason.toString(), document.location.href, 0, 0, event.reason.stack, 'Promise Rejection');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
this.createErrorAgain();
|
||||
}
|
||||
|
||||
async reportError(message, url, line, column, stack, type = 'JavaScript Error') {
|
||||
await new Promise(r => setTimeout(r, 2000));
|
||||
|
||||
fetch(this.url ? `${this.url}/${this.apikey}` : window.location.href, {
|
||||
method: "POST",
|
||||
try {
|
||||
const response = await fetch(this.url ? `${this.url}/${this.apikey}` : window.location.href, {
|
||||
method: "PUT",
|
||||
headers: {
|
||||
'Accept': "application/json",
|
||||
'Content-Type': "application/json"
|
||||
@ -63,7 +67,16 @@ class ErrorHandler {
|
||||
file: window.location.href,
|
||||
source: await this.getSourceCode(url, line),
|
||||
})
|
||||
}).then(response => response.json()).then(console.info);
|
||||
});
|
||||
|
||||
if (response.ok) {
|
||||
this.#unhandledRection = false;
|
||||
|
||||
return await response.json()
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('CORS or network error:', error.message);
|
||||
}
|
||||
}
|
||||
|
||||
async getSourceCode(url, errorLineNumber) {
|
||||
@ -94,8 +107,6 @@ class ErrorHandler {
|
||||
obj.file = match[2];
|
||||
obj.line = match[3];
|
||||
// column would be match[4] if needed
|
||||
|
||||
console.log(match);
|
||||
}
|
||||
|
||||
// Remove undefined/empty values
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user