-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
fix(website): acquired types are shown in the editor but not reflected in linting #11198
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(website): acquired types are shown in the editor but not reflected in linting #11198
Conversation
Thanks for the PR, @mdm317! typescript-eslint is a 100% community driven project, and we are incredibly grateful that you are contributing to that community. The core maintainers work on this in their personal time, so please understand that it may not be possible for them to review your work immediately. Thanks again! 🙏 Please, if you or your company is finding typescript-eslint valuable, help us sustain the project by sponsoring it transparently on https://opencollective.com/typescript-eslint. |
✅ Deploy Preview for typescript-eslint ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
View your CI Pipeline Execution ↗ for commit f9bd202.
☁️ Nx Cloud last updated this comment at |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #11198 +/- ##
=======================================
Coverage 90.91% 90.92%
=======================================
Files 499 499
Lines 50809 50847 +38
Branches 8369 8384 +15
=======================================
+ Hits 46195 46233 +38
Misses 4599 4599
Partials 15 15
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK! Sorry this PR's review took so long @mdm317. It's quite a tricky change and we had a hard time getting it the time it deserved. But I took a deep dive today and all the comments make sense + were very helpful. Thanks so much for fixing this tricky bug! ❤️
files.set(`/input${config.fileType}`, config.code); | ||
if (config.code !== '') { | ||
files.set(`/input${config.fileType}`, config.code); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[Question] Why wouldn't we want to set ''
for code? What if the user explicitly puts in a blank file?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The above code is executed when the playground is first loaded.
return vfs.createVirtualTypeScriptEnvironment( system, [...registeredFiles], window.ts, compilerOptions,
When we set ''
for code in the system
, a "File '/input.tsx' not found."
error occurs in createVirtualTypeScriptEnvironment
If the above code is missing, the playground will not load successfully when the user clicks the playground button in this page
Therefore, we should avoid setting ''
fo code in the system
.
// if text is empty use empty line to avoid error const code = text || '\n';
Also, when the user changes the code to ''
, this code prevents the code
field from being set to ''
in the system
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice, that makes sense. Thanks!
PR Checklist
Overview
I think this issue occurs because of differences in the properties used when creating a ts.Program between Monaco and TypeScript-VFS.
The modules like monaco, typescript, and typescript-website are scattered, so it’s a bit confusing
1. create
ts.program
by monaceWhen monaco-editor creating this code will excute link
private _languageService = ts.createLanguageService(this);
createLanguageService in typescript. link
And filenames output by
getScriptFileNames
will be added in the code below.defaults.addExtraLib(code, path)
in typescript-website =>defaults.addExtraLib(code, path)
in monacoSo, when creating a ts.Program, the rootNames array includes some libraries, such as Node or React.
2. create
ts.program
by TypeScript-VFS.Unlike case 1 above,We don't pass the name of a node_modules folder in fileNames.
In the sentence above, I modified it so that rootNames are provided when creating the
ts.Program
for both the Editor and LintingTesting