Skip to content

Commit 74dbc28

Browse files
committed
Make utils.resolveProperties preserve object parameter order.
1 parent 28eb38e commit 74dbc28

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

packages/properties/src.ts/index.ts

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,26 +20,27 @@ export function getStatic<T>(ctor: any, key: string): T {
2020
return null;
2121
}
2222

23+
type Result = { key: string, value: any};
2324
export function resolveProperties(object: any): Promise<any> {
24-
let result: any = {};
2525

26-
let promises: Array<Promise<void>> = [];
27-
Object.keys(object).forEach((key) => {
26+
let promises: Array<Promise<Result>> = Object.keys(object).map((key) => {
2827
let value = object[key];
29-
if (value instanceof Promise) {
30-
promises.push(
31-
value.then((value) => {
32-
result[key] = value;
33-
return null;
34-
})
35-
);
36-
} else {
37-
result[key] = value;
28+
29+
if (!(value instanceof Promise)) {
30+
return Promise.resolve({ key: key, value: value });
3831
}
32+
33+
return value.then((value) => {
34+
return { key: key, value: value };
35+
});
3936
});
4037

41-
return Promise.all(promises).then(() => {
42-
return result;
38+
return Promise.all(promises).then((results) => {
39+
let result: any = { };
40+
return results.reduce((accum, result) => {
41+
accum[result.key] = result.value;
42+
return accum;
43+
}, result);
4344
});
4445
}
4546

0 commit comments

Comments
 (0)