From 81929767a9e440eaa730f4c76b932da7bbd9eed7 Mon Sep 17 00:00:00 2001 From: Carlo Corradini Date: Thu, 20 Feb 2025 11:25:39 +0100 Subject: [PATCH] fix: force tiniglobby to expand dot directories (#360) * fix: force tiniglobby to expand dot directories * chore: changeset * chore(deps): update tinyglobby to latest version --- .changeset/fast-parrots-applaud.md | 5 +++++ .changeset/forty-beans-tickle.md | 5 +++++ package.json | 5 ++++- src/index.ts | 13 ++++++++----- tests/dotInclude/.dot/index.ts | 18 ++++++++++++++++++ tests/dotInclude/.dot/module/module.d.ts | 1 + tests/dotInclude/.dot/module/package.json | 5 +++++ tests/dotInclude/.dot/subfolder/tsImportee.ts | 1 + .../dotInclude/.dot/subfolder/tsxImportee.tsx | 1 + tests/dotInclude/.dot/tsImportee.ts | 1 + tests/dotInclude/.dot/tsxImportee.tsx | 1 + tests/dotInclude/.eslintrc.cjs | 1 + tests/dotInclude/tsconfig.json | 11 +++++++++++ tests/dotPaths/.dot/module/module.d.ts | 1 + tests/dotPaths/.dot/module/package.json | 5 +++++ tests/dotPaths/.dot/subfolder/tsImportee.ts | 1 + tests/dotPaths/.dot/subfolder/tsxImportee.tsx | 1 + tests/dotPaths/.dot/tsImportee.ts | 1 + tests/dotPaths/.dot/tsxImportee.tsx | 1 + tests/dotPaths/.eslintrc.cjs | 1 + tests/dotPaths/index.ts | 18 ++++++++++++++++++ tests/dotPaths/tsconfig.json | 11 +++++++++++ tests/dotProject/.eslintrc.cjs | 8 ++++++++ .../packages/module-a/.dot/tsconfig.json | 11 +++++++++++ tests/dotProject/packages/module-a/index.ts | 15 +++++++++++++++ .../packages/module-a/subfolder/tsImportee.ts | 1 + .../module-a/subfolder/tsxImportee.tsx | 1 + .../dotProject/packages/module-a/tsImportee.ts | 1 + .../packages/module-a/tsxImportee.tsx | 1 + .../packages/module-b/.dot/tsconfig.json | 11 +++++++++++ tests/dotProject/packages/module-b/index.ts | 15 +++++++++++++++ .../packages/module-b/subfolder/tsImportee.ts | 1 + .../module-b/subfolder/tsxImportee.tsx | 1 + .../dotProject/packages/module-b/tsImportee.ts | 1 + .../packages/module-b/tsxImportee.tsx | 1 + yarn.lock | 10 +++++----- 36 files changed, 175 insertions(+), 11 deletions(-) create mode 100644 .changeset/fast-parrots-applaud.md create mode 100644 .changeset/forty-beans-tickle.md create mode 100644 tests/dotInclude/.dot/index.ts create mode 100644 tests/dotInclude/.dot/module/module.d.ts create mode 100644 tests/dotInclude/.dot/module/package.json create mode 100644 tests/dotInclude/.dot/subfolder/tsImportee.ts create mode 100644 tests/dotInclude/.dot/subfolder/tsxImportee.tsx create mode 100644 tests/dotInclude/.dot/tsImportee.ts create mode 100644 tests/dotInclude/.dot/tsxImportee.tsx create mode 100644 tests/dotInclude/.eslintrc.cjs create mode 100644 tests/dotInclude/tsconfig.json create mode 100644 tests/dotPaths/.dot/module/module.d.ts create mode 100644 tests/dotPaths/.dot/module/package.json create mode 100644 tests/dotPaths/.dot/subfolder/tsImportee.ts create mode 100644 tests/dotPaths/.dot/subfolder/tsxImportee.tsx create mode 100644 tests/dotPaths/.dot/tsImportee.ts create mode 100644 tests/dotPaths/.dot/tsxImportee.tsx create mode 100644 tests/dotPaths/.eslintrc.cjs create mode 100644 tests/dotPaths/index.ts create mode 100644 tests/dotPaths/tsconfig.json create mode 100644 tests/dotProject/.eslintrc.cjs create mode 100644 tests/dotProject/packages/module-a/.dot/tsconfig.json create mode 100644 tests/dotProject/packages/module-a/index.ts create mode 100644 tests/dotProject/packages/module-a/subfolder/tsImportee.ts create mode 100644 tests/dotProject/packages/module-a/subfolder/tsxImportee.tsx create mode 100644 tests/dotProject/packages/module-a/tsImportee.ts create mode 100644 tests/dotProject/packages/module-a/tsxImportee.tsx create mode 100644 tests/dotProject/packages/module-b/.dot/tsconfig.json create mode 100644 tests/dotProject/packages/module-b/index.ts create mode 100644 tests/dotProject/packages/module-b/subfolder/tsImportee.ts create mode 100644 tests/dotProject/packages/module-b/subfolder/tsxImportee.tsx create mode 100644 tests/dotProject/packages/module-b/tsImportee.ts create mode 100644 tests/dotProject/packages/module-b/tsxImportee.tsx diff --git a/.changeset/fast-parrots-applaud.md b/.changeset/fast-parrots-applaud.md new file mode 100644 index 0000000..c8fc6aa --- /dev/null +++ b/.changeset/fast-parrots-applaud.md @@ -0,0 +1,5 @@ +--- +'eslint-import-resolver-typescript': patch +--- + +Force tiniglobby to expand dot directories diff --git a/.changeset/forty-beans-tickle.md b/.changeset/forty-beans-tickle.md new file mode 100644 index 0000000..2adc127 --- /dev/null +++ b/.changeset/forty-beans-tickle.md @@ -0,0 +1,5 @@ +--- +'eslint-import-resolver-typescript': patch +--- + +Update tinyglobby to latest version diff --git a/package.json b/package.json index 6f1c982..50a5206 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,9 @@ "prepare": "simple-git-hooks", "release": "changeset publish", "test": "run-p 'test:*'", + "test:dotInclude": "eslint --ext ts,tsx tests/dotInclude --ignore-pattern \"!.dot\"", + "test:dotPaths": "eslint --ext ts,tsx tests/dotPaths --ignore-pattern \"!.dot\"", + "test:dotProject": "eslint --ext ts,tsx tests/dotProject --ignore-pattern \"!.dot\"", "test:importXResolverV3": "eslint --config=tests/importXResolverV3/eslint.config.js tests/importXResolverV3", "test:multipleEslintrcs": "eslint --ext ts,tsx tests/multipleEslintrcs", "test:multipleTsconfigs": "eslint --ext ts,tsx tests/multipleTsconfigs", @@ -82,7 +85,7 @@ "get-tsconfig": "^4.10.0", "is-bun-module": "^1.0.2", "stable-hash": "^0.0.4", - "tinyglobby": "^0.2.11" + "tinyglobby": "^0.2.12" }, "devDependencies": { "@1stg/eslint-config": "7.0.1", diff --git a/src/index.ts b/src/index.ts index bbd987c..bc92c25 100644 --- a/src/index.ts +++ b/src/index.ts @@ -402,9 +402,10 @@ function initMappers(options: InternalResolverOptions) { ...globSync( configPaths.filter(path => isDynamicPattern(path)), { + absolute: true, + dot: true, expandDirectories: false, ignore: defaultIgnore, - absolute: true, }, ), ]), @@ -438,12 +439,13 @@ function initMappers(options: InternalResolverOptions) { tsconfigResult.config.include === undefined ? // Include everything if no files or include options globSync(defaultInclude, { + absolute: true, + cwd: path.dirname(tsconfigResult.path), + dot: true, ignore: [ ...(tsconfigResult.config.exclude ?? []), ...defaultIgnore, ], - absolute: true, - cwd: path.dirname(tsconfigResult.path), }) : [ // https://www.typescriptlang.org/tsconfig/#files @@ -459,12 +461,13 @@ function initMappers(options: InternalResolverOptions) { ...(tsconfigResult.config.include !== undefined && tsconfigResult.config.include.length > 0 ? globSync(tsconfigResult.config.include, { + absolute: true, + cwd: path.dirname(tsconfigResult.path), + dot: true, ignore: [ ...(tsconfigResult.config.exclude ?? []), ...defaultIgnore, ], - absolute: true, - cwd: path.dirname(tsconfigResult.path), }) : []), ] diff --git a/tests/dotInclude/.dot/index.ts b/tests/dotInclude/.dot/index.ts new file mode 100644 index 0000000..594e79d --- /dev/null +++ b/tests/dotInclude/.dot/index.ts @@ -0,0 +1,18 @@ +// import relative +import './tsImportee' +import './tsxImportee' +import './subfolder/tsImportee' +import './subfolder/tsxImportee' + +// import using tsconfig.json path mapping +import 'folder/tsImportee' +import 'folder/tsxImportee' +import 'folder/subfolder/tsImportee' +import 'folder/subfolder/tsxImportee' + +// import module with typings set in package.json +import 'folder/module' + +// import from node_module +import 'typescript' +import 'dummy.js' diff --git a/tests/dotInclude/.dot/module/module.d.ts b/tests/dotInclude/.dot/module/module.d.ts new file mode 100644 index 0000000..336ce12 --- /dev/null +++ b/tests/dotInclude/.dot/module/module.d.ts @@ -0,0 +1 @@ +export {} diff --git a/tests/dotInclude/.dot/module/package.json b/tests/dotInclude/.dot/module/package.json new file mode 100644 index 0000000..f69fe0b --- /dev/null +++ b/tests/dotInclude/.dot/module/package.json @@ -0,0 +1,5 @@ +{ + "type": "commonjs", + "typings": "./module.d.ts", + "private": true +} diff --git a/tests/dotInclude/.dot/subfolder/tsImportee.ts b/tests/dotInclude/.dot/subfolder/tsImportee.ts new file mode 100644 index 0000000..2893e5d --- /dev/null +++ b/tests/dotInclude/.dot/subfolder/tsImportee.ts @@ -0,0 +1 @@ +export default 'yes' diff --git a/tests/dotInclude/.dot/subfolder/tsxImportee.tsx b/tests/dotInclude/.dot/subfolder/tsxImportee.tsx new file mode 100644 index 0000000..e500b41 --- /dev/null +++ b/tests/dotInclude/.dot/subfolder/tsxImportee.tsx @@ -0,0 +1 @@ +export default 'React Component' diff --git a/tests/dotInclude/.dot/tsImportee.ts b/tests/dotInclude/.dot/tsImportee.ts new file mode 100644 index 0000000..2893e5d --- /dev/null +++ b/tests/dotInclude/.dot/tsImportee.ts @@ -0,0 +1 @@ +export default 'yes' diff --git a/tests/dotInclude/.dot/tsxImportee.tsx b/tests/dotInclude/.dot/tsxImportee.tsx new file mode 100644 index 0000000..e500b41 --- /dev/null +++ b/tests/dotInclude/.dot/tsxImportee.tsx @@ -0,0 +1 @@ +export default 'React Component' diff --git a/tests/dotInclude/.eslintrc.cjs b/tests/dotInclude/.eslintrc.cjs new file mode 100644 index 0000000..7497db6 --- /dev/null +++ b/tests/dotInclude/.eslintrc.cjs @@ -0,0 +1 @@ +module.exports = require('../baseEslintConfig.cjs')(__dirname) diff --git a/tests/dotInclude/tsconfig.json b/tests/dotInclude/tsconfig.json new file mode 100644 index 0000000..496d4f2 --- /dev/null +++ b/tests/dotInclude/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "baseUrl": "./.dot", + "jsx": "react", + "paths": { + "folder/*": ["*"], + "*": ["../../node_modules/*"] + } + }, + "include": ["./**/*.ts", "./**/*.tsx"] +} diff --git a/tests/dotPaths/.dot/module/module.d.ts b/tests/dotPaths/.dot/module/module.d.ts new file mode 100644 index 0000000..336ce12 --- /dev/null +++ b/tests/dotPaths/.dot/module/module.d.ts @@ -0,0 +1 @@ +export {} diff --git a/tests/dotPaths/.dot/module/package.json b/tests/dotPaths/.dot/module/package.json new file mode 100644 index 0000000..f69fe0b --- /dev/null +++ b/tests/dotPaths/.dot/module/package.json @@ -0,0 +1,5 @@ +{ + "type": "commonjs", + "typings": "./module.d.ts", + "private": true +} diff --git a/tests/dotPaths/.dot/subfolder/tsImportee.ts b/tests/dotPaths/.dot/subfolder/tsImportee.ts new file mode 100644 index 0000000..2893e5d --- /dev/null +++ b/tests/dotPaths/.dot/subfolder/tsImportee.ts @@ -0,0 +1 @@ +export default 'yes' diff --git a/tests/dotPaths/.dot/subfolder/tsxImportee.tsx b/tests/dotPaths/.dot/subfolder/tsxImportee.tsx new file mode 100644 index 0000000..e500b41 --- /dev/null +++ b/tests/dotPaths/.dot/subfolder/tsxImportee.tsx @@ -0,0 +1 @@ +export default 'React Component' diff --git a/tests/dotPaths/.dot/tsImportee.ts b/tests/dotPaths/.dot/tsImportee.ts new file mode 100644 index 0000000..2893e5d --- /dev/null +++ b/tests/dotPaths/.dot/tsImportee.ts @@ -0,0 +1 @@ +export default 'yes' diff --git a/tests/dotPaths/.dot/tsxImportee.tsx b/tests/dotPaths/.dot/tsxImportee.tsx new file mode 100644 index 0000000..e500b41 --- /dev/null +++ b/tests/dotPaths/.dot/tsxImportee.tsx @@ -0,0 +1 @@ +export default 'React Component' diff --git a/tests/dotPaths/.eslintrc.cjs b/tests/dotPaths/.eslintrc.cjs new file mode 100644 index 0000000..7497db6 --- /dev/null +++ b/tests/dotPaths/.eslintrc.cjs @@ -0,0 +1 @@ +module.exports = require('../baseEslintConfig.cjs')(__dirname) diff --git a/tests/dotPaths/index.ts b/tests/dotPaths/index.ts new file mode 100644 index 0000000..3015f9c --- /dev/null +++ b/tests/dotPaths/index.ts @@ -0,0 +1,18 @@ +// import relative +import './.dot/tsImportee' +import './.dot/tsxImportee' +import './.dot/subfolder/tsImportee' +import './.dot/subfolder/tsxImportee' + +// import using tsconfig.json path mapping +import 'folder/tsImportee' +import 'folder/tsxImportee' +import 'folder/subfolder/tsImportee' +import 'folder/subfolder/tsxImportee' + +// import module with typings set in package.json +import 'folder/module' + +// import from node_module +import 'typescript' +import 'dummy.js' diff --git a/tests/dotPaths/tsconfig.json b/tests/dotPaths/tsconfig.json new file mode 100644 index 0000000..00d48b2 --- /dev/null +++ b/tests/dotPaths/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "jsx": "react", + "paths": { + "folder/*": [".dot/*"], + "*": ["../../node_modules/*"] + } + }, + "files": ["index.ts", ".dot/tsImportee.ts", ".dot/tsxImportee.tsx"] +} diff --git a/tests/dotProject/.eslintrc.cjs b/tests/dotProject/.eslintrc.cjs new file mode 100644 index 0000000..ed98ca7 --- /dev/null +++ b/tests/dotProject/.eslintrc.cjs @@ -0,0 +1,8 @@ +const path = require('path') + +const globPattern = './packages/*/*/tsconfig.json' + +// in normal cases this is not needed because the __dirname would be the root +const absoluteGlobPath = path.join(__dirname, globPattern) + +module.exports = require('../baseEslintConfig.cjs')(absoluteGlobPath) diff --git a/tests/dotProject/packages/module-a/.dot/tsconfig.json b/tests/dotProject/packages/module-a/.dot/tsconfig.json new file mode 100644 index 0000000..6beb610 --- /dev/null +++ b/tests/dotProject/packages/module-a/.dot/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "baseUrl": "../", + "jsx": "react", + "paths": { + "folder/*": ["*"], + "*": ["../../../../node_modules/*"] + } + }, + "files": ["../index.ts", "../tsImportee.ts", "../tsxImportee.tsx"] +} diff --git a/tests/dotProject/packages/module-a/index.ts b/tests/dotProject/packages/module-a/index.ts new file mode 100644 index 0000000..8d011e9 --- /dev/null +++ b/tests/dotProject/packages/module-a/index.ts @@ -0,0 +1,15 @@ +// import relative +import './tsImportee' +import './tsxImportee' +import './subfolder/tsImportee' +import './subfolder/tsxImportee' + +// import using tsconfig.json path mapping +import 'folder/tsImportee' +import 'folder/tsxImportee' +import 'folder/subfolder/tsImportee' +import 'folder/subfolder/tsxImportee' + +// import from node_module +import 'typescript' +import 'dummy.js' diff --git a/tests/dotProject/packages/module-a/subfolder/tsImportee.ts b/tests/dotProject/packages/module-a/subfolder/tsImportee.ts new file mode 100644 index 0000000..2893e5d --- /dev/null +++ b/tests/dotProject/packages/module-a/subfolder/tsImportee.ts @@ -0,0 +1 @@ +export default 'yes' diff --git a/tests/dotProject/packages/module-a/subfolder/tsxImportee.tsx b/tests/dotProject/packages/module-a/subfolder/tsxImportee.tsx new file mode 100644 index 0000000..e500b41 --- /dev/null +++ b/tests/dotProject/packages/module-a/subfolder/tsxImportee.tsx @@ -0,0 +1 @@ +export default 'React Component' diff --git a/tests/dotProject/packages/module-a/tsImportee.ts b/tests/dotProject/packages/module-a/tsImportee.ts new file mode 100644 index 0000000..2893e5d --- /dev/null +++ b/tests/dotProject/packages/module-a/tsImportee.ts @@ -0,0 +1 @@ +export default 'yes' diff --git a/tests/dotProject/packages/module-a/tsxImportee.tsx b/tests/dotProject/packages/module-a/tsxImportee.tsx new file mode 100644 index 0000000..e500b41 --- /dev/null +++ b/tests/dotProject/packages/module-a/tsxImportee.tsx @@ -0,0 +1 @@ +export default 'React Component' diff --git a/tests/dotProject/packages/module-b/.dot/tsconfig.json b/tests/dotProject/packages/module-b/.dot/tsconfig.json new file mode 100644 index 0000000..6beb610 --- /dev/null +++ b/tests/dotProject/packages/module-b/.dot/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "baseUrl": "../", + "jsx": "react", + "paths": { + "folder/*": ["*"], + "*": ["../../../../node_modules/*"] + } + }, + "files": ["../index.ts", "../tsImportee.ts", "../tsxImportee.tsx"] +} diff --git a/tests/dotProject/packages/module-b/index.ts b/tests/dotProject/packages/module-b/index.ts new file mode 100644 index 0000000..8d011e9 --- /dev/null +++ b/tests/dotProject/packages/module-b/index.ts @@ -0,0 +1,15 @@ +// import relative +import './tsImportee' +import './tsxImportee' +import './subfolder/tsImportee' +import './subfolder/tsxImportee' + +// import using tsconfig.json path mapping +import 'folder/tsImportee' +import 'folder/tsxImportee' +import 'folder/subfolder/tsImportee' +import 'folder/subfolder/tsxImportee' + +// import from node_module +import 'typescript' +import 'dummy.js' diff --git a/tests/dotProject/packages/module-b/subfolder/tsImportee.ts b/tests/dotProject/packages/module-b/subfolder/tsImportee.ts new file mode 100644 index 0000000..2893e5d --- /dev/null +++ b/tests/dotProject/packages/module-b/subfolder/tsImportee.ts @@ -0,0 +1 @@ +export default 'yes' diff --git a/tests/dotProject/packages/module-b/subfolder/tsxImportee.tsx b/tests/dotProject/packages/module-b/subfolder/tsxImportee.tsx new file mode 100644 index 0000000..e500b41 --- /dev/null +++ b/tests/dotProject/packages/module-b/subfolder/tsxImportee.tsx @@ -0,0 +1 @@ +export default 'React Component' diff --git a/tests/dotProject/packages/module-b/tsImportee.ts b/tests/dotProject/packages/module-b/tsImportee.ts new file mode 100644 index 0000000..2893e5d --- /dev/null +++ b/tests/dotProject/packages/module-b/tsImportee.ts @@ -0,0 +1 @@ +export default 'yes' diff --git a/tests/dotProject/packages/module-b/tsxImportee.tsx b/tests/dotProject/packages/module-b/tsxImportee.tsx new file mode 100644 index 0000000..e500b41 --- /dev/null +++ b/tests/dotProject/packages/module-b/tsxImportee.tsx @@ -0,0 +1 @@ +export default 'React Component' diff --git a/yarn.lock b/yarn.lock index 845e112..420dcfa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6170,7 +6170,7 @@ __metadata: size-limit: "npm:^11.0.0" size-limit-preset-node-lib: "npm:^0.3.0" stable-hash: "npm:^0.0.4" - tinyglobby: "npm:^0.2.11" + tinyglobby: "npm:^0.2.12" type-coverage: "npm:^2.27.0" typescript: "npm:^5.3.2" peerDependencies: @@ -13513,13 +13513,13 @@ __metadata: languageName: node linkType: hard -"tinyglobby@npm:^0.2.11": - version: 0.2.11 - resolution: "tinyglobby@npm:0.2.11" +"tinyglobby@npm:^0.2.12": + version: 0.2.12 + resolution: "tinyglobby@npm:0.2.12" dependencies: fdir: "npm:^6.4.3" picomatch: "npm:^4.0.2" - checksum: 8f10a0cd527041155c0dadd9febb5afc97a95649521f550554868c09beb4cb62ceca1d97536108efe53957967eb54f83a7bed59867f666b325fc3f00ca72fd24 + checksum: 4ad28701fa9118b32ef0e27f409e0a6c5741e8b02286d50425c1f6f71e6d6c6ded9dd5bbbbb714784b08623c4ec4d150151f1d3d996cfabe0495f908ab4f7002 languageName: node linkType: hard