keycloak_theme/src/bin/tools/partitionPromiseSettledResults.ts
2024-05-20 15:50:58 +02:00

21 lines
688 B
TypeScript

export type PromiseSettledAndPartitioned<T> = [T[], any[]];
export function partitionPromiseSettledResults<T>() {
return [
(
[successes, failures]: PromiseSettledAndPartitioned<T>,
item: PromiseSettledResult<T>
) =>
item.status === "rejected"
? ([
successes,
[item.reason, ...failures]
] as PromiseSettledAndPartitioned<T>)
: ([
[item.value, ...successes],
failures
] as PromiseSettledAndPartitioned<T>),
[[], []] as PromiseSettledAndPartitioned<T>
] as const;
}