// This file polyfills the allSettled method introduced in ESNext export type AllSettledFulfilled = { status: 'fulfilled' value: T } export type AllSettledRejected = { status: 'rejected' // eslint-disable-next-line @typescript-eslint/no-explicit-any reason: any } export function allSettled(promises: Promise[]) { return Promise.all( promises.map((p) => p .then( (value) => ({ status: 'fulfilled', value, } as AllSettledFulfilled) ) .catch( (reason) => ({ status: 'rejected', reason, } as AllSettledRejected) ) ) ) } export function onlyFulfilled(entries: Array | AllSettledRejected>) { // We filter for only the rejected values, so we can safely cast the type return entries.filter((e) => e.status === 'fulfilled') as AllSettledFulfilled[] } export function onlyRejected(entries: Array | AllSettledRejected>) { // We filter for only the rejected values, so we can safely cast the type return entries.filter((e) => e.status === 'rejected') as AllSettledRejected[] }