* 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`
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".
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.
* feat(7481): add explicit type compatibility check with 'satisfies' expression
* Add failing test for lack of intersectioned contextual type
* Implement the behavior
* Add test corresponding to the 'if'
* Add test based on defined scenarios
* remove isExpression in favor of using type casting
* move tests from compiler to conformance folder
* update baseline
* add missing contextFlags argument
* use asserted type
* accept baseline
Co-authored-by: Ryan Cavanaugh <ryanca@microsoft.com>
* fix(49719): omit TS2301 error with enabled usedefineforclassfields
* show error for target lower than esnext with useddefineforclassfields enabled
* change target from esnext to es2022
* Add moduleDetection compiler flag to allow for changing how modules are parsed
The default setting is 'auto', where JSX containing files under react-jsx and react-jsxdev are
always parsed as modules, and esm-format files under module: node12+ are always parsed as modules,
in addition to the 'legacy' detection mode's conditions for other files. (Declaration files are exempt from
these new conditions)
The 'legacy' mode preserves TS's behavior prior to the introduction of this flag - a file is
parsed as a module if it contains an import, export, or import.meta expression.
In addition, there is a 'force' mode that forces all non-declaration files to be parsed as modules.
(Declaration files are still only modules if they contain a top-level import or export.)
This technically breaks the parser API, but it's kinda-sorta backwards compatible so long
as you don't need the functionality associated with more recent compiler flags.
* Fix post-merge lint
* Rename function
* Update default value documentation
* PR feedback
* Fix lint and typo
* Parse type-only import specifiers
* Add type-only export specifiers
* Update transform and emit
* Update checking
* Fix elision when combined with importsNotUsedAsValues=preserve
* Accept baselines
* Add test
* WIP auto imports updates
* First auto-imports test working
* More auto-import tests
* Fix auto imports of type-only exports
* Add test for promoting type-only import
* Sort import/export specifiers by type-onlyness
* Update completions for `import { type |`
* Update other completions tests
* Respect organize imports sorting when promoting type-only to regular while adding a specifier
* Fix comment mistakes
* Update src/services/codefixes/importFixes.ts
Co-authored-by: Daniel Rosenwasser <DanielRosenwasser@users.noreply.github.com>
* Rearrange some order of assignments in parser
* Split huge if statement
* Remove redundant check
* Update new transformer
* Fix import statement completions
* Fix type keyword completions good grief
* Fix last tests
Co-authored-by: Daniel Rosenwasser <DanielRosenwasser@users.noreply.github.com>
* Move most harness globals into namespaces
* Remove forward declaration from `createMapShim` and move all `Map` declarations into one file
* A small pile of more changes to get the harness transforming
* Fix emit for object rest on a module export
* Add tests for exports of empty object/array binding patterns
* Add delay for exec to ensure diff tool has enough time to start