@tanstack/db
Version:
A reactive client store for building super fast apps on sync
1 lines • 1.64 kB
Source Map (JSON)
{"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;;"}