UNPKG

@apollo/server

Version:
31 lines (26 loc) 1.19 kB
// Copyright 2019 Joseph Gentle // Permission to use, copy, modify, and / or distribute this software for any // purpose with or without fee is hereby granted, provided that the above // copyright notice and this permission notice appear in all copies. // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH // REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND // FITNESS.IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, // INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM // LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR // OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR // PERFORMANCE OF THIS SOFTWARE. export type Resolvable<T> = Promise<T> & { resolve: (t: T) => void; reject: (e: any) => void; }; export default <T = void>(): Resolvable<T> => { let resolve: (val: T) => void; let reject: (err: any) => void; const promise = new Promise<T>((_resolve, _reject) => { resolve = _resolve; reject = _reject; }) as Resolvable<T>; promise.resolve = resolve!; promise.reject = reject!; return promise; };