aboutsummaryrefslogtreecommitdiff
path: root/node_modules/@kwsites/promise-deferred/dist
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/@kwsites/promise-deferred/dist')
-rw-r--r--node_modules/@kwsites/promise-deferred/dist/index.d.ts49
-rw-r--r--node_modules/@kwsites/promise-deferred/dist/index.js59
-rw-r--r--node_modules/@kwsites/promise-deferred/dist/index.js.map1
3 files changed, 109 insertions, 0 deletions
diff --git a/node_modules/@kwsites/promise-deferred/dist/index.d.ts b/node_modules/@kwsites/promise-deferred/dist/index.d.ts
new file mode 100644
index 0000000..68fb38a
--- /dev/null
+++ b/node_modules/@kwsites/promise-deferred/dist/index.d.ts
@@ -0,0 +1,49 @@
+/**
+ * The `DeferredPromise` has a `promise` property in an initially pending state,
+ * that will be resolved when the `done` method is called or rejected when the
+ * `fail` method is called.
+ */
+export interface DeferredPromise<RESOLVES, REJECTS extends Error = Error> {
+ done(result: RESOLVES): void;
+ fail(error: REJECTS): void;
+ readonly status: DeferredPromiseStatus;
+ readonly fulfilled: boolean;
+ promise: Promise<RESOLVES>;
+}
+/**
+ * The three states the DeferredPromise can be in - initially pending then either
+ * resolved or rejected when it is fulfilled.
+ *
+ * ```typescript
+ import {createDeferred, DeferredPromiseStatus} from '@kwsites/promise-deferred`;
+
+ const pending: DeferredPromiseStatus = 'pending';
+ expect(createDeferred()).toHaveProperty('status', pending);
+ ```
+ */
+export declare type DeferredPromiseStatus = 'pending' | 'resolved' | 'rejected';
+/**
+ * Creates a new `DeferredPromise`
+ *
+ * ```typescript
+ import {deferred} from '@kwsites/promise-deferred`;
+ ```
+ */
+export declare function deferred<T extends any = void, E extends Error = Error>(): DeferredPromise<T, E>;
+/**
+ * Alias of the exported `deferred` function, to help consumers wanting to use `deferred` as the
+ * local variable name rather than the factory import name, without needing to rename on import.
+ *
+ * ```typescript
+ import {createDeferred} from '@kwsites/promise-deferred`;
+ ```
+ */
+export declare const createDeferred: typeof deferred;
+/**
+ * Default export allows use as:
+ *
+ * ```typescript
+ import deferred from '@kwsites/promise-deferred`;
+ ```
+ */
+export default deferred;
diff --git a/node_modules/@kwsites/promise-deferred/dist/index.js b/node_modules/@kwsites/promise-deferred/dist/index.js
new file mode 100644
index 0000000..1ffefe6
--- /dev/null
+++ b/node_modules/@kwsites/promise-deferred/dist/index.js
@@ -0,0 +1,59 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createDeferred = exports.deferred = void 0;
+/**
+ * Creates a new `DeferredPromise`
+ *
+ * ```typescript
+ import {deferred} from '@kwsites/promise-deferred`;
+ ```
+ */
+function deferred() {
+ let done;
+ let fail;
+ let status = 'pending';
+ const promise = new Promise((_done, _fail) => {
+ done = _done;
+ fail = _fail;
+ });
+ return {
+ promise,
+ done(result) {
+ if (status === 'pending') {
+ status = 'resolved';
+ done(result);
+ }
+ },
+ fail(error) {
+ if (status === 'pending') {
+ status = 'rejected';
+ fail(error);
+ }
+ },
+ get fulfilled() {
+ return status !== 'pending';
+ },
+ get status() {
+ return status;
+ },
+ };
+}
+exports.deferred = deferred;
+/**
+ * Alias of the exported `deferred` function, to help consumers wanting to use `deferred` as the
+ * local variable name rather than the factory import name, without needing to rename on import.
+ *
+ * ```typescript
+ import {createDeferred} from '@kwsites/promise-deferred`;
+ ```
+ */
+exports.createDeferred = deferred;
+/**
+ * Default export allows use as:
+ *
+ * ```typescript
+ import deferred from '@kwsites/promise-deferred`;
+ ```
+ */
+exports.default = deferred;
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/node_modules/@kwsites/promise-deferred/dist/index.js.map b/node_modules/@kwsites/promise-deferred/dist/index.js.map
new file mode 100644
index 0000000..74583ed
--- /dev/null
+++ b/node_modules/@kwsites/promise-deferred/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AA0BA;;;;;;GAMG;AACH,SAAgB,QAAQ;IACrB,IAAI,IAAyB,CAAC;IAC9B,IAAI,IAAwB,CAAC;IAC7B,IAAI,MAAM,GAA0B,SAAS,CAAC;IAE9C,MAAM,OAAO,GAAe,IAAI,OAAO,CAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACzD,IAAI,GAAG,KAAK,CAAC;QACb,IAAI,GAAG,KAAK,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO;QACJ,OAAO;QACP,IAAI,CAAE,MAAM;YACT,IAAI,MAAM,KAAK,SAAS,EAAE;gBACvB,MAAM,GAAG,UAAU,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,CAAC;aACf;QACJ,CAAC;QACD,IAAI,CAAE,KAAK;YACR,IAAI,MAAM,KAAK,SAAS,EAAE;gBACvB,MAAM,GAAG,UAAU,CAAC;gBACpB,IAAI,CAAC,KAAK,CAAC,CAAC;aACd;QACJ,CAAC;QACD,IAAI,SAAS;YACV,OAAO,MAAM,KAAK,SAAS,CAAC;QAC/B,CAAC;QACD,IAAI,MAAM;YACP,OAAO,MAAM,CAAC;QACjB,CAAC;KACH,CAAC;AACL,CAAC;AA/BD,4BA+BC;AAED;;;;;;;GAOG;AACU,QAAA,cAAc,GAAG,QAAQ,CAAC;AAEvC;;;;;;GAMG;AACH,kBAAe,QAAQ,CAAC"} \ No newline at end of file