Skip to content

Commit c3c1968

Browse files
committed
fix(60223): add Promise.try() to ESNext lib
1 parent 40caf34 commit c3c1968

26 files changed

+241
-5
lines changed

src/compiler/commandLineParser.ts

+1
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,7 @@ const libEntries: [string, string][] = [
246246
["esnext.regexp", "lib.es2024.regexp.d.ts"],
247247
["esnext.string", "lib.es2024.string.d.ts"],
248248
["esnext.iterator", "lib.esnext.iterator.d.ts"],
249+
["esnext.promise", "lib.esnext.promise.d.ts"],
249250
["decorators", "lib.decorators.d.ts"],
250251
["decorators.legacy", "lib.decorators.legacy.d.ts"],
251252
];

src/lib/esnext.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@
55
/// <reference lib="esnext.collection" />
66
/// <reference lib="esnext.array" />
77
/// <reference lib="esnext.iterator" />
8+
/// <reference lib="esnext.promise" />

src/lib/esnext.promise.d.ts

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
interface PromiseConstructor {
2+
/**
3+
* Takes a callback of any kind (returns or throws, synchronously or asynchronously) and wraps its result
4+
* in a Promise.
5+
*
6+
* @param callbackFn A function that is called synchronously with no arguments. It can do anything: either return
7+
* a value, throw an error, or return a promise.
8+
*
9+
* @returns A Promise that is:
10+
* - Already fulfilled, if the callback synchronously returns a value.
11+
* - Already rejected, if the callback synchronously throws an error.
12+
* - Asynchronously fulfilled or rejected, if the callback returns a promise.
13+
*/
14+
try<T>(callbackFn: () => T | Promise<T>): Promise<T>;
15+
}

src/lib/libs.json

+1
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@
8585
"esnext.collection",
8686
"esnext.array",
8787
"esnext.iterator",
88+
"esnext.promise",
8889
"decorators",
8990
"decorators.legacy",
9091
// Default libraries

tests/baselines/reference/bundlerDirectoryModule(moduleresolution=bundler).trace.json

+13
Original file line numberDiff line numberDiff line change
@@ -1006,6 +1006,19 @@
10061006
"Directory '/.src/node_modules' does not exist, skipping all lookups in it.",
10071007
"Directory '/node_modules' does not exist, skipping all lookups in it.",
10081008
"======== Module name '@typescript/lib-esnext/iterator' was not resolved. ========",
1009+
"======== Resolving module '@typescript/lib-esnext/promise' from '/.src/__lib_node_modules_lookup_lib.esnext.promise.d.ts__.ts'. ========",
1010+
"Explicitly specified module resolution kind: 'Node10'.",
1011+
"Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: TypeScript, Declaration.",
1012+
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
1013+
"Directory '/.src/node_modules' does not exist, skipping all lookups in it.",
1014+
"Scoped package detected, looking in 'typescript__lib-esnext/promise'",
1015+
"Directory '/node_modules' does not exist, skipping all lookups in it.",
1016+
"Scoped package detected, looking in 'typescript__lib-esnext/promise'",
1017+
"Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: JavaScript.",
1018+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
1019+
"Directory '/.src/node_modules' does not exist, skipping all lookups in it.",
1020+
"Directory '/node_modules' does not exist, skipping all lookups in it.",
1021+
"======== Module name '@typescript/lib-esnext/promise' was not resolved. ========",
10091022
"======== Resolving module '@typescript/lib-dom' from '/.src/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========",
10101023
"Explicitly specified module resolution kind: 'Node10'.",
10111024
"Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.",

tests/baselines/reference/bundlerDirectoryModule(moduleresolution=nodenext).trace.json

+15
Original file line numberDiff line numberDiff line change
@@ -1164,6 +1164,21 @@
11641164
"======== Module name '@typescript/lib-esnext/iterator' was not resolved. ========",
11651165
"File '/.ts/package.json' does not exist according to earlier cached lookups.",
11661166
"File '/package.json' does not exist according to earlier cached lookups.",
1167+
"======== Resolving module '@typescript/lib-esnext/promise' from '/.src/__lib_node_modules_lookup_lib.esnext.promise.d.ts__.ts'. ========",
1168+
"Explicitly specified module resolution kind: 'Node10'.",
1169+
"Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: TypeScript, Declaration.",
1170+
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
1171+
"Directory '/.src/node_modules' does not exist, skipping all lookups in it.",
1172+
"Scoped package detected, looking in 'typescript__lib-esnext/promise'",
1173+
"Directory '/node_modules' does not exist, skipping all lookups in it.",
1174+
"Scoped package detected, looking in 'typescript__lib-esnext/promise'",
1175+
"Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: JavaScript.",
1176+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
1177+
"Directory '/.src/node_modules' does not exist, skipping all lookups in it.",
1178+
"Directory '/node_modules' does not exist, skipping all lookups in it.",
1179+
"======== Module name '@typescript/lib-esnext/promise' was not resolved. ========",
1180+
"File '/.ts/package.json' does not exist according to earlier cached lookups.",
1181+
"File '/package.json' does not exist according to earlier cached lookups.",
11671182
"======== Resolving module '@typescript/lib-dom' from '/.src/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========",
11681183
"Explicitly specified module resolution kind: 'Node10'.",
11691184
"Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.",

tests/baselines/reference/modulePreserve2.trace.json

+12
Original file line numberDiff line numberDiff line change
@@ -948,6 +948,18 @@
948948
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
949949
"Directory '/.src/node_modules' does not exist, skipping all lookups in it.",
950950
"======== Module name '@typescript/lib-esnext/iterator' was not resolved. ========",
951+
"======== Resolving module '@typescript/lib-esnext/promise' from '/.src/__lib_node_modules_lookup_lib.esnext.promise.d.ts__.ts'. ========",
952+
"Explicitly specified module resolution kind: 'Node10'.",
953+
"Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: TypeScript, Declaration.",
954+
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
955+
"Directory '/.src/node_modules' does not exist, skipping all lookups in it.",
956+
"Scoped package detected, looking in 'typescript__lib-esnext/promise'",
957+
"Directory '/node_modules/@types' does not exist, skipping all lookups in it.",
958+
"Scoped package detected, looking in 'typescript__lib-esnext/promise'",
959+
"Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: JavaScript.",
960+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
961+
"Directory '/.src/node_modules' does not exist, skipping all lookups in it.",
962+
"======== Module name '@typescript/lib-esnext/promise' was not resolved. ========",
951963
"======== Resolving module '@typescript/lib-dom' from '/.src/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========",
952964
"Explicitly specified module resolution kind: 'Node10'.",
953965
"Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.",

tests/baselines/reference/modulePreserve3.trace.json

+11
Original file line numberDiff line numberDiff line change
@@ -875,6 +875,17 @@
875875
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
876876
"Directory '/.src/node_modules' does not exist, skipping all lookups in it.",
877877
"======== Module name '@typescript/lib-esnext/iterator' was not resolved. ========",
878+
"======== Resolving module '@typescript/lib-esnext/promise' from '/.src/__lib_node_modules_lookup_lib.esnext.promise.d.ts__.ts'. ========",
879+
"Explicitly specified module resolution kind: 'Node10'.",
880+
"Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: TypeScript, Declaration.",
881+
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
882+
"Directory '/.src/node_modules' does not exist, skipping all lookups in it.",
883+
"Scoped package detected, looking in 'typescript__lib-esnext/promise'",
884+
"Scoped package detected, looking in 'typescript__lib-esnext/promise'",
885+
"Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: JavaScript.",
886+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
887+
"Directory '/.src/node_modules' does not exist, skipping all lookups in it.",
888+
"======== Module name '@typescript/lib-esnext/promise' was not resolved. ========",
878889
"======== Resolving module '@typescript/lib-dom' from '/.src/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========",
879890
"Explicitly specified module resolution kind: 'Node10'.",
880891
"Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.",

tests/baselines/reference/nodeModulesExportsBlocksTypesVersions(module=nodenext).trace.json

+14
Original file line numberDiff line numberDiff line change
@@ -1273,6 +1273,20 @@
12731273
"======== Module name '@typescript/lib-esnext/iterator' was not resolved. ========",
12741274
"File '/.ts/package.json' does not exist according to earlier cached lookups.",
12751275
"File '/package.json' does not exist according to earlier cached lookups.",
1276+
"======== Resolving module '@typescript/lib-esnext/promise' from '/.src/__lib_node_modules_lookup_lib.esnext.promise.d.ts__.ts'. ========",
1277+
"Explicitly specified module resolution kind: 'Node10'.",
1278+
"Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: TypeScript, Declaration.",
1279+
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
1280+
"Directory '/.src/node_modules' does not exist, skipping all lookups in it.",
1281+
"Scoped package detected, looking in 'typescript__lib-esnext/promise'",
1282+
"Directory '/node_modules/@types' does not exist, skipping all lookups in it.",
1283+
"Scoped package detected, looking in 'typescript__lib-esnext/promise'",
1284+
"Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: JavaScript.",
1285+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
1286+
"Directory '/.src/node_modules' does not exist, skipping all lookups in it.",
1287+
"======== Module name '@typescript/lib-esnext/promise' was not resolved. ========",
1288+
"File '/.ts/package.json' does not exist according to earlier cached lookups.",
1289+
"File '/package.json' does not exist according to earlier cached lookups.",
12761290
"======== Resolving module '@typescript/lib-dom' from '/.src/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========",
12771291
"Explicitly specified module resolution kind: 'Node10'.",
12781292
"Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.",

tests/baselines/reference/nodeModulesPackageImports(module=nodenext).trace.json

+15
Original file line numberDiff line numberDiff line change
@@ -1223,6 +1223,21 @@
12231223
"======== Module name '@typescript/lib-esnext/iterator' was not resolved. ========",
12241224
"File '/.ts/package.json' does not exist according to earlier cached lookups.",
12251225
"File '/package.json' does not exist according to earlier cached lookups.",
1226+
"======== Resolving module '@typescript/lib-esnext/promise' from '/.src/__lib_node_modules_lookup_lib.esnext.promise.d.ts__.ts'. ========",
1227+
"Explicitly specified module resolution kind: 'Node10'.",
1228+
"Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: TypeScript, Declaration.",
1229+
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
1230+
"Directory '/.src/node_modules' does not exist, skipping all lookups in it.",
1231+
"Scoped package detected, looking in 'typescript__lib-esnext/promise'",
1232+
"Directory '/node_modules' does not exist, skipping all lookups in it.",
1233+
"Scoped package detected, looking in 'typescript__lib-esnext/promise'",
1234+
"Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: JavaScript.",
1235+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
1236+
"Directory '/.src/node_modules' does not exist, skipping all lookups in it.",
1237+
"Directory '/node_modules' does not exist, skipping all lookups in it.",
1238+
"======== Module name '@typescript/lib-esnext/promise' was not resolved. ========",
1239+
"File '/.ts/package.json' does not exist according to earlier cached lookups.",
1240+
"File '/package.json' does not exist according to earlier cached lookups.",
12261241
"======== Resolving module '@typescript/lib-dom' from '/.src/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========",
12271242
"Explicitly specified module resolution kind: 'Node10'.",
12281243
"Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.",

tests/baselines/reference/nodeModulesPackagePatternExportsTrailers(module=nodenext).trace.json

+14
Original file line numberDiff line numberDiff line change
@@ -1254,6 +1254,20 @@
12541254
"======== Module name '@typescript/lib-esnext/iterator' was not resolved. ========",
12551255
"File '/.ts/package.json' does not exist according to earlier cached lookups.",
12561256
"File '/package.json' does not exist according to earlier cached lookups.",
1257+
"======== Resolving module '@typescript/lib-esnext/promise' from '/.src/__lib_node_modules_lookup_lib.esnext.promise.d.ts__.ts'. ========",
1258+
"Explicitly specified module resolution kind: 'Node10'.",
1259+
"Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: TypeScript, Declaration.",
1260+
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
1261+
"Directory '/.src/node_modules/@types' does not exist, skipping all lookups in it.",
1262+
"Scoped package detected, looking in 'typescript__lib-esnext/promise'",
1263+
"Directory '/node_modules' does not exist, skipping all lookups in it.",
1264+
"Scoped package detected, looking in 'typescript__lib-esnext/promise'",
1265+
"Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: JavaScript.",
1266+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
1267+
"Directory '/node_modules' does not exist, skipping all lookups in it.",
1268+
"======== Module name '@typescript/lib-esnext/promise' was not resolved. ========",
1269+
"File '/.ts/package.json' does not exist according to earlier cached lookups.",
1270+
"File '/package.json' does not exist according to earlier cached lookups.",
12571271
"======== Resolving module '@typescript/lib-dom' from '/.src/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========",
12581272
"Explicitly specified module resolution kind: 'Node10'.",
12591273
"Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.",

tests/baselines/reference/reactJsxReactResolvedNodeNext.trace.json

+13
Original file line numberDiff line numberDiff line change
@@ -1043,6 +1043,19 @@
10431043
"======== Module name '@typescript/lib-esnext/iterator' was not resolved. ========",
10441044
"File '/.ts/package.json' does not exist according to earlier cached lookups.",
10451045
"File '/package.json' does not exist according to earlier cached lookups.",
1046+
"======== Resolving module '@typescript/lib-esnext/promise' from '/.src/__lib_node_modules_lookup_lib.esnext.promise.d.ts__.ts'. ========",
1047+
"Explicitly specified module resolution kind: 'Node10'.",
1048+
"Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: TypeScript, Declaration.",
1049+
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
1050+
"Scoped package detected, looking in 'typescript__lib-esnext/promise'",
1051+
"Directory '/node_modules' does not exist, skipping all lookups in it.",
1052+
"Scoped package detected, looking in 'typescript__lib-esnext/promise'",
1053+
"Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: JavaScript.",
1054+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
1055+
"Directory '/node_modules' does not exist, skipping all lookups in it.",
1056+
"======== Module name '@typescript/lib-esnext/promise' was not resolved. ========",
1057+
"File '/.ts/package.json' does not exist according to earlier cached lookups.",
1058+
"File '/package.json' does not exist according to earlier cached lookups.",
10461059
"======== Resolving module '@typescript/lib-dom' from '/.src/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========",
10471060
"Explicitly specified module resolution kind: 'Node10'.",
10481061
"Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.",

tests/baselines/reference/reactJsxReactResolvedNodeNextEsm.trace.json

+13
Original file line numberDiff line numberDiff line change
@@ -1043,6 +1043,19 @@
10431043
"======== Module name '@typescript/lib-esnext/iterator' was not resolved. ========",
10441044
"File '/.ts/package.json' does not exist according to earlier cached lookups.",
10451045
"File '/package.json' does not exist according to earlier cached lookups.",
1046+
"======== Resolving module '@typescript/lib-esnext/promise' from '/.src/__lib_node_modules_lookup_lib.esnext.promise.d.ts__.ts'. ========",
1047+
"Explicitly specified module resolution kind: 'Node10'.",
1048+
"Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: TypeScript, Declaration.",
1049+
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
1050+
"Scoped package detected, looking in 'typescript__lib-esnext/promise'",
1051+
"Directory '/node_modules' does not exist, skipping all lookups in it.",
1052+
"Scoped package detected, looking in 'typescript__lib-esnext/promise'",
1053+
"Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: JavaScript.",
1054+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
1055+
"Directory '/node_modules' does not exist, skipping all lookups in it.",
1056+
"======== Module name '@typescript/lib-esnext/promise' was not resolved. ========",
1057+
"File '/.ts/package.json' does not exist according to earlier cached lookups.",
1058+
"File '/package.json' does not exist according to earlier cached lookups.",
10461059
"======== Resolving module '@typescript/lib-dom' from '/.src/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========",
10471060
"Explicitly specified module resolution kind: 'Node10'.",
10481061
"Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.",

0 commit comments

Comments
 (0)