GithubHelp home page GithubHelp logo

Comments (6)

goldentrash avatar goldentrash commented on June 3, 2024 2

I tried to fix this issue! See #9121.
Below is a screenshot of the result.

  • If the file is ESM
    result when ESM

  • If the file is not ESM
    result when not ESM

from typescript-eslint.

JoshuaKGoldberg avatar JoshuaKGoldberg commented on June 3, 2024

Editing the title because it took me a moment to figure this out. 😄

from typescript-eslint.

github-actions avatar github-actions commented on June 3, 2024

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.

goldentrash avatar goldentrash commented on June 3, 2024

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.

Screenshot of what I tried

from typescript-eslint.

goldentrash avatar goldentrash commented on June 3, 2024

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.

  1. Traverses all expressions in the source code.
  2. Find ESM expressions like export.
  3. Returns that Node.
  4. 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.

goldentrash avatar goldentrash commented on June 3, 2024

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.

screenshot of what I tried

from typescript-eslint.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.