diff --git a/packages/website/src/components/editor/LoadedEditor.tsx b/packages/website/src/components/editor/LoadedEditor.tsx index 6dab67a39278..da02b4e9352d 100644 --- a/packages/website/src/components/editor/LoadedEditor.tsx +++ b/packages/website/src/components/editor/LoadedEditor.tsx @@ -13,7 +13,11 @@ import { } from '../lib/jsonSchema'; import { parseTSConfig, tryParseEslintModule } from '../lib/parseConfig'; import type { LintCodeAction } from '../linter/utils'; -import { parseLintResults, parseMarkers } from '../linter/utils'; +import { + createFileName, + parseLintResults, + parseMarkers, +} from '../linter/utils'; import type { TabType } from '../types'; import { createProvideCodeActions } from './createProvideCodeActions'; import type { CommonEditorProps } from './types'; @@ -89,7 +93,7 @@ export const LoadedEditor: React.FC = ({ }, [webLinter, sourceType]); useEffect(() => { - const newPath = `/input${fileType}`; + const newPath = createFileName(fileType); if (tabs.code.uri.path !== newPath) { const code = tabs.code.getValue(); const newModel = monaco.editor.createModel( @@ -240,7 +244,7 @@ export const LoadedEditor: React.FC = ({ system.watchFile('/.eslintrc', filename => { onChange({ eslintrc: system.readFile(filename) }); }), - system.watchFile('/input.*', filename => { + system.watchFile('/{file,react}.*', filename => { onChange({ code: system.readFile(filename) }); }), ]; diff --git a/packages/website/src/components/linter/bridge.ts b/packages/website/src/components/linter/bridge.ts index a553b7d7f283..ef5892837ac8 100644 --- a/packages/website/src/components/linter/bridge.ts +++ b/packages/website/src/components/linter/bridge.ts @@ -4,7 +4,7 @@ import type * as ts from 'typescript'; import { debounce } from '../lib/debounce'; import type { ConfigModel } from '../types'; import type { PlaygroundSystem } from './types'; -import { getPathRegExp } from './utils'; +import { createFileName, getPathRegExp } from './utils'; export function createFileSystem( config: Pick, @@ -13,7 +13,7 @@ export function createFileSystem( const files = new Map(); files.set(`/.eslintrc`, config.eslintrc); files.set(`/tsconfig.json`, config.tsconfig); - files.set(`/input${config.fileType}`, config.code); + files.set(createFileName(config.fileType), config.code); const fileWatcherCallbacks = new Map>(); diff --git a/packages/website/src/components/linter/createLinter.ts b/packages/website/src/components/linter/createLinter.ts index 9ce38ce032b3..770e5fb429f7 100644 --- a/packages/website/src/components/linter/createLinter.ts +++ b/packages/website/src/components/linter/createLinter.ts @@ -164,10 +164,10 @@ export function createLinter( }; const triggerLintAll = (): void => { - system.searchFiles('/input.*').forEach(triggerLint); + system.searchFiles('/{file,react}.*').forEach(triggerLint); }; - system.watchFile('/input.*', triggerLint); + system.watchFile('/{file,react}.*', triggerLint); system.watchFile('/.eslintrc', filename => { applyEslintConfig(filename); triggerLintAll(); diff --git a/packages/website/src/components/linter/createParser.ts b/packages/website/src/components/linter/createParser.ts index c8348c77da87..6848dea658c5 100644 --- a/packages/website/src/components/linter/createParser.ts +++ b/packages/website/src/components/linter/createParser.ts @@ -10,6 +10,7 @@ import type { UpdateModel, WebLinterModule, } from './types'; +import { createFileName } from './utils'; export function createParser( system: PlaygroundSystem, @@ -43,7 +44,7 @@ export function createParser( text: string, options: ParserOptions = {}, ): Parser.ParseResult => { - const filePath = options.filePath ?? '/input.ts'; + const filePath = options.filePath ?? createFileName('.ts'); // if text is empty use empty line to avoid error const code = text || '\n'; diff --git a/packages/website/src/components/linter/utils.ts b/packages/website/src/components/linter/utils.ts index 1d44a322bc4a..ea99c7cfee1a 100644 --- a/packages/website/src/components/linter/utils.ts +++ b/packages/website/src/components/linter/utils.ts @@ -48,6 +48,13 @@ export function createEditOperation( }; } +/** + * @see https://typescript-eslint.io/packages/rule-tester/#type-aware-testing + */ +export function createFileName(extension = '.ts'): string { + return `/${extension.endsWith('sx') ? 'react' : 'file'}.${extension}`; +} + function normalizeCode(code: Monaco.editor.IMarker['code']): { value: string; target?: string; 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