import Future from '../classes/Future'; export function asyncTransform( value: I | PromiseLike, transform: (value: Awaited) => O | PromiseLike ): Future { try { if ( typeof value === 'object' && value && 'then' in value && typeof value.then === 'function' ) { return new Future((resolve, reject) => { value.then(resolve, reject); }).then(transform); } return Future.resolve(transform(value as Awaited)); } catch (error) { return Future.reject(error); } } export default asyncTransform; Object.defineProperties(asyncTransform, { default: { get: () => asyncTransform }, asyncTransform: { get: () => asyncTransform }, });