diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f3d0b8b..3f7ed8c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,9 +13,9 @@ jobs: - 18 - 20 os: - # - macOS-latest - # - windows-latest # I don't have a Windows machine to debug - ubuntu-latest + - windows-latest + - macos-latest runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 diff --git a/.nvmrc b/.nvmrc index 1117d41..1fc5166 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -18.20.5 +18.20.6 diff --git a/.size-limit.json b/.size-limit.json index 85cbdb5..0c0657a 100644 --- a/.size-limit.json +++ b/.size-limit.json @@ -1,6 +1,6 @@ [ { "path": "./lib/index.js", - "limit": "2.8kB" + "limit": "3kB" } ] diff --git a/CHANGELOG.md b/CHANGELOG.md index fcf2dd9..3d6c82f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## 3.8.1 + +### Patch Changes + +- [#352](https://github.com/import-js/eslint-import-resolver-typescript/pull/352) [`0c6303d`](https://github.com/import-js/eslint-import-resolver-typescript/commit/0c6303d336093ecdac522da0bc1f57ef3ba85f9d) Thanks [@carlocorradini](https://github.com/carlocorradini)! - Set cwd while resolving tsconfig include + +## 3.8.0 + +### Minor Changes + +- [#345](https://github.com/import-js/eslint-import-resolver-typescript/pull/345) [`fcc8883`](https://github.com/import-js/eslint-import-resolver-typescript/commit/fcc8883c0f023247fcb9a453004f8bd3e6b7c0e2) Thanks [@carlocorradini](https://github.com/carlocorradini)! - Enable the mapper function just for a set of allowed files. Improves project discovery using glob and POSIX separator. + +- [#346](https://github.com/import-js/eslint-import-resolver-typescript/pull/346) [`c124e87`](https://github.com/import-js/eslint-import-resolver-typescript/commit/c124e874b6429167b230697ee9f0a69e2efa5f96) Thanks [@carlocorradini](https://github.com/carlocorradini)! - Update get-tsconfig to the the latest version. We now support the `${configDir}` variable, introduced in TypeScript 5.5. + ## 3.7.0 ### Minor Changes diff --git a/README.md b/README.md index de3808f..2255527 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ [![Code Style: Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier) [![changesets](https://img.shields.io/badge/maintained%20with-changesets-176de3.svg)](https://github.com/changesets/changesets) -This plugin adds [`TypeScript`][] support to [`eslint-plugin-import`][] (Or maybe you want to try [`eslint-plugin-i`][] for faster speed) +This plugin adds [`TypeScript`][] support to [`eslint-plugin-import`][] (Or maybe you want to try [`eslint-plugin-import-x`][] for faster speed) This means you can: @@ -58,7 +58,7 @@ pnpm i -D eslint-plugin-import eslint-import-resolver-typescript yarn add -D eslint-plugin-import eslint-import-resolver-typescript ``` -**Important when using `eslint-plugin-i` and `npm`**: Use `npm i -D eslint-plugin-import@eslint-plugin-i@latest eslint-import-resolver-typescript`, or you will end up with both `eslint-plugin-import` and `eslint-plugin-i` in your node_modules. +**Important when using `eslint-plugin-import-x` and `npm`**: Use `npm i -D eslint-plugin-import@eslint-plugin-import-x@latest eslint-import-resolver-typescript`, or you will end up with both `eslint-plugin-import` and `eslint-plugin-import-x` in your node_modules. ## Configuration @@ -74,7 +74,7 @@ const { module.exports = [{ settings: { - "import/resolver-next": [ + "import-x/resolver-next": [ createTypeScriptImportResolver({ alwaysTryTypes: true, // always try to resolve types under `@types` directory even it doesn't contain any source code, like `@types/unist` @@ -100,7 +100,7 @@ module.exports = [{ "other-packages/*/tsconfig.json" ] }), - ]; + ] } }] ``` @@ -112,7 +112,7 @@ But if you are using `eslint-plugin-import` or the older version of `eslint-plug module.exports = [ { settings: { - 'import/resolvers': { + 'import/resolver': { typescript: { alwaysTryTypes: true, // always try to resolve types under `@types` directory even it doesn't contain any source code, like `@types/unist` @@ -311,8 +311,8 @@ Detailed changes for each release are documented in [CHANGELOG.md](./CHANGELOG.m [ISC][] -[`eslint-plugin-i`]: https://github.com/un-es/eslint-plugin-i [`eslint-plugin-import`]: https://github.com/import-js/eslint-plugin-import +[`eslint-plugin-import-x`]: https://github.com/un-ts/eslint-plugin-import-x [`enhanced-resolve`]: https://github.com/webpack/enhanced-resolve [`typescript`]: https://www.typescriptlang.org [isc]: https://opensource.org/licenses/ISC diff --git a/package.json b/package.json index 2bc41b7..f4c1ed4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eslint-import-resolver-typescript", - "version": "3.7.0", + "version": "3.8.1", "type": "module", "description": "This plugin adds `TypeScript` support to `eslint-plugin-import`", "repository": "git+https://github.com/import-js/eslint-import-resolver-typescript", @@ -79,23 +79,21 @@ "@nolyfill/is-core-module": "1.0.39", "debug": "^4.3.7", "enhanced-resolve": "^5.15.0", - "fast-glob": "^3.3.2", - "get-tsconfig": "^4.7.5", + "get-tsconfig": "^4.10.0", "is-bun-module": "^1.0.2", - "is-glob": "^4.0.3", - "stable-hash": "^0.0.4" + "stable-hash": "^0.0.4", + "tinyglobby": "^0.2.10" }, "devDependencies": { - "@1stg/eslint-config": "7", + "@1stg/eslint-config": "7.0.1", "@1stg/lib-config": "^12.0.1", "@changesets/changelog-github": "^0.5.0", - "@changesets/cli": "^2.27.10", + "@changesets/cli": "^2.27.12", "@commitlint/cli": "^17.8.1", "@mozilla/glean": "^3.0.0", "@pkgr/rollup": "^4.1.3", "@types/debug": "^4.1.12", - "@types/is-glob": "^4.0.4", - "@types/node": "^18.19.67", + "@types/node": "^18.19.74", "@types/unist": "^2.0.11", "dummy.js": "link:dummy.js", "eslint": "^8.57.1", diff --git a/src/index.ts b/src/index.ts index 53e9b8e..bbd987c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,15 +5,12 @@ import isNodeCoreModule from '@nolyfill/is-core-module' import debug from 'debug' import type { FileSystem, ResolveOptions, Resolver } from 'enhanced-resolve' import enhancedResolve from 'enhanced-resolve' -import fg from 'fast-glob' import { createPathsMatcher, getTsconfig } from 'get-tsconfig' import type { TsConfigResult } from 'get-tsconfig' import type { Version } from 'is-bun-module' import { isBunModule } from 'is-bun-module' -import isGlob from 'is-glob' import stableHashExports from 'stable-hash' - -const { globSync } = fg +import { globSync, isDynamicPattern } from 'tinyglobby' // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- esmodule interop const stableHash = stableHashExports.default || stableHashExports @@ -114,7 +111,10 @@ let cachedOptions: InternalResolverOptions | undefined let prevCwd: string let mappersCachedOptions: InternalResolverOptions -let mappers: Array<((specifier: string) => string[]) | null> | undefined +let mappers: Array<{ + files: Set + mapperFn: NonNullable> +}> = [] let resolverCachedOptions: InternalResolverOptions let cachedResolver: Resolver | undefined @@ -162,7 +162,7 @@ export function resolve( resolver = cachedResolver } - log('looking for:', source) + log('looking for', source, 'in', file) source = removeQuerystring(source) @@ -303,34 +303,35 @@ function getMappedPath( paths = [resolved] } } else { - paths = mappers! - .map(mapper => - mapper?.(source).map(item => [ - ...extensions.map(ext => `${item}${ext}`), - ...originalExtensions.map(ext => `${item}/index${ext}`), - ]), - ) - .flat(2) - .filter(mappedPath => { - if (mappedPath === undefined) { - return false - } - - try { - const stat = fs.statSync(mappedPath, { throwIfNoEntry: false }) - if (stat === undefined) return false - if (stat.isFile()) return true - - // Maybe this is a module dir? - if (stat.isDirectory()) { - return isModule(mappedPath) - } - } catch { - return false + paths = [ + ...new Set( + mappers + .filter(({ files }) => files.has(file)) + .map(({ mapperFn }) => + mapperFn(source).map(item => [ + ...extensions.map(ext => `${item}${ext}`), + ...originalExtensions.map(ext => `${item}/index${ext}`), + ]), + ) + .flat(2) + .map(toNativePathSeparator), + ), + ].filter(mappedPath => { + try { + const stat = fs.statSync(mappedPath, { throwIfNoEntry: false }) + if (stat === undefined) return false + if (stat.isFile()) return true + + // Maybe this is a module dir? + if (stat.isDirectory()) { + return isModule(mappedPath) } - + } catch { return false - }) + } + + return false + }) } if (retry && paths.length === 0) { @@ -370,9 +371,10 @@ function getMappedPath( return paths[0] } +// eslint-disable-next-line sonarjs/cognitive-complexity function initMappers(options: InternalResolverOptions) { if ( - mappers && + mappers.length > 0 && mappersCachedOptions === options && prevCwd === process.cwd() ) { @@ -380,35 +382,104 @@ function initMappers(options: InternalResolverOptions) { } prevCwd = process.cwd() - const configPaths = + const configPaths = ( typeof options.project === 'string' ? [options.project] : Array.isArray(options.project) ? options.project : [process.cwd()] + ) // 'tinyglobby' pattern must have POSIX separator + .map(config => replacePathSeparator(config, path.sep, path.posix.sep)) - const ignore = ['!**/node_modules/**'] + // https://github.com/microsoft/TypeScript/blob/df342b7206cb56b56bb3b3aecbb2ee2d2ff7b217/src/compiler/commandLineParser.ts#L3006 + const defaultInclude = ['**/*'] + const defaultIgnore = ['**/node_modules/**'] - // turn glob patterns into paths + // Turn glob patterns into paths const projectPaths = [ ...new Set([ - ...configPaths.filter(path => !isGlob(path)), - ...globSync([...configPaths.filter(path => isGlob(path)), ...ignore]), + ...configPaths.filter(path => !isDynamicPattern(path)), + ...globSync( + configPaths.filter(path => isDynamicPattern(path)), + { + expandDirectories: false, + ignore: defaultIgnore, + absolute: true, + }, + ), ]), ] - mappers = projectPaths.map(projectPath => { - let tsconfigResult: TsConfigResult | null + mappers = projectPaths + .map(projectPath => { + let tsconfigResult: TsConfigResult | null - if (isFile(projectPath)) { - const { dir, base } = path.parse(projectPath) - tsconfigResult = getTsconfig(dir, base) - } else { - tsconfigResult = getTsconfig(projectPath) - } + if (isFile(projectPath)) { + const { dir, base } = path.parse(projectPath) + tsconfigResult = getTsconfig(dir, base) + } else { + tsconfigResult = getTsconfig(projectPath) + } - return tsconfigResult && createPathsMatcher(tsconfigResult) - }) + if (!tsconfigResult) { + // eslint-disable-next-line unicorn/no-useless-undefined + return undefined + } + + const mapperFn = createPathsMatcher(tsconfigResult) + + if (!mapperFn) { + // eslint-disable-next-line unicorn/no-useless-undefined + return undefined + } + + const files = + tsconfigResult.config.files === undefined && + tsconfigResult.config.include === undefined + ? // Include everything if no files or include options + globSync(defaultInclude, { + ignore: [ + ...(tsconfigResult.config.exclude ?? []), + ...defaultIgnore, + ], + absolute: true, + cwd: path.dirname(tsconfigResult.path), + }) + : [ + // https://www.typescriptlang.org/tsconfig/#files + ...(tsconfigResult.config.files !== undefined && + tsconfigResult.config.files.length > 0 + ? tsconfigResult.config.files.map(file => + path.normalize( + path.resolve(path.dirname(tsconfigResult!.path), file), + ), + ) + : []), + // https://www.typescriptlang.org/tsconfig/#include + ...(tsconfigResult.config.include !== undefined && + tsconfigResult.config.include.length > 0 + ? globSync(tsconfigResult.config.include, { + ignore: [ + ...(tsconfigResult.config.exclude ?? []), + ...defaultIgnore, + ], + absolute: true, + cwd: path.dirname(tsconfigResult.path), + }) + : []), + ] + + if (files.length === 0) { + // eslint-disable-next-line unicorn/no-useless-undefined + return undefined + } + + return { + files: new Set(files.map(toNativePathSeparator)), + mapperFn, + } + }) + .filter(isDefined) mappersCachedOptions = options } @@ -425,3 +496,46 @@ function mangleScopedPackage(moduleName: string) { } return moduleName } + +/** + * Replace path `p` from `from` to `to` separator. + * + * @param {string} p Path + * @param {typeof path.sep} from From separator + * @param {typeof path.sep} to To separator + * @returns Path with `to` separator + */ +function replacePathSeparator( + p: string, + from: typeof path.sep, + to: typeof path.sep, +) { + return from === to ? p : p.replaceAll(from, to) +} + +/** + * Replace path `p` separator to its native separator. + * + * @param {string} p Path + * @returns Path with native separator + */ +function toNativePathSeparator(p: string) { + return replacePathSeparator( + p, + path[process.platform === 'win32' ? 'posix' : 'win32'].sep, + path[process.platform === 'win32' ? 'win32' : 'posix'].sep, + ) +} + +/** + * Check if value is defined. + * + * Helper function for TypeScript. + * Should be removed when upgrading to TypeScript >= 5.5. + * + * @param {T | null | undefined} value Value + * @returns `true` if value is defined, `false` otherwise + */ +function isDefined(value: T | null | undefined): value is T { + return value !== null && value !== undefined +} diff --git a/tests/withJsExtension/tsconfig.json b/tests/withJsExtension/tsconfig.json index 13d6d9f..0cec9f2 100644 --- a/tests/withJsExtension/tsconfig.json +++ b/tests/withJsExtension/tsconfig.json @@ -6,5 +6,5 @@ "#/*": ["*"] } }, - "includes": ["./**/*"] + "include": ["./**/*"] } diff --git a/yarn.lock b/yarn.lock index 89bd519..31c91a8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -76,7 +76,7 @@ __metadata: languageName: node linkType: hard -"@1stg/eslint-config@npm:7, @1stg/eslint-config@npm:^7.0.1": +"@1stg/eslint-config@npm:7.0.1, @1stg/eslint-config@npm:^7.0.1": version: 7.0.1 resolution: "@1stg/eslint-config@npm:7.0.1" dependencies: @@ -2032,11 +2032,11 @@ __metadata: languageName: node linkType: hard -"@changesets/apply-release-plan@npm:^7.0.6": - version: 7.0.6 - resolution: "@changesets/apply-release-plan@npm:7.0.6" +"@changesets/apply-release-plan@npm:^7.0.8": + version: 7.0.8 + resolution: "@changesets/apply-release-plan@npm:7.0.8" dependencies: - "@changesets/config": "npm:^3.0.4" + "@changesets/config": "npm:^3.0.5" "@changesets/get-version-range-type": "npm:^0.4.0" "@changesets/git": "npm:^3.0.2" "@changesets/should-skip-package": "npm:^0.1.1" @@ -2049,7 +2049,7 @@ __metadata: prettier: "npm:^2.7.1" resolve-from: "npm:^5.0.0" semver: "npm:^7.5.3" - checksum: 98e6d87eed744e26bbca9032bad225a9c29da2189fa37d2cc3fa877b9e7e4dbb1860b56259faf426af470db445471e888ac26978e1380d96e9e917ab0c54259f + checksum: ab7dcf8759ebf807c12d8657b7cc5db445f2f3255dc6bd7832c3c5353f4b587f4eadb87746401683296270221f11d6c7b10451b3e0e8fa7ccf5da511ebd95de3 languageName: node linkType: hard @@ -2087,17 +2087,17 @@ __metadata: languageName: node linkType: hard -"@changesets/cli@npm:^2.27.10": - version: 2.27.10 - resolution: "@changesets/cli@npm:2.27.10" +"@changesets/cli@npm:^2.27.12": + version: 2.27.12 + resolution: "@changesets/cli@npm:2.27.12" dependencies: - "@changesets/apply-release-plan": "npm:^7.0.6" + "@changesets/apply-release-plan": "npm:^7.0.8" "@changesets/assemble-release-plan": "npm:^6.0.5" "@changesets/changelog-git": "npm:^0.2.0" - "@changesets/config": "npm:^3.0.4" + "@changesets/config": "npm:^3.0.5" "@changesets/errors": "npm:^0.2.0" "@changesets/get-dependents-graph": "npm:^2.1.2" - "@changesets/get-release-plan": "npm:^4.0.5" + "@changesets/get-release-plan": "npm:^4.0.6" "@changesets/git": "npm:^3.0.2" "@changesets/logger": "npm:^0.1.1" "@changesets/pre": "npm:^2.0.1" @@ -2108,7 +2108,7 @@ __metadata: "@manypkg/get-packages": "npm:^1.1.3" ansi-colors: "npm:^4.1.3" ci-info: "npm:^3.7.0" - enquirer: "npm:^2.3.0" + enquirer: "npm:^2.4.1" external-editor: "npm:^3.1.0" fs-extra: "npm:^7.0.1" mri: "npm:^1.2.0" @@ -2121,13 +2121,13 @@ __metadata: term-size: "npm:^2.1.0" bin: changeset: bin.js - checksum: a0d95aa88f88e952c34aba8f6a36cbc7bdeba60bdfbfb30704532d74eecfa8c0d97ec5f0d16c4ca4cac9d9a1b5f3b34e29dafd3fb183013ce35ccc0840e707e3 + checksum: 06618abc60ddd9bb82d0380ee6bdea926cce8ebd76e18eb38487fa2501ee1386ffaf55042c8d052d783bcfd2669c51f3eef8b0b0cfc7624486bcec42ac0da9da languageName: node linkType: hard -"@changesets/config@npm:^3.0.4": - version: 3.0.4 - resolution: "@changesets/config@npm:3.0.4" +"@changesets/config@npm:^3.0.5": + version: 3.0.5 + resolution: "@changesets/config@npm:3.0.5" dependencies: "@changesets/errors": "npm:^0.2.0" "@changesets/get-dependents-graph": "npm:^2.1.2" @@ -2136,7 +2136,7 @@ __metadata: "@manypkg/get-packages": "npm:^1.1.3" fs-extra: "npm:^7.0.1" micromatch: "npm:^4.0.8" - checksum: dc59f640bca8e4c88f76f187c8ca9ebae4cdf152559473da9a2193bc5f2ebb9c3709560a8c381855a14858ece63d23000e043ff01c82572fe053f3d13481b797 + checksum: ebb6e5660c26cfd9c499505fdf5c0289b238fa8f6a7ed68d9eae56283d9f661d302d759155bdaff273a8de870fb2cd2dbb9cef62a64c4b4a869745f0e12eae9d languageName: node linkType: hard @@ -2171,17 +2171,17 @@ __metadata: languageName: node linkType: hard -"@changesets/get-release-plan@npm:^4.0.5": - version: 4.0.5 - resolution: "@changesets/get-release-plan@npm:4.0.5" +"@changesets/get-release-plan@npm:^4.0.6": + version: 4.0.6 + resolution: "@changesets/get-release-plan@npm:4.0.6" dependencies: "@changesets/assemble-release-plan": "npm:^6.0.5" - "@changesets/config": "npm:^3.0.4" + "@changesets/config": "npm:^3.0.5" "@changesets/pre": "npm:^2.0.1" "@changesets/read": "npm:^0.6.2" "@changesets/types": "npm:^6.0.0" "@manypkg/get-packages": "npm:^1.1.3" - checksum: f6e7c59d78a8f57f46843153b1113ff312e10fdc61930752b399a2862259c17ea69c44a67fff84961a9c73ac74a7a3ae0cd409da8b41e8f8ccb2d331884627e4 + checksum: 85ac96876d34e4f7830f07753c64309e2e2d07d7d5843f502c25f6bc3bd3f9b4e1d355d82a979b68fabe37b6efe664de85cdce241bfa374ef3439bbbb9f840a0 languageName: node linkType: hard @@ -2722,13 +2722,6 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:8.57.0": - version: 8.57.0 - resolution: "@eslint/js@npm:8.57.0" - checksum: 3c501ce8a997cf6cbbaf4ed358af5492875e3550c19b9621413b82caa9ae5382c584b0efa79835639e6e0ddaa568caf3499318e5bdab68643ef4199dce5eb0a0 - languageName: node - linkType: hard - "@eslint/js@npm:8.57.1": version: 8.57.1 resolution: "@eslint/js@npm:8.57.1" @@ -2736,17 +2729,6 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.11.14": - version: 0.11.14 - resolution: "@humanwhocodes/config-array@npm:0.11.14" - dependencies: - "@humanwhocodes/object-schema": "npm:^2.0.2" - debug: "npm:^4.3.1" - minimatch: "npm:^3.0.5" - checksum: 3ffb24ecdfab64014a230e127118d50a1a04d11080cbb748bc21629393d100850496456bbcb4e8c438957fe0934430d731042f1264d6a167b62d32fc2863580a - languageName: node - linkType: hard - "@humanwhocodes/config-array@npm:^0.13.0": version: 0.13.0 resolution: "@humanwhocodes/config-array@npm:0.13.0" @@ -2765,7 +2747,7 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^2.0.2, @humanwhocodes/object-schema@npm:^2.0.3": +"@humanwhocodes/object-schema@npm:^2.0.3": version: 2.0.3 resolution: "@humanwhocodes/object-schema@npm:2.0.3" checksum: 05bb99ed06c16408a45a833f03a732f59bf6184795d4efadd33238ff8699190a8c871ad1121241bb6501589a9598dc83bf25b99dcbcf41e155cdf36e35e937a3 @@ -3666,13 +3648,6 @@ __metadata: languageName: node linkType: hard -"@types/is-glob@npm:^4.0.4": - version: 4.0.4 - resolution: "@types/is-glob@npm:4.0.4" - checksum: c790125e2d133d15c9783f6468995841cb06b5634b5c7b30aa32d23129f19d7dc271ec1a904bea4ca1e6a5ba19218a6602753d558f343b4fb8402fed25d17219 - languageName: node - linkType: hard - "@types/json-schema@npm:^7.0.9": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" @@ -3749,21 +3724,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^18.0.0": - version: 18.19.39 - resolution: "@types/node@npm:18.19.39" - dependencies: - undici-types: "npm:~5.26.4" - checksum: d2fe84adf087a4184217b666f675e99678060d15f84882a4a1c3e49c3dca521a7e99a201a3c073c2b60b00419f1f4c3b357d8f7397f65e400dc3b77b0145a1da - languageName: node - linkType: hard - -"@types/node@npm:^18.19.67": - version: 18.19.67 - resolution: "@types/node@npm:18.19.67" +"@types/node@npm:^18.0.0, @types/node@npm:^18.19.74": + version: 18.19.74 + resolution: "@types/node@npm:18.19.74" dependencies: undici-types: "npm:~5.26.4" - checksum: 7bb1d06cd1483dd02462a3dd2894790e5c27ba0fa4cdd4a3da1062d66ed47b66affaab314aa72b346ff3e5538a74d5c3cb14bb1a634547504a1643679738f494 + checksum: 2306bd0b41cdd528b890b210b96f287a5b5035c128f62636057d6616bd612b3f53d32d77f7e76ef41a9f130ea691e6980e6d5942dd625df05d3a641764fddb78 languageName: node linkType: hard @@ -3802,14 +3768,7 @@ __metadata: languageName: node linkType: hard -"@types/unist@npm:^2, @types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2": - version: 2.0.10 - resolution: "@types/unist@npm:2.0.10" - checksum: e2924e18dedf45f68a5c6ccd6015cd62f1643b1b43baac1854efa21ae9e70505db94290434a23da1137d9e31eb58e54ca175982005698ac37300a1c889f6c4aa - languageName: node - linkType: hard - -"@types/unist@npm:^2.0.11": +"@types/unist@npm:^2, @types/unist@npm:^2.0.0, @types/unist@npm:^2.0.11, @types/unist@npm:^2.0.2": version: 2.0.11 resolution: "@types/unist@npm:2.0.11" checksum: 6d436e832bc35c6dde9f056ac515ebf2b3384a1d7f63679d12358766f9b313368077402e9c1126a14d827f10370a5485e628bf61aa91117cf4fc882423191a4e @@ -4763,16 +4722,7 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.2, braces@npm:~3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" - dependencies: - fill-range: "npm:^7.0.1" - checksum: 966b1fb48d193b9d155f810e5efd1790962f2c4e0829f8440b8ad236ba009222c501f70185ef732fef17a4c490bb33a03b90dab0631feafbdf447da91e8165b1 - languageName: node - linkType: hard - -"braces@npm:^3.0.3": +"braces@npm:^3.0.2, braces@npm:^3.0.3, braces@npm:~3.0.2": version: 3.0.3 resolution: "braces@npm:3.0.3" dependencies: @@ -5420,18 +5370,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": - version: 7.0.3 - resolution: "cross-spawn@npm:7.0.3" - dependencies: - path-key: "npm:^3.1.0" - shebang-command: "npm:^2.0.0" - which: "npm:^2.0.1" - checksum: e1a13869d2f57d974de0d9ef7acbf69dc6937db20b918525a01dacb5032129bd552d290d886d981e99f1b624cb03657084cc87bd40f115c07ecf376821c729ce - languageName: node - linkType: hard - -"cross-spawn@npm:^7.0.5": +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.5": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" dependencies: @@ -5503,15 +5442,15 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": - version: 4.3.5 - resolution: "debug@npm:4.3.5" +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.7": + version: 4.3.7 + resolution: "debug@npm:4.3.7" dependencies: - ms: "npm:2.1.2" + ms: "npm:^2.1.3" peerDependenciesMeta: supports-color: optional: true - checksum: cb6eab424c410e07813ca1392888589972ce9a32b8829c6508f5e1f25f3c3e70a76731610ae55b4bbe58d1a2fffa1424b30e97fa8d394e49cd2656a9643aedd2 + checksum: 71168908b9a78227ab29d5d25fe03c5867750e31ce24bf2c44a86efc5af041758bb56569b0a3d48a9b5344c00a24a777e6f4100ed6dfd9534a42c1dde285125a languageName: node linkType: hard @@ -5536,18 +5475,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.3.7": - version: 4.3.7 - resolution: "debug@npm:4.3.7" - dependencies: - ms: "npm:^2.1.3" - peerDependenciesMeta: - supports-color: - optional: true - checksum: 71168908b9a78227ab29d5d25fe03c5867750e31ce24bf2c44a86efc5af041758bb56569b0a3d48a9b5344c00a24a777e6f4100ed6dfd9534a42c1dde285125a - languageName: node - linkType: hard - "decamelize-keys@npm:^1.1.0": version: 1.1.1 resolution: "decamelize-keys@npm:1.1.1" @@ -5832,7 +5759,7 @@ __metadata: languageName: node linkType: hard -"enquirer@npm:^2.3.0, enquirer@npm:^2.4.1": +"enquirer@npm:^2.4.1": version: 2.4.1 resolution: "enquirer@npm:2.4.1" dependencies: @@ -6215,17 +6142,16 @@ __metadata: version: 0.0.0-use.local resolution: "eslint-import-resolver-typescript@workspace:." dependencies: - "@1stg/eslint-config": "npm:7" + "@1stg/eslint-config": "npm:7.0.1" "@1stg/lib-config": "npm:^12.0.1" "@changesets/changelog-github": "npm:^0.5.0" - "@changesets/cli": "npm:^2.27.10" + "@changesets/cli": "npm:^2.27.12" "@commitlint/cli": "npm:^17.8.1" "@mozilla/glean": "npm:^3.0.0" "@nolyfill/is-core-module": "npm:1.0.39" "@pkgr/rollup": "npm:^4.1.3" "@types/debug": "npm:^4.1.12" - "@types/is-glob": "npm:^4.0.4" - "@types/node": "npm:^18.19.67" + "@types/node": "npm:^18.19.74" "@types/unist": "npm:^2.0.11" debug: "npm:^4.3.7" dummy.js: "link:dummy.js" @@ -6234,10 +6160,8 @@ __metadata: eslint-import-resolver-typescript: "link:." eslint-plugin-import: "npm:eslint-plugin-i@^2.29.1" eslint-plugin-import-x: "npm:^4.5.0" - fast-glob: "npm:^3.3.2" - get-tsconfig: "npm:^4.7.5" + get-tsconfig: "npm:^4.10.0" is-bun-module: "npm:^1.0.2" - is-glob: "npm:^4.0.3" lint-staged: "npm:^13.3.0" npm-run-all2: "npm:^5.0.2" prettier: "npm:^2.8.8" @@ -6246,6 +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.10" type-coverage: "npm:^2.27.0" typescript: "npm:^5.3.2" peerDependencies: @@ -6748,55 +6673,7 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8.43.0": - version: 8.57.0 - resolution: "eslint@npm:8.57.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.2.0" - "@eslint-community/regexpp": "npm:^4.6.1" - "@eslint/eslintrc": "npm:^2.1.4" - "@eslint/js": "npm:8.57.0" - "@humanwhocodes/config-array": "npm:^0.11.14" - "@humanwhocodes/module-importer": "npm:^1.0.1" - "@nodelib/fs.walk": "npm:^1.2.8" - "@ungap/structured-clone": "npm:^1.2.0" - ajv: "npm:^6.12.4" - chalk: "npm:^4.0.0" - cross-spawn: "npm:^7.0.2" - debug: "npm:^4.3.2" - doctrine: "npm:^3.0.0" - escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^7.2.2" - eslint-visitor-keys: "npm:^3.4.3" - espree: "npm:^9.6.1" - esquery: "npm:^1.4.2" - esutils: "npm:^2.0.2" - fast-deep-equal: "npm:^3.1.3" - file-entry-cache: "npm:^6.0.1" - find-up: "npm:^5.0.0" - glob-parent: "npm:^6.0.2" - globals: "npm:^13.19.0" - graphemer: "npm:^1.4.0" - ignore: "npm:^5.2.0" - imurmurhash: "npm:^0.1.4" - is-glob: "npm:^4.0.0" - is-path-inside: "npm:^3.0.3" - js-yaml: "npm:^4.1.0" - json-stable-stringify-without-jsonify: "npm:^1.0.1" - levn: "npm:^0.4.1" - lodash.merge: "npm:^4.6.2" - minimatch: "npm:^3.1.2" - natural-compare: "npm:^1.4.0" - optionator: "npm:^0.9.3" - strip-ansi: "npm:^6.0.1" - text-table: "npm:^0.2.0" - bin: - eslint: bin/eslint.js - checksum: 00496e218b23747a7a9817bf58b522276d0dc1f2e546dceb4eea49f9871574088f72f1f069a6b560ef537efa3a75261b8ef70e51ef19033da1cc4c86a755ef15 - languageName: node - linkType: hard - -"eslint@npm:^8.57.1": +"eslint@npm:^8.43.0, eslint@npm:^8.57.1": version: 8.57.1 resolution: "eslint@npm:8.57.1" dependencies: @@ -7150,6 +7027,18 @@ __metadata: languageName: node linkType: hard +"fdir@npm:^6.4.2": + version: 6.4.2 + resolution: "fdir@npm:6.4.2" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: 5ff80d1d2034e75cc68be175401c9f64c4938a6b2c1e9a0c27f2d211ffbe491fd86d29e4576825d9da8aff9bd465f0283427c2dddc11653457906c46d3bbc448 + languageName: node + linkType: hard + "fflate@npm:^0.8.0": version: 0.8.1 resolution: "fflate@npm:0.8.1" @@ -7166,15 +7055,6 @@ __metadata: languageName: node linkType: hard -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" - dependencies: - to-regex-range: "npm:^5.0.1" - checksum: e260f7592fd196b4421504d3597cc76f4a1ca7a9488260d533b611fc3cefd61e9a9be1417cb82d3b01ad9f9c0ff2dbf258e1026d2445e26b0cf5148ff4250429 - languageName: node - linkType: hard - "fill-range@npm:^7.1.1": version: 7.1.1 resolution: "fill-range@npm:7.1.1" @@ -7442,21 +7322,12 @@ __metadata: languageName: node linkType: hard -"get-tsconfig@npm:^4.7.0, get-tsconfig@npm:^4.7.2, get-tsconfig@npm:^4.7.5": - version: 4.7.5 - resolution: "get-tsconfig@npm:4.7.5" - dependencies: - resolve-pkg-maps: "npm:^1.0.0" - checksum: de7de5e4978354e8e6d9985baf40ea32f908a13560f793bc989930c229cc8d5c3f7b6b2896d8e43eb1a9b4e9e30018ef4b506752fd2a4b4d0dfee4af6841b119 - languageName: node - linkType: hard - -"get-tsconfig@npm:^4.7.3": - version: 4.8.1 - resolution: "get-tsconfig@npm:4.8.1" +"get-tsconfig@npm:^4.10.0, get-tsconfig@npm:^4.7.0, get-tsconfig@npm:^4.7.2, get-tsconfig@npm:^4.7.3": + version: 4.10.0 + resolution: "get-tsconfig@npm:4.10.0" dependencies: resolve-pkg-maps: "npm:^1.0.0" - checksum: 3fb5a8ad57b9633eaea085d81661e9e5c9f78b35d8f8689eaf8b8b45a2a3ebf3b3422266d4d7df765e308cc1e6231648d114803ab3d018332e29916f2c1de036 + checksum: 5259b5c99a1957114337d9d0603b4a305ec9e29fa6cac7d2fbf634ba6754a0cc88bfd281a02416ce64e604b637d3cb239185381a79a5842b17fb55c097b38c4b languageName: node linkType: hard @@ -10139,7 +10010,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:4.0.5, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": +"micromatch@npm:4.0.5": version: 4.0.5 resolution: "micromatch@npm:4.0.5" dependencies: @@ -10149,7 +10020,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.8": +"micromatch@npm:^4.0.4, micromatch@npm:^4.0.5, micromatch@npm:^4.0.8": version: 4.0.8 resolution: "micromatch@npm:4.0.8" dependencies: @@ -10189,12 +10060,12 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:6 || 7 || 8 || 9, minimatch@npm:^9.0.0, minimatch@npm:^9.0.1, minimatch@npm:^9.0.3": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" +"minimatch@npm:6 || 7 || 8 || 9, minimatch@npm:^9.0.0, minimatch@npm:^9.0.1, minimatch@npm:^9.0.3, minimatch@npm:^9.0.4": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" dependencies: brace-expansion: "npm:^2.0.1" - checksum: c81b47d28153e77521877649f4bab48348d10938df9e8147a58111fe00ef89559a2938de9f6632910c4f7bf7bb5cd81191a546167e58d357f0cfb1e18cecc1c5 + checksum: dd6a8927b063aca6d910b119e1f2df6d2ce7d36eab91de83167dd136bb85e1ebff97b0d3de1cb08bd1f7e018ca170b4962479fefab5b2a69e2ae12cb2edc8348 languageName: node linkType: hard @@ -10216,15 +10087,6 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.4": - version: 9.0.5 - resolution: "minimatch@npm:9.0.5" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: dd6a8927b063aca6d910b119e1f2df6d2ce7d36eab91de83167dd136bb85e1ebff97b0d3de1cb08bd1f7e018ca170b4962479fefab5b2a69e2ae12cb2edc8348 - languageName: node - linkType: hard - "minimist-options@npm:4.1.0": version: 4.1.0 resolution: "minimist-options@npm:4.1.0" @@ -11081,14 +10943,7 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0": - version: 1.0.0 - resolution: "picocolors@npm:1.0.0" - checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 - languageName: node - linkType: hard - -"picocolors@npm:^1.1.0": +"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0": version: 1.1.0 resolution: "picocolors@npm:1.1.0" checksum: a2ad60d94d185c30f2a140b19c512547713fb89b920d32cc6cf658fa786d63a37ba7b8451872c3d9fc34883971fb6e5878e07a20b60506e0bb2554dce9169ccb @@ -11102,6 +10957,13 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:^4.0.2": + version: 4.0.2 + resolution: "picomatch@npm:4.0.2" + checksum: ce617b8da36797d09c0baacb96ca8a44460452c89362d7cb8f70ca46b4158ba8bc3606912de7c818eb4a939f7f9015cef3c766ec8a0c6bfc725fdc078e39c717 + languageName: node + linkType: hard + "pidtree@npm:0.6.0": version: 0.6.0 resolution: "pidtree@npm:0.6.0" @@ -12897,7 +12759,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.5.4, semver@npm:^7.0.0, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.6, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4": +"semver@npm:7.5.4": version: 7.5.4 resolution: "semver@npm:7.5.4" dependencies: @@ -12917,7 +12779,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.6.0, semver@npm:^7.6.3": +"semver@npm:^7.0.0, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.6, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.2, semver@npm:^7.6.3": version: 7.6.3 resolution: "semver@npm:7.6.3" bin: @@ -12926,15 +12788,6 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.6.2": - version: 7.6.2 - resolution: "semver@npm:7.6.2" - bin: - semver: bin/semver.js - checksum: 296b17d027f57a87ef645e9c725bff4865a38dfc9caf29b26aa084b85820972fbe7372caea1ba6857162fa990702c6d9c1d82297cecb72d56c78ab29070d2ca2 - languageName: node - linkType: hard - "set-blocking@npm:^2.0.0": version: 2.0.0 resolution: "set-blocking@npm:2.0.0" @@ -13038,7 +12891,7 @@ __metadata: languageName: node linkType: hard -"simple-git-hooks@npm:^2.11.1": +"simple-git-hooks@npm:^2.11.1, simple-git-hooks@npm:^2.8.1": version: 2.11.1 resolution: "simple-git-hooks@npm:2.11.1" bin: @@ -13047,15 +12900,6 @@ __metadata: languageName: node linkType: hard -"simple-git-hooks@npm:^2.8.1": - version: 2.9.0 - resolution: "simple-git-hooks@npm:2.9.0" - bin: - simple-git-hooks: cli.js - checksum: 7fc951d077139de1cd461efebfe77b72478cb829a058645cfae560377b74199258d02adb68ea2ab1f1f7adaa4772ddd6a2a20c68afd6ec4c28dd4e7300426e11 - languageName: node - linkType: hard - "size-limit-node-esbuild@npm:^0.3.0": version: 0.3.0 resolution: "size-limit-node-esbuild@npm:0.3.0" @@ -13669,6 +13513,16 @@ __metadata: languageName: node linkType: hard +"tinyglobby@npm:^0.2.10": + version: 0.2.10 + resolution: "tinyglobby@npm:0.2.10" + dependencies: + fdir: "npm:^6.4.2" + picomatch: "npm:^4.0.2" + checksum: 10c976866d849702edc47fc3fef27d63f074c40f75ef17171ecc1452967900699fa1e62373681dd58e673ddff2e3f6094bcd0a2101e3e4b30f4c2b9da41397f2 + languageName: node + linkType: hard + "titleize@npm:^3.0.0": version: 3.0.0 resolution: "titleize@npm:3.0.0" @@ -13797,10 +13651,10 @@ __metadata: languageName: node linkType: hard -"tslib@npm:1 || 2, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.5.3, tslib@npm:^2.6.0, tslib@npm:^2.6.1, tslib@npm:^2.6.2": - version: 2.6.2 - resolution: "tslib@npm:2.6.2" - checksum: bd26c22d36736513980091a1e356378e8b662ded04204453d353a7f34a4c21ed0afc59b5f90719d4ba756e581a162ecbf93118dc9c6be5acf70aa309188166ca +"tslib@npm:1 || 2, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.5.3, tslib@npm:^2.6.0, tslib@npm:^2.6.1, tslib@npm:^2.6.2, tslib@npm:^2.6.3": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: 3e2e043d5c2316461cb54e5c7fe02c30ef6dccb3384717ca22ae5c6b5bc95232a6241df19c622d9c73b809bea33b187f6dbc73030963e29950c2141bc32a79f7 languageName: node linkType: hard @@ -13811,13 +13665,6 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.6.3": - version: 2.8.1 - resolution: "tslib@npm:2.8.1" - checksum: 3e2e043d5c2316461cb54e5c7fe02c30ef6dccb3384717ca22ae5c6b5bc95232a6241df19c622d9c73b809bea33b187f6dbc73030963e29950c2141bc32a79f7 - languageName: node - linkType: hard - "tsutils@npm:3, tsutils@npm:^3.21.0": version: 3.21.0 resolution: "tsutils@npm:3.21.0"