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