diff --git a/packages/website/src/components/ErrorsViewer.tsx b/packages/website/src/components/ErrorsViewer.tsx
index 6d7621d096aa..10a19922fdb7 100644
--- a/packages/website/src/components/ErrorsViewer.tsx
+++ b/packages/website/src/components/ErrorsViewer.tsx
@@ -7,7 +7,7 @@ import IconExternalLink from '@theme/IconExternalLink';
import styles from './ErrorsViewer.module.css';
export interface ErrorsViewerProps {
- readonly value?: ErrorGroup[];
+ readonly value?: ErrorGroup[] | Error;
}
export interface ErrorBlockProps {
@@ -100,6 +100,17 @@ export default function ErrorsViewer({
setIsLocked(false);
}, [value]);
+ if (value && !Array.isArray(value)) {
+ return (
+
+
+
ESLint internal error
+ {value?.stack}
+
+
+ );
+ }
+
return (
{value?.map(({ group, uri, items }) => {
diff --git a/packages/website/src/components/Playground.tsx b/packages/website/src/components/Playground.tsx
index d5fade823435..d86893bb56cd 100644
--- a/packages/website/src/components/Playground.tsx
+++ b/packages/website/src/components/Playground.tsx
@@ -66,7 +66,7 @@ function Playground(): JSX.Element {
const [esAst, setEsAst] = useState
();
const [tsAst, setTsAST] = useState();
const [scope, setScope] = useState | null>();
- const [markers, setMarkers] = useState();
+ const [markers, setMarkers] = useState();
const [ruleNames, setRuleNames] = useState([]);
const [isLoading, setIsLoading] = useState(true);
const [tsVersions, setTSVersion] = useState([]);
diff --git a/packages/website/src/components/editor/LoadedEditor.tsx b/packages/website/src/components/editor/LoadedEditor.tsx
index f325fb91e6df..65de546a25ad 100644
--- a/packages/website/src/components/editor/LoadedEditor.tsx
+++ b/packages/website/src/components/editor/LoadedEditor.tsx
@@ -127,21 +127,27 @@ export const LoadedEditor: React.FC = ({
webLinter.updateParserOptions(jsx, sourceType);
- const messages = webLinter.lint(code);
+ try {
+ const messages = webLinter.lint(code);
- const markers = parseLintResults(messages, codeActions, ruleId =>
- sandboxInstance.monaco.Uri.parse(webLinter.rulesUrl.get(ruleId) ?? ''),
- );
+ const markers = parseLintResults(messages, codeActions, ruleId =>
+ sandboxInstance.monaco.Uri.parse(
+ webLinter.rulesUrl.get(ruleId) ?? '',
+ ),
+ );
- sandboxInstance.monaco.editor.setModelMarkers(
- tabs.code,
- 'eslint',
- markers,
- );
+ sandboxInstance.monaco.editor.setModelMarkers(
+ tabs.code,
+ 'eslint',
+ markers,
+ );
- // fallback when event is not preset, ts < 4.0.5
- if (!sandboxInstance.monaco.editor.onDidChangeMarkers) {
- updateMarkers();
+ // fallback when event is not preset, ts < 4.0.5
+ if (!sandboxInstance.monaco.editor.onDidChangeMarkers) {
+ updateMarkers();
+ }
+ } catch (e) {
+ onMarkersChange(e as Error);
}
onEsASTChange(webLinter.storedAST);
diff --git a/packages/website/src/components/editor/types.ts b/packages/website/src/components/editor/types.ts
index 7b904b4bf5f8..fd7909460698 100644
--- a/packages/website/src/components/editor/types.ts
+++ b/packages/website/src/components/editor/types.ts
@@ -11,6 +11,6 @@ export interface CommonEditorProps extends ConfigModel {
readonly onTsASTChange: (value: undefined | SourceFile) => void;
readonly onEsASTChange: (value: undefined | TSESTree.Program) => void;
readonly onScopeChange: (value: undefined | Record) => void;
- readonly onMarkersChange: (value: ErrorGroup[]) => void;
+ readonly onMarkersChange: (value: ErrorGroup[] | Error) => void;
readonly onSelect: (position: Monaco.Position | null) => void;
}
pFad - Phonifier reborn
Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy