summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/prelude/await-all.ts21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/prelude/await-all.ts b/src/prelude/await-all.ts
index 66303fe3ba..9492550483 100644
--- a/src/prelude/await-all.ts
+++ b/src/prelude/await-all.ts
@@ -7,16 +7,17 @@ type AwaitAll<T> = {
export async function awaitAll<T>(obj: T): Promise<AwaitAll<T>> {
const target = {} as any;
const keys = Object.keys(obj);
- const rawValues = Object.values(obj);
- const retValues = ((values: any[]): any[] =>
- values.map(value => {
- if (!value || !value.constructor || value.constructor.name !== 'Object') return value;
- return awaitAll(value);
- })
- )(rawValues);
- const values = await Promise.all(retValues);
- for (let i = 0; i < values.length; i++) {
- target[keys[i]] = values[i];
+ const values = Object.values(obj);
+
+ const resolvedValues = await Promise.all(values.map(value =>
+ (value || !value.constructor || value.constructor.name !== 'Object')
+ ? value
+ : awaitAll(value)
+ ));
+
+ for (let i = 0; i < keys.length; i++) {
+ target[keys[i]] = resolvedValues[i];
}
+
return target;
}