@hazae41/future
Version:
Just like a Promise but you can manually resolve or reject it
1 lines • 1.91 kB
Source Map (JSON)
{"version":3,"file":"future.cjs","sources":["../../../../src/mods/future/future.ts"],"sourcesContent":["export class Future<T> {\n\n #resolve: (value: T) => void\n\n #reject: (error: unknown) => void\n\n readonly promise: Promise<T>\n\n /**\n * Just a Promise with a resolve and reject function\n */\n constructor(promise?: Promise<T>) {\n if (promise == null) {\n const { promise, resolve, reject } = Promise.withResolvers<T>()\n\n this.promise = promise\n this.#resolve = resolve\n this.#reject = reject\n } else {\n this.promise = promise\n this.#resolve = () => { }\n this.#reject = () => { }\n }\n }\n\n static resolve(): Future<void>\n\n static resolve<T>(value: T): Future<Awaited<T>>\n\n static resolve<T>(value: T | PromiseLike<T>): Future<Awaited<T>>\n\n static resolve(value?: any) {\n return new Future(Promise.resolve(value))\n }\n\n static reject<T = never>(reason?: any): Future<T> {\n return new Future<T>(Promise.reject<T>(reason))\n }\n\n get resolve() {\n return this.#resolve\n }\n\n get reject() {\n return this.#reject\n }\n\n}\n"],"names":[],"mappings":";;MAAa,MAAM,CAAA;AAEjB,IAAA,QAAQ;AAER,IAAA,OAAO;AAEE,IAAA,OAAO;AAEhB;;AAEG;AACH,IAAA,WAAA,CAAY,OAAoB,EAAA;AAC9B,QAAA,IAAI,OAAO,IAAI,IAAI,EAAE;AACnB,YAAA,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,EAAK;AAE/D,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,YAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;AACvB,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM;;aAChB;AACL,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAK,GAAI;AACzB,YAAA,IAAI,CAAC,OAAO,GAAG,MAAK,GAAI;;;IAU5B,OAAO,OAAO,CAAC,KAAW,EAAA;QACxB,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;IAG3C,OAAO,MAAM,CAAY,MAAY,EAAA;QACnC,OAAO,IAAI,MAAM,CAAI,OAAO,CAAC,MAAM,CAAI,MAAM,CAAC,CAAC;;AAGjD,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;;AAGtB,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;;AAGtB;;;;"}