Commit Graph

268 Commits

Author SHA1 Message Date
Nathan Shively-Sanders
72037a9796 Skip resolving files directly inside node_modules (#52809) 2023-05-11 08:16:17 -07:00
Sheetal Nandi
8b825f7aaa Handle module node found error reporting in incremental and watch scneario (#54115) 2023-05-09 13:42:26 -07:00
Sheetal Nandi
ddd5084659 Add resolveLibrary method on hosts and store resolvedLibraries in program so that resolutions can be reused (#53877) 2023-04-20 13:50:22 -07:00
Sheetal Nandi
53d378720a When installing unrelated package inside scoped packages dont invalidate resolutions from everything in the scoped package (#53873) 2023-04-17 12:37:32 -07:00
Jake Bailey
ac55b297b7 Upgrade "boolean-trivia" lint to new "argument-trivia" lint that uses type info, has quick fixes, etc. (#53002) 2023-03-23 16:26:39 -07:00
Andrew Branch
7009c76d00 Support wildcard exports in tsconfig lookup (#53443) 2023-03-22 15:21:50 -07:00
Jake Bailey
a727ca1571 Make perfLogger potentially undefined rather than using a noop logger (#53229) 2023-03-15 15:58:26 -07:00
Sheetal Nandi
46d70d79cd When resolving type reference from custom typeRoot localtion use mangled scope name if the package is scoped name (#53166) 2023-03-10 09:58:41 -08:00
Sheetal Nandi
9c5b09cd21 Updates to type reference directive resolution and module resolution when failed (#51715) 2023-03-01 10:57:47 -08:00
Jake Bailey
6b75ce23ce Completely remove Push type (#52133) 2023-03-01 09:34:59 -08:00
Andrew Branch
e9868e96e8 --moduleResolution bundler: Require ESM for module and remove node from hard-coded conditions (#52940) 2023-02-24 15:49:08 -08:00
Andrew Branch
7bfe6ac49a Make traces where #50762 happens machine analyzable (#52602) 2023-02-06 11:31:07 -08:00
Andrew Branch
0bf99914e7 Make emitModuleKindIsNonNodeESM internal (#52599) 2023-02-06 08:44:58 -08:00
Jake Bailey
2a8436c529 Use eslint-plugin-simple-import-sort (#52090) 2023-02-02 14:36:21 -08:00
Sheetal Nandi
ab5067bd43 Always respect preserveSymlinks (#51842) 2023-02-02 12:37:35 -08:00
Stéphane Roucheray
41edecd26d Fix typo in diagnostic messages (#52465) 2023-01-27 11:44:12 -08:00
Andrew Branch
5e8bf480e4 Fix auto-imports with --moduleResolution bundler and customConditions (#52423) 2023-01-26 09:44:07 -08:00
Andrew Branch
436833aba1 Allow allowImportingTsExtensions to be set in any module resolution mode (#52230) 2023-01-17 15:13:17 -08:00
Andrew Branch
3e9703f126 Add additional diagnostic for packages that only resolve under non-exports-respecting modes (#52173) 2023-01-12 16:30:35 -08:00
Andrew Branch
14b0d6d4bf Fix nested package json lookup in modes that respect package.json exports (#51995) 2023-01-10 16:18:26 -08:00
Jake Bailey
b3eca6883c Suppress resolvedUsingTsExtension during loadModuleFromDirectory (#52189) 2023-01-10 16:05:44 -08:00
Andrew Branch
ec9f6a428b Ensure self-name resolution uses same extension priorities as external imports (#52185) 2023-01-10 13:57:50 -08:00
Wesley Wigham
89e928e8b4 Add --allowArbitraryExtensions, a flag for allowing arbitrary extensions on import paths (#51435) 2023-01-09 17:12:42 -08:00
Oleksandr T
5951ee9cff feat(48665): tsconfig "extends" field ignores "exports" field of source package (#50955)
* feat(48665): resolve configs from the exports field of the source package

* add missed property

* rename loadFileName to loadFileNameFromPackageJsonField

* Apply suggestions from code review

Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>

Co-authored-by: Andrew Branch <andrewbranch@users.noreply.github.com>
Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>
2022-12-19 16:40:12 -08:00
Andrew Branch
e0bfac531b Rename module resolution option node to node10 (preserving backward-compatible alias) (#51901)
* Rename `node` to `node10` (preserving alias)

* Revert dogfooding change because of LKG

* Update baselines
2022-12-15 10:07:33 -08:00
Andrew Branch
a5dde88dce --moduleResolution bundler (formerly known as hybrid) (#51669)
* WIP

* Add extension error back unless noEmit is set

* Add non-relative tests

* Add error for importing from declaration file

* Update unit test

* Add explicit flag for importing from .ts extensions

* Add module specifier resolution changes

* Add auto-import tests

* Disallow relative imports into node_modules

* Ensure auto-imports don’t suggest ./node_modules;

* Test a non-portable declaration emit issue

* Test auto-importing TSX file

* Update path completions

* Fix lint due to merge

* Remove minimal-specific stuff

* Remove minimal tests

* Update unit tests

* Add options

* Add customConditions option

* Add first tests

* CJS constructs are not allowed

* Add another test

* Fix extension adding/replacing priority

* Update test to reflect the choice not to block on unrecognized extensions

* Add auto-imports and string completions tests

* Revamp string completions ending preferences

* Comment test

* Auto-imports of declaration files cannot use .ts extension

* Have declaration file auto imports default to extensionless instead

* Add test for custom conditions

* Fix indentation

* Add baseline showing resolvePackageJsonImports/Exports compatibility

* Fix test and prevent CJS require from resolving

* Update unit test baselines

* Fix bad merge conflict resolution

* Make resolvedUsingTsExtension optional

* Update missed baselines

* Revert now-unnecessary API implementation changes

* Clean up

* Update baselines to es5 emit

* Rename to `bundler`
2022-12-13 13:35:16 -08:00
Sheetal Nandi
9d7df99414 Fix isExternalLibraryImport for classic resolution (#51840) 2022-12-09 14:44:35 -08:00
Sheetal Nandi
38f33ade06 Use non relative name cache for type reference resolutions and API updates (#51732)
* Make the non relative name resolution cache generic

* Add cache for non relative type reference resolution

* Add getter only methods so we can use these in future for sharing resolutions across the projects

* Mark existing non relative module name cache getOrCreate as deprecated

* Prefer getters for getting directory results
2022-12-06 14:22:03 -08:00
Sheetal Nandi
9e845d2248 Api cleanup for Module and Type Reference directive resolution (#51546)
* Refactoring so CacheWithRedirects has Key and Value type parameters

* ModuleResolutionCache or TypeRefDirectiveCache will look in directory before solving, so ResolutionCache doesnt need this check

* Test showing module resolution is not shared because resolution cache doesnt update own options

* Enable traceResolution on some of the project reference tests

* Simplify CacheWithRedirects and ensure the options are set in all common scenarios so cache can be shared between redirects

* Make failedlookup etc optional in ResolvedModule/TypeRefefWithFailedLookupLocations
Also make accidental public failed lookup internal

* Add new API for module and type ref resolution

* Store auto type reference resolutions

* Modify test to show how using program partially doesnt report resolution diagnostics

* Ensure that resolution diagnostics are reported in filePreocessingDiagnostics so they can be reused when program is reused

* Some cleanup

* Remove the newly added ReoslutionInfo in favor of new APIs

* update
2022-12-05 11:56:33 -08:00
Sheetal Nandi
7b7f6a75ea Code refactoring for module resolution api (#51675)
* Refactoring so CacheWithRedirects has Key and Value type parameters

* ModuleResolutionCache or TypeRefDirectiveCache will look in directory before solving, so ResolutionCache doesnt need this check

* Test showing module resolution is not shared because resolution cache doesnt update own options

* Enable traceResolution on some of the project reference tests

* Simplify CacheWithRedirects and ensure the options are set in all common scenarios so cache can be shared between redirects
2022-12-01 10:17:58 -08:00
Sheetal Nandi
9f93c6717d Dont calculate version paths proactively as they may not be needed (#51593) 2022-11-29 12:19:44 -08:00
Jake Bailey
00dc0b6674 Flip imports to case insensitive sorting (#51579) 2022-11-17 15:35:28 -08:00
Jake Bailey
2d2a4343b8 Reformat imports to be one identifier per line (#51565) 2022-11-17 13:42:18 -08:00
Andrew Branch
3fcd1b51a1 Refactor module resolution Extensions, fix lookup priorities (#51471)
* Refactor `Extensions`, fix lookup priorities

* Update baselines

* Clean up

* Temporarily apply same fix to `node` for testing

* Revert ancestor node_modules lookups back to two passes

* Revert "Temporarily apply same fix to `node` for testing"

This reverts commit 4014f3005a.

* Update baselines

* Add new test for node_modules searching behavior

* Update new baseline
2022-11-15 14:18:11 -08:00
Jake Bailey
fbdf00ce12 Undo accidental style changes from Map/Set PR (#51529) 2022-11-14 14:52:00 -08:00
Sheetal Nandi
c5aea89230 Add alias ResolutionMode for ModuleKind.ESNext | ModuleKind.CommonJs | undefined (#51482)
* Add alias ResolutionMode for ModuleKind.ESNext | ModuleKind.CommonJs | undefined

* ResolutionMode | undefined = ResolutionMode

* More
2022-11-10 16:47:46 -08:00
Jake Bailey
9f64a3a58c Remove ts.{Map,Set,ESMap,Iterator} and associated types (#51439) 2022-11-09 15:06:31 -08:00
Sheetal Nandi
48aebcdcdb TypeReference directive reuse (#49750) 2022-11-07 15:15:11 -08:00
Jake Bailey
c65142244c Add dts bundling
This adds a "small" d.ts bundler script. This script is very basic,
using Node printing to produce its output. Generally speaking, this is
inadvisable as it completely disregards name shadowing, globals, etc.
However, in our case, we don't care about the globals, and we can opt to
restructure our codebase in order to avoid conflict, which we largely
had to do anyway when we were namespaces and everything was in scope.
2022-11-07 13:35:48 -08:00
Jake Bailey
d12116d8da Fix all internal JSDoc comments
If these are regular comments, then they won't appear in our d.ts files.
But, now we are relying on an external d.ts bundler to produce our final
merged, so they need to be present in the "input" d.ts files, meaning
they have to be JSDoc comments.

These comments only work today because all of our builds load their TS
files from scratch, so they see the actual source files and their
non-JSDoc comments.

The comments also need to be attached to a declaration, not floating,
otherwise they won't be used by api-extractor, so move them if needed.
2022-11-07 13:34:44 -08:00
Jake Bailey
07758c08ab Generated module conversion step - inlineImports
This step converts as many explicit accesses as possible in favor of direct imports from the modules in which things were declared. This restores the code (as much as possible) back to how it looked originally before the explicitify step, e.g. instead of "ts.Node" and "ts.Symbol", we have just "Node" and "Symbol".
2022-11-07 13:33:07 -08:00
Jake Bailey
b6c0538826 Generated module conversion step - stripNamespaces
This step converts each file into an exported module by hoisting the namespace bodies into the global scope and transferring internal markers down onto declarations as needed.

The namespaces are reconstructed as "barrel"-style modules, which are identical to the old namespace objects in structure. These reconstructed namespaces are then imported in the newly module-ified files, making existing expressions like "ts." valid.
2022-11-07 13:32:03 -08:00
Jake Bailey
9a0b85ce2a Generated module conversion step - explicitify
This step makes all implicit namespace accesses explicit, e.g. "Node" turns into "ts.Node".
2022-11-07 13:29:05 -08:00
Jake Bailey
94724a8c2e Generated module conversion step - unindent
This step makes further commits look clearer by unindenting all of the top level namespaces preemptively.
2022-11-07 13:28:13 -08:00
Sheetal Nandi
7b0df1ff99 Pass in information for the module name resolution when resolutions from file are partially used (#49738)
* Test showing wrong resolution is returned because of incorrect mode calculation
Test for #48229

* Pass in information for the module name resolution when resolutions from file are partially used
Fixes #48229

* Make the resolution info complete
2022-11-07 11:51:04 -08:00
Andrew Branch
f6cf51053e Add more tracing to node16/nodenext resolution (#51168)
* Add more tracing to node16/nodenext resolution

* Update baselines after diagnostic change

* Trace non-matching conditions
2022-10-14 09:42:06 -07:00
Andrew Branch
221cf55a21 package.json exports should have priority over typesVersions (#50890)
* package.json `exports` should have priority over `typesVersions`

* Test some versioned conditions too
2022-09-21 17:21:51 -07:00
Sheetal Nandi
6b890f93c4 Handle more places where package direcroy is converted to canonical file path (#50740)
* Add test for node16 resolution with package json lookup making casing incorrect

* Handle more places where package direcroy is converted to canonical file path
2022-09-12 15:11:35 -07:00
Sheetal Nandi
298309271b Do not canonicalize the file names when getting absolute paths during nodenext resolution (#50557)
* Add test to show how scope messes with casing

* Do not canonicalize the file names when getting absolute paths
Fixes #50544

* Unnecessary exports

* Add test for self referencing package

* Fix self reference package with casing
2022-09-01 06:48:41 -07:00
Sheetal Nandi
1f0f7c8246 If resolvedFileName differs with realPath only in casing use the resolvedFileName before realpath so that errors can be reported with forceConsistentCasingInFileNames (#50364)
* Add tests when realpath supresses the casing error

* Fix when real path results in value that differs only in case
Fixes #49470

* Comment
2022-08-18 14:51:46 -07:00