Skip to content

Commit 1389af1

Browse files
committed
make sure to still call user-provided packageFilter
1 parent cebe068 commit 1389af1

3 files changed

Lines changed: 29 additions & 14 deletions

File tree

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"name": "__mocks__",
3+
"version": "1.0.0",
4+
"dependencies": {
5+
}
6+
}

packages/jest-resolve/src/__tests__/resolve.test.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -126,24 +126,22 @@ describe('findNodeModule', () => {
126126
});
127127
});
128128

129-
it('passes packageFilter to the resolve module when using the default resolver', () => {
129+
it('wraps passed packageFilter to the resolve module when using the default resolver', () => {
130130
const packageFilter = jest.fn();
131131

132132
// A resolver that delegates to defaultResolver with a packageFilter implementation
133133
userResolver.mockImplementation((request, opts) =>
134134
opts.defaultResolver(request, {...opts, packageFilter}),
135135
);
136136

137-
Resolver.findNodeModule('test', {
138-
basedir: '/',
137+
Resolver.findNodeModule('./test', {
138+
basedir: path.resolve(__dirname, '../__mocks__/'),
139139
resolver: require.resolve('../__mocks__/userResolver'),
140140
});
141141

142-
expect(mockResolveSync).toHaveBeenCalledWith(
143-
'test',
144-
expect.objectContaining({
145-
packageFilter,
146-
}),
142+
expect(packageFilter).toHaveBeenCalledWith(
143+
expect.objectContaining({name: '__mocks__'}),
144+
expect.any(String),
147145
);
148146
});
149147

packages/jest-resolve/src/defaultResolver.ts

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,10 @@ export default function defaultResolver(
4747
...options,
4848
isDirectory,
4949
isFile,
50-
packageFilter:
51-
options.packageFilter ?? createPackageFilter(options.conditions),
50+
packageFilter: createPackageFilter(
51+
options.conditions,
52+
options.packageFilter,
53+
),
5254
preserveSymlinks: false,
5355
readPackageSync,
5456
realpathSync,
@@ -156,7 +158,10 @@ function readPackageSync(_: unknown, file: Config.Path): PkgJson {
156158
return readPackageCached(file);
157159
}
158160

159-
function createPackageFilter(conditions?: Array<string>) {
161+
function createPackageFilter(
162+
conditions?: Array<string>,
163+
userFilter?: ResolverOptions['packageFilter'],
164+
): ResolverOptions['packageFilter'] {
160165
function attemptExportsFallback(pkg: PkgJson) {
161166
const options: ResolveExportsOptions = conditions
162167
? {conditions, unsafe: true}
@@ -170,10 +175,16 @@ function createPackageFilter(conditions?: Array<string>) {
170175
}
171176
}
172177

173-
return function packageFilter(pkg: PkgJson) {
178+
return function packageFilter(pkg: PkgJson, ...rest) {
179+
let filteredPkg = pkg;
180+
181+
if (userFilter) {
182+
filteredPkg = userFilter(filteredPkg, ...rest);
183+
}
184+
174185
return {
175-
...pkg,
176-
main: pkg.main ?? attemptExportsFallback(pkg),
186+
...filteredPkg,
187+
main: filteredPkg.main ?? attemptExportsFallback(filteredPkg),
177188
};
178189
};
179190
}

0 commit comments

Comments
 (0)