{"version":3,"file":"deferred.cjs","sources":["../../src/deferred.ts"],"sourcesContent":["/**\n * A Deferred object represents a Promise that can be resolved or rejected\n * from outside the Promise constructor.\n */\nexport interface Deferred<T> {\n  /** The Promise object being controlled */\n  promise: Promise<T>\n\n  /** Function to resolve the Promise with a value or another Promise */\n  resolve: (value: T | PromiseLike<T>) => void\n\n  /** Function to reject the Promise with an error */\n  reject: (reason?: Error | unknown) => void\n\n  /** Check if the Promise has been resolved or rejected */\n  isPending: () => boolean\n}\n\n/**\n * Creates a Deferred object containing a Promise and methods to control it.\n *\n * @returns A Deferred object with promise, resolve, reject, and isPending methods\n */\nexport function createDeferred<T>(): Deferred<T> {\n  let resolve!: (value: T | PromiseLike<T>) => void\n  let reject!: (reason?: Error | unknown) => void\n  let isPending = true\n\n  const promise = new Promise<T>((res, rej) => {\n    resolve = (value) => {\n      isPending = false\n      res(value)\n    }\n\n    reject = (reason) => {\n      isPending = false\n      rej(reason)\n    }\n  })\n\n  return {\n    promise,\n    resolve,\n    reject,\n    isPending: () => isPending,\n  }\n}\n"],"names":[],"mappings":";;AAuBO,SAAS,iBAAiC;AAC/C,MAAI;AACJ,MAAI;AACJ,MAAI,YAAY;AAEhB,QAAM,UAAU,IAAI,QAAW,CAAC,KAAK,QAAQ;AAC3C,cAAU,CAAC,UAAU;AACnB,kBAAY;AACZ,UAAI,KAAK;AAAA,IACX;AAEA,aAAS,CAAC,WAAW;AACnB,kBAAY;AACZ,UAAI,MAAM;AAAA,IACZ;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,MAAM;AAAA,EAAA;AAErB;;"}