Skip to content

Commit 7b14d41

Browse files
TypeScript Botandrewbranch
TypeScript Bot
andauthored
Cherry-pick PR #43024 into release-4.2 (#43032)
Component commits: bd2fd3b Only filter ignored paths from module specifier generation if there exists a better option a687bae Nit 7597f52 Merge branch 'master' into bug/42785 Co-authored-by: Andrew Branch <andrew@wheream.io>
1 parent d971013 commit 7b14d41

5 files changed

+133
-2
lines changed

src/compiler/moduleSpecifiers.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -282,10 +282,12 @@ namespace ts.moduleSpecifiers {
282282
const redirects = host.redirectTargetsMap.get(importedPath) || emptyArray;
283283
const importedFileNames = [...(referenceRedirect ? [referenceRedirect] : emptyArray), importedFileName, ...redirects];
284284
const targets = importedFileNames.map(f => getNormalizedAbsolutePath(f, cwd));
285+
let shouldFilterIgnoredPaths = !every(targets, containsIgnoredPath);
286+
285287
if (!preferSymlinks) {
286288
// Symlinks inside ignored paths are already filtered out of the symlink cache,
287289
// so we only need to remove them from the realpath filenames.
288-
const result = forEach(targets, p => !containsIgnoredPath(p) && cb(p, referenceRedirect === p));
290+
const result = forEach(targets, p => !(shouldFilterIgnoredPaths && containsIgnoredPath(p)) && cb(p, referenceRedirect === p));
289291
if (result) return result;
290292
}
291293
const links = host.getSymlinkCache
@@ -312,12 +314,13 @@ namespace ts.moduleSpecifiers {
312314
for (const symlinkDirectory of symlinkDirectories) {
313315
const option = resolvePath(symlinkDirectory, relative);
314316
const result = cb(option, target === referenceRedirect);
317+
shouldFilterIgnoredPaths = true; // We found a non-ignored path in symlinks, so we can reject ignored-path realpaths
315318
if (result) return result;
316319
}
317320
});
318321
});
319322
return result || (preferSymlinks
320-
? forEach(targets, p => containsIgnoredPath(p) ? undefined : cb(p, p === referenceRedirect))
323+
? forEach(targets, p => shouldFilterIgnoredPaths && containsIgnoredPath(p) ? undefined : cb(p, p === referenceRedirect))
321324
: undefined);
322325
}
323326

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
//// [tests/cases/compiler/nodeModuleReexportFromDottedPath.ts] ////
2+
3+
//// [index.d.ts]
4+
export interface PrismaClientOptions {
5+
rejectOnNotFound?: any;
6+
}
7+
8+
export class PrismaClient<T extends PrismaClientOptions = PrismaClientOptions> {
9+
private fetcher;
10+
}
11+
12+
//// [index.d.ts]
13+
export * from ".prisma/client";
14+
15+
//// [index.ts]
16+
import { PrismaClient } from "@prisma/client";
17+
declare const enhancePrisma: <TPrismaClientCtor>(client: TPrismaClientCtor) => TPrismaClientCtor & { enhanced: unknown };
18+
const EnhancedPrisma = enhancePrisma(PrismaClient);
19+
export default new EnhancedPrisma();
20+
21+
22+
//// [index.js]
23+
"use strict";
24+
exports.__esModule = true;
25+
var client_1 = require("@prisma/client");
26+
var EnhancedPrisma = enhancePrisma(client_1.PrismaClient);
27+
exports["default"] = new EnhancedPrisma();
28+
29+
30+
//// [index.d.ts]
31+
import { PrismaClient } from "@prisma/client";
32+
declare const _default: PrismaClient<import(".prisma/client").PrismaClientOptions>;
33+
export default _default;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
=== /node_modules/.prisma/client/index.d.ts ===
2+
export interface PrismaClientOptions {
3+
>PrismaClientOptions : Symbol(PrismaClientOptions, Decl(index.d.ts, 0, 0))
4+
5+
rejectOnNotFound?: any;
6+
>rejectOnNotFound : Symbol(PrismaClientOptions.rejectOnNotFound, Decl(index.d.ts, 0, 38))
7+
}
8+
9+
export class PrismaClient<T extends PrismaClientOptions = PrismaClientOptions> {
10+
>PrismaClient : Symbol(PrismaClient, Decl(index.d.ts, 2, 1))
11+
>T : Symbol(T, Decl(index.d.ts, 4, 26))
12+
>PrismaClientOptions : Symbol(PrismaClientOptions, Decl(index.d.ts, 0, 0))
13+
>PrismaClientOptions : Symbol(PrismaClientOptions, Decl(index.d.ts, 0, 0))
14+
15+
private fetcher;
16+
>fetcher : Symbol(PrismaClient.fetcher, Decl(index.d.ts, 4, 80))
17+
}
18+
19+
=== /node_modules/@prisma/client/index.d.ts ===
20+
export * from ".prisma/client";
21+
No type information for this code.
22+
No type information for this code.=== /index.ts ===
23+
import { PrismaClient } from "@prisma/client";
24+
>PrismaClient : Symbol(PrismaClient, Decl(index.ts, 0, 8))
25+
26+
declare const enhancePrisma: <TPrismaClientCtor>(client: TPrismaClientCtor) => TPrismaClientCtor & { enhanced: unknown };
27+
>enhancePrisma : Symbol(enhancePrisma, Decl(index.ts, 1, 13))
28+
>TPrismaClientCtor : Symbol(TPrismaClientCtor, Decl(index.ts, 1, 30))
29+
>client : Symbol(client, Decl(index.ts, 1, 49))
30+
>TPrismaClientCtor : Symbol(TPrismaClientCtor, Decl(index.ts, 1, 30))
31+
>TPrismaClientCtor : Symbol(TPrismaClientCtor, Decl(index.ts, 1, 30))
32+
>enhanced : Symbol(enhanced, Decl(index.ts, 1, 100))
33+
34+
const EnhancedPrisma = enhancePrisma(PrismaClient);
35+
>EnhancedPrisma : Symbol(EnhancedPrisma, Decl(index.ts, 2, 5))
36+
>enhancePrisma : Symbol(enhancePrisma, Decl(index.ts, 1, 13))
37+
>PrismaClient : Symbol(PrismaClient, Decl(index.ts, 0, 8))
38+
39+
export default new EnhancedPrisma();
40+
>EnhancedPrisma : Symbol(EnhancedPrisma, Decl(index.ts, 2, 5))
41+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
=== /node_modules/.prisma/client/index.d.ts ===
2+
export interface PrismaClientOptions {
3+
rejectOnNotFound?: any;
4+
>rejectOnNotFound : any
5+
}
6+
7+
export class PrismaClient<T extends PrismaClientOptions = PrismaClientOptions> {
8+
>PrismaClient : PrismaClient<T>
9+
10+
private fetcher;
11+
>fetcher : any
12+
}
13+
14+
=== /node_modules/@prisma/client/index.d.ts ===
15+
export * from ".prisma/client";
16+
No type information for this code.
17+
No type information for this code.=== /index.ts ===
18+
import { PrismaClient } from "@prisma/client";
19+
>PrismaClient : typeof PrismaClient
20+
21+
declare const enhancePrisma: <TPrismaClientCtor>(client: TPrismaClientCtor) => TPrismaClientCtor & { enhanced: unknown };
22+
>enhancePrisma : <TPrismaClientCtor>(client: TPrismaClientCtor) => TPrismaClientCtor & { enhanced: unknown; }
23+
>client : TPrismaClientCtor
24+
>enhanced : unknown
25+
26+
const EnhancedPrisma = enhancePrisma(PrismaClient);
27+
>EnhancedPrisma : typeof PrismaClient & { enhanced: unknown; }
28+
>enhancePrisma(PrismaClient) : typeof PrismaClient & { enhanced: unknown; }
29+
>enhancePrisma : <TPrismaClientCtor>(client: TPrismaClientCtor) => TPrismaClientCtor & { enhanced: unknown; }
30+
>PrismaClient : typeof PrismaClient
31+
32+
export default new EnhancedPrisma();
33+
>new EnhancedPrisma() : PrismaClient<import("/node_modules/.prisma/client/index").PrismaClientOptions>
34+
>EnhancedPrisma : typeof PrismaClient & { enhanced: unknown; }
35+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// @declaration: true
2+
3+
// @Filename: /node_modules/.prisma/client/index.d.ts
4+
export interface PrismaClientOptions {
5+
rejectOnNotFound?: any;
6+
}
7+
8+
export class PrismaClient<T extends PrismaClientOptions = PrismaClientOptions> {
9+
private fetcher;
10+
}
11+
12+
// @Filename: /node_modules/@prisma/client/index.d.ts
13+
export * from ".prisma/client";
14+
15+
// @Filename: /index.ts
16+
import { PrismaClient } from "@prisma/client";
17+
declare const enhancePrisma: <TPrismaClientCtor>(client: TPrismaClientCtor) => TPrismaClientCtor & { enhanced: unknown };
18+
const EnhancedPrisma = enhancePrisma(PrismaClient);
19+
export default new EnhancedPrisma();

0 commit comments

Comments
 (0)