diff --git a/lib/utils/package.json b/lib/utils/package.json index 9d37aba..36eba3c 100644 --- a/lib/utils/package.json +++ b/lib/utils/package.json @@ -21,6 +21,9 @@ "./objects": { "default": "./src/objects.ts" }, + "./promises": { + "default": "./src/promises.ts" + }, "./proxy": { "default": "./src/proxy.ts" }, diff --git a/lib/utils/src/promises.ts b/lib/utils/src/promises.ts new file mode 100644 index 0000000..c202b6b --- /dev/null +++ b/lib/utils/src/promises.ts @@ -0,0 +1,21 @@ +export function allSettled(promises: Promise[]): Promise[]> { + const mapped = promises.map(p => + p + ?.then( + value => + ({ + status: 'fulfilled', + value, + }) as const, + ) + .catch( + reason => + ({ + status: 'rejected', + reason, + }) as const, + ), + ) + + return Promise.all(mapped) +}