File tree 3 files changed +25
-0
lines changed
3 files changed +25
-0
lines changed Original file line number Diff line number Diff line change @@ -13,3 +13,5 @@ export * from './logging';
13
13
export * from './RunnableModule' ;
14
14
export * from './opaqueTypes' ;
15
15
export * from './environment' ;
16
+
17
+ export { PromiseOrValue , resolveObjectValues } from './util' ;
Original file line number Diff line number Diff line change
1
+ export type PromiseOrValue < T > = Promise < T > | T ;
2
+
3
+ export const resolveObjectValues = async < T > ( obj : { [ k : string ] : PromiseOrValue < T > } ) : Promise < { [ k : string ] : T } > =>
4
+ Object . fromEntries (
5
+ await Promise . all (
6
+ Object . entries ( obj ) . map ( ( [ key , promise ] ) => Promise . resolve ( promise ) . then ( ( value ) => [ key , value ] ) )
7
+ )
8
+ ) ;
Original file line number Diff line number Diff line change
1
+ import { resolveObjectValues } from '../src' ;
2
+
3
+ describe ( 'util' , ( ) => {
4
+ describe ( 'resolveObjectValues' , ( ) => {
5
+ it ( 'resolves all object values which are promises' , async ( ) => {
6
+ const result = await resolveObjectValues ( {
7
+ first : 1 ,
8
+ second : Promise . resolve ( 2 ) ,
9
+ third : new Promise < number > ( ( resolve ) => setTimeout ( ( ) => resolve ( 3 ) , 10 ) )
10
+ } ) ;
11
+
12
+ expect ( result ) . toEqual ( { first : 1 , second : 2 , third : 3 } ) ;
13
+ } ) ;
14
+ } ) ;
15
+ } ) ;
You can’t perform that action at this time.
0 commit comments