UNPKG

@alwatr/flatomise

Version:

A utility for creating promises that can be externally resolved or rejected.

8 lines (7 loc) 1.77 kB
{ "version": 3, "sources": ["../src/main.ts"], "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {packageTracer} from '@alwatr/package-tracer';\n\n__dev_mode__: packageTracer.add(__package_name__, __package_version__);\n\n/**\n * Flat promise that can be resolved or rejected from outside.\n */\nexport interface Flatomise<T> {\n /**\n * The promise.\n */\n readonly promise: Promise<T>;\n\n /**\n * Resolve the promise.\n */\n readonly resolve: (value: T | PromiseLike<T>) => void;\n\n /**\n * Reject the promise.\n */\n readonly reject: (reason?: any) => void;\n\n /**\n * Whether the promise is settled (resolved or rejected).\n */\n readonly settled: boolean;\n}\n\n/**\n * Create a new Flatomise is a promise that can be resolved or rejected from outside.\n *\n * @returns A new Flatomise.\n *\n * @example\n * ```typescript\n * const flatomise = newFlatomise();\n * flatomise.promise.then(() => {\n * console.log('flatomise resolved');\n * });\n * flatomise.resolve();\n * ```\n */\nexport function newFlatomise<T>(): Flatomise<T> {\n const flatomise: Partial<Mutable<Flatomise<T>>> = {settled: false};\n flatomise.promise = new Promise<T>((resolve, reject) => {\n flatomise.resolve = resolve;\n flatomise.reject = reject;\n });\n flatomise.promise.finally(() => {\n flatomise.settled = true;\n });\n return flatomise as Flatomise<T>;\n}\n"], "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,4BAA4B;AAE5B,aAAc,qCAAc,IAAI,qBAAkB,OAAmB;AAyC9D,SAAS,eAAgC;AAC9C,QAAM,YAA4C,EAAC,SAAS,MAAK;AACjE,YAAU,UAAU,IAAI,QAAW,CAAC,SAAS,WAAW;AACtD,cAAU,UAAU;AACpB,cAAU,SAAS;AAAA,EACrB,CAAC;AACD,YAAU,QAAQ,QAAQ,MAAM;AAC9B,cAAU,UAAU;AAAA,EACtB,CAAC;AACD,SAAO;AACT;", "names": [] }