Skip to content

Commit 8558033

Browse files
committed
Allow export map entries to remap back to input files for a program
1 parent 67172e4 commit 8558033

22 files changed

+577
-8
lines changed

src/compiler/moduleNameResolver.ts

Lines changed: 139 additions & 8 deletions
Large diffs are not rendered by default.

src/compiler/utilities.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4355,6 +4355,16 @@ namespace ts {
43554355
Extension.Dts;
43564356
}
43574357

4358+
/**
4359+
* This function is an inverse of `getDeclarationEmitExtensionForPath`.
4360+
*/
4361+
export function getPossibleOriginalInputExtensionForExtension(path: string) {
4362+
return fileExtensionIsOneOf(path, [Extension.Dmts, Extension.Mjs, Extension.Mts]) ? [Extension.Mts, Extension.Mjs] :
4363+
fileExtensionIsOneOf(path, [Extension.Dcts, Extension.Cjs, Extension.Cts]) ? [Extension.Cts, Extension.Cjs]:
4364+
fileExtensionIsOneOf(path, [`.json.d.ts`]) ? [Extension.Json] :
4365+
[Extension.Tsx, Extension.Ts, Extension.Jsx, Extension.Js];
4366+
}
4367+
43584368
export function outFile(options: CompilerOptions) {
43594369
return options.outFile || options.out;
43604370
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
//// [tests/cases/compiler/nodeNextPackageSelfNameWithOutDir.ts] ////
2+
3+
//// [package.json]
4+
{
5+
"name": "@this/package",
6+
"type": "module",
7+
"exports": {
8+
".": "./dist/index.js"
9+
}
10+
}
11+
//// [index.ts]
12+
import * as me from "@this/package";
13+
14+
me.thing();
15+
16+
export function thing(): void {}
17+
18+
19+
//// [index.js]
20+
import * as me from "@this/package";
21+
me.thing();
22+
export function thing() { }
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
=== tests/cases/compiler/index.ts ===
2+
import * as me from "@this/package";
3+
>me : Symbol(me, Decl(index.ts, 0, 6))
4+
5+
me.thing();
6+
>me.thing : Symbol(thing, Decl(index.ts, 2, 11))
7+
>me : Symbol(me, Decl(index.ts, 0, 6))
8+
>thing : Symbol(thing, Decl(index.ts, 2, 11))
9+
10+
export function thing(): void {}
11+
>thing : Symbol(thing, Decl(index.ts, 2, 11))
12+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
=== tests/cases/compiler/index.ts ===
2+
import * as me from "@this/package";
3+
>me : typeof me
4+
5+
me.thing();
6+
>me.thing() : void
7+
>me.thing : () => void
8+
>me : typeof me
9+
>thing : () => void
10+
11+
export function thing(): void {}
12+
>thing : () => void
13+
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
//// [tests/cases/compiler/nodeNextPackageSelfNameWithOutDirDeclDir.ts] ////
2+
3+
//// [package.json]
4+
{
5+
"name": "@this/package",
6+
"type": "module",
7+
"exports": {
8+
".": {
9+
"default": "./dist/index.js",
10+
"types": "./types/index.d.ts"
11+
}
12+
}
13+
}
14+
//// [index.ts]
15+
import * as me from "@this/package";
16+
17+
me.thing();
18+
19+
export function thing(): void {}
20+
21+
22+
//// [index.js]
23+
import * as me from "@this/package";
24+
me.thing();
25+
export function thing() { }
26+
27+
28+
//// [index.d.ts]
29+
export declare function thing(): void;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
=== tests/cases/compiler/index.ts ===
2+
import * as me from "@this/package";
3+
>me : Symbol(me, Decl(index.ts, 0, 6))
4+
5+
me.thing();
6+
>me.thing : Symbol(thing, Decl(index.ts, 2, 11))
7+
>me : Symbol(me, Decl(index.ts, 0, 6))
8+
>thing : Symbol(thing, Decl(index.ts, 2, 11))
9+
10+
export function thing(): void {}
11+
>thing : Symbol(thing, Decl(index.ts, 2, 11))
12+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
=== tests/cases/compiler/index.ts ===
2+
import * as me from "@this/package";
3+
>me : typeof me
4+
5+
me.thing();
6+
>me.thing() : void
7+
>me.thing : () => void
8+
>me : typeof me
9+
>thing : () => void
10+
11+
export function thing(): void {}
12+
>thing : () => void
13+
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
//// [tests/cases/compiler/nodeNextPackageSelfNameWithOutDirDeclDirComposite.ts] ////
2+
3+
//// [package.json]
4+
{
5+
"name": "@this/package",
6+
"type": "module",
7+
"exports": {
8+
".": {
9+
"default": "./dist/index.js",
10+
"types": "./types/index.d.ts"
11+
}
12+
}
13+
}
14+
//// [index.ts]
15+
import * as me from "@this/package";
16+
17+
me.thing();
18+
19+
export function thing(): void {}
20+
21+
22+
//// [index.js]
23+
import * as me from "@this/package";
24+
me.thing();
25+
export function thing() { }
26+
27+
28+
//// [index.d.ts]
29+
export declare function thing(): void;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
=== tests/cases/compiler/index.ts ===
2+
import * as me from "@this/package";
3+
>me : Symbol(me, Decl(index.ts, 0, 6))
4+
5+
me.thing();
6+
>me.thing : Symbol(thing, Decl(index.ts, 2, 11))
7+
>me : Symbol(me, Decl(index.ts, 0, 6))
8+
>thing : Symbol(thing, Decl(index.ts, 2, 11))
9+
10+
export function thing(): void {}
11+
>thing : Symbol(thing, Decl(index.ts, 2, 11))
12+

0 commit comments

Comments
 (0)