diff --git a/docs/Configuration.md b/docs/Configuration.md index ac7a5bd01104..0fc00f0fbed3 100644 --- a/docs/Configuration.md +++ b/docs/Configuration.md @@ -1482,10 +1482,6 @@ type ResolverOptions = { moduleDirectory?: Array; /** List of `require.paths` to use if nothing is found in `node_modules`. */ paths?: Array; - /** Allows transforming parsed `package.json` contents. */ - packageFilter?: (pkg: PackageJSON, file: string, dir: string) => PackageJSON; - /** Allows transforms a path within a package. */ - pathFilter?: (pkg: PackageJSON, path: string, relativePath: string) => string; /** Current root directory. */ rootDir?: string; }; diff --git a/packages/jest-resolve/package.json b/packages/jest-resolve/package.json index ee82c62c0baf..77542111009b 100644 --- a/packages/jest-resolve/package.json +++ b/packages/jest-resolve/package.json @@ -22,17 +22,13 @@ "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "jest-haste-map": "workspace:*", - "jest-pnp-resolver": "^1.2.3", "jest-util": "workspace:*", "jest-validate": "workspace:*", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" + "slash": "^3.0.0", + "unrs-resolver": "^1.7.8" }, "devDependencies": { - "@types/graceful-fs": "^4.1.3", - "@types/pnpapi": "^0.0.5", - "@types/resolve": "^1.20.2" + "@types/graceful-fs": "^4.1.3" }, "engines": { "node": "^18.14.0 || ^20.0.0 || >=22.0.0" diff --git a/packages/jest-resolve/src/__tests__/resolve.test.ts b/packages/jest-resolve/src/__tests__/resolve.test.ts index 0228a53f6243..70de6a603f43 100644 --- a/packages/jest-resolve/src/__tests__/resolve.test.ts +++ b/packages/jest-resolve/src/__tests__/resolve.test.ts @@ -6,43 +6,26 @@ * */ -import * as path from 'path'; -import {fileURLToPath, pathToFileURL} from 'url'; import * as fs from 'graceful-fs'; -import {sync as resolveSync} from 'resolve'; import {type IModuleMap, ModuleMap} from 'jest-haste-map'; +import * as path from 'path'; +import {pathToFileURL} from 'url'; + import userResolver from '../__mocks__/userResolver'; import userResolverAsync from '../__mocks__/userResolverAsync'; -import defaultResolver, {type PackageFilter} from '../defaultResolver'; +import defaultResolver from '../defaultResolver'; import nodeModulesPaths from '../nodeModulesPaths'; import Resolver from '../resolver'; import type {ResolverConfig} from '../types'; jest.mock('../__mocks__/userResolver').mock('../__mocks__/userResolverAsync'); -// Do not fully mock `resolve` because it is used by Jest. Doing it will crash -// in very strange ways. Instead, just spy on it and its `sync` method. -jest.mock('resolve', () => { - const originalModule = - jest.requireActual('resolve'); - - const m = jest.fn((...args) => - originalModule(...args), - ); - Object.assign(m, originalModule); - m.sync = jest.spyOn(originalModule, 'sync'); - - return m; -}); - const mockUserResolver = jest.mocked(userResolver); const mockUserResolverAsync = jest.mocked(userResolverAsync); -const mockResolveSync = jest.mocked(resolveSync); beforeEach(() => { mockUserResolver.mockClear(); mockUserResolverAsync.async.mockClear(); - mockResolveSync.mockClear(); Resolver.clearDefaultResolverCache(); }); @@ -134,25 +117,6 @@ describe('findNodeModule', () => { }); }); - it('wraps passed packageFilter to the resolve module when using the default resolver', () => { - const packageFilter = jest.fn(); - - // A resolver that delegates to defaultResolver with a packageFilter implementation - mockUserResolver.mockImplementation((request, opts) => - opts.defaultResolver(request, {...opts, packageFilter}), - ); - - Resolver.findNodeModule('./test', { - basedir: path.resolve(__dirname, '../__mocks__/'), - resolver: require.resolve('../__mocks__/userResolver'), - }); - - expect(packageFilter).toHaveBeenCalledWith( - expect.objectContaining({name: '__mocks__'}), - expect.any(String), - ); - }); - it('supports file URLs', () => { const path = pathToFileURL(__filename).href; const newPath = Resolver.findNodeModule(path, { @@ -209,7 +173,7 @@ describe('findNodeModule', () => { ); }); - test('respects order in package.json, not conditions', () => { + test('respects order in conditions over package.json', () => { const resultImport = Resolver.findNodeModule('exports', { basedir: conditionsRoot, conditions: ['import', 'require'], @@ -219,7 +183,7 @@ describe('findNodeModule', () => { conditions: ['require', 'import'], }); - expect(resultImport).toEqual(resultRequire); + expect(resultImport).not.toEqual(resultRequire); }); test('supports nested paths', () => { @@ -407,7 +371,9 @@ describe('findNodeModule', () => { basedir: path.resolve(importsRoot, './foo-import/index.js'), conditions: [], }); - }).toThrow('Missing "#something-else" specifier in "foo-import" package'); + }).toThrow( + `Package import specifier "#something-else" is not defined in package ${path.join(importsRoot, 'foo-import/package.json')}`, + ); }); }); }); @@ -446,27 +412,6 @@ describe('findNodeModuleAsync', () => { }); }); - it('passes packageFilter to the resolve module when using the default resolver', async () => { - const packageFilter = jest.fn(); - - // A resolver that delegates to defaultResolver with a packageFilter implementation - mockUserResolverAsync.async.mockImplementation((request, opts) => - Promise.resolve(opts.defaultResolver(request, {...opts, packageFilter})), - ); - - await Resolver.findNodeModuleAsync('test', { - basedir: '/', - resolver: require.resolve('../__mocks__/userResolverAsync'), - }); - - expect(mockResolveSync).toHaveBeenCalledWith( - 'test', - expect.objectContaining({ - packageFilter, - }), - ); - }); - it('supports file URLs', async () => { const path = pathToFileURL(__filename).href; const newPath = await Resolver.findNodeModuleAsync(path, { diff --git a/packages/jest-resolve/src/defaultResolver.ts b/packages/jest-resolve/src/defaultResolver.ts index 2ee685999c3c..76ba947450da 100644 --- a/packages/jest-resolve/src/defaultResolver.ts +++ b/packages/jest-resolve/src/defaultResolver.ts @@ -5,62 +5,19 @@ * LICENSE file in the root directory of this source tree. */ -import {dirname, isAbsolute, resolve as pathResolve} from 'path'; import {fileURLToPath} from 'url'; -import pnpResolver from 'jest-pnp-resolver'; import { - type SyncOpts as UpstreamResolveOptions, - sync as resolveSync, -} from 'resolve'; -import * as resolve from 'resolve.exports'; -import { - findClosestPackageJson, - isDirectory, - isFile, - readPackageCached, - realpathSync, -} from './fileWalkers'; -import type {PackageJSON} from './types'; - -/** - * Allows transforming parsed `package.json` contents. - * - * @param pkg - Parsed `package.json` contents. - * @param file - Path to `package.json` file. - * @param dir - Directory that contains the `package.json`. - * - * @returns Transformed `package.json` contents. - */ -export type PackageFilter = ( - pkg: PackageJSON, - file: string, - dir: string, -) => PackageJSON; - -/** - * Allows transforming a path within a package. - * - * @param pkg - Parsed `package.json` contents. - * @param path - Path being resolved. - * @param relativePath - Path relative from the `package.json` location. - * - * @returns Relative path that will be joined from the `package.json` location. - */ -export type PathFilter = ( - pkg: PackageJSON, - path: string, - relativePath: string, -) => string; + ResolverFactory, + type NapiResolveOptions as UpstreamResolveOptions, +} from 'unrs-resolver'; -export type ResolverOptions = { +export interface ResolverOptions extends UpstreamResolveOptions { /** Directory to begin resolving from. */ basedir: string; /** List of export conditions. */ conditions?: Array; /** Instance of default resolver. */ defaultResolver: typeof defaultResolver; - /** List of file extensions to search in order. */ - extensions?: Array; /** * List of directory names to be looked up for modules recursively. * @@ -75,16 +32,9 @@ export type ResolverOptions = { * The default is `undefined`. */ paths?: Array; - /** Allows transforming parsed `package.json` contents. */ - packageFilter?: PackageFilter; - /** Allows transforms a path within a package. */ - pathFilter?: PathFilter; /** Current root directory. */ rootDir?: string; -}; - -type UpstreamResolveOptionsWithConditions = UpstreamResolveOptions & - ResolverOptions; +} export type SyncResolver = (path: string, options: ResolverOptions) => string; export type AsyncResolver = ( @@ -94,160 +44,57 @@ export type AsyncResolver = ( export type Resolver = SyncResolver | AsyncResolver; -const defaultResolver: SyncResolver = (path, options) => { - // Yarn 2 adds support to `resolve` automatically so the pnpResolver is only - // needed for Yarn 1 which implements version 1 of the pnp spec - if (process.versions.pnp === '1') { - return pnpResolver(path, options); - } - - const resolveOptions: UpstreamResolveOptionsWithConditions = { - ...options, - isDirectory, - isFile, - preserveSymlinks: false, - readPackageSync, - realpathSync, - }; - - const pathToResolve = getPathInModule(path, resolveOptions); - - // resolveSync dereferences symlinks to ensure we don't create a separate - // module instance depending on how it was referenced. - const result = resolveSync(pathToResolve, resolveOptions); - - return result; -}; - -export default defaultResolver; - -/* - * helper functions - */ - -function readPackageSync(_: unknown, file: string): PackageJSON { - return readPackageCached(file); -} - -function getPathInModule( - path: string, - options: UpstreamResolveOptionsWithConditions, -): string { +const defaultResolver: SyncResolver = ( + path, + { + basedir, + conditions, + conditionNames, + modules, + moduleDirectory, + paths, + roots, + rootDir, + ...rest + }, +) => { if (path.startsWith('file://')) { path = fileURLToPath(path); } - if (shouldIgnoreRequestForExports(path)) { - return path; - } - - if (path.startsWith('#')) { - const closestPackageJson = findClosestPackageJson(options.basedir); + modules = modules || moduleDirectory; - if (!closestPackageJson) { - throw new Error( - `Jest: unable to locate closest package.json from ${options.basedir} when resolving import "${path}"`, - ); - } + const resolveOptions: UpstreamResolveOptions = { + conditionNames: conditionNames || conditions, + modules, + roots: roots || (rootDir ? [rootDir] : undefined), + ...rest, + }; - const pkg = readPackageCached(closestPackageJson); + let unrsResolver = new ResolverFactory(resolveOptions); - const resolved = resolve.imports( - pkg, - path as resolve.Imports.Entry, - createResolveOptions(options.conditions), - ); + let result = unrsResolver.sync(basedir, path); - if (resolved) { - const target = resolved[0]; - return target.startsWith('.') - ? // internal relative filepath - pathResolve(dirname(closestPackageJson), target) - : // this is an external module, re-resolve it - defaultResolver(target, options); + if (!result.path && paths?.length) { + const modulesArr = + modules == null || Array.isArray(modules) ? modules : [modules]; + if (modulesArr?.length) { + paths = paths.filter(p => !modulesArr.includes(p)); } - - if (pkg.imports) { - throw new Error( - '`imports` exists, but no results - this is a bug in Jest. Please report an issue', - ); + if (paths.length > 0) { + unrsResolver = unrsResolver.cloneWithOptions({ + ...resolveOptions, + modules: paths, + }); + result = unrsResolver.sync(basedir, path); } } - const segments = path.split('/'); - - let moduleName = segments.shift(); - - if (moduleName) { - if (moduleName.startsWith('@')) { - moduleName = `${moduleName}/${segments.shift()}`; - } - - // self-reference - const closestPackageJson = findClosestPackageJson(options.basedir); - if (closestPackageJson) { - const pkg = readPackageCached(closestPackageJson); - - if (pkg.name === moduleName) { - const resolved = resolve.exports( - pkg, - (segments.join('/') || '.') as resolve.Exports.Entry, - createResolveOptions(options.conditions), - ); - - if (resolved) { - return pathResolve(dirname(closestPackageJson), resolved[0]); - } - - if (pkg.exports) { - throw new Error( - '`exports` exists, but no results - this is a bug in Jest. Please report an issue', - ); - } - } - } - - let packageJsonPath = ''; - - try { - packageJsonPath = resolveSync(`${moduleName}/package.json`, options); - } catch { - // ignore if package.json cannot be found - } - - if (packageJsonPath && isFile(packageJsonPath)) { - const pkg = readPackageCached(packageJsonPath); - - const resolved = resolve.exports( - pkg, - (segments.join('/') || '.') as resolve.Exports.Entry, - createResolveOptions(options.conditions), - ); - - if (resolved) { - return pathResolve(dirname(packageJsonPath), resolved[0]); - } - - if (pkg.exports) { - throw new Error( - '`exports` exists, but no results - this is a bug in Jest. Please report an issue', - ); - } - } + if (result.error) { + throw new Error(result.error); } - return path; -} - -function createResolveOptions( - conditions: Array | undefined, -): resolve.Options { - return conditions - ? {conditions, unsafe: true} - : // no conditions were passed - let's assume this is Jest internal and it should be `require` - {browser: false, require: true}; -} + return result.path!; +}; -// if it's a relative import or an absolute path, imports/exports are ignored -const shouldIgnoreRequestForExports = (path: string) => - path.startsWith('.') || isAbsolute(path); +export default defaultResolver; diff --git a/packages/jest-resolve/src/index.ts b/packages/jest-resolve/src/index.ts index f859e3ed0005..b3a1b5d54c2d 100644 --- a/packages/jest-resolve/src/index.ts +++ b/packages/jest-resolve/src/index.ts @@ -10,8 +10,6 @@ import Resolver from './resolver'; export type { AsyncResolver, SyncResolver, - PackageFilter, - PathFilter, ResolverOptions, } from './defaultResolver'; export type { diff --git a/packages/jest-resolve/src/resolver.ts b/packages/jest-resolve/src/resolver.ts index e80582f5b399..7f89c87b424c 100644 --- a/packages/jest-resolve/src/resolver.ts +++ b/packages/jest-resolve/src/resolver.ts @@ -341,7 +341,7 @@ export default class Resolver { resolveModule( from: string, moduleName: string, - options: ResolveModuleConfig, + options?: ResolveModuleConfig, ): string { const dirname = path.dirname(from); const module = @@ -491,7 +491,7 @@ export default class Resolver { getMockModule( from: string, name: string, - options: Pick, + options?: Pick, ): string | null { const mock = this._moduleMap.getMockModule(name); if (mock) { @@ -737,7 +737,7 @@ export default class Resolver { resolveStubModuleName( from: string, moduleName: string, - options: Pick, + options?: Pick, ): string | null { const dirname = path.dirname(from); diff --git a/yarn.lock b/yarn.lock index 1f8bdffdee84..e910116be266 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4680,7 +4680,7 @@ __metadata: languageName: node linkType: hard -"@napi-rs/wasm-runtime@npm:^0.2.9": +"@napi-rs/wasm-runtime@npm:^0.2.10": version: 0.2.10 resolution: "@napi-rs/wasm-runtime@npm:0.2.10" dependencies: @@ -6144,19 +6144,7 @@ __metadata: languageName: node linkType: hard -"@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^5.0.0": - version: 5.0.6 - resolution: "@types/express-serve-static-core@npm:5.0.6" - dependencies: - "@types/node": "*" - "@types/qs": "*" - "@types/range-parser": "*" - "@types/send": "*" - checksum: bc3ea44923da7d1ffaa29eff7cc41a2b05f7340e8879fe9ee40717859937d73bcd635fcc0f8232f66af942624cc48bff42971e9e2c4075db6afe478534245855 - languageName: node - linkType: hard - -"@types/express-serve-static-core@npm:^4.17.33": +"@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.33": version: 4.19.6 resolution: "@types/express-serve-static-core@npm:4.19.6" dependencies: @@ -6168,18 +6156,7 @@ __metadata: languageName: node linkType: hard -"@types/express@npm:*": - version: 5.0.2 - resolution: "@types/express@npm:5.0.2" - dependencies: - "@types/body-parser": "*" - "@types/express-serve-static-core": ^5.0.0 - "@types/serve-static": "*" - checksum: c6f73c75c2b62e293e5fadcfd7de61716e3d0c0eaecda082b1921c9c8e56ddc37c530c5d4d68404794b38c7e8f5b893719ffc04c6fba2efa2fb13223bfb0346b - languageName: node - linkType: hard - -"@types/express@npm:^4.17.13": +"@types/express@npm:*, @types/express@npm:^4.17.13": version: 4.17.22 resolution: "@types/express@npm:4.17.22" dependencies: @@ -6434,13 +6411,6 @@ __metadata: languageName: node linkType: hard -"@types/pnpapi@npm:^0.0.5": - version: 0.0.5 - resolution: "@types/pnpapi@npm:0.0.5" - checksum: 46d8474b77358c8cc48b957c059de6ad0839d18d8e90252c500c6bc30702e44e2629cf330350f7b291f35d863190b5390b641992c0601853a5d8b129fa91bd4d - languageName: node - linkType: hard - "@types/prettier-v2@npm:@types/prettier@^2.1.5": version: 2.7.3 resolution: "@types/prettier@npm:2.7.3" @@ -6562,13 +6532,6 @@ __metadata: languageName: node linkType: hard -"@types/resolve@npm:^1.20.2": - version: 1.20.6 - resolution: "@types/resolve@npm:1.20.6" - checksum: dc35f5517606b6687cd971c0281ac58bdee2c50c051b030f04647d3991688be2259c304ee97e5b5d4b9936072c36767eb5933b54611a407d6557972bb6fea4f6 - languageName: node - linkType: hard - "@types/retry@npm:0.12.0": version: 0.12.0 resolution: "@types/retry@npm:0.12.0" @@ -6808,20 +6771,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:8.32.1": +"@typescript-eslint/types@npm:8.32.1, @typescript-eslint/types@npm:^8.11.0": version: 8.32.1 resolution: "@typescript-eslint/types@npm:8.32.1" checksum: e7062c51507c5aa2a18991965b1212ffd02d9ed815277c99e51985d55d4f2e692861e807e1d5c2e0a56dfbe655de3971a9be9e1215b8b72683f29473554c014b languageName: node linkType: hard -"@typescript-eslint/types@npm:^8.11.0": - version: 8.33.0 - resolution: "@typescript-eslint/types@npm:8.33.0" - checksum: 3fa8c4598960c93e4f002d0d62c39072617b58808af88237b87d26a506576fd33cf5822505128575cf3c817257d7ee08a696f015369f6958303c2e73a1c83fc5 - languageName: node - linkType: hard - "@typescript-eslint/typescript-estree@npm:8.32.1": version: 8.32.1 resolution: "@typescript-eslint/typescript-estree@npm:8.32.1" @@ -6872,123 +6828,123 @@ __metadata: languageName: node linkType: hard -"@unrs/resolver-binding-darwin-arm64@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.7.2" +"@unrs/resolver-binding-darwin-arm64@npm:1.7.8": + version: 1.7.8 + resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.7.8" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@unrs/resolver-binding-darwin-x64@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-darwin-x64@npm:1.7.2" +"@unrs/resolver-binding-darwin-x64@npm:1.7.8": + version: 1.7.8 + resolution: "@unrs/resolver-binding-darwin-x64@npm:1.7.8" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@unrs/resolver-binding-freebsd-x64@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.7.2" +"@unrs/resolver-binding-freebsd-x64@npm:1.7.8": + version: 1.7.8 + resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.7.8" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.7.2" +"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.7.8": + version: 1.7.8 + resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.7.8" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.7.2" +"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.7.8": + version: 1.7.8 + resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.7.8" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@unrs/resolver-binding-linux-arm64-gnu@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.7.2" +"@unrs/resolver-binding-linux-arm64-gnu@npm:1.7.8": + version: 1.7.8 + resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.7.8" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@unrs/resolver-binding-linux-arm64-musl@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.7.2" +"@unrs/resolver-binding-linux-arm64-musl@npm:1.7.8": + version: 1.7.8 + resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.7.8" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.7.2" +"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.7.8": + version: 1.7.8 + resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.7.8" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.7.2" +"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.7.8": + version: 1.7.8 + resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.7.8" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@unrs/resolver-binding-linux-riscv64-musl@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-linux-riscv64-musl@npm:1.7.2" +"@unrs/resolver-binding-linux-riscv64-musl@npm:1.7.8": + version: 1.7.8 + resolution: "@unrs/resolver-binding-linux-riscv64-musl@npm:1.7.8" conditions: os=linux & cpu=riscv64 & libc=musl languageName: node linkType: hard -"@unrs/resolver-binding-linux-s390x-gnu@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.7.2" +"@unrs/resolver-binding-linux-s390x-gnu@npm:1.7.8": + version: 1.7.8 + resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.7.8" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@unrs/resolver-binding-linux-x64-gnu@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.7.2" +"@unrs/resolver-binding-linux-x64-gnu@npm:1.7.8": + version: 1.7.8 + resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.7.8" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@unrs/resolver-binding-linux-x64-musl@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.7.2" +"@unrs/resolver-binding-linux-x64-musl@npm:1.7.8": + version: 1.7.8 + resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.7.8" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@unrs/resolver-binding-wasm32-wasi@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.7.2" +"@unrs/resolver-binding-wasm32-wasi@npm:1.7.8": + version: 1.7.8 + resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.7.8" dependencies: - "@napi-rs/wasm-runtime": ^0.2.9 + "@napi-rs/wasm-runtime": ^0.2.10 conditions: cpu=wasm32 languageName: node linkType: hard -"@unrs/resolver-binding-win32-arm64-msvc@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.7.2" +"@unrs/resolver-binding-win32-arm64-msvc@npm:1.7.8": + version: 1.7.8 + resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.7.8" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@unrs/resolver-binding-win32-ia32-msvc@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.7.2" +"@unrs/resolver-binding-win32-ia32-msvc@npm:1.7.8": + version: 1.7.8 + resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.7.8" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@unrs/resolver-binding-win32-x64-msvc@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.7.2" +"@unrs/resolver-binding-win32-x64-msvc@npm:1.7.8": + version: 1.7.8 + resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.7.8" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -7333,15 +7289,15 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^8.0.0, ajv@npm:^8.6.0, ajv@npm:^8.9.0": - version: 8.17.1 - resolution: "ajv@npm:8.17.1" +"ajv@npm:^8.0.0, ajv@npm:^8.6.0, ajv@npm:^8.9.0, ajv@npm:~8.13.0": + version: 8.13.0 + resolution: "ajv@npm:8.13.0" dependencies: fast-deep-equal: ^3.1.3 - fast-uri: ^3.0.1 json-schema-traverse: ^1.0.0 require-from-string: ^2.0.2 - checksum: 1797bf242cfffbaf3b870d13565bd1716b73f214bb7ada9a497063aada210200da36e3ed40237285f3255acc4feeae91b1fb183625331bad27da95973f7253d9 + uri-js: ^4.4.1 + checksum: 6de82d0b2073e645ca3300561356ddda0234f39b35d2125a8700b650509b296f41c00ab69f53178bbe25ad688bd6ac3747ab44101f2f4bd245952e8fd6ccc3c1 languageName: node linkType: hard @@ -7357,18 +7313,6 @@ __metadata: languageName: node linkType: hard -"ajv@npm:~8.13.0": - version: 8.13.0 - resolution: "ajv@npm:8.13.0" - dependencies: - fast-deep-equal: ^3.1.3 - json-schema-traverse: ^1.0.0 - require-from-string: ^2.0.2 - uri-js: ^4.4.1 - checksum: 6de82d0b2073e645ca3300561356ddda0234f39b35d2125a8700b650509b296f41c00ab69f53178bbe25ad688bd6ac3747ab44101f2f4bd245952e8fd6ccc3c1 - languageName: node - linkType: hard - "algoliasearch-helper@npm:^3.22.6": version: 3.25.0 resolution: "algoliasearch-helper@npm:3.25.0" @@ -11282,13 +11226,6 @@ __metadata: languageName: node linkType: hard -"fast-uri@npm:^3.0.1": - version: 3.0.6 - resolution: "fast-uri@npm:3.0.6" - checksum: 7161ba2a7944778d679ba8e5f00d6a2bb479a2142df0982f541d67be6c979b17808f7edbb0ce78161c85035974bde3fa52b5137df31da46c0828cb629ba67c4e - languageName: node - linkType: hard - "fastq@npm:^1.6.0": version: 1.19.1 resolution: "fastq@npm:1.19.1" @@ -14021,18 +13958,6 @@ __metadata: languageName: unknown linkType: soft -"jest-pnp-resolver@npm:^1.2.3": - version: 1.2.3 - resolution: "jest-pnp-resolver@npm:1.2.3" - peerDependencies: - jest-resolve: "*" - peerDependenciesMeta: - jest-resolve: - optional: true - checksum: db1a8ab2cb97ca19c01b1cfa9a9c8c69a143fde833c14df1fab0766f411b1148ff0df878adea09007ac6a2085ec116ba9a996a6ad104b1e58c20adbf88eed9b2 - languageName: node - linkType: hard - "jest-regex-util@npm:^29.0.0": version: 29.6.3 resolution: "jest-regex-util@npm:29.6.3" @@ -14090,17 +14015,13 @@ __metadata: resolution: "jest-resolve@workspace:packages/jest-resolve" dependencies: "@types/graceful-fs": ^4.1.3 - "@types/pnpapi": ^0.0.5 - "@types/resolve": ^1.20.2 chalk: ^4.0.0 graceful-fs: ^4.2.9 jest-haste-map: "workspace:*" - jest-pnp-resolver: ^1.2.3 jest-util: "workspace:*" jest-validate: "workspace:*" - resolve: ^1.20.0 - resolve.exports: ^2.0.0 slash: ^3.0.0 + unrs-resolver: ^1.7.8 languageName: unknown linkType: soft @@ -16261,20 +16182,13 @@ __metadata: languageName: node linkType: hard -"mime-db@npm:1.52.0": +"mime-db@npm:1.52.0, mime-db@npm:>= 1.43.0 < 2": version: 1.52.0 resolution: "mime-db@npm:1.52.0" checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f languageName: node linkType: hard -"mime-db@npm:>= 1.43.0 < 2": - version: 1.54.0 - resolution: "mime-db@npm:1.54.0" - checksum: e99aaf2f23f5bd607deb08c83faba5dd25cf2fec90a7cc5b92d8260867ee08dab65312e1a589e60093dc7796d41e5fae013268418482f1db4c7d52d0a0960ac9 - languageName: node - linkType: hard - "mime-db@npm:~1.33.0": version: 1.33.0 resolution: "mime-db@npm:1.33.0" @@ -19865,13 +19779,6 @@ __metadata: languageName: node linkType: hard -"resolve.exports@npm:^2.0.0": - version: 2.0.3 - resolution: "resolve.exports@npm:2.0.3" - checksum: abfb9f98278dcd0c19b8a49bb486abfafa23df4636d49128ea270dc982053c3ef230a530aecda1fae1322873fdfa6c97674fc539651ddfdb375ac58e0b8ef6df - languageName: node - linkType: hard - "resolve@npm:^1.1.6, resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4, resolve@npm:~1.22.1, resolve@npm:~1.22.2": version: 1.22.10 resolution: "resolve@npm:1.22.10" @@ -20027,7 +19934,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.1.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 @@ -20996,16 +20903,7 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:^1.1.1": - version: 1.3.0 - resolution: "string_decoder@npm:1.3.0" - dependencies: - safe-buffer: ~5.2.0 - checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 - languageName: node - linkType: hard - -"string_decoder@npm:~1.1.1": +"string_decoder@npm:^1.1.1, string_decoder@npm:~1.1.1": version: 1.1.1 resolution: "string_decoder@npm:1.1.1" dependencies: @@ -22049,27 +21947,27 @@ __metadata: languageName: node linkType: hard -"unrs-resolver@npm:^1.7.2": - version: 1.7.2 - resolution: "unrs-resolver@npm:1.7.2" - dependencies: - "@unrs/resolver-binding-darwin-arm64": 1.7.2 - "@unrs/resolver-binding-darwin-x64": 1.7.2 - "@unrs/resolver-binding-freebsd-x64": 1.7.2 - "@unrs/resolver-binding-linux-arm-gnueabihf": 1.7.2 - "@unrs/resolver-binding-linux-arm-musleabihf": 1.7.2 - "@unrs/resolver-binding-linux-arm64-gnu": 1.7.2 - "@unrs/resolver-binding-linux-arm64-musl": 1.7.2 - "@unrs/resolver-binding-linux-ppc64-gnu": 1.7.2 - "@unrs/resolver-binding-linux-riscv64-gnu": 1.7.2 - "@unrs/resolver-binding-linux-riscv64-musl": 1.7.2 - "@unrs/resolver-binding-linux-s390x-gnu": 1.7.2 - "@unrs/resolver-binding-linux-x64-gnu": 1.7.2 - "@unrs/resolver-binding-linux-x64-musl": 1.7.2 - "@unrs/resolver-binding-wasm32-wasi": 1.7.2 - "@unrs/resolver-binding-win32-arm64-msvc": 1.7.2 - "@unrs/resolver-binding-win32-ia32-msvc": 1.7.2 - "@unrs/resolver-binding-win32-x64-msvc": 1.7.2 +"unrs-resolver@npm:^1.7.2, unrs-resolver@npm:^1.7.8": + version: 1.7.8 + resolution: "unrs-resolver@npm:1.7.8" + dependencies: + "@unrs/resolver-binding-darwin-arm64": 1.7.8 + "@unrs/resolver-binding-darwin-x64": 1.7.8 + "@unrs/resolver-binding-freebsd-x64": 1.7.8 + "@unrs/resolver-binding-linux-arm-gnueabihf": 1.7.8 + "@unrs/resolver-binding-linux-arm-musleabihf": 1.7.8 + "@unrs/resolver-binding-linux-arm64-gnu": 1.7.8 + "@unrs/resolver-binding-linux-arm64-musl": 1.7.8 + "@unrs/resolver-binding-linux-ppc64-gnu": 1.7.8 + "@unrs/resolver-binding-linux-riscv64-gnu": 1.7.8 + "@unrs/resolver-binding-linux-riscv64-musl": 1.7.8 + "@unrs/resolver-binding-linux-s390x-gnu": 1.7.8 + "@unrs/resolver-binding-linux-x64-gnu": 1.7.8 + "@unrs/resolver-binding-linux-x64-musl": 1.7.8 + "@unrs/resolver-binding-wasm32-wasi": 1.7.8 + "@unrs/resolver-binding-win32-arm64-msvc": 1.7.8 + "@unrs/resolver-binding-win32-ia32-msvc": 1.7.8 + "@unrs/resolver-binding-win32-x64-msvc": 1.7.8 napi-postinstall: ^0.2.2 dependenciesMeta: "@unrs/resolver-binding-darwin-arm64": @@ -22106,7 +22004,7 @@ __metadata: optional: true "@unrs/resolver-binding-win32-x64-msvc": optional: true - checksum: 6eb2472f4142bdcd321f461dd057a2a3c7ffc59ffb3da9fc2f6dc7c6c6a92e7ef53f6ae9e3c160e7459bb6fd0e09c537035ecd0335e367e278f3e981ef682b4c + checksum: b1fd54b477c6b92bf8f0df05843f889eb7cf0060e715e9a0c13988523ec7029fca8e91fdd77c6678e56e904891571959d130c3c58aa8e914d1ebb34c617c1f64 languageName: node linkType: hard