Merge pull request '[v7.0/forgejo] Suppress Monaco JavaScript errors in Safari' (#3833) from bp-v7.0/forgejo-e4c3c03 into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3833 Reviewed-by: Otto <otto@codeberg.org>
This commit is contained in:
commit
487b2129aa
1 changed files with 20 additions and 6 deletions
26
web_src/js/bootstrap.js
vendored
26
web_src/js/bootstrap.js
vendored
|
@ -6,6 +6,24 @@
|
||||||
// This file must be imported before any lazy-loading is being attempted.
|
// This file must be imported before any lazy-loading is being attempted.
|
||||||
__webpack_public_path__ = `${window.config?.assetUrlPrefix ?? '/assets'}/`;
|
__webpack_public_path__ = `${window.config?.assetUrlPrefix ?? '/assets'}/`;
|
||||||
|
|
||||||
|
// Ignore external and some known internal errors that we are unable to currently fix.
|
||||||
|
function shouldIgnoreError(err) {
|
||||||
|
const assetBaseUrl = String(new URL(__webpack_public_path__, window.location.origin));
|
||||||
|
|
||||||
|
if (!(err instanceof Error)) return false;
|
||||||
|
// If the error stack trace does not include the base URL of our script assets, it likely came
|
||||||
|
// from a browser extension or inline script. Ignore these errors.
|
||||||
|
if (!err.stack?.includes(assetBaseUrl)) return true;
|
||||||
|
// Ignore some known internal errors that we are unable to currently fix (eg via Monaco).
|
||||||
|
const ignorePatterns = [
|
||||||
|
'/assets/js/monaco.', // https://codeberg.org/forgejo/forgejo/issues/3638 , https://github.com/go-gitea/gitea/issues/30861 , https://github.com/microsoft/monaco-editor/issues/4496
|
||||||
|
];
|
||||||
|
for (const pattern of ignorePatterns) {
|
||||||
|
if (err.stack?.includes(pattern)) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
const filteredErrors = new Set([
|
const filteredErrors = new Set([
|
||||||
'getModifierState is not a function', // https://github.com/microsoft/monaco-editor/issues/4325
|
'getModifierState is not a function', // https://github.com/microsoft/monaco-editor/issues/4325
|
||||||
]);
|
]);
|
||||||
|
@ -47,7 +65,6 @@ export function showGlobalErrorMessage(msg) {
|
||||||
*/
|
*/
|
||||||
function processWindowErrorEvent({error, reason, message, type, filename, lineno, colno}) {
|
function processWindowErrorEvent({error, reason, message, type, filename, lineno, colno}) {
|
||||||
const err = error ?? reason;
|
const err = error ?? reason;
|
||||||
const assetBaseUrl = String(new URL(__webpack_public_path__, window.location.origin));
|
|
||||||
const {runModeIsProd} = window.config ?? {};
|
const {runModeIsProd} = window.config ?? {};
|
||||||
|
|
||||||
// `error` and `reason` are not guaranteed to be errors. If the value is falsy, it is likly a
|
// `error` and `reason` are not guaranteed to be errors. If the value is falsy, it is likly a
|
||||||
|
@ -60,11 +77,8 @@ function processWindowErrorEvent({error, reason, message, type, filename, lineno
|
||||||
if (runModeIsProd) return;
|
if (runModeIsProd) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the error stack trace does not include the base URL of our script assets, it likely came
|
// In production do not display errors that should be ignored.
|
||||||
// from a browser extension or inline script. Do not show such errors in production.
|
if (runModeIsProd && shouldIgnoreError(err)) return;
|
||||||
if (err instanceof Error && !err.stack?.includes(assetBaseUrl) && runModeIsProd) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let msg = err?.message ?? message;
|
let msg = err?.message ?? message;
|
||||||
if (lineno) msg += ` (${filename} @ ${lineno}:${colno})`;
|
if (lineno) msg += ` (${filename} @ ${lineno}:${colno})`;
|
||||||
|
|
Loading…
Reference in a new issue