Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ name = "resolver"

[dependencies]
cfg-if = "1"
fast-glob = "1.0.0"
indexmap = { version = "2", features = ["serde"] }
json-strip-comments = "3"
once_cell = "1" # Use `std::sync::OnceLock::get_or_try_init` when it is stable.
Expand Down
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/absolute_patterns/excluded/file.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const excluded = "excluded";
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/absolute_patterns/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const index = "index";
4 changes: 4 additions & 0 deletions fixtures/tsconfig/cases/absolute_patterns/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"include": ["src/**/*.ts"],
"exclude": ["excluded"]
}
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/case_sensitivity/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const upper = "upper";
3 changes: 3 additions & 0 deletions fixtures/tsconfig/cases/case_sensitivity/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"include": ["src/**/*.ts"]
}
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/character_set_patterns/App.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const app2 = "app2";
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/character_set_patterns/Button.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const button2 = "button2";
3 changes: 3 additions & 0 deletions fixtures/tsconfig/cases/character_set_patterns/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"include": ["*.ts"]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const component = "component";
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/complex_patterns/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const index = "index";
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const spec = "spec";
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const test = "test";
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const utils = "utils";
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const helper = "helper";
3 changes: 3 additions & 0 deletions fixtures/tsconfig/cases/complex_patterns/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"include": ["src/**/test/**/*.spec.ts"]
}
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/configdir_syntax/dist/output.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
// Built file
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/configdir_syntax/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const index = 'index';
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/configdir_syntax/log.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const log = console.log.bind(console);
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/configdir_syntax/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const src = 'src';
9 changes: 9 additions & 0 deletions fixtures/tsconfig/cases/configdir_syntax/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"include": ["${configDir}/*.ts"],
"exclude": ["dist"],
"compilerOptions": {
"paths": {
"~/*": ["${configDir}/*"]
}
}
}
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/empty_files_no_include/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const index = 'index';
3 changes: 3 additions & 0 deletions fixtures/tsconfig/cases/empty_files_no_include/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"files": []
}
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/empty_include/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const index = 'index';
3 changes: 3 additions & 0 deletions fixtures/tsconfig/cases/empty_include/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"include": []
}
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/exclude_basic/node_modules/foo.ts
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this file is also not used and can be removed.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/exclude_basic/src/helper.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const helper = 'helper';
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/exclude_basic/src/index.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const test = 'test';
3 changes: 3 additions & 0 deletions fixtures/tsconfig/cases/exclude_basic/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { helper } from '@/helper';

export { helper };
10 changes: 10 additions & 0 deletions fixtures/tsconfig/cases/exclude_basic/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"include": ["**/*.ts"],
"exclude": ["**/*.test.ts"],
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
}
}
}
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/extends_paths/my-app/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const index = "index";
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/extends_paths/my-app/message.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const message = "message";
4 changes: 4 additions & 0 deletions fixtures/tsconfig/cases/extends_paths/my-app/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"extends": "../tsconfig.json",
"include": ["./"]
}
9 changes: 9 additions & 0 deletions fixtures/tsconfig/cases/extends_paths/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"compilerOptions": {
"paths": {
"@/*": ["./my-app/*"]
}
},
"include": [],
"references": [{ "path": "./my-app/" }]
}
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/files_priority/other.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const other = 'other';
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/files_priority/test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const test = 'test';
4 changes: 4 additions & 0 deletions fixtures/tsconfig/cases/files_priority/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"files": ["test.ts"],
"exclude": ["test.ts"]
}
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/globstar_patterns/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const js = 'js';
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/globstar_patterns/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const index = 'index';
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/globstar_patterns/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const src = 'src';
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const file = 'file';
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const helper = 'helper';
3 changes: 3 additions & 0 deletions fixtures/tsconfig/cases/globstar_patterns/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"include": ["**/*.ts"]
}
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/include_basic/dist/output.js
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this file is not used and can be removed.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
// Built file
3 changes: 3 additions & 0 deletions fixtures/tsconfig/cases/include_basic/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { helper } from '@/utils/helper';

export { helper };
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/include_basic/src/utils/helper.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const helper = 'helper';
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/include_basic/test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const test = 'test';
9 changes: 9 additions & 0 deletions fixtures/tsconfig/cases/include_basic/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"include": ["src/**/*.ts"],
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"include": ["**/*.ts"],
"exclude": ["**/*.test.ts"]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const utils = 'utils';
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const test = 'test';
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const index = 'index';
4 changes: 4 additions & 0 deletions fixtures/tsconfig/cases/include_exclude_extends/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"extends": "./base-tsconfig.json",
"include": ["src/**/*.ts"]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
// dist
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const pkgA = "pkgA";
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const test = "test";
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const pkgB = "pkgB";
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const pkgC = "pkgC";
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/monorepo_patterns/shared/utils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const shared = "shared";
3 changes: 3 additions & 0 deletions fixtures/tsconfig/cases/monorepo_patterns/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"include": ["packages/*/src/**/*"]
}
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/outdir_exclude/dist/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
// Declaration
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/outdir_exclude/dist/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
// Built
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/outdir_exclude/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const index = "index";
6 changes: 6 additions & 0 deletions fixtures/tsconfig/cases/outdir_exclude/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"include": ["**/*.ts", "**/*.js", "**/*.d.ts"],
"compilerOptions": {
"outDir": "dist"
}
}
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/paths_outside_root/my-app/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const index = "index";
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"exclude": ["dist"],
"compilerOptions": {
"paths": {
"~utils/*": ["../my-utils/*"]
}
}
}
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/paths_outside_root/my-utils/log.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const log = console.log.bind(console);
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/wildcard_patterns/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const root = "root";
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/wildcard_patterns/src/helper.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const helper = "helper";
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/wildcard_patterns/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const index = "index";
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const nested = "nested";
3 changes: 3 additions & 0 deletions fixtures/tsconfig/cases/wildcard_patterns/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"include": ["src/*.ts"]
}
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/with_baseurl/dist/output.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
// Built file
4 changes: 4 additions & 0 deletions fixtures/tsconfig/cases/with_baseurl/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { log } from '~/log';
import { log as log2 } from 'log';

export { log, log2 };
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/with_baseurl/log.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const log = console.log.bind(console);
9 changes: 9 additions & 0 deletions fixtures/tsconfig/cases/with_baseurl/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"exclude": ["dist"],
"compilerOptions": {
"baseUrl": ".",
"paths": {
"~/*": ["./*"]
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const lib = 'lib';
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/without_baseurl/dist/output.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
// Built file
3 changes: 3 additions & 0 deletions fixtures/tsconfig/cases/without_baseurl/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { log } from './log';

export { log };
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const mod = 'mod';
1 change: 1 addition & 0 deletions fixtures/tsconfig/cases/without_baseurl/log.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const log = console.log.bind(console);

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions fixtures/tsconfig/cases/without_baseurl/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"exclude": ["dist"],
"compilerOptions": {
"paths": {
"~/*": ["./*"]
}
}
}
8 changes: 8 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1479,6 +1479,14 @@ impl<Fs: FileSystem> ResolverGeneric<Fs> {
}
};

// Check if the importer file matches the tsconfig's include/exclude patterns
// Only check for actual files, not directories (directories are used when there's no specific importer)
// If the importer doesn't match, don't use this tsconfig's path mappings
let is_file = cached_path.meta(&self.cache.fs).is_some_and(|m| m.is_file);
if is_file && !tsconfig.matches_file(cached_path.path()) {
return Ok(None);
}
Comment on lines +1482 to +1488
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess this does not work for "Solution Style" tsconfigs, as we need to pick the referenced tsconfig that matches the include & exclude (can be done in a separate PR).


let paths = tsconfig.resolve(cached_path.path(), specifier);
for path in paths {
let resolved_path = self.cache.value(&path);
Expand Down
2 changes: 2 additions & 0 deletions src/tests/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ mod simple;
mod symlink;
mod tsconfig_discovery;
mod tsconfig_extends;
mod tsconfig_file_matcher;
mod tsconfig_include_exclude;
mod tsconfig_paths;
mod tsconfig_project_references;
#[cfg(target_os = "windows")]
Expand Down
Loading