Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Module conversion work #46744

Copy link
Copy link
@elibarzilay

Description

@elibarzilay
Issue body actions

This issue is to keep track of the module conversion work, which is ongoing at #46567:

  • Update the old conversion script to working state.
    Done, keep track of the code in a new fork to working state.
  • Script the generation so it can be continuously rebased on the tip: done in the run-transform script.
  • Make the tests run, similar to 1c3944343ee8 in Wesley's PR: included in the current PR, and generated via the script.
  • Fix treatment of newlines, mainly a bug that changes CRLF to LF if running on linux.
  • Make the diff more readable
    • Pre-script that unindents the code in a separate commit, which avoids a huge mass of mostly no-op changes.
    • Drop the many empty-line removals from the conversion diff. Done by another script that filters the resulting patch before applying it.
    • Possibly re-implement the conversion using ts-morph to make it more well-behaved wrt unnecessary changes (adding/removing newlines, still some comments get dropped, minor issues like changing ,s to ;s or dropping a suffix , in argument lists).
  • Bundle results
    • Decide on a bundler: most likely esbuild, since it fast enough to make multiple bundles (eg, for testing and for distributing) possible.
    • Need to decide how to use it:
      • Can run on the generated JS: will probably be sensitive to the generated format.
        Main problem: the modules are expressed indirectly which is more likely to cause problems.
      • A possibly better option is to run directly from the TS sources. This has a big issue of not dog-fooding tsc, but that could possibly still be used for testing (but see below).
    • Should also re-do the src/tsserverlibrary and src/typescriptServices stubs.
    • Some other files that need to be sorted out:
      • src/instrumenter (including src/loggedIO/tsconfig-tsc-instrumented.json)
      • src/services/exportAsModule.ts
  • Running the tests takes around 1.5x more time with the modules.
    • This might be resolved if running from a bundle, but if this and the actual bundles are done with esbuild then there's no dogfooding at all.
  • There are a few tests that still fail (12) -- should be resolved when there are bundles.
  • Make the parallel tests work. (This depends on the resolution of the above, since it's an issue with how the tests are implemented wrt the global describe binding.)
  • API extractor.
  • Make the linter happy.
  • Possibly a cleanup step, like getting rid of re-exporting modules
    for direct imports, and related (like *Impl.ts files).
Reactions are currently unavailable

Metadata

Metadata

Assignees

Labels

DiscussionIssues which may not have code impactIssues which may not have code impact

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions

    Morty Proxy This is a proxified and sanitized view of the page, visit original site.