Browse Source

fix(eslint): exclude parsing errors (#4673)

main
Danilo Woznica 3 years ago
committed by GitHub
parent
commit
64a2edea9d
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      beta/src/components/MDX/Sandpack/Preview.tsx
  2. 7
      beta/src/components/MDX/Sandpack/runESLint.tsx
  3. 9
      beta/src/components/MDX/Sandpack/useSandpackLint.tsx

2
beta/src/components/MDX/Sandpack/Preview.tsx

@ -7,7 +7,7 @@ import * as React from 'react';
import {useSandpack, LoadingOverlay} from '@codesandbox/sandpack-react'; import {useSandpack, LoadingOverlay} from '@codesandbox/sandpack-react';
import cn from 'classnames'; import cn from 'classnames';
import {Error} from './Error'; import {Error} from './Error';
import type {LintDiagnostic} from './utils'; import type {LintDiagnostic} from './useSandpackLint';
const generateRandomId = (): string => const generateRandomId = (): string =>
Math.floor(Math.random() * 10000).toString(); Math.floor(Math.random() * 10000).toString();

7
beta/src/components/MDX/Sandpack/runESLint.tsx

@ -41,7 +41,7 @@ const options = {
export const runESLint = ( export const runESLint = (
doc: Text doc: Text
): {errors: any[]; codeMirrorPayload: Diagnostic[]} => { ): {errors: any[]; codeMirrorErrors: Diagnostic[]} => {
const codeString = doc.toString(); const codeString = doc.toString();
const errors = linter.verify(codeString, options) as any[]; const errors = linter.verify(codeString, options) as any[];
@ -50,7 +50,7 @@ export const runESLint = (
2: 'error', 2: 'error',
}; };
const codeMirrorPayload = errors const codeMirrorErrors = errors
.map((error) => { .map((error) => {
if (!error) return undefined; if (!error) return undefined;
@ -65,6 +65,7 @@ export const runESLint = (
}); });
return { return {
ruleId: error.ruleId,
from, from,
to, to,
severity: severity[error.severity], severity: severity[error.severity],
@ -74,7 +75,7 @@ export const runESLint = (
.filter(Boolean) as Diagnostic[]; .filter(Boolean) as Diagnostic[];
return { return {
codeMirrorPayload, codeMirrorErrors,
errors: errors.map((item) => { errors: errors.map((item) => {
return { return {
...item, ...item,

9
beta/src/components/MDX/Sandpack/useSandpackLint.tsx

@ -25,10 +25,11 @@ export const useSandpackLint = () => {
const onLint = linter(async (props: EditorView) => { const onLint = linter(async (props: EditorView) => {
const {runESLint} = await import('./runESLint'); const {runESLint} = await import('./runESLint');
const editorState = props.state.doc; const editorState = props.state.doc;
let {errors, codeMirrorPayload} = runESLint(editorState); let {errors, codeMirrorErrors} = runESLint(editorState);
// Only show errors from rules, not parsing errors etc // Ignore parsing or internal linter errors.
setLintErrors(errors.filter((e) => !e.fatal)); const isReactRuleError = (error: any) => error.ruleId != null;
return codeMirrorPayload; setLintErrors(errors.filter(isReactRuleError));
return codeMirrorErrors.filter(isReactRuleError);
}); });
return {lintErrors, lintExtensions: [onLint]}; return {lintErrors, lintExtensions: [onLint]};

Loading…
Cancel
Save