Comments (8)
I tried to fix this issue! See #9121.
Below is a screenshot of the result.
from typescript-eslint.
Hi @fisker!
I updated the PR to find a new way to do this because my original suggestion was unacceptable, and the new way I found was to modify setExternalModuleIndicator
.
The reason I initially thought it was inappropriate to modify setExternalModuleIndicator
was because I was concerned that it would be too difficult to design a new function based on the behavior of the default(but we didn't have to), and that it would be too dependent on external modules.
However, while analyzing the typesciprt code to find a new way, I found that it is very easy to create an externalModuleIndicator
that simply returns true
unconditionally based on the file extension, and I also found cases where the same thing was done in the typescript internal code.
See PR's comment for more details.
from typescript-eslint.
Editing the title because it took me a moment to figure this out. 😄
from typescript-eslint.
Uh oh! @goldentrash, the image you shared is missing helpful alt text. Check #9101 (comment).
Alt text is an invisible description that helps screen readers describe images to blind or low-vision users. If you are using markdown to display images, add your alt text inside the brackets of the markdown image.
Learn more about alt text at Basic writing and formatting syntax: images on GitHub Docs.
🤖 Beep boop! This comment was added automatically by github/accessibility-alt-text-bot.
from typescript-eslint.
In /tyscript-estree/src/convert.ts/Converter/convertNode
, modifying sourceType
when it is case SyntaxKind.SourceFile
does not make sense, below is the detail.
I tried modifying the sourceFile in convertNode
with extension === ts.Extension.Mjs || extension === ts.Extension.Mts
, but only the AST root (SourceFile) is changed, not the multiple child Nodes.
It appears that before convertNode
is called, the ts AST is fully constructed via ts.createSourceFile
and then changed to the estree AST via convertNode
.
from typescript-eslint.
In /tyscript-estree/src/create-program/createSourceFile.ts/createSourceFile
, adjusting setExternalModuleIndicator
, parameter of the ts.createSourceFile
, doesn't make sense, below is the detail.
First, I checked how typescript's default setExternalModuleIndicator
works.
- Traverses all expressions in the source code.
- Find ESM expressions like
export
. - Returns that Node.
- If no nodes were found, it returns the metadata node of the SourceFile.
The default setExternalModuleIndicator
is inappropriate because the intent is to parse ESM files as ESM, even if they don't have an ESM expression like export
.
However, I think it would be difficult to create a proper metadata node and insert it into the SourceFile
, and it would rely too strongly on an external module (typescript).
from typescript-eslint.
In /tyscript-estree/src/create-program/createSourceFile.ts/createSourceFile
, adjusting impliedNodeFormat
, parameter of the ts.createSourceFile
, doesn't work, below is the detail.
The Interface annotation says "Controls the format the file is detected as", so I was expecting that, but modifying the impliedNodeFormat
didn't achieve the desired result. It seems to be a parameter related to js Emit, not AST construction.
from typescript-eslint.
@goldentrash Thanks for looking into this.
I saw there is a Sorry missed #9101 (comment)setExternalModuleIndicator
option in typescript
package, is it going to help?
from typescript-eslint.
Related Issues (20)
- projectService / EXPERIMENTAL_useProjectService gives TS error if not boolean on v8 alpha / v7 HOT 1
- Docs: add an FAQ section about eslint TIMING/`--stats` and type-aware rules being misleading HOT 1
- Bug: `disabled-type-checked` config does not disable project service
- Enhancement: `no-misused-promises` should not flag functions whose contents are wrapped in `try`/`catch` HOT 2
- Base rule extension: nonblock-statement-body-position HOT 1
- Enhancement(typescript-estree): expose ProjectService logs through plugin HOT 2
- Website: Playground is currently broken HOT 2
- Docs: Release note of v7.12.0 contains critical misleading typo HOT 2
- Bug: `[email protected]` has TS error HOT 1
- Bug(website): React key error on internal pages of website
- Rule proposal: disallow comparing non-numeric values with >, < operators HOT 12
- Bug: no-unused-vars with for await...of loops HOT 2
- Enhancement: `no-floating-promises` - don't trigger on browser event handlers HOT 2
- Bug: [promise-function-async] Incompatibility with new async React types HOT 4
- Feature request: Ship ESM version of `@typescript-eslint/typescript-estree` HOT 4
- Bug: single run mode breaks with fixers HOT 3
- Repo: v8 failing to publish: Cannot find module 'tools/release/changelog-renderer' HOT 1
- Bug: Parsers fails to cache ts.program HOT 5
- Bug: packages incorrectly publishes `.js.map` breaking stack traces HOT 2
- Bug: no-extraneous-class triggered on abstract class that does not contain any static methods HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from typescript-eslint.