From 64a2edea9d2e3100969492f27faaa9cdf91ab8b7 Mon Sep 17 00:00:00 2001 From: Danilo Woznica Date: Mon, 23 May 2022 17:29:15 +0100 Subject: [PATCH] fix(eslint): exclude parsing errors (#4673) --- beta/src/components/MDX/Sandpack/Preview.tsx | 2 +- beta/src/components/MDX/Sandpack/runESLint.tsx | 7 ++++--- beta/src/components/MDX/Sandpack/useSandpackLint.tsx | 9 +++++---- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/beta/src/components/MDX/Sandpack/Preview.tsx b/beta/src/components/MDX/Sandpack/Preview.tsx index d0836c9cf..17c86fabf 100644 --- a/beta/src/components/MDX/Sandpack/Preview.tsx +++ b/beta/src/components/MDX/Sandpack/Preview.tsx @@ -7,7 +7,7 @@ import * as React from 'react'; import {useSandpack, LoadingOverlay} from '@codesandbox/sandpack-react'; import cn from 'classnames'; import {Error} from './Error'; -import type {LintDiagnostic} from './utils'; +import type {LintDiagnostic} from './useSandpackLint'; const generateRandomId = (): string => Math.floor(Math.random() * 10000).toString(); diff --git a/beta/src/components/MDX/Sandpack/runESLint.tsx b/beta/src/components/MDX/Sandpack/runESLint.tsx index 8f1ae4924..e90209578 100644 --- a/beta/src/components/MDX/Sandpack/runESLint.tsx +++ b/beta/src/components/MDX/Sandpack/runESLint.tsx @@ -41,7 +41,7 @@ const options = { export const runESLint = ( doc: Text -): {errors: any[]; codeMirrorPayload: Diagnostic[]} => { +): {errors: any[]; codeMirrorErrors: Diagnostic[]} => { const codeString = doc.toString(); const errors = linter.verify(codeString, options) as any[]; @@ -50,7 +50,7 @@ export const runESLint = ( 2: 'error', }; - const codeMirrorPayload = errors + const codeMirrorErrors = errors .map((error) => { if (!error) return undefined; @@ -65,6 +65,7 @@ export const runESLint = ( }); return { + ruleId: error.ruleId, from, to, severity: severity[error.severity], @@ -74,7 +75,7 @@ export const runESLint = ( .filter(Boolean) as Diagnostic[]; return { - codeMirrorPayload, + codeMirrorErrors, errors: errors.map((item) => { return { ...item, diff --git a/beta/src/components/MDX/Sandpack/useSandpackLint.tsx b/beta/src/components/MDX/Sandpack/useSandpackLint.tsx index 7b095aa93..d9d50a6f1 100644 --- a/beta/src/components/MDX/Sandpack/useSandpackLint.tsx +++ b/beta/src/components/MDX/Sandpack/useSandpackLint.tsx @@ -25,10 +25,11 @@ export const useSandpackLint = () => { const onLint = linter(async (props: EditorView) => { const {runESLint} = await import('./runESLint'); const editorState = props.state.doc; - let {errors, codeMirrorPayload} = runESLint(editorState); - // Only show errors from rules, not parsing errors etc - setLintErrors(errors.filter((e) => !e.fatal)); - return codeMirrorPayload; + let {errors, codeMirrorErrors} = runESLint(editorState); + // Ignore parsing or internal linter errors. + const isReactRuleError = (error: any) => error.ruleId != null; + setLintErrors(errors.filter(isReactRuleError)); + return codeMirrorErrors.filter(isReactRuleError); }); return {lintErrors, lintExtensions: [onLint]};