import type { MakeProm, λ } from "./types"; /** * Creates a `queue` function that accepts a function as it's only parameter. * When `queue` is invoked, the passed in function is executed after the last * function passed to `queue` has finished executing. The `queue` function * returns the result of the passed in function asynchronously. * * Reading `queue.done` is `true` if no functions are currently executing / * scheduled and otherwise a promise that resolves once the last function has * stopped executing and no futher functions are queued. * * @example * ``` * const queue = createQueue() * * queue(async () => { * console.log('start a') * await delay() * return 'end a' * }).then(console.log) * * queue(async () => { * console.log('start b') * await delay() * return 'end b' * }).then(console.log) * * queue(async () => { * console.log('start c') * await delay() * return 'end c' * }).then(console.log) * * await queue.done * * // start a * // end a * // start b * // end b * // start c * // end c * ``` */ declare const createQueue: () => Queue; export default createQueue; declare type Queue = (>(fun: T) => MakeProm>) & { done: Promise | true; };