diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6bf8f7e..b5ca6d4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -42,7 +42,7 @@ jobs: - name: Polish Files run: yarn polish - name: Build Distribution Bundles - run: yarn build:bundle + run: yarn build - name: Perform Semantic Release id: release uses: cycjimmy/semantic-release-action@v2.5.3 @@ -70,8 +70,9 @@ jobs: NONINTERACTIVE: true - run: yarn install - run: yarn bump-deps + - run: yarn polish - run: yarn build - uses: stefanzweifel/git-auto-commit-action@v4 with: commit_message: - "chore(post-release): committing changes produced during the release" + "chore(docs and dist): commit what was produced during the release" diff --git a/.gitignore b/.gitignore index 786dcf7..b07b08c 100644 --- a/.gitignore +++ b/.gitignore @@ -119,4 +119,6 @@ index.*.map *.old -fun-promises-*.tgz +*.tgz +*.tar.gz +*.tar.xz diff --git a/.npmignore b/.npmignore index f930489..e1a4269 100644 --- a/.npmignore +++ b/.npmignore @@ -6,5 +6,5 @@ script docs conf.d tsconfig/* -dist/docs.tgz -fun-promises-*.tgz +*.tgz +*.xz diff --git a/CHANGELOG.md b/CHANGELOG.md index f9b5de2..4f14275 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,48 +1,53 @@ + + fun-promises Changelog ## [1.2.0](https://github.com/RobertFischer/fun-promises/compare/v1.1.0...v1.2.0) (2020-12-03) - ### Features -* **fold:** implements fold in case map and filter don't cut it ([86c010f](https://github.com/RobertFischer/fun-promises/commit/86c010ff5f934602a2a964cb71ebb73697ed7c2a)), closes [#12](https://github.com/RobertFischer/fun-promises/issues/12) -* **tap:** implement 'tap' for peeking at values ([0f4816a](https://github.com/RobertFischer/fun-promises/commit/0f4816ab42fd9f18bf91e179d2c03fed25822f11)) - +- **fold:** implements fold in case map and filter don't cut it + ([86c010f](https://github.com/RobertFischer/fun-promises/commit/86c010ff5f934602a2a964cb71ebb73697ed7c2a)), + closes [#12](https://github.com/RobertFischer/fun-promises/issues/12) +- **tap:** implement 'tap' for peeking at values + ([0f4816a](https://github.com/RobertFischer/fun-promises/commit/0f4816ab42fd9f18bf91e179d2c03fed25822f11)) ### Reverts -* **release:** the cleanup caused a problem with the autocommitting ([6c03637](https://github.com/RobertFischer/fun-promises/commit/6c03637137923e0581a4a736bcb6bd4aa25c77d4)) +- **release:** the cleanup caused a problem with the autocommitting + ([6c03637](https://github.com/RobertFischer/fun-promises/commit/6c03637137923e0581a4a736bcb6bd4aa25c77d4)) ## [1.2.0-rc.2](https://github.com/RobertFischer/fun-promises/compare/v1.2.0-rc.1...v1.2.0-rc.2) (2020-12-02) - ### Features -* **fold:** implements fold in case map and filter don't cut it ([86c010f](https://github.com/RobertFischer/fun-promises/commit/86c010ff5f934602a2a964cb71ebb73697ed7c2a)), closes [#12](https://github.com/RobertFischer/fun-promises/issues/12) +- **fold:** implements fold in case map and filter don't cut it + ([86c010f](https://github.com/RobertFischer/fun-promises/commit/86c010ff5f934602a2a964cb71ebb73697ed7c2a)), + closes [#12](https://github.com/RobertFischer/fun-promises/issues/12) ## [1.2.0-rc.1](https://github.com/RobertFischer/fun-promises/compare/v1.1.0...v1.2.0-rc.1) (2020-12-02) - ### Features -* **tap:** implement 'tap' for peeking at values ([0f4816a](https://github.com/RobertFischer/fun-promises/commit/0f4816ab42fd9f18bf91e179d2c03fed25822f11)) - +- **tap:** implement 'tap' for peeking at values + ([0f4816a](https://github.com/RobertFischer/fun-promises/commit/0f4816ab42fd9f18bf91e179d2c03fed25822f11)) ### Reverts -* **release:** the cleanup caused a problem with the autocommitting ([6c03637](https://github.com/RobertFischer/fun-promises/commit/6c03637137923e0581a4a736bcb6bd4aa25c77d4)) +- **release:** the cleanup caused a problem with the autocommitting + ([6c03637](https://github.com/RobertFischer/fun-promises/commit/6c03637137923e0581a4a736bcb6bd4aa25c77d4)) ## [1.1.0-rc.2](https://github.com/RobertFischer/fun-promises/compare/v1.1.0-rc.1...v1.1.0-rc.2) (2020-12-02) - ### Features -* **tap:** implement 'tap' for peeking at values ([ce059bd](https://github.com/RobertFischer/fun-promises/commit/ce059bdb12c4706f8bf8189d5b09dadae740fa47)) - +- **tap:** implement 'tap' for peeking at values + ([ce059bd](https://github.com/RobertFischer/fun-promises/commit/ce059bdb12c4706f8bf8189d5b09dadae740fa47)) ### Reverts -* **release:** the cleanup caused a problem with the autocommitting ([c9ad636](https://github.com/RobertFischer/fun-promises/commit/c9ad636762e510ce0218f4c13b506cac05f4ab0f)) +- **release:** the cleanup caused a problem with the autocommitting + ([c9ad636](https://github.com/RobertFischer/fun-promises/commit/c9ad636762e510ce0218f4c13b506cac05f4ab0f)) diff --git a/README.md b/README.md index e639065..9e65766 100644 --- a/README.md +++ b/README.md @@ -20,12 +20,12 @@ npm install --save fun-promises ### CDN for Browsers -The following URL contains a script which will set the `FunPromise` global to be -an object containing the various exports of +The following URL contains a script which will set the `FunPromises` global to +be an object containing the various exports of [`index.ts`](https://robertfischer.github.io/fun-promises/modules/_index_.html). ``` -https://unpkg.com/browse/fun-promises@latest/dist/browser/index.js +https://unpkg.com/fun-promises@latest/dist/browser/index.js ``` ## Usage @@ -85,6 +85,12 @@ This is an inside-out promise: it gives you access to the `resolve` and `reject` methods of the promise so that you can perform operations on them later, as well as having accessor to query the state of `promise`. +### `fold`/`map`/`filter` + +Optimized promise-based implementations for all your collection-processing +needs. Note that `map` and `fold` also come in "flat" varieties for +concatenating iterables: `flatMap` and `flatFold`. + ### `try` ```typescript diff --git a/dist/amd.index.js.xz b/dist/amd.index.js.xz new file mode 100644 index 0000000..f96960c Binary files /dev/null and b/dist/amd.index.js.xz differ diff --git a/dist/amd.tar.xz b/dist/amd.tar.xz new file mode 100644 index 0000000..59ef5c7 Binary files /dev/null and b/dist/amd.tar.xz differ diff --git a/dist/browser.index.js.xz b/dist/browser.index.js.xz new file mode 100644 index 0000000..70aae4f Binary files /dev/null and b/dist/browser.index.js.xz differ diff --git a/dist/browser.tar.xz b/dist/browser.tar.xz new file mode 100644 index 0000000..e5d2b2b Binary files /dev/null and b/dist/browser.tar.xz differ diff --git a/dist/cjs.index.js.xz b/dist/cjs.index.js.xz new file mode 100644 index 0000000..990b7f0 Binary files /dev/null and b/dist/cjs.index.js.xz differ diff --git a/dist/cjs.tar.xz b/dist/cjs.tar.xz new file mode 100644 index 0000000..b548476 Binary files /dev/null and b/dist/cjs.tar.xz differ diff --git a/dist/docs.tar.xz b/dist/docs.tar.xz deleted file mode 100644 index 764c4bb..0000000 Binary files a/dist/docs.tar.xz and /dev/null differ diff --git a/dist/es6/cjs/src/deferral.test.d.ts b/dist/es6/cjs/src/deferral.test.d.ts deleted file mode 100644 index 4c655ce..0000000 --- a/dist/es6/cjs/src/deferral.test.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export {}; -//# sourceMappingURL=deferral.test.d.ts.map \ No newline at end of file diff --git a/dist/es6/cjs/src/deferral.test.d.ts.map b/dist/es6/cjs/src/deferral.test.d.ts.map deleted file mode 100644 index 1e43120..0000000 --- a/dist/es6/cjs/src/deferral.test.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"deferral.test.d.ts","sourceRoot":"","sources":["../../../../src/deferral.test.js"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/es6/cjs/src/deferral.test.js b/dist/es6/cjs/src/deferral.test.js deleted file mode 100644 index b49c2d0..0000000 --- a/dist/es6/cjs/src/deferral.test.js +++ /dev/null @@ -1,44 +0,0 @@ -"use strict"; -/** @format */ -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -const fun_promise_1 = require("./fun-promise"); -const deferral_1 = require("./deferral"); -require("./types"); -require("lodash"); -describe("Deferral", () => { - it("can be constructed", () => { - const deferral = new deferral_1.default(); - expect(deferral).not.toBeNil(); - }); - describe("promise", () => { - it("is a FunPromise", () => { - const deferral = new deferral_1.default(); - expect(deferral.promise).toBeInstanceOf(fun_promise_1.default); - }); - }); - describe("resolve", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const deferral = new deferral_1.default(); - deferral.resolve(true); - yield expect(deferral.resolve(true)).resolves.toBe(true); - })); - it("does not change resolved value if called multiple times", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const deferral = new deferral_1.default(); - yield expect(deferral.resolve(true)).resolves.toBe(true); - yield expect(deferral.resolve(false)).resolves.toBe(true); - })); - }); - describe("reject", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const deferral = new deferral_1.default(); - yield expect(deferral.reject(new Error("BOOM!"))).rejects.toHaveProperty("message", "BOOM!"); - })); - it("does not change reason if called multiple times", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const deferral = new deferral_1.default(); - yield expect(deferral.reject(new Error("BOOM!"))).rejects.toHaveProperty("message", "BOOM!"); - yield expect(deferral.reject(new Error("BANG!"))).rejects.toHaveProperty("message", "BOOM!"); - })); - }); -}); -//# sourceMappingURL=deferral.test.js.map \ No newline at end of file diff --git a/dist/es6/cjs/src/deferral.test.js.map b/dist/es6/cjs/src/deferral.test.js.map deleted file mode 100644 index 8583046..0000000 --- a/dist/es6/cjs/src/deferral.test.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"deferral.test.js","sourceRoot":"","sources":["../../../../src/deferral.test.js"],"names":[],"mappings":";AAAA,cAAc;;;AAEd,+CAAuC;AACvC,yCAAkC;AAClC,mBAAuC;AACvC,kBAAuB;AAEvB,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC7B,MAAM,QAAQ,GAAG,IAAI,kBAAQ,EAAE,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;YAC1B,MAAM,QAAQ,GAAG,IAAI,kBAAQ,EAAE,CAAC;YAChC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,qBAAU,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;YAChC,MAAM,QAAQ,GAAG,IAAI,kBAAQ,EAAE,CAAC;YAChC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvB,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAS,EAAE;YACxE,MAAM,QAAQ,GAAG,IAAI,kBAAQ,EAAE,CAAC;YAChC,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;YAChC,MAAM,QAAQ,GAAG,IAAI,kBAAQ,EAAE,CAAC;YAChC,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CACvE,SAAS,EACT,OAAO,CACP,CAAC;QACH,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAS,EAAE;YAChE,MAAM,QAAQ,GAAG,IAAI,kBAAQ,EAAE,CAAC;YAChC,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CACvE,SAAS,EACT,OAAO,CACP,CAAC;YACF,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CACvE,SAAS,EACT,OAAO,CACP,CAAC;QACH,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["/** @format */\n\nimport FunPromise from \"./fun-promise\";\nimport Deferral from \"./deferral\";\nimport { PromiseState } from \"./types\";\nimport _ from \"lodash\";\n\ndescribe(\"Deferral\", () => {\n\tit(\"can be constructed\", () => {\n\t\tconst deferral = new Deferral();\n\t\texpect(deferral).not.toBeNil();\n\t});\n\n\tdescribe(\"promise\", () => {\n\t\tit(\"is a FunPromise\", () => {\n\t\t\tconst deferral = new Deferral();\n\t\t\texpect(deferral.promise).toBeInstanceOf(FunPromise);\n\t\t});\n\t});\n\n\tdescribe(\"resolve\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst deferral = new Deferral();\n\t\t\tdeferral.resolve(true);\n\t\t\tawait expect(deferral.resolve(true)).resolves.toBe(true);\n\t\t});\n\n\t\tit(\"does not change resolved value if called multiple times\", async () => {\n\t\t\tconst deferral = new Deferral();\n\t\t\tawait expect(deferral.resolve(true)).resolves.toBe(true);\n\t\t\tawait expect(deferral.resolve(false)).resolves.toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"reject\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst deferral = new Deferral();\n\t\t\tawait expect(deferral.reject(new Error(\"BOOM!\"))).rejects.toHaveProperty(\n\t\t\t\t\"message\",\n\t\t\t\t\"BOOM!\"\n\t\t\t);\n\t\t});\n\n\t\tit(\"does not change reason if called multiple times\", async () => {\n\t\t\tconst deferral = new Deferral();\n\t\t\tawait expect(deferral.reject(new Error(\"BOOM!\"))).rejects.toHaveProperty(\n\t\t\t\t\"message\",\n\t\t\t\t\"BOOM!\"\n\t\t\t);\n\t\t\tawait expect(deferral.reject(new Error(\"BANG!\"))).rejects.toHaveProperty(\n\t\t\t\t\"message\",\n\t\t\t\t\"BOOM!\"\n\t\t\t);\n\t\t});\n\t});\n});\n"]} \ No newline at end of file diff --git a/dist/es6/cjs/src/fun-promise.d.ts b/dist/es6/cjs/src/fun-promise.d.ts index 23424f3..fbe5861 100644 --- a/dist/es6/cjs/src/fun-promise.d.ts +++ b/dist/es6/cjs/src/fun-promise.d.ts @@ -26,7 +26,7 @@ export default class FunPromise implements Promise { /** * Constructor, which takes the promise to wrap. */ - constructor(wrapped: Promise); + constructor(wrapped: Promisable); /** * Takes a value (or a promise of a value) and returns a promise wrapping * it. @@ -298,6 +298,18 @@ export default class FunPromise implements Promise { * Equivalent to `FunPromise.resolve(values).fold(initialValue, accumulator)`. */ static fold(values: PromisableIterable, initialValue: T2, accumulator: (memo: T2, it: T) => Promisable): FunPromise; + /** + * Given an initial array of values and an accumulator function, apply the accumlator function to each element of the promise's resolved value, + * passing in the current array of values and the resolved item. Returns an array with the concatenated results of the accumulation. + * If any of the promise's values are rejected, the entire operation will be rejected. + * + * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve. + */ + flatFold>(initialValue: PromisableIterable, accumulator: (memo: T2[], it: Item) => PromisableIterable): FunPromise; + /** + * Equivalent to `FunPromise.resolve(values).flatFold(initialValue, accumulator)`. + */ + static flatFold(values: PromisableIterable, initialValue: PromisableIterable, accumulator: (memo: T2[], it: T) => PromisableIterable): FunPromise; /** * Handles rejections like 'catch', but wraps them in a [[`NestedError`]] with the given message. */ diff --git a/dist/es6/cjs/src/fun-promise.d.ts.map b/dist/es6/cjs/src/fun-promise.d.ts.map index d4b353b..9a8f3ba 100644 --- a/dist/es6/cjs/src/fun-promise.d.ts.map +++ b/dist/es6/cjs/src/fun-promise.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"fun-promise.d.ts","sourceRoot":"","sources":["../../../../src/fun-promise.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fun-promise.d.ts","sourceRoot":"","sources":["../../../../src/fun-promise.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/es6/cjs/src/fun-promise.js b/dist/es6/cjs/src/fun-promise.js index 6ff9a16..d5e28c6 100644 --- a/dist/es6/cjs/src/fun-promise.js +++ b/dist/es6/cjs/src/fun-promise.js @@ -27,7 +27,7 @@ const isNil_1 = require("lodash/isNil"); const map_1 = require("lodash/map"); const negate_1 = require("lodash/negate"); require("lodash/noop"); -require("lodash/toArray"); +const toArray_1 = require("lodash/toArray"); // import Debug from "debug"; // const debug = Debug("fun-promises"); /** @@ -186,9 +186,8 @@ class FunPromise { * as `true`. The items are not resolved sequentially unless you also pass a second argument as `true`. */ arrayify(resolveValues = false, sequentialResolution = false) { - const aryPromise = this.then((iter) => [ - ...iter, - ]); + const aryPromise = this.then((iterPromise) => tslib_1.__awaiter(this, void 0, void 0, function* () { return toArray_1.default(yield iterPromise); }) // Just to be sure we're all de-promise'd + ); if (resolveValues) { if (sequentialResolution) { return aryPromise.then((ary) => tslib_1.__awaiter(this, void 0, void 0, function* () { @@ -405,6 +404,29 @@ class FunPromise { static fold(values, initialValue, accumulator) { return FunPromise.resolve(values).fold(initialValue, accumulator); } + /** + * Given an initial array of values and an accumulator function, apply the accumlator function to each element of the promise's resolved value, + * passing in the current array of values and the resolved item. Returns an array with the concatenated results of the accumulation. + * If any of the promise's values are rejected, the entire operation will be rejected. + * + * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve. + */ + flatFold(initialValue, accumulator) { + return this.arrayify().then((ary) => tslib_1.__awaiter(this, void 0, void 0, function* () { + let memoPromise = FunPromise.resolve(initialValue).arrayify(); + yield Promise.all(map_1.default(ary, (promisableValue) => tslib_1.__awaiter(this, void 0, void 0, function* () { + const value = yield promisableValue; + memoPromise = memoPromise.then((memo) => tslib_1.__awaiter(this, void 0, void 0, function* () { return memo.concat(toArray_1.default(yield accumulator(memo, value))); })); + }))); + return memoPromise; + })); + } + /** + * Equivalent to `FunPromise.resolve(values).flatFold(initialValue, accumulator)`. + */ + static flatFold(values, initialValue, accumulator) { + return FunPromise.resolve(values).flatFold(initialValue, accumulator); + } /** * Handles rejections like 'catch', but wraps them in a [[`NestedError`]] with the given message. */ diff --git a/dist/es6/cjs/src/fun-promise.js.map b/dist/es6/cjs/src/fun-promise.js.map index 4a084c3..b96d7aa 100644 --- a/dist/es6/cjs/src/fun-promise.js.map +++ b/dist/es6/cjs/src/fun-promise.js.map @@ -1 +1 @@ -{"version":3,"file":"fun-promise.js","sourceRoot":"","sources":["../../../../src/fun-promise.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @format\n */\n\n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n\nimport {\n\tPromisable,\n\tPromisableIterable,\n\tUnpromise,\n\tItem,\n\tSettlement,\n\tFulfillment,\n\tRejection,\n} from \"./types\";\nimport { NestedError } from \"ts-nested-error\";\n\nimport _defer from \"lodash/defer\";\nimport _delay from \"lodash/delay\";\nimport _filter from \"lodash/filter\";\nimport _flatten from \"lodash/flatten\";\nimport _identity from \"lodash/identity\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _isError from \"lodash/isError\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\nimport _map from \"lodash/map\";\nimport _negate from \"lodash/negate\";\nimport _noop from \"lodash/noop\";\nimport _toArray from \"lodash/toArray\";\n\n// import Debug from \"debug\";\n// const debug = Debug(\"fun-promises\");\n\n/**\n * The class that you should use instead of `Promise`. It implements the `Promise` API, so it should be a drop-in replacement.\n */\nexport default class FunPromise implements Promise {\n\t/**\n\t * Whether or not this FunPromise has been cancelled.\n\t */\n\tprivate _isCancelled: boolean = false;\n\n\t/**\n\t * The promise that was wrapped after attaching our custom logic.\n\t */\n\tprotected readonly wrapped: Promise;\n\n\t/**\n\t * Constructor, which takes the promise to wrap.\n\t */\n\tconstructor(wrapped: Promise) {\n\t\tthis.wrapped = new Promise(async (resolve, reject) => {\n\t\t\tlet resolved = null;\n\t\t\ttry {\n\t\t\t\tresolved = await wrapped;\n\t\t\t} catch (e) {\n\t\t\t\tif (this._isCancelled) return;\n\t\t\t\treject(e);\n\t\t\t}\n\t\t\tif (this._isCancelled) return;\n\t\t\tresolve(resolved);\n\t\t});\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise wrapping\n\t * it.\n\t */\n\tstatic resolve(value?: Promisable): FunPromise {\n\t\tif (value instanceof FunPromise) {\n\t\t\treturn value as FunPromise;\n\t\t} else if (value instanceof Promise) {\n\t\t\treturn new FunPromise(value);\n\t\t} else {\n\t\t\treturn new FunPromise(new Promise((resolve) => resolve(value)));\n\t\t}\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and resolves to the new value,\n\t * disregarding any previous resolution value.\n\t */\n\tresolve(value?: Promisable): FunPromise {\n\t\treturn new FunPromise(this.wrapped.then(() => value));\n\t}\n\n\t/**\n\t * An alias for `resolve` provided for consistency with the instance `return` method.\n\t *\n\t * @deprecated Use `resolve` instead.\n\t */\n\tstatic return(value?: Promisable): FunPromise {\n\t\treturn FunPromise.resolve(value);\n\t}\n\n\t/**\n\t * An alias for `resolve` provided for compatibility with [the Bluebird API|http://bluebirdjs.com/docs/api/return.html].\n\t *\n\t * @deprecated Use `resolve` instead.\n\t */\n\treturn(value?: Promisable): FunPromise {\n\t\treturn this.resolve(value);\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise rejecting\n\t * with that value, after unwrapping as many layers of `PromiseLike`\n\t * wrappers as necessary.\n\t */\n\tstatic reject(value?: unknown): FunPromise {\n\t\treturn new FunPromise(Promise.reject(value));\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise rejecting\n\t * with that value, after unwrapping as many layers of `PromiseLike`\n\t * wrappers as necessary. This disregards any existing status.\n\t */\n\treject(value?: unknown): FunPromise {\n\t\treturn FunPromise.reject(value);\n\t}\n\n\t/**\n\t * Attaches callbacks for the resolution and/or rejection of the Promise.\n\t * @param onfulfilled The optional callback to execute when the Promise is resolved.\n\t * @param onrejected The optional callback to execute when the Promise is rejected. If provided, the result of this callback is the new resolution value, and this promise is resolved, not rejected.\n\t * @returns A Promise for the completion of which ever callback is executed.\n\t */\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable\n\t): FunPromise;\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable,\n\t\tonrejected: (reason: unknown) => Promisable\n\t): FunPromise;\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable,\n\t\tonrejected?: (reason: unknown) => Promisable\n\t): FunPromise {\n\t\tif (_isNil(onrejected)) {\n\t\t\treturn new FunPromise(this.wrapped.then(onfulfilled));\n\t\t} else {\n\t\t\treturn new FunPromise(this.wrapped.then(onfulfilled, onrejected));\n\t\t}\n\t}\n\n\t/**\n\t * Attaches a callback for only the rejection of the Promise. If the callback throws, then throws a [[`NestedError`]] with\n\t * both the original rejection reason and the new thrown value.\n\t *\n\t * @param onrejected The callback to execute when the Promise is rejected.\n\t * @returns A Promise for the completion of the callback.\n\t */\n\tcatch(\n\t\tonrejected: (reason: unknown) => Promisable = _identity\n\t): FunPromise {\n\t\treturn new FunPromise(this.wrapped.catch(onrejected));\n\t}\n\n\t/**\n\t * Creates a Promise that is resolved with an array of results when all of the\n\t * provided Promises resolve, or rejected when any Promise is rejected.\n\t * @param values An array of Promises.\n\t * @returns A new Promise.\n\t */\n\tstatic all(values: PromisableIterable): FunPromise;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable, Promisable, Promisable]\n\t): FunPromise<[T1, T2, T3, T4]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable, Promisable]\n\t): FunPromise<[T1, T2, T3]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable]\n\t): FunPromise<[T1, T2]>;\n\tstatic all(values: [Promisable]): FunPromise<[T1]>;\n\tstatic all(...values: any[]): any {\n\t\treturn FunPromise.resolve(_flatten(values)).all();\n\t}\n\tall(): FunPromise[]> {\n\t\treturn this.arrayify(true);\n\t}\n\n\t/**\n\t * Given a function (or a promise of a function) that returns a value (or a promise of a value),\n\t * create a promise that executes the function and returns the value. If executing the function\n\t * throws an exception, then that exception becomes the rejection of the promise.\n\t *\n\t * Any arguments after the first will be passed into the function when it is invoked. If they are\n\t * a `PromiseLike`, then they will be resolved and the resolution value will be passed into the\n\t * function instead.\n\t *\n\t * This function is really useful in the following cases:\n\t * 1. to [avoid releasing Zalgo](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n\t * 2. when you want to create a `FunPromise` based on an `async` function\n\t * 3. when you want to create a `FunPromise` based on a normal function\n\t */\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6,\n\t\t\t\targ7: Arg7,\n\t\t\t\targ8: Arg8\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable,\n\t\targ7: Promisable,\n\t\targ8: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6,\n\t\t\t\targ7: Arg7\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable,\n\t\targ7: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(arg1: Arg1, arg2: Arg2, arg3: Arg3, arg4: Arg4) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1, arg2: Arg2, arg3: Arg3) => Promisable>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1, arg2: Arg2) => Promisable>,\n\t\targ1: Promisable,\n\t\targ2: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1) => Promisable>,\n\t\targ1: Promisable\n\t): FunPromise;\n\tstatic try(source: Promisable<() => Promisable>): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(...args: ArgT[]) => Promisable>,\n\t\t...args: ArgT[]\n\t): FunPromise {\n\t\treturn FunPromise.resolve(source).then((f) => {\n\t\t\tif (_isEmpty(args)) {\n\t\t\t\treturn f();\n\t\t\t} else {\n\t\t\t\treturn Promise.all(args).then((realArgs) => f(...realArgs));\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Unwraps layers of `PromiseLike` wrappers as necessary.\n\t *\n\t * This behavior is actually part of the Promise/A+ spec, but the type system struggles with that fact,\n\t * so this method is a workaround.\n\t *\n\t * In a future version of this library, `FunPromise` will extend `Promise>` instead of\n\t * just `Promise`, which will render this method irrelevant. Unfortunately, Typescript's type system\n\t * doesn't seem capable of handling that reality quite yet, so this is what we get.\n\t */\n\tsimplify(): FunPromise> {\n\t\treturn (this as unknown) as FunPromise>;\n\t}\n\n\t/**\n\t * For each element of the resolved iterable, unwraps layers of `PromiseLike` wrappers as necessary.\n\t */\n\tsimplifyAll(): FunPromise>[]> {\n\t\treturn this.arrayify().map((it) => FunPromise.resolve(it).simplify());\n\t}\n\n\t/**\n\t * Coerces the resolve value (which must be an `Iterable`) into an array. The `Iterable` requirement\n\t * comes from the `Item` return value: `Item` is equivalent to `never` if `T` is not an `Iterable`.\n\t *\n\t * Note that this function does *NOT* resolve the items within the array unless you pass the first argument\n\t * as `true`. The items are not resolved sequentially unless you also pass a second argument as `true`.\n\t */\n\tarrayify(\n\t\tresolveValues: boolean = false,\n\t\tsequentialResolution: boolean = false\n\t): FunPromise[]> {\n\t\tconst aryPromise: FunPromise[]> = this.then((iter) => [\n\t\t\t...((iter as unknown) as Iterable>),\n\t\t]);\n\t\tif (resolveValues) {\n\t\t\tif (sequentialResolution) {\n\t\t\t\treturn aryPromise.then(async (ary) => {\n\t\t\t\t\tconst results = [];\n\t\t\t\t\twhile (!_isEmpty(ary)) {\n\t\t\t\t\t\tresults.push(await ary.shift());\n\t\t\t\t\t}\n\t\t\t\t\treturn results;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn aryPromise.then((ary) => Promise.all(ary));\n\t\t\t}\n\t\t} else {\n\t\t\treturn aryPromise;\n\t\t}\n\t}\n\n\t/**\n\t * Given a mapping function, apply the mapping function to each element of the promise's resolved value,\n\t * and return an array with the results of the mapping. If any of the mapping results are rejected,\n\t * the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result correspond to the order of the elements in the promise's\n\t * resolved value. However, the resolution order is not guaranteed. For example, although the\n\t * output at index 0 will hold the mapping of the input element at index 0, it is not guaranteed that\n\t * the mapping of index 0 will be awaited before the mapping of index 1.\n\t */\n\tmap>(mapper: (it: Item) => Promisable): FunPromise {\n\t\tconst results = [];\n\t\treturn FunPromise.try(async () => {\n\t\t\tawait Promise.all(\n\t\t\t\t_map(await this.arrayify(), async (value, idx) => {\n\t\t\t\t\tresults[idx] = await mapper(await value);\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn results;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).map(mapper)`.\n\t */\n\tstatic map(\n\t\tvalues: PromisableIterable,\n\t\tmapper: (it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).map(mapper);\n\t}\n\n\t/**\n\t * Required to implement `Promise`, but you almost certainly don't care about it.\n\t *\n\t * All the same, it returns the string tag of the underlying promise.\n\t */\n\tget [Symbol.toStringTag]() {\n\t\treturn this.wrapped[Symbol.toStringTag];\n\t}\n\n\t/**\n\t * Executes the provided code whether the promise rejects or resolves.\n\t */\n\tfinally(): FunPromise;\n\tfinally(onfinally: () => void): FunPromise;\n\tfinally(onfinally?) {\n\t\tif (_isFunction(onfinally)) {\n\t\t\treturn new FunPromise(this.wrapped.finally(onfinally));\n\t\t} else {\n\t\t\treturn this;\n\t\t}\n\t}\n\n\t/**\n\t * Given a [[`PromisableIterable`]] whose values are nullary functions returning [[Promisable|`Promisable`]],\n\t * this executes all the functions simultaneously and returns the first whose return value passes the provided test.\n\t * The default test returns true if the value is not `null` or `undefined`.\n\t *\n\t * If no function resolves successfully, the last seen rejection is thrown. If some functions resolve but some reject,\n\t * and none of the resolved values pass the test, then the last seen rejection is thrown.\n\t *\n\t * If all the functions resolve but to a value but no value passes the test, then this rejects with an error saying as much.\n\t */\n\tstatic coalesce(\n\t\tfns: PromisableIterable<() => Promisable>,\n\t\ttest: (item: T) => Promisable = _negate(_isNil)\n\t): FunPromise {\n\t\tlet resolved = false;\n\t\tlet lastSeenReason: unknown = new Error(\"No values left after coalescing\");\n\t\tlet resolveValue;\n\t\treturn FunPromise.map(fns, (fn) =>\n\t\t\tFunPromise.try(fn)\n\t\t\t\t.then((result) => {\n\t\t\t\t\tif (resolved) return null;\n\t\t\t\t\treturn FunPromise.try(test, result).then((testResult) => {\n\t\t\t\t\t\tif (resolved) return null;\n\t\t\t\t\t\tif (testResult) {\n\t\t\t\t\t\t\tresolved = true;\n\t\t\t\t\t\t\tresolveValue = result;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch((e) => {\n\t\t\t\t\tlastSeenReason = e;\n\t\t\t\t})\n\t\t).then(() => {\n\t\t\tif (resolved) {\n\t\t\t\treturn resolveValue;\n\t\t\t} else {\n\t\t\t\tthrow lastSeenReason;\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Waits for `waitTimeMs` milliseconds before resolving. If `returnValue` is provided, resolves with the provided value.\n\t *\n\t * If `waitTimeMs` is less than or equal to zero, then it simply defers until the call stack is clear.\n\t */\n\tstatic delay(waitTimeMs: number): FunPromise;\n\tstatic delay(\n\t\twaitTimeMs: number,\n\t\treturnValue: Promisable\n\t): FunPromise;\n\tstatic delay(waitTimeMs, returnValue?) {\n\t\treturn FunPromise.resolve().delay(waitTimeMs, returnValue);\n\t}\n\n\t/**\n\t * Waits for `waitTimeMs` milliseconds before resolving. If `returnValue` is provided, resolves with the provided value.\n\t *\n\t * If `waitTimeMs` is less than or equal to zero, then it simply defers until the call stack is clear.\n\t */\n\tdelay(\n\t\twaitTimeMs: number,\n\t\treturnValue?: Promisable\n\t): FunPromise {\n\t\tif (waitTimeMs <= 0) {\n\t\t\treturn new FunPromise(\n\t\t\t\tnew Promise((resolve) => _defer(resolve, returnValue))\n\t\t\t);\n\t\t} else {\n\t\t\treturn new FunPromise(\n\t\t\t\tnew Promise((resolve) => _delay(resolve, waitTimeMs, returnValue))\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Given a filtering function, apply the filtering function to each element of the promise's resolved value,\n\t * and return an array with the values for which the filtering function returns `true`. If any of the filtering\n\t * results are rejected, the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result are stable with regard to the order of the elements in the promise's\n\t * resolved value. That is, if `X < Y` and `input[X]` and `input[Y]` are both in the input, and `input[X]` and\n\t * `input[Y]` both pass the filtering function, then the output index of `input[X]` will be less than the output\n\t * index of `input[Y]`. However, the resolution order is not guaranteed: that is, `input[Y]` may be resolved and\n\t * tested before `input[X]` even though `input[X]` has a lower output index than `input[Y]`.\n\t */\n\tfilter(test: (it: Item) => Promisable): FunPromise[]> {\n\t\treturn this.arrayify().then(async (ary) => {\n\t\t\tconst results = await FunPromise.map(ary, async (it) => test(await it));\n\t\t\t// @ts-ignore\n\t\t\treturn _filter(ary, (it, idx) => results[idx]);\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(items).filter(test)`.\n\t */\n\tstatic filter(\n\t\titems: PromisableIterable,\n\t\ttest: (it: Item>) => Promisable\n\t): FunPromise>[]> {\n\t\treturn FunPromise.resolve(items).filter(test);\n\t}\n\n\t/**\n\t * Given a mapping function, apply the mapping function to each element of the promise's resolved value,\n\t * and return an array with the concatenated results of the mapping. If any of the mapping results are\n\t * rejected, the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result correspond to the order of the elements in the promise's\n\t * resolved value. However, the resolution order is not guaranteed.\n\t */\n\tflatMap>(\n\t\tmapper: (it: Item) => Promisable\n\t): FunPromise {\n\t\treturn this.arrayify().then(async (ary: Promisable>[]) => {\n\t\t\tconst promises: Array>> = _map(ary, async (value) =>\n\t\t\t\tmapper(await value)\n\t\t\t);\n\t\t\tconst resolved: T2[][] = await Promise.all(promises);\n\t\t\tconst flattened: T2[] = _flatten(resolved);\n\t\t\treturn flattened;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).flatMap(mapper)`.\n\t */\n\tstatic flatMap(\n\t\tvalues: PromisableIterable,\n\t\tmapper: (it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).flatMap(mapper);\n\t}\n\n\t/**\n\t * Access the resolved value without changing it. Note that if the callback rejects (ie: throws),\n\t * then the resulting promise will be rejected.\n\t */\n\ttap(callback: (val: T) => Promisable): FunPromise {\n\t\treturn this.then(async (val) => {\n\t\t\tawait callback(val);\n\t\t\treturn val;\n\t\t});\n\t}\n\n\t/**\n\t * Access the rejection reason without changing it. Note that if the callback itself rejects (ie: throws),\n\t * both rejection reasons will be capture in a single [[`NestedError`]].\n\t */\n\ttapCatch(callback: (reason: unknown) => Promisable): FunPromise {\n\t\treturn this.catch(async (err) => {\n\t\t\ttry {\n\t\t\t\tawait callback(err);\n\t\t\t} catch (err2) {\n\t\t\t\tthrow new NestedError(\"Error thrown in 'tapCatch'\", err, err2);\n\t\t\t}\n\t\t\tthrow err;\n\t\t});\n\t}\n\n\t/**\n\t * Access each of the resolved values of a resolved iterable without changing it. Note that if the callback rejects (ie: throws),\n\t * then the resulting promise will be rejected.\n\t */\n\ttapEach(callback: (val: Item) => Promisable): FunPromise[]> {\n\t\treturn this.arrayify(true).tap(async (ary) => {\n\t\t\tawait Promise.all(_map(ary, callback));\n\t\t});\n\t}\n\n\t/**\n\t * Given an initial value and an accumulator function, apply the accumlator function to each element of the promise's resolved value,\n\t * passing in the current value and the result. Returns an array with the result of the accumulation. If any of the promise's values are\n\t * rejected, the entire operation will be rejected.\n\t *\n\t * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve.\n\t */\n\tfold>(\n\t\tinitialValue: T2,\n\t\taccumulator: (memo: T2, it: Item) => Promisable\n\t): FunPromise {\n\t\treturn this.arrayify().then(async (ary: Promisable>[]) => {\n\t\t\tlet memoPromise = FunPromise.resolve(initialValue);\n\t\t\tawait Promise.all(\n\t\t\t\t_map(ary, async (promisableValue) => {\n\t\t\t\t\tconst value = await promisableValue;\n\t\t\t\t\tmemoPromise = memoPromise.then((memo) => accumulator(memo, value));\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn await memoPromise;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).fold(initialValue, accumulator)`.\n\t */\n\tstatic fold(\n\t\tvalues: PromisableIterable,\n\t\tinitialValue: T2,\n\t\taccumulator: (memo: T2, it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).fold(initialValue, accumulator);\n\t}\n\n\t/**\n\t * Handles rejections like 'catch', but wraps them in a [[`NestedError`]] with the given message.\n\t */\n\twrapError(msg: string): FunPromise {\n\t\treturn this.catch(NestedError.rethrow(msg));\n\t}\n\n\t/**\n\t * Resolves all the elements of the resolved value, which is assumed to be an `Iterable`. If any\n\t * of the values reject, all the reasons are collected and wrapped in a [[`NestedError`]].\n\t */\n\twrapErrors(msg: string): FunPromise[]> {\n\t\treturn this.arrayify().then(async (ary) => {\n\t\t\tlet errors = [];\n\t\t\tawait Promise.all(\n\t\t\t\t_map(ary, (val) => Promise.resolve(val).catch((e) => errors.push(e)))\n\t\t\t);\n\t\t\tif (_isEmpty(errors)) {\n\t\t\t\treturn ary;\n\t\t\t} else {\n\t\t\t\tthrow new NestedError(msg, ...errors);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Cancel the FunPromise. A cancelled FunPromise will silently disregard any resolution or rejection which occurs after the cancellation.\n\t */\n\tcancel() {\n\t\tthis._isCancelled = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns whether or not the promise has been cancelled. See `cancel()` for more details.\n\t */\n\tisCancelled() {\n\t\treturn this._isCancelled;\n\t}\n\n\t/**\n\t * Captures either fulfillment or rejection and resolves an object that describes the result.\n\t */\n\tsettle(): FunPromise> {\n\t\treturn new FunPromise(\n\t\t\tthis.wrapped.then(\n\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Assuming that the resolved value is an iterable, then for each element of the\n\t * array, captures either the fulfillment or rejection of that element.\n\t */\n\tsettleAll(): FunPromise>[]> {\n\t\treturn new FunPromise(\n\t\t\tthis.arrayify().wrapped.then((ary) =>\n\t\t\t\tPromise.all(\n\t\t\t\t\t_map(ary, (val) =>\n\t\t\t\t\t\tPromise.resolve(val).then(\n\t\t\t\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(iterable).settleAll()`.\n\t */\n\tstatic settleAll(\n\t\titerable: PromisableIterable\n\t): FunPromise[]> {\n\t\treturn new FunPromise(\n\t\t\tPromise.resolve(iterable).then((ary) =>\n\t\t\t\tPromise.all(\n\t\t\t\t\t_map(ary, (val) =>\n\t\t\t\t\t\tPromise.resolve(val).then(\n\t\t\t\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t}\n}\n"]} \ No newline at end of file +{"version":3,"file":"fun-promise.js","sourceRoot":"","sources":["../../../../src/fun-promise.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @format\n */\n\n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n\nimport {\n\tPromisable,\n\tPromisableIterable,\n\tUnpromise,\n\tItem,\n\tSettlement,\n\tFulfillment,\n\tRejection,\n} from \"./types\";\nimport { NestedError } from \"ts-nested-error\";\n\nimport _defer from \"lodash/defer\";\nimport _delay from \"lodash/delay\";\nimport _filter from \"lodash/filter\";\nimport _flatten from \"lodash/flatten\";\nimport _identity from \"lodash/identity\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _isError from \"lodash/isError\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\nimport _map from \"lodash/map\";\nimport _negate from \"lodash/negate\";\nimport _noop from \"lodash/noop\";\nimport _toArray from \"lodash/toArray\";\n\n// import Debug from \"debug\";\n// const debug = Debug(\"fun-promises\");\n\n/**\n * The class that you should use instead of `Promise`. It implements the `Promise` API, so it should be a drop-in replacement.\n */\nexport default class FunPromise implements Promise {\n\t/**\n\t * Whether or not this FunPromise has been cancelled.\n\t */\n\tprivate _isCancelled: boolean = false;\n\n\t/**\n\t * The promise that was wrapped after attaching our custom logic.\n\t */\n\tprotected readonly wrapped: Promise;\n\n\t/**\n\t * Constructor, which takes the promise to wrap.\n\t */\n\tconstructor(wrapped: Promisable) {\n\t\tthis.wrapped = new Promise(async (resolve, reject) => {\n\t\t\tlet resolved = null;\n\t\t\ttry {\n\t\t\t\tresolved = await wrapped;\n\t\t\t} catch (e) {\n\t\t\t\tif (this._isCancelled) return;\n\t\t\t\treject(e);\n\t\t\t}\n\t\t\tif (this._isCancelled) return;\n\t\t\tresolve(resolved);\n\t\t});\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise wrapping\n\t * it.\n\t */\n\tstatic resolve(value?: Promisable): FunPromise {\n\t\tif (value instanceof FunPromise) {\n\t\t\treturn value as FunPromise;\n\t\t} else if (value instanceof Promise) {\n\t\t\treturn new FunPromise(value);\n\t\t} else {\n\t\t\treturn new FunPromise(new Promise((resolve) => resolve(value)));\n\t\t}\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and resolves to the new value,\n\t * disregarding any previous resolution value.\n\t */\n\tresolve(value?: Promisable): FunPromise {\n\t\treturn new FunPromise(this.wrapped.then(() => value));\n\t}\n\n\t/**\n\t * An alias for `resolve` provided for consistency with the instance `return` method.\n\t *\n\t * @deprecated Use `resolve` instead.\n\t */\n\tstatic return(value?: Promisable): FunPromise {\n\t\treturn FunPromise.resolve(value);\n\t}\n\n\t/**\n\t * An alias for `resolve` provided for compatibility with [the Bluebird API|http://bluebirdjs.com/docs/api/return.html].\n\t *\n\t * @deprecated Use `resolve` instead.\n\t */\n\treturn(value?: Promisable): FunPromise {\n\t\treturn this.resolve(value);\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise rejecting\n\t * with that value, after unwrapping as many layers of `PromiseLike`\n\t * wrappers as necessary.\n\t */\n\tstatic reject(value?: unknown): FunPromise {\n\t\treturn new FunPromise(Promise.reject(value));\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise rejecting\n\t * with that value, after unwrapping as many layers of `PromiseLike`\n\t * wrappers as necessary. This disregards any existing status.\n\t */\n\treject(value?: unknown): FunPromise {\n\t\treturn FunPromise.reject(value);\n\t}\n\n\t/**\n\t * Attaches callbacks for the resolution and/or rejection of the Promise.\n\t * @param onfulfilled The optional callback to execute when the Promise is resolved.\n\t * @param onrejected The optional callback to execute when the Promise is rejected. If provided, the result of this callback is the new resolution value, and this promise is resolved, not rejected.\n\t * @returns A Promise for the completion of which ever callback is executed.\n\t */\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable\n\t): FunPromise;\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable,\n\t\tonrejected: (reason: unknown) => Promisable\n\t): FunPromise;\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable,\n\t\tonrejected?: (reason: unknown) => Promisable\n\t): FunPromise {\n\t\tif (_isNil(onrejected)) {\n\t\t\treturn new FunPromise(this.wrapped.then(onfulfilled));\n\t\t} else {\n\t\t\treturn new FunPromise(this.wrapped.then(onfulfilled, onrejected));\n\t\t}\n\t}\n\n\t/**\n\t * Attaches a callback for only the rejection of the Promise. If the callback throws, then throws a [[`NestedError`]] with\n\t * both the original rejection reason and the new thrown value.\n\t *\n\t * @param onrejected The callback to execute when the Promise is rejected.\n\t * @returns A Promise for the completion of the callback.\n\t */\n\tcatch(\n\t\tonrejected: (reason: unknown) => Promisable = _identity\n\t): FunPromise {\n\t\treturn new FunPromise(this.wrapped.catch(onrejected));\n\t}\n\n\t/**\n\t * Creates a Promise that is resolved with an array of results when all of the\n\t * provided Promises resolve, or rejected when any Promise is rejected.\n\t * @param values An array of Promises.\n\t * @returns A new Promise.\n\t */\n\tstatic all(values: PromisableIterable): FunPromise;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable, Promisable, Promisable]\n\t): FunPromise<[T1, T2, T3, T4]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable, Promisable]\n\t): FunPromise<[T1, T2, T3]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable]\n\t): FunPromise<[T1, T2]>;\n\tstatic all(values: [Promisable]): FunPromise<[T1]>;\n\tstatic all(...values: any[]): any {\n\t\treturn FunPromise.resolve(_flatten(values)).all();\n\t}\n\tall(): FunPromise[]> {\n\t\treturn this.arrayify(true);\n\t}\n\n\t/**\n\t * Given a function (or a promise of a function) that returns a value (or a promise of a value),\n\t * create a promise that executes the function and returns the value. If executing the function\n\t * throws an exception, then that exception becomes the rejection of the promise.\n\t *\n\t * Any arguments after the first will be passed into the function when it is invoked. If they are\n\t * a `PromiseLike`, then they will be resolved and the resolution value will be passed into the\n\t * function instead.\n\t *\n\t * This function is really useful in the following cases:\n\t * 1. to [avoid releasing Zalgo](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n\t * 2. when you want to create a `FunPromise` based on an `async` function\n\t * 3. when you want to create a `FunPromise` based on a normal function\n\t */\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6,\n\t\t\t\targ7: Arg7,\n\t\t\t\targ8: Arg8\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable,\n\t\targ7: Promisable,\n\t\targ8: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6,\n\t\t\t\targ7: Arg7\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable,\n\t\targ7: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(arg1: Arg1, arg2: Arg2, arg3: Arg3, arg4: Arg4) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1, arg2: Arg2, arg3: Arg3) => Promisable>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1, arg2: Arg2) => Promisable>,\n\t\targ1: Promisable,\n\t\targ2: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1) => Promisable>,\n\t\targ1: Promisable\n\t): FunPromise;\n\tstatic try(source: Promisable<() => Promisable>): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(...args: ArgT[]) => Promisable>,\n\t\t...args: ArgT[]\n\t): FunPromise {\n\t\treturn FunPromise.resolve(source).then((f) => {\n\t\t\tif (_isEmpty(args)) {\n\t\t\t\treturn f();\n\t\t\t} else {\n\t\t\t\treturn Promise.all(args).then((realArgs) => f(...realArgs));\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Unwraps layers of `PromiseLike` wrappers as necessary.\n\t *\n\t * This behavior is actually part of the Promise/A+ spec, but the type system struggles with that fact,\n\t * so this method is a workaround.\n\t *\n\t * In a future version of this library, `FunPromise` will extend `Promise>` instead of\n\t * just `Promise`, which will render this method irrelevant. Unfortunately, Typescript's type system\n\t * doesn't seem capable of handling that reality quite yet, so this is what we get.\n\t */\n\tsimplify(): FunPromise> {\n\t\treturn (this as unknown) as FunPromise>;\n\t}\n\n\t/**\n\t * For each element of the resolved iterable, unwraps layers of `PromiseLike` wrappers as necessary.\n\t */\n\tsimplifyAll(): FunPromise>[]> {\n\t\treturn this.arrayify().map((it) => FunPromise.resolve(it).simplify());\n\t}\n\n\t/**\n\t * Coerces the resolve value (which must be an `Iterable`) into an array. The `Iterable` requirement\n\t * comes from the `Item` return value: `Item` is equivalent to `never` if `T` is not an `Iterable`.\n\t *\n\t * Note that this function does *NOT* resolve the items within the array unless you pass the first argument\n\t * as `true`. The items are not resolved sequentially unless you also pass a second argument as `true`.\n\t */\n\tarrayify(\n\t\tresolveValues: boolean = false,\n\t\tsequentialResolution: boolean = false\n\t): FunPromise[]> {\n\t\tconst aryPromise = (this.then(\n\t\t\tasync (iterPromise) => _toArray(await iterPromise) // Just to be sure we're all de-promise'd\n\t\t) as unknown) as FunPromise[]>;\n\t\tif (resolveValues) {\n\t\t\tif (sequentialResolution) {\n\t\t\t\treturn aryPromise.then(async (ary) => {\n\t\t\t\t\tconst results = [];\n\t\t\t\t\twhile (!_isEmpty(ary)) {\n\t\t\t\t\t\tresults.push(await ary.shift());\n\t\t\t\t\t}\n\t\t\t\t\treturn results;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn aryPromise.then((ary) => Promise.all(ary));\n\t\t\t}\n\t\t} else {\n\t\t\treturn aryPromise;\n\t\t}\n\t}\n\n\t/**\n\t * Given a mapping function, apply the mapping function to each element of the promise's resolved value,\n\t * and return an array with the results of the mapping. If any of the mapping results are rejected,\n\t * the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result correspond to the order of the elements in the promise's\n\t * resolved value. However, the resolution order is not guaranteed. For example, although the\n\t * output at index 0 will hold the mapping of the input element at index 0, it is not guaranteed that\n\t * the mapping of index 0 will be awaited before the mapping of index 1.\n\t */\n\tmap>(mapper: (it: Item) => Promisable): FunPromise {\n\t\tconst results = [];\n\t\treturn FunPromise.try(async () => {\n\t\t\tawait Promise.all(\n\t\t\t\t_map(await this.arrayify(), async (value, idx) => {\n\t\t\t\t\tresults[idx] = await mapper(await value);\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn results;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).map(mapper)`.\n\t */\n\tstatic map(\n\t\tvalues: PromisableIterable,\n\t\tmapper: (it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).map(mapper);\n\t}\n\n\t/**\n\t * Required to implement `Promise`, but you almost certainly don't care about it.\n\t *\n\t * All the same, it returns the string tag of the underlying promise.\n\t */\n\tget [Symbol.toStringTag]() {\n\t\treturn this.wrapped[Symbol.toStringTag];\n\t}\n\n\t/**\n\t * Executes the provided code whether the promise rejects or resolves.\n\t */\n\tfinally(): FunPromise;\n\tfinally(onfinally: () => void): FunPromise;\n\tfinally(onfinally?) {\n\t\tif (_isFunction(onfinally)) {\n\t\t\treturn new FunPromise(this.wrapped.finally(onfinally));\n\t\t} else {\n\t\t\treturn this;\n\t\t}\n\t}\n\n\t/**\n\t * Given a [[`PromisableIterable`]] whose values are nullary functions returning [[Promisable|`Promisable`]],\n\t * this executes all the functions simultaneously and returns the first whose return value passes the provided test.\n\t * The default test returns true if the value is not `null` or `undefined`.\n\t *\n\t * If no function resolves successfully, the last seen rejection is thrown. If some functions resolve but some reject,\n\t * and none of the resolved values pass the test, then the last seen rejection is thrown.\n\t *\n\t * If all the functions resolve but to a value but no value passes the test, then this rejects with an error saying as much.\n\t */\n\tstatic coalesce(\n\t\tfns: PromisableIterable<() => Promisable>,\n\t\ttest: (item: T) => Promisable = _negate(_isNil)\n\t): FunPromise {\n\t\tlet resolved = false;\n\t\tlet lastSeenReason: unknown = new Error(\"No values left after coalescing\");\n\t\tlet resolveValue;\n\t\treturn FunPromise.map(fns, (fn) =>\n\t\t\tFunPromise.try(fn)\n\t\t\t\t.then((result) => {\n\t\t\t\t\tif (resolved) return null;\n\t\t\t\t\treturn FunPromise.try(test, result).then((testResult) => {\n\t\t\t\t\t\tif (resolved) return null;\n\t\t\t\t\t\tif (testResult) {\n\t\t\t\t\t\t\tresolved = true;\n\t\t\t\t\t\t\tresolveValue = result;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch((e) => {\n\t\t\t\t\tlastSeenReason = e;\n\t\t\t\t})\n\t\t).then(() => {\n\t\t\tif (resolved) {\n\t\t\t\treturn resolveValue;\n\t\t\t} else {\n\t\t\t\tthrow lastSeenReason;\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Waits for `waitTimeMs` milliseconds before resolving. If `returnValue` is provided, resolves with the provided value.\n\t *\n\t * If `waitTimeMs` is less than or equal to zero, then it simply defers until the call stack is clear.\n\t */\n\tstatic delay(waitTimeMs: number): FunPromise;\n\tstatic delay(\n\t\twaitTimeMs: number,\n\t\treturnValue: Promisable\n\t): FunPromise;\n\tstatic delay(waitTimeMs, returnValue?) {\n\t\treturn FunPromise.resolve().delay(waitTimeMs, returnValue);\n\t}\n\n\t/**\n\t * Waits for `waitTimeMs` milliseconds before resolving. If `returnValue` is provided, resolves with the provided value.\n\t *\n\t * If `waitTimeMs` is less than or equal to zero, then it simply defers until the call stack is clear.\n\t */\n\tdelay(\n\t\twaitTimeMs: number,\n\t\treturnValue?: Promisable\n\t): FunPromise {\n\t\tif (waitTimeMs <= 0) {\n\t\t\treturn new FunPromise(\n\t\t\t\tnew Promise((resolve) => _defer(resolve, returnValue))\n\t\t\t);\n\t\t} else {\n\t\t\treturn new FunPromise(\n\t\t\t\tnew Promise((resolve) => _delay(resolve, waitTimeMs, returnValue))\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Given a filtering function, apply the filtering function to each element of the promise's resolved value,\n\t * and return an array with the values for which the filtering function returns `true`. If any of the filtering\n\t * results are rejected, the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result are stable with regard to the order of the elements in the promise's\n\t * resolved value. That is, if `X < Y` and `input[X]` and `input[Y]` are both in the input, and `input[X]` and\n\t * `input[Y]` both pass the filtering function, then the output index of `input[X]` will be less than the output\n\t * index of `input[Y]`. However, the resolution order is not guaranteed: that is, `input[Y]` may be resolved and\n\t * tested before `input[X]` even though `input[X]` has a lower output index than `input[Y]`.\n\t */\n\tfilter(test: (it: Item) => Promisable): FunPromise[]> {\n\t\treturn this.arrayify().then(async (ary) => {\n\t\t\tconst results = await FunPromise.map(ary, async (it) => test(await it));\n\t\t\t// @ts-ignore\n\t\t\treturn _filter(ary, (it, idx) => results[idx]);\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(items).filter(test)`.\n\t */\n\tstatic filter(\n\t\titems: PromisableIterable,\n\t\ttest: (it: Item>) => Promisable\n\t): FunPromise>[]> {\n\t\treturn FunPromise.resolve(items).filter(test);\n\t}\n\n\t/**\n\t * Given a mapping function, apply the mapping function to each element of the promise's resolved value,\n\t * and return an array with the concatenated results of the mapping. If any of the mapping results are\n\t * rejected, the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result correspond to the order of the elements in the promise's\n\t * resolved value. However, the resolution order is not guaranteed.\n\t */\n\tflatMap>(\n\t\tmapper: (it: Item) => Promisable\n\t): FunPromise {\n\t\treturn this.arrayify().then(async (ary: Promisable>[]) => {\n\t\t\tconst promises: Array>> = _map(ary, async (value) =>\n\t\t\t\tmapper(await value)\n\t\t\t);\n\t\t\tconst resolved: T2[][] = await Promise.all(promises);\n\t\t\tconst flattened: T2[] = _flatten(resolved);\n\t\t\treturn flattened;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).flatMap(mapper)`.\n\t */\n\tstatic flatMap(\n\t\tvalues: PromisableIterable,\n\t\tmapper: (it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).flatMap(mapper);\n\t}\n\n\t/**\n\t * Access the resolved value without changing it. Note that if the callback rejects (ie: throws),\n\t * then the resulting promise will be rejected.\n\t */\n\ttap(callback: (val: T) => Promisable): FunPromise {\n\t\treturn this.then(async (val) => {\n\t\t\tawait callback(val);\n\t\t\treturn val;\n\t\t});\n\t}\n\n\t/**\n\t * Access the rejection reason without changing it. Note that if the callback itself rejects (ie: throws),\n\t * both rejection reasons will be capture in a single [[`NestedError`]].\n\t */\n\ttapCatch(callback: (reason: unknown) => Promisable): FunPromise {\n\t\treturn this.catch(async (err) => {\n\t\t\ttry {\n\t\t\t\tawait callback(err);\n\t\t\t} catch (err2) {\n\t\t\t\tthrow new NestedError(\"Error thrown in 'tapCatch'\", err, err2);\n\t\t\t}\n\t\t\tthrow err;\n\t\t});\n\t}\n\n\t/**\n\t * Access each of the resolved values of a resolved iterable without changing it. Note that if the callback rejects (ie: throws),\n\t * then the resulting promise will be rejected.\n\t */\n\ttapEach(callback: (val: Item) => Promisable): FunPromise[]> {\n\t\treturn this.arrayify(true).tap(async (ary) => {\n\t\t\tawait Promise.all(_map(ary, callback));\n\t\t});\n\t}\n\n\t/**\n\t * Given an initial value and an accumulator function, apply the accumlator function to each element of the promise's resolved value,\n\t * passing in the current value and the result. Returns an array with the result of the accumulation. If any of the promise's values are\n\t * rejected, the entire operation will be rejected.\n\t *\n\t * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve.\n\t */\n\tfold>(\n\t\tinitialValue: T2,\n\t\taccumulator: (memo: T2, it: Item) => Promisable\n\t): FunPromise {\n\t\treturn this.arrayify().then(async (ary: Promisable>[]) => {\n\t\t\tlet memoPromise = FunPromise.resolve(initialValue);\n\t\t\tawait Promise.all(\n\t\t\t\t_map(ary, async (promisableValue) => {\n\t\t\t\t\tconst value = await promisableValue;\n\t\t\t\t\tmemoPromise = memoPromise.then((memo) => accumulator(memo, value));\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn await memoPromise;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).fold(initialValue, accumulator)`.\n\t */\n\tstatic fold(\n\t\tvalues: PromisableIterable,\n\t\tinitialValue: T2,\n\t\taccumulator: (memo: T2, it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).fold(initialValue, accumulator);\n\t}\n\n\t/**\n\t * Given an initial array of values and an accumulator function, apply the accumlator function to each element of the promise's resolved value,\n\t * passing in the current array of values and the resolved item. Returns an array with the concatenated results of the accumulation.\n\t * If any of the promise's values are rejected, the entire operation will be rejected.\n\t *\n\t * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve.\n\t */\n\tflatFold>(\n\t\tinitialValue: PromisableIterable,\n\t\taccumulator: (memo: T2[], it: Item) => PromisableIterable\n\t): FunPromise {\n\t\treturn this.arrayify().then(async (ary: Promisable>[]) => {\n\t\t\tlet memoPromise: FunPromise = FunPromise.resolve(\n\t\t\t\tinitialValue\n\t\t\t).arrayify() as FunPromise;\n\t\t\tawait Promise.all(\n\t\t\t\t_map(ary, async (promisableValue) => {\n\t\t\t\t\tconst value = await promisableValue;\n\t\t\t\t\tmemoPromise = memoPromise.then(async (memo) =>\n\t\t\t\t\t\tmemo.concat(_toArray(await accumulator(memo, value)))\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn memoPromise;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).flatFold(initialValue, accumulator)`.\n\t */\n\tstatic flatFold(\n\t\tvalues: PromisableIterable,\n\t\tinitialValue: PromisableIterable,\n\t\taccumulator: (memo: T2[], it: T) => PromisableIterable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).flatFold(initialValue, accumulator);\n\t}\n\n\t/**\n\t * Handles rejections like 'catch', but wraps them in a [[`NestedError`]] with the given message.\n\t */\n\twrapError(msg: string): FunPromise {\n\t\treturn this.catch(NestedError.rethrow(msg));\n\t}\n\n\t/**\n\t * Resolves all the elements of the resolved value, which is assumed to be an `Iterable`. If any\n\t * of the values reject, all the reasons are collected and wrapped in a [[`NestedError`]].\n\t */\n\twrapErrors(msg: string): FunPromise[]> {\n\t\treturn this.arrayify().then(async (ary) => {\n\t\t\tlet errors = [];\n\t\t\tawait Promise.all(\n\t\t\t\t_map(ary, (val) => Promise.resolve(val).catch((e) => errors.push(e)))\n\t\t\t);\n\t\t\tif (_isEmpty(errors)) {\n\t\t\t\treturn ary;\n\t\t\t} else {\n\t\t\t\tthrow new NestedError(msg, ...errors);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Cancel the FunPromise. A cancelled FunPromise will silently disregard any resolution or rejection which occurs after the cancellation.\n\t */\n\tcancel() {\n\t\tthis._isCancelled = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns whether or not the promise has been cancelled. See `cancel()` for more details.\n\t */\n\tisCancelled() {\n\t\treturn this._isCancelled;\n\t}\n\n\t/**\n\t * Captures either fulfillment or rejection and resolves an object that describes the result.\n\t */\n\tsettle(): FunPromise> {\n\t\treturn new FunPromise(\n\t\t\tthis.wrapped.then(\n\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Assuming that the resolved value is an iterable, then for each element of the\n\t * array, captures either the fulfillment or rejection of that element.\n\t */\n\tsettleAll(): FunPromise>[]> {\n\t\treturn new FunPromise(\n\t\t\tthis.arrayify().wrapped.then((ary) =>\n\t\t\t\tPromise.all(\n\t\t\t\t\t_map(ary, (val) =>\n\t\t\t\t\t\tPromise.resolve(val).then(\n\t\t\t\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(iterable).settleAll()`.\n\t */\n\tstatic settleAll(\n\t\titerable: PromisableIterable\n\t): FunPromise[]> {\n\t\treturn new FunPromise(\n\t\t\tPromise.resolve(iterable).then((ary) =>\n\t\t\t\tPromise.all(\n\t\t\t\t\t_map(ary, (val) =>\n\t\t\t\t\t\tPromise.resolve(val).then(\n\t\t\t\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t}\n}\n"]} \ No newline at end of file diff --git a/dist/es6/cjs/src/fun-promise.test.d.ts b/dist/es6/cjs/src/fun-promise.test.d.ts deleted file mode 100644 index 597914a..0000000 --- a/dist/es6/cjs/src/fun-promise.test.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export {}; -//# sourceMappingURL=fun-promise.test.d.ts.map \ No newline at end of file diff --git a/dist/es6/cjs/src/fun-promise.test.d.ts.map b/dist/es6/cjs/src/fun-promise.test.d.ts.map deleted file mode 100644 index e2ecf9b..0000000 --- a/dist/es6/cjs/src/fun-promise.test.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fun-promise.test.d.ts","sourceRoot":"","sources":["../../../../src/fun-promise.test.js"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/es6/cjs/src/fun-promise.test.js b/dist/es6/cjs/src/fun-promise.test.js deleted file mode 100644 index 4e6ca85..0000000 --- a/dist/es6/cjs/src/fun-promise.test.js +++ /dev/null @@ -1,601 +0,0 @@ -"use strict"; -/** @format */ -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -const fun_promise_1 = require("./fun-promise"); -const lodash_1 = require("lodash"); -const ts_nested_error_1 = require("ts-nested-error"); -const types_1 = require("./types"); -const tokenPromise = new Promise((resolve) => resolve(true)); -const tokenFunPromise = new fun_promise_1.default(tokenPromise); -function withRejection(rejectionReason, callback) { - const rejection = Promise.reject(rejectionReason); - try { - return callback(rejection); - } - finally { - rejection.catch(lodash_1.default.noop); // Disable uncaught exception issues - } -} -describe("FunPromise", () => { - it("can be constructed and resolved", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(new fun_promise_1.default(tokenPromise)).resolves.toBe(true); - })); - describe("resolve/return", () => { - lodash_1.default.forEach({ static: fun_promise_1.default, instance: tokenFunPromise }, (impl, implName) => { - lodash_1.default.forEach(["resolve", "return"], (methodName) => { - describe(methodName, () => { - describe(implName, () => { - function doResolve(value) { - return impl[methodName](value); - } - it("rejects when provided a rejection", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(doResolve(Promise.reject("BOOM!"))).rejects.toBe("BOOM!"); - })); - it("does not resolve the elements of an array", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - expect.hasAssertions(); - yield withRejection("BOOM!", (rejection) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(doResolve([rejection])).resolves.toHaveLength(1); - })); - })); - describe("resolves correctly", () => { - it("with a value", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(doResolve(tokenPromise)).resolves.toBe(true); - })); - it("returns the FunPromise if passed a FunPromise", () => { - expect(doResolve(tokenFunPromise)).toEqual(tokenFunPromise); - }); - it("without a value", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(doResolve()).resolves.toBeNil(); - })); - }); - }); - }); - }); - }); - }); - describe("then", () => { - it("works without onrejected", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(tokenFunPromise.then(lodash_1.default.identity)).resolves.toBe(true); - })); - }); - describe("catch", () => { - it("handles rejections", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(tokenFunPromise - .then(() => Promise.reject("BOOM!")) - .catch((e) => { - expect(e).toBe("BOOM!"); - return "DONE!"; - })).resolves.toBe("DONE!"); - })); - it("returns the error when not passed an argument", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const error = new Error("BOOM!"); - yield expect(tokenFunPromise.then(() => Promise.reject(error)).catch()).resolves.toBe(error); - })); - }); - describe("arrayify", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const value = [1, 2, 3, 4]; - yield expect(fun_promise_1.default.resolve(value).arrayify()).resolves.toStrictEqual(value); - })); - it("returns a clone", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const value = [1, 2, 3, 4]; - yield expect(fun_promise_1.default.resolve(value) - .arrayify() - .then((it) => { - it.pop(); - return it; - })).resolves.not.toBe(value); - expect(value).toHaveLength(4); - })); - it("does not resolve values when called without an argument", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const rejection = Promise.reject("BOOM!"); - try { - yield expect(fun_promise_1.default.resolve([1, 2, rejection]).arrayify()).resolves.toBeArrayOfSize(3); - } - finally { - rejection.catch((e) => { }); // Disarm the rejection - } - })); - it("resolves values when called with the sole argument `true`", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(fun_promise_1.default.resolve([ - Promise.resolve(1), - fun_promise_1.default.resolve(2), - ]).arrayify(true)).resolves.toEqual([1, 2]); - })); - it("rejects values when called with the sole argument `true` and a rejection in the mix", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const rejection = Promise.reject("BOOM!"); - yield expect(fun_promise_1.default.resolve([1, 2, rejection]).arrayify(true)).rejects.toBe("BOOM!"); - })); - it("rejects values in order when called with the arguments `(true, true)`", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const rejection1 = Promise.reject("BOOM!"); - const rejection2 = Promise.reject("BANG!"); - try { - yield expect(fun_promise_1.default.resolve([1, 2, rejection1, rejection2]).arrayify(true, true)).rejects.toBe("BOOM!"); - } - finally { - rejection1.catch((e) => { }); // Disarm the rejection - rejection2.catch((e) => { }); // Disarm the rejection - } - })); - it("resolves values in order when called with the arguments `(true, true)`", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - let sawFirst = false; - let sawSecond = false; - let sawThird = false; - let sawFourth = false; - yield expect(fun_promise_1.default.resolve([ - fun_promise_1.default.try(() => { - expect(sawFirst).toBe(false); - expect(sawSecond).toBe(false); - expect(sawThird).toBe(false); - expect(sawFourth).toBe(false); - sawFirst = true; - return 1; - }), - fun_promise_1.default.try(() => { - expect(sawFirst).toBe(true); - expect(sawSecond).toBe(false); - expect(sawThird).toBe(false); - expect(sawFourth).toBe(false); - sawSecond = true; - return 2; - }), - fun_promise_1.default.try(() => { - expect(sawFirst).toBe(true); - expect(sawSecond).toBe(true); - expect(sawThird).toBe(false); - expect(sawFourth).toBe(false); - sawThird = true; - return 3; - }), - fun_promise_1.default.try(() => { - expect(sawFirst).toBe(true); - expect(sawSecond).toBe(true); - expect(sawThird).toBe(true); - expect(sawFourth).toBe(false); - sawFourth = true; - return 4; - }), - ]).arrayify(true, true)).resolves.toStrictEqual([1, 2, 3, 4]); - expect(sawFirst).toBe(true); - expect(sawSecond).toBe(true); - expect(sawThird).toBe(true); - expect(sawFourth).toBe(true); - })); - }); - describe("all", () => { - lodash_1.default.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - describe("basically works", () => { - lodash_1.default.times(10, (argCount) => { - const simpleArgs = lodash_1.default.times(argCount, (i) => Math.pow(2, i)); - function runAll(args) { - if (staticVersion) { - return fun_promise_1.default.all(args); - } - else { - return fun_promise_1.default.resolve(args).all(); - } - } - it(`for ${argCount} arguments`, () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(runAll(simpleArgs)).resolves.toStrictEqual(simpleArgs); - })); - }); - }); - }); - }); - }); - describe("try", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(fun_promise_1.default.try(() => true)).resolves.toBe(true); - })); - it("works with one argument", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(fun_promise_1.default.try((i) => i, 42)).resolves.toBe(42); - })); - it("explodes properly", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(fun_promise_1.default.try(() => Promise.reject("BOOM!"))).rejects.toBe("BOOM!"); - })); - }); - describe("map", () => { - lodash_1.default.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - function runMap(args, mapper) { - if (staticVersion) { - return fun_promise_1.default.map(args, mapper); - } - else { - return fun_promise_1.default.resolve(args).map(mapper); - } - } - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(runMap(["Hello", "Goodbye"], (it) => `${it}, World!`)).resolves.toStrictEqual(["Hello, World!", "Goodbye, World!"]); - })); - it("works with some test values", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const defaultValues = [1, 2, 4, 8, 16]; - const defaultMapper = (it) => { - if (Math.random() < 0.5) { - return Promise.resolve(it * 2); - } - else { - return it * 2; - } - }; - yield expect(runMap(defaultValues, defaultMapper)).resolves.toStrictEqual([2, 4, 8, 16, 32]); - })); - }); - }); - }); - describe("Symbol.toStringTag", () => { - it("is the same as the promise passed in", () => { - const promise = new Promise((resolve) => resolve()); - const promiseTag = promise[Symbol.toStringTag]; - expect(promiseTag).not.toBeNil(); - expect(new fun_promise_1.default(promise)[Symbol.toStringTag]).toBe(promiseTag); - }); - }); - describe("finally", () => { - it("returns the same promise when given no arguments", () => { - expect(tokenFunPromise.finally()).toBe(tokenFunPromise); - }); - it("executes on resolution", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - let finallyExecuted = false; - yield expect(fun_promise_1.default.resolve(false).finally(() => { - finallyExecuted = true; - })).resolves.toBe(false); - expect(finallyExecuted).toBe(true); - })); - it("executes on rejection", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - let finallyExecuted = false; - yield expect(fun_promise_1.default.reject("BOOM!").finally(() => { - finallyExecuted = true; - })).rejects.toBe("BOOM!"); - expect(finallyExecuted).toBe(true); - })); - }); - describe("reject", () => { - lodash_1.default.forEach({ static: fun_promise_1.default, instance: tokenFunPromise }, (impl, name) => { - describe(name, () => { - it("rejects correctly", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(impl.reject(true)).rejects.toBe(true); - })); - it("doesn't change the object that is rejected", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const reason = { foo: true, bar: 42 }; - yield expect(impl.reject(reason)).rejects.toBe(reason); - })); - }); - }); - }); - describe("coalesce", () => { - function runCoalesce(args, test) { - return fun_promise_1.default.coalesce(args, test); - } - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(runCoalesce([() => null, Promise.resolve(() => true)])).resolves.toBe(true); - })); - it("returns the first resolving value", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(runCoalesce([() => fun_promise_1.default.delay(1000).resolve(true), () => false])).resolves.toBe(false); - })); - it("returns the value that passes the test", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(runCoalesce([() => 2, () => 4], (it) => it > 2)).resolves.toBe(4); - })); - it("throws the error if nothing passes the test", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(runCoalesce([() => Promise.reject("BOOM!"), () => 4], (it) => it > 4)).rejects.toBe("BOOM!"); - })); - it("punts appropriately after the first resolution", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(runCoalesce(lodash_1.default.times(3, (idx) => () => idx))).resolves.toBe(0); - })); - }); - describe("delay", () => { - lodash_1.default.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - lodash_1.default.forEach([-1000, -1, 0, 1, 1000], (delayMs) => { - describe(`When requesting a delay of ${delayMs} milliseconds`, () => { - function runDelay(arg) { - if (staticVersion) { - return fun_promise_1.default.delay(delayMs, arg); - } - else { - return fun_promise_1.default.resolve().delay(delayMs, arg); - } - } - describe("basically works", () => { - it("with no arg", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(runDelay()).resolves; - })); - it("with one arg", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(runDelay(1000)).resolves.toBe(1000); - })); - }); - }); - }); - }); - }); - }); - describe("simplify", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(new fun_promise_1.default(Promise.resolve(Promise.resolve(true))).simplify()).resolves.toBe(true); - })); - }); - describe("filter", () => { - lodash_1.default.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - const defaultValues = [ - 1, - true, - {}, - null, - Promise.resolve(null), - Promise.resolve(), - "Hello, Dolly!", - ]; - const defaultExpect = [1, true, {}, "Hello, Dolly!"]; - const defaultTest = (it) => !lodash_1.default.isNil(it); - function doFilter(values = defaultValues, test = defaultTest) { - if (staticVersion) { - return fun_promise_1.default.filter(values, test); - } - else { - return fun_promise_1.default.resolve(values).filter(test); - } - } - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(doFilter()).resolves.not.toBeEmpty(); - yield expect(doFilter()).resolves.toBeArrayOfSize(4); - })); - }); - }); - }); - describe("flatMap", () => { - lodash_1.default.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - const defaultValues = [ - 1, - true, - {}, - null, - Promise.resolve(null), - Promise.resolve(), - "Hello, Dolly!", - ]; - const defaultMapper = (it) => { - if (lodash_1.default.isNil(it)) { - return []; - } - else { - return [it]; - } - }; - const defaultExpect = [1, true, {}, "Hello, Dolly!"]; - function doFlatMap(values = defaultValues, mapper = defaultMapper) { - if (staticVersion) { - return fun_promise_1.default.flatMap(values, mapper); - } - else { - return fun_promise_1.default.resolve(values).flatMap(mapper); - } - } - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(doFlatMap()).resolves.toStrictEqual(defaultExpect); - })); - }); - }); - }); - describe("tap", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - let sawTap = false; - yield expect(tokenFunPromise.tap((val) => { - expect(val).toBe(true); - sawTap = true; - return false; - })).resolves.toBe(true); - expect(sawTap).toBe(true); - })); - it("rejects if it throws an exception", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - let sawTap = false; - yield expect(tokenFunPromise.tap((val) => { - sawTap = true; - throw "BOOM!"; - })).rejects.toBe("BOOM!"); - expect(sawTap).toBe(true); - })); - }); - describe("fold", () => { - lodash_1.default.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - const defaultValues = [1, 2, 3, 4, 5]; - function doFold(values = defaultValues, initialValue = 0, accumulator = (a, b) => a + b) { - if (staticVersion) { - return fun_promise_1.default.fold(values, initialValue, accumulator); - } - else { - return fun_promise_1.default.resolve(values).fold(initialValue, accumulator); - } - } - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const values = [1, 2, 3, 4, 5]; - yield expect(doFold()).resolves.toBe(1 + 2 + 3 + 4 + 5); - })); - }); - }); - }); - describe("tapCatch", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - let sawTapCatch = false; - yield expect(fun_promise_1.default.reject("BOOM!").tapCatch((e) => { - sawTapCatch = true; - expect(e).toBe("BOOM!"); - return "BANG!"; - })).rejects.toBe("BOOM!"); - expect(sawTapCatch).toBe(true); - })); - it("nests explosions", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - let sawCatch = false; - const err1 = new Error("BOOM!"); - const err2 = new Error("BANG!"); - yield expect(fun_promise_1.default.reject(err1) - .tapCatch((e) => { - throw err2; - }) - .catch((e) => { - sawCatch = true; - expect(e).toBeInstanceOf(ts_nested_error_1.NestedError); - expect(e).toHaveProperty("message", "Error thrown in 'tapCatch'"); - expect(e).toHaveProperty("innerErrors"); - expect(e.innerErrors).toHaveLength(2); - expect(e.innerErrors).toEqual([err1, err2]); - return "Hello!"; - })).resolves.toBe("Hello!"); - expect(sawCatch).toBe(true); - })); - }); - describe("tapEach", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const values = [ - 123, - Promise.resolve(true), - "Hello, Dolly!", - null, - undefined, - ]; - const funPromise = fun_promise_1.default.resolve(values); - let count = 0; - yield expect(funPromise.tapEach(() => { - count++; - })).resolves.toEqual(yield Promise.all(values)); - expect(count).toBe(values.length); - })); - }); - describe("wrapError", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const reason = "BOOM!"; - yield expect(fun_promise_1.default.reject(reason).wrapError("BANG!")).rejects.toHaveProperty("message", "BANG!"); - yield expect(fun_promise_1.default.reject(reason).wrapError("BANG!")).rejects.toHaveProperty("innerError"); - })); - }); - describe("wrapErrors", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const err1 = new Error("BOOM!"); - const err2 = new Error("BANG!"); - yield expect(fun_promise_1.default.resolve([Promise.reject(err1), Promise.reject(err2)]) - .wrapErrors("ERRORS!") - .catch((e) => { - expect(e).toBeInstanceOf(ts_nested_error_1.NestedError); - expect(e).toHaveProperty("message", "ERRORS!"); - expect(e.innerErrors).toHaveLength(2); - expect(e.innerErrors).toEqual([err1, err2]); - return true; - })).resolves.toBe(true); - })); - it("doesn't do anything if there is no error", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const values = [1, 2, 3, true, false, null, undefined]; - yield expect(fun_promise_1.default.resolve(values).wrapErrors("ERRORS!")).resolves.toEqual(values); - })); - }); - describe("cancellation", () => { - it("initially reports not cancelled", () => { - expect(fun_promise_1.default.resolve(true).isCancelled()).toBe(false); - }); - it("reports cancelled after cancel is called", () => { - expect(fun_promise_1.default.resolve(true).cancel().isCancelled()).toBe(true); - }); - it("prevents resolution after cancellation", () => { - let resolver; - let sawResolve = false; - const promise = new Promise((resolve) => { - resolver = resolve; - }).then(() => { - sawResolve = true; - }); - expect(resolver).not.toBeNil(); - const cancelled = new fun_promise_1.default(promise).cancel(); - resolver(true); - expect(sawResolve).toBe(false); - }); - it("prevents rejection after cancellation", () => { - let rejector; - let sawReject = false; - const promise = new Promise((resolve, reject) => { - rejector = reject; - }).catch(() => { - sawReject = true; - }); - expect(rejector).not.toBeNil(); - const cancelled = new fun_promise_1.default(promise).cancel(); - rejector("BOOM!"); - expect(sawReject).toBe(false); - }); - it("prevents rejection when resolving throws after cancellation", () => { - let resolver; - let sawThen = true; - let sawCatch = false; - let doCancel; - const promise = new Promise((resolve) => { - resolver = resolve; - }).then(() => { - sawThen = true; - doCancel(); - throw "BOOM!"; - }); - expect(resolver).not.toBeNil(); - const toCancel = new fun_promise_1.default(promise); - doCancel = () => { - toCancel.cancel(); - }; - toCancel.catch((e) => { - sawCatch = true; - }); - resolver(true); - expect(sawThen).toBe(true); - expect(sawCatch).toBe(false); - }); - }); - describe("simplifyAll", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(fun_promise_1.default.resolve("Hello").simplifyAll()).resolves.toEqual([ - "H", - "e", - "l", - "l", - "o", - ]); - })); - it("doesn't explode on an empty list", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(fun_promise_1.default.resolve([]).simplifyAll()).resolves.toEqual([]); - })); - }); - describe("settle", () => { - it("basically works for rejections", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(fun_promise_1.default.reject("BOOM!").settle()).resolves.toHaveProperty("reason", "BOOM!"); - })); - it("basically works for fulfillments", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(fun_promise_1.default.resolve(true).settle()).resolves.toHaveProperty("value", true); - })); - }); - describe("settleAll", () => { - lodash_1.default.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - function doSettleAll(values) { - if (staticVersion) { - return fun_promise_1.default.settleAll(values); - } - else { - return fun_promise_1.default.resolve(values).settleAll(); - } - } - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const values = [ - { in: Promise.resolve(true), out: new types_1.Fulfillment(true) }, - { in: Promise.reject("BOOM!"), out: new types_1.Rejection("BOOM!") }, - { in: Promise.reject(null), out: new types_1.Rejection(null) }, - { in: null, out: new types_1.Fulfillment(null) }, - ]; - yield expect(doSettleAll(lodash_1.default.map(values, "in"))).resolves.toEqual(lodash_1.default.map(values, "out")); - })); - it("doesn't explode on empty lists", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(doSettleAll([])).resolves.toEqual([]); - })); - }); - }); - }); -}); -//# sourceMappingURL=fun-promise.test.js.map \ No newline at end of file diff --git a/dist/es6/cjs/src/fun-promise.test.js.map b/dist/es6/cjs/src/fun-promise.test.js.map deleted file mode 100644 index 57c4acd..0000000 --- a/dist/es6/cjs/src/fun-promise.test.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fun-promise.test.js","sourceRoot":"","sources":["../../../../src/fun-promise.test.js"],"names":[],"mappings":"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","sourcesContent":["/** @format */\n\nimport FunPromise from \"./fun-promise\";\nimport _ from \"lodash\";\nimport { NestedError } from \"ts-nested-error\";\nimport { Fulfillment, Rejection } from \"./types\";\n\nconst tokenPromise = new Promise((resolve) => resolve(true));\nconst tokenFunPromise = new FunPromise(tokenPromise);\n\nfunction withRejection(rejectionReason, callback) {\n\tconst rejection = Promise.reject(rejectionReason);\n\ttry {\n\t\treturn callback(rejection);\n\t} finally {\n\t\trejection.catch(_.noop); // Disable uncaught exception issues\n\t}\n}\n\ndescribe(\"FunPromise\", () => {\n\tit(\"can be constructed and resolved\", async () => {\n\t\tawait expect(new FunPromise(tokenPromise)).resolves.toBe(true);\n\t});\n\n\tdescribe(\"resolve/return\", () => {\n\t\t_.forEach(\n\t\t\t{ static: FunPromise, instance: tokenFunPromise },\n\t\t\t(impl, implName) => {\n\t\t\t\t_.forEach([\"resolve\", \"return\"], (methodName) => {\n\t\t\t\t\tdescribe(methodName, () => {\n\t\t\t\t\t\tdescribe(implName, () => {\n\t\t\t\t\t\t\tfunction doResolve(value) {\n\t\t\t\t\t\t\t\treturn impl[methodName](value);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tit(\"rejects when provided a rejection\", async () => {\n\t\t\t\t\t\t\t\tawait expect(doResolve(Promise.reject(\"BOOM!\"))).rejects.toBe(\n\t\t\t\t\t\t\t\t\t\"BOOM!\"\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tit(\"does not resolve the elements of an array\", async () => {\n\t\t\t\t\t\t\t\texpect.hasAssertions();\n\t\t\t\t\t\t\t\tawait withRejection(\"BOOM!\", async (rejection) => {\n\t\t\t\t\t\t\t\t\tawait expect(doResolve([rejection])).resolves.toHaveLength(1);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tdescribe(\"resolves correctly\", () => {\n\t\t\t\t\t\t\t\tit(\"with a value\", async () => {\n\t\t\t\t\t\t\t\t\tawait expect(doResolve(tokenPromise)).resolves.toBe(true);\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tit(\"returns the FunPromise if passed a FunPromise\", () => {\n\t\t\t\t\t\t\t\t\texpect(doResolve(tokenFunPromise)).toEqual(tokenFunPromise);\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tit(\"without a value\", async () => {\n\t\t\t\t\t\t\t\t\tawait expect(doResolve()).resolves.toBeNil();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t});\n\n\tdescribe(\"then\", () => {\n\t\tit(\"works without onrejected\", async () => {\n\t\t\tawait expect(tokenFunPromise.then(_.identity)).resolves.toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"catch\", () => {\n\t\tit(\"handles rejections\", async () => {\n\t\t\tawait expect(\n\t\t\t\ttokenFunPromise\n\t\t\t\t\t.then(() => Promise.reject(\"BOOM!\"))\n\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\texpect(e).toBe(\"BOOM!\");\n\t\t\t\t\t\treturn \"DONE!\";\n\t\t\t\t\t})\n\t\t\t).resolves.toBe(\"DONE!\");\n\t\t});\n\n\t\tit(\"returns the error when not passed an argument\", async () => {\n\t\t\tconst error = new Error(\"BOOM!\");\n\t\t\tawait expect(\n\t\t\t\ttokenFunPromise.then(() => Promise.reject(error)).catch()\n\t\t\t).resolves.toBe(error);\n\t\t});\n\t});\n\n\tdescribe(\"arrayify\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst value = [1, 2, 3, 4];\n\t\t\tawait expect(FunPromise.resolve(value).arrayify()).resolves.toStrictEqual(\n\t\t\t\tvalue\n\t\t\t);\n\t\t});\n\n\t\tit(\"returns a clone\", async () => {\n\t\t\tconst value = [1, 2, 3, 4];\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve(value)\n\t\t\t\t\t.arrayify()\n\t\t\t\t\t.then((it) => {\n\t\t\t\t\t\tit.pop();\n\t\t\t\t\t\treturn it;\n\t\t\t\t\t})\n\t\t\t).resolves.not.toBe(value);\n\t\t\texpect(value).toHaveLength(4);\n\t\t});\n\n\t\tit(\"does not resolve values when called without an argument\", async () => {\n\t\t\tconst rejection = Promise.reject(\"BOOM!\");\n\t\t\ttry {\n\t\t\t\tawait expect(\n\t\t\t\t\tFunPromise.resolve([1, 2, rejection]).arrayify()\n\t\t\t\t).resolves.toBeArrayOfSize(3);\n\t\t\t} finally {\n\t\t\t\trejection.catch((e) => {}); // Disarm the rejection\n\t\t\t}\n\t\t});\n\n\t\tit(\"resolves values when called with the sole argument `true`\", async () => {\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve([\n\t\t\t\t\tPromise.resolve(1),\n\t\t\t\t\tFunPromise.resolve(2),\n\t\t\t\t]).arrayify(true)\n\t\t\t).resolves.toEqual([1, 2]);\n\t\t});\n\n\t\tit(\"rejects values when called with the sole argument `true` and a rejection in the mix\", async () => {\n\t\t\tconst rejection = Promise.reject(\"BOOM!\");\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve([1, 2, rejection]).arrayify(true)\n\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t});\n\n\t\tit(\"rejects values in order when called with the arguments `(true, true)`\", async () => {\n\t\t\tconst rejection1 = Promise.reject(\"BOOM!\");\n\t\t\tconst rejection2 = Promise.reject(\"BANG!\");\n\t\t\ttry {\n\t\t\t\tawait expect(\n\t\t\t\t\tFunPromise.resolve([1, 2, rejection1, rejection2]).arrayify(\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t)\n\t\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t\t} finally {\n\t\t\t\trejection1.catch((e) => {}); // Disarm the rejection\n\t\t\t\trejection2.catch((e) => {}); // Disarm the rejection\n\t\t\t}\n\t\t});\n\n\t\tit(\"resolves values in order when called with the arguments `(true, true)`\", async () => {\n\t\t\tlet sawFirst = false;\n\t\t\tlet sawSecond = false;\n\t\t\tlet sawThird = false;\n\t\t\tlet sawFourth = false;\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve([\n\t\t\t\t\tFunPromise.try(() => {\n\t\t\t\t\t\texpect(sawFirst).toBe(false);\n\t\t\t\t\t\texpect(sawSecond).toBe(false);\n\t\t\t\t\t\texpect(sawThird).toBe(false);\n\t\t\t\t\t\texpect(sawFourth).toBe(false);\n\t\t\t\t\t\tsawFirst = true;\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}),\n\t\t\t\t\tFunPromise.try(() => {\n\t\t\t\t\t\texpect(sawFirst).toBe(true);\n\t\t\t\t\t\texpect(sawSecond).toBe(false);\n\t\t\t\t\t\texpect(sawThird).toBe(false);\n\t\t\t\t\t\texpect(sawFourth).toBe(false);\n\t\t\t\t\t\tsawSecond = true;\n\t\t\t\t\t\treturn 2;\n\t\t\t\t\t}),\n\t\t\t\t\tFunPromise.try(() => {\n\t\t\t\t\t\texpect(sawFirst).toBe(true);\n\t\t\t\t\t\texpect(sawSecond).toBe(true);\n\t\t\t\t\t\texpect(sawThird).toBe(false);\n\t\t\t\t\t\texpect(sawFourth).toBe(false);\n\t\t\t\t\t\tsawThird = true;\n\t\t\t\t\t\treturn 3;\n\t\t\t\t\t}),\n\t\t\t\t\tFunPromise.try(() => {\n\t\t\t\t\t\texpect(sawFirst).toBe(true);\n\t\t\t\t\t\texpect(sawSecond).toBe(true);\n\t\t\t\t\t\texpect(sawThird).toBe(true);\n\t\t\t\t\t\texpect(sawFourth).toBe(false);\n\t\t\t\t\t\tsawFourth = true;\n\t\t\t\t\t\treturn 4;\n\t\t\t\t\t}),\n\t\t\t\t]).arrayify(true, true)\n\t\t\t).resolves.toStrictEqual([1, 2, 3, 4]);\n\t\t\texpect(sawFirst).toBe(true);\n\t\t\texpect(sawSecond).toBe(true);\n\t\t\texpect(sawThird).toBe(true);\n\t\t\texpect(sawFourth).toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"all\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tdescribe(\"basically works\", () => {\n\t\t\t\t\t_.times(10, (argCount) => {\n\t\t\t\t\t\tconst simpleArgs = _.times(argCount, (i) => 2 ** i);\n\n\t\t\t\t\t\tfunction runAll(args) {\n\t\t\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\t\t\treturn FunPromise.all(args);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn FunPromise.resolve(args).all();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tit(`for ${argCount} arguments`, async () => {\n\t\t\t\t\t\t\tawait expect(runAll(simpleArgs)).resolves.toStrictEqual(\n\t\t\t\t\t\t\t\tsimpleArgs\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"try\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tawait expect(FunPromise.try(() => true)).resolves.toBe(true);\n\t\t});\n\n\t\tit(\"works with one argument\", async () => {\n\t\t\tawait expect(FunPromise.try((i) => i, 42)).resolves.toBe(42);\n\t\t});\n\n\t\tit(\"explodes properly\", async () => {\n\t\t\tawait expect(FunPromise.try(() => Promise.reject(\"BOOM!\"))).rejects.toBe(\n\t\t\t\t\"BOOM!\"\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\"map\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tfunction runMap(args, mapper) {\n\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\treturn FunPromise.map(args, mapper);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FunPromise.resolve(args).map(mapper);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tit(\"basically works\", async () => {\n\t\t\t\t\tawait expect(\n\t\t\t\t\t\trunMap([\"Hello\", \"Goodbye\"], (it) => `${it}, World!`)\n\t\t\t\t\t).resolves.toStrictEqual([\"Hello, World!\", \"Goodbye, World!\"]);\n\t\t\t\t});\n\n\t\t\t\tit(\"works with some test values\", async () => {\n\t\t\t\t\tconst defaultValues = [1, 2, 4, 8, 16];\n\t\t\t\t\tconst defaultMapper = (it) => {\n\t\t\t\t\t\tif (Math.random() < 0.5) {\n\t\t\t\t\t\t\treturn Promise.resolve(it * 2);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn it * 2;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tawait expect(\n\t\t\t\t\t\trunMap(defaultValues, defaultMapper)\n\t\t\t\t\t).resolves.toStrictEqual([2, 4, 8, 16, 32]);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"Symbol.toStringTag\", () => {\n\t\tit(\"is the same as the promise passed in\", () => {\n\t\t\tconst promise = new Promise((resolve) => resolve());\n\t\t\tconst promiseTag = promise[Symbol.toStringTag];\n\t\t\texpect(promiseTag).not.toBeNil();\n\t\t\texpect(new FunPromise(promise)[Symbol.toStringTag]).toBe(promiseTag);\n\t\t});\n\t});\n\n\tdescribe(\"finally\", () => {\n\t\tit(\"returns the same promise when given no arguments\", () => {\n\t\t\texpect(tokenFunPromise.finally()).toBe(tokenFunPromise);\n\t\t});\n\n\t\tit(\"executes on resolution\", async () => {\n\t\t\tlet finallyExecuted = false;\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve(false).finally(() => {\n\t\t\t\t\tfinallyExecuted = true;\n\t\t\t\t})\n\t\t\t).resolves.toBe(false);\n\t\t\texpect(finallyExecuted).toBe(true);\n\t\t});\n\n\t\tit(\"executes on rejection\", async () => {\n\t\t\tlet finallyExecuted = false;\n\t\t\tawait expect(\n\t\t\t\tFunPromise.reject(\"BOOM!\").finally(() => {\n\t\t\t\t\tfinallyExecuted = true;\n\t\t\t\t})\n\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t\texpect(finallyExecuted).toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"reject\", () => {\n\t\t_.forEach(\n\t\t\t{ static: FunPromise, instance: tokenFunPromise },\n\t\t\t(impl, name) => {\n\t\t\t\tdescribe(name, () => {\n\t\t\t\t\tit(\"rejects correctly\", async () => {\n\t\t\t\t\t\tawait expect(impl.reject(true)).rejects.toBe(true);\n\t\t\t\t\t});\n\n\t\t\t\t\tit(\"doesn't change the object that is rejected\", async () => {\n\t\t\t\t\t\tconst reason = { foo: true, bar: 42 };\n\t\t\t\t\t\tawait expect(impl.reject(reason)).rejects.toBe(reason);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t});\n\n\tdescribe(\"coalesce\", () => {\n\t\tfunction runCoalesce(args, test) {\n\t\t\treturn FunPromise.coalesce(args, test);\n\t\t}\n\n\t\tit(\"basically works\", async () => {\n\t\t\tawait expect(\n\t\t\t\trunCoalesce([() => null, Promise.resolve(() => true)])\n\t\t\t).resolves.toBe(true);\n\t\t});\n\n\t\tit(\"returns the first resolving value\", async () => {\n\t\t\tawait expect(\n\t\t\t\trunCoalesce([() => FunPromise.delay(1000).resolve(true), () => false])\n\t\t\t).resolves.toBe(false);\n\t\t});\n\n\t\tit(\"returns the value that passes the test\", async () => {\n\t\t\tawait expect(\n\t\t\t\trunCoalesce([() => 2, () => 4], (it) => it > 2)\n\t\t\t).resolves.toBe(4);\n\t\t});\n\n\t\tit(\"throws the error if nothing passes the test\", async () => {\n\t\t\tawait expect(\n\t\t\t\trunCoalesce([() => Promise.reject(\"BOOM!\"), () => 4], (it) => it > 4)\n\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t});\n\n\t\tit(\"punts appropriately after the first resolution\", async () => {\n\t\t\tawait expect(runCoalesce(_.times(3, (idx) => () => idx))).resolves.toBe(\n\t\t\t\t0\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\"delay\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\t_.forEach([-1000, -1, 0, 1, 1000], (delayMs) => {\n\t\t\t\t\tdescribe(`When requesting a delay of ${delayMs} milliseconds`, () => {\n\t\t\t\t\t\tfunction runDelay(arg) {\n\t\t\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\t\t\treturn FunPromise.delay(delayMs, arg);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn FunPromise.resolve().delay(delayMs, arg);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdescribe(\"basically works\", () => {\n\t\t\t\t\t\t\tit(\"with no arg\", async () => {\n\t\t\t\t\t\t\t\tawait expect(runDelay()).resolves;\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tit(\"with one arg\", async () => {\n\t\t\t\t\t\t\t\tawait expect(runDelay(1000)).resolves.toBe(1000);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"simplify\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tawait expect(\n\t\t\t\tnew FunPromise(Promise.resolve(Promise.resolve(true))).simplify()\n\t\t\t).resolves.toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"filter\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tconst defaultValues = [\n\t\t\t\t\t1,\n\t\t\t\t\ttrue,\n\t\t\t\t\t{},\n\t\t\t\t\tnull,\n\t\t\t\t\tPromise.resolve(null),\n\t\t\t\t\tPromise.resolve(),\n\t\t\t\t\t\"Hello, Dolly!\",\n\t\t\t\t];\n\t\t\t\tconst defaultExpect = [1, true, {}, \"Hello, Dolly!\"];\n\t\t\t\tconst defaultTest = (it) => !_.isNil(it);\n\t\t\t\tfunction doFilter(values = defaultValues, test = defaultTest) {\n\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\treturn FunPromise.filter(values, test);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FunPromise.resolve(values).filter(test);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tit(\"basically works\", async () => {\n\t\t\t\t\tawait expect(doFilter()).resolves.not.toBeEmpty();\n\t\t\t\t\tawait expect(doFilter()).resolves.toBeArrayOfSize(4);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"flatMap\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tconst defaultValues = [\n\t\t\t\t\t1,\n\t\t\t\t\ttrue,\n\t\t\t\t\t{},\n\t\t\t\t\tnull,\n\t\t\t\t\tPromise.resolve(null),\n\t\t\t\t\tPromise.resolve(),\n\t\t\t\t\t\"Hello, Dolly!\",\n\t\t\t\t];\n\t\t\t\tconst defaultMapper = (it) => {\n\t\t\t\t\tif (_.isNil(it)) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn [it];\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst defaultExpect = [1, true, {}, \"Hello, Dolly!\"];\n\t\t\t\tfunction doFlatMap(values = defaultValues, mapper = defaultMapper) {\n\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\treturn FunPromise.flatMap(values, mapper);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FunPromise.resolve(values).flatMap(mapper);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tit(\"basically works\", async () => {\n\t\t\t\t\tawait expect(doFlatMap()).resolves.toStrictEqual(defaultExpect);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"tap\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tlet sawTap = false;\n\t\t\tawait expect(\n\t\t\t\ttokenFunPromise.tap((val) => {\n\t\t\t\t\texpect(val).toBe(true);\n\t\t\t\t\tsawTap = true;\n\t\t\t\t\treturn false;\n\t\t\t\t})\n\t\t\t).resolves.toBe(true);\n\t\t\texpect(sawTap).toBe(true);\n\t\t});\n\n\t\tit(\"rejects if it throws an exception\", async () => {\n\t\t\tlet sawTap = false;\n\t\t\tawait expect(\n\t\t\t\ttokenFunPromise.tap((val) => {\n\t\t\t\t\tsawTap = true;\n\t\t\t\t\tthrow \"BOOM!\";\n\t\t\t\t})\n\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t\texpect(sawTap).toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"fold\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tconst defaultValues = [1, 2, 3, 4, 5];\n\n\t\t\t\tfunction doFold(\n\t\t\t\t\tvalues = defaultValues,\n\t\t\t\t\tinitialValue = 0,\n\t\t\t\t\taccumulator = (a, b) => a + b\n\t\t\t\t) {\n\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\treturn FunPromise.fold(values, initialValue, accumulator);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FunPromise.resolve(values).fold(initialValue, accumulator);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tit(\"basically works\", async () => {\n\t\t\t\t\tconst values = [1, 2, 3, 4, 5];\n\t\t\t\t\tawait expect(doFold()).resolves.toBe(1 + 2 + 3 + 4 + 5);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"tapCatch\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tlet sawTapCatch = false;\n\t\t\tawait expect(\n\t\t\t\tFunPromise.reject(\"BOOM!\").tapCatch((e) => {\n\t\t\t\t\tsawTapCatch = true;\n\t\t\t\t\texpect(e).toBe(\"BOOM!\");\n\t\t\t\t\treturn \"BANG!\";\n\t\t\t\t})\n\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t\texpect(sawTapCatch).toBe(true);\n\t\t});\n\n\t\tit(\"nests explosions\", async () => {\n\t\t\tlet sawCatch = false;\n\t\t\tconst err1 = new Error(\"BOOM!\");\n\t\t\tconst err2 = new Error(\"BANG!\");\n\t\t\tawait expect(\n\t\t\t\tFunPromise.reject(err1)\n\t\t\t\t\t.tapCatch((e) => {\n\t\t\t\t\t\tthrow err2;\n\t\t\t\t\t})\n\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\tsawCatch = true;\n\t\t\t\t\t\texpect(e).toBeInstanceOf(NestedError);\n\t\t\t\t\t\texpect(e).toHaveProperty(\"message\", \"Error thrown in 'tapCatch'\");\n\t\t\t\t\t\texpect(e).toHaveProperty(\"innerErrors\");\n\t\t\t\t\t\texpect(e.innerErrors).toHaveLength(2);\n\t\t\t\t\t\texpect(e.innerErrors).toEqual([err1, err2]);\n\t\t\t\t\t\treturn \"Hello!\";\n\t\t\t\t\t})\n\t\t\t).resolves.toBe(\"Hello!\");\n\t\t\texpect(sawCatch).toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"tapEach\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst values = [\n\t\t\t\t123,\n\t\t\t\tPromise.resolve(true),\n\t\t\t\t\"Hello, Dolly!\",\n\t\t\t\tnull,\n\t\t\t\tundefined,\n\t\t\t];\n\t\t\tconst funPromise = FunPromise.resolve(values);\n\t\t\tlet count = 0;\n\t\t\tawait expect(\n\t\t\t\tfunPromise.tapEach(() => {\n\t\t\t\t\tcount++;\n\t\t\t\t})\n\t\t\t).resolves.toEqual(await Promise.all(values));\n\t\t\texpect(count).toBe(values.length);\n\t\t});\n\t});\n\n\tdescribe(\"wrapError\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst reason = \"BOOM!\";\n\t\t\tawait expect(\n\t\t\t\tFunPromise.reject(reason).wrapError(\"BANG!\")\n\t\t\t).rejects.toHaveProperty(\"message\", \"BANG!\");\n\t\t\tawait expect(\n\t\t\t\tFunPromise.reject(reason).wrapError(\"BANG!\")\n\t\t\t).rejects.toHaveProperty(\"innerError\");\n\t\t});\n\t});\n\n\tdescribe(\"wrapErrors\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst err1 = new Error(\"BOOM!\");\n\t\t\tconst err2 = new Error(\"BANG!\");\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve([Promise.reject(err1), Promise.reject(err2)])\n\t\t\t\t\t.wrapErrors(\"ERRORS!\")\n\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\texpect(e).toBeInstanceOf(NestedError);\n\t\t\t\t\t\texpect(e).toHaveProperty(\"message\", \"ERRORS!\");\n\t\t\t\t\t\texpect(e.innerErrors).toHaveLength(2);\n\t\t\t\t\t\texpect(e.innerErrors).toEqual([err1, err2]);\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t})\n\t\t\t).resolves.toBe(true);\n\t\t});\n\n\t\tit(\"doesn't do anything if there is no error\", async () => {\n\t\t\tconst values = [1, 2, 3, true, false, null, undefined];\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve(values).wrapErrors(\"ERRORS!\")\n\t\t\t).resolves.toEqual(values);\n\t\t});\n\t});\n\n\tdescribe(\"cancellation\", () => {\n\t\tit(\"initially reports not cancelled\", () => {\n\t\t\texpect(FunPromise.resolve(true).isCancelled()).toBe(false);\n\t\t});\n\n\t\tit(\"reports cancelled after cancel is called\", () => {\n\t\t\texpect(FunPromise.resolve(true).cancel().isCancelled()).toBe(true);\n\t\t});\n\n\t\tit(\"prevents resolution after cancellation\", () => {\n\t\t\tlet resolver;\n\t\t\tlet sawResolve = false;\n\t\t\tconst promise = new Promise((resolve) => {\n\t\t\t\tresolver = resolve;\n\t\t\t}).then(() => {\n\t\t\t\tsawResolve = true;\n\t\t\t});\n\t\t\texpect(resolver).not.toBeNil();\n\t\t\tconst cancelled = new FunPromise(promise).cancel();\n\t\t\tresolver(true);\n\t\t\texpect(sawResolve).toBe(false);\n\t\t});\n\n\t\tit(\"prevents rejection after cancellation\", () => {\n\t\t\tlet rejector;\n\t\t\tlet sawReject = false;\n\t\t\tconst promise = new Promise((resolve, reject) => {\n\t\t\t\trejector = reject;\n\t\t\t}).catch(() => {\n\t\t\t\tsawReject = true;\n\t\t\t});\n\t\t\texpect(rejector).not.toBeNil();\n\t\t\tconst cancelled = new FunPromise(promise).cancel();\n\t\t\trejector(\"BOOM!\");\n\t\t\texpect(sawReject).toBe(false);\n\t\t});\n\n\t\tit(\"prevents rejection when resolving throws after cancellation\", () => {\n\t\t\tlet resolver;\n\t\t\tlet sawThen = true;\n\t\t\tlet sawCatch = false;\n\t\t\tlet doCancel;\n\t\t\tconst promise = new Promise((resolve) => {\n\t\t\t\tresolver = resolve;\n\t\t\t}).then(() => {\n\t\t\t\tsawThen = true;\n\t\t\t\tdoCancel();\n\t\t\t\tthrow \"BOOM!\";\n\t\t\t});\n\t\t\texpect(resolver).not.toBeNil();\n\t\t\tconst toCancel = new FunPromise(promise);\n\t\t\tdoCancel = () => {\n\t\t\t\ttoCancel.cancel();\n\t\t\t};\n\t\t\ttoCancel.catch((e) => {\n\t\t\t\tsawCatch = true;\n\t\t\t});\n\t\t\tresolver(true);\n\t\t\texpect(sawThen).toBe(true);\n\t\t\texpect(sawCatch).toBe(false);\n\t\t});\n\t});\n\n\tdescribe(\"simplifyAll\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tawait expect(FunPromise.resolve(\"Hello\").simplifyAll()).resolves.toEqual([\n\t\t\t\t\"H\",\n\t\t\t\t\"e\",\n\t\t\t\t\"l\",\n\t\t\t\t\"l\",\n\t\t\t\t\"o\",\n\t\t\t]);\n\t\t});\n\n\t\tit(\"doesn't explode on an empty list\", async () => {\n\t\t\tawait expect(FunPromise.resolve([]).simplifyAll()).resolves.toEqual([]);\n\t\t});\n\t});\n\n\tdescribe(\"settle\", () => {\n\t\tit(\"basically works for rejections\", async () => {\n\t\t\tawait expect(FunPromise.reject(\"BOOM!\").settle()).resolves.toHaveProperty(\n\t\t\t\t\"reason\",\n\t\t\t\t\"BOOM!\"\n\t\t\t);\n\t\t});\n\n\t\tit(\"basically works for fulfillments\", async () => {\n\t\t\tawait expect(FunPromise.resolve(true).settle()).resolves.toHaveProperty(\n\t\t\t\t\"value\",\n\t\t\t\ttrue\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\"settleAll\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tfunction doSettleAll(values) {\n\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\treturn FunPromise.settleAll(values);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FunPromise.resolve(values).settleAll();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tit(\"basically works\", async () => {\n\t\t\t\t\tconst values = [\n\t\t\t\t\t\t{ in: Promise.resolve(true), out: new Fulfillment(true) },\n\t\t\t\t\t\t{ in: Promise.reject(\"BOOM!\"), out: new Rejection(\"BOOM!\") },\n\t\t\t\t\t\t{ in: Promise.reject(null), out: new Rejection(null) },\n\t\t\t\t\t\t{ in: null, out: new Fulfillment(null) },\n\t\t\t\t\t];\n\t\t\t\t\tawait expect(doSettleAll(_.map(values, \"in\"))).resolves.toEqual(\n\t\t\t\t\t\t_.map(values, \"out\")\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\tit(\"doesn't explode on empty lists\", async () => {\n\t\t\t\t\tawait expect(doSettleAll([])).resolves.toEqual([]);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n});\n"]} \ No newline at end of file diff --git a/dist/es6/cjs/src/types.test.d.ts b/dist/es6/cjs/src/types.test.d.ts deleted file mode 100644 index 961011c..0000000 --- a/dist/es6/cjs/src/types.test.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export {}; -//# sourceMappingURL=types.test.d.ts.map \ No newline at end of file diff --git a/dist/es6/cjs/src/types.test.d.ts.map b/dist/es6/cjs/src/types.test.d.ts.map deleted file mode 100644 index 87481cd..0000000 --- a/dist/es6/cjs/src/types.test.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.test.d.ts","sourceRoot":"","sources":["../../../../src/types.test.js"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/es6/cjs/src/types.test.js b/dist/es6/cjs/src/types.test.js deleted file mode 100644 index 56bd0a8..0000000 --- a/dist/es6/cjs/src/types.test.js +++ /dev/null @@ -1,32 +0,0 @@ -"use strict"; -/** @format */ -Object.defineProperty(exports, "__esModule", { value: true }); -const types_1 = require("./types"); -const lodash_1 = require("lodash"); -describe("Fulfillment", () => { - lodash_1.default.forEach([true, { foo: true }], (arg) => { - describe(`when passed the ${typeof arg} argument '${JSON.stringify(arg)}'`, () => { - const fulfillment = new types_1.Fulfillment(arg); - it("exposes the argument on the 'value' property", () => { - expect(fulfillment).toHaveProperty("value", arg); - }); - it("has a 'status' property of 'fulfilled'", () => { - expect(fulfillment).toHaveProperty("status", "fulfilled"); - }); - }); - }); -}); -describe("Rejection", () => { - lodash_1.default.forEach(["BOOM!", new Error("BOOM!")], (arg) => { - describe(`when passed the ${typeof arg} argument: '${arg}'`, () => { - const rejection = new types_1.Rejection(arg); - it("returns the argument in the 'reason' property", () => { - expect(rejection).toHaveProperty("reason", arg); - }); - it("has a 'status' property whose value is 'rejected'", () => { - expect(rejection).toHaveProperty("status", "rejected"); - }); - }); - }); -}); -//# sourceMappingURL=types.test.js.map \ No newline at end of file diff --git a/dist/es6/cjs/src/types.test.js.map b/dist/es6/cjs/src/types.test.js.map deleted file mode 100644 index cd456f4..0000000 --- a/dist/es6/cjs/src/types.test.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.test.js","sourceRoot":"","sources":["../../../../src/types.test.js"],"names":[],"mappings":";AAAA,cAAc;;AAEd,mCAAiD;AACjD,mCAAuB;AAEvB,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC5B,gBAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;QACxC,QAAQ,CAAC,mBAAmB,OAAO,GAAG,cAAc,IAAI,CAAC,SAAS,CACjE,GAAG,CACH,GAAG,EAAE,GAAG,EAAE;YACV,MAAM,WAAW,GAAG,IAAI,mBAAW,CAAC,GAAG,CAAC,CAAC;YAEzC,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;gBACvD,MAAM,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;gBACjD,MAAM,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IAC1B,gBAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;QAChD,QAAQ,CAAC,mBAAmB,OAAO,GAAG,eAAe,GAAG,GAAG,EAAE,GAAG,EAAE;YACjE,MAAM,SAAS,GAAG,IAAI,iBAAS,CAAC,GAAG,CAAC,CAAC;YAErC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;gBACxD,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;gBAC5D,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["/** @format */\n\nimport { Fulfillment, Rejection } from \"./types\";\nimport _ from \"lodash\";\n\ndescribe(\"Fulfillment\", () => {\n\t_.forEach([true, { foo: true }], (arg) => {\n\t\tdescribe(`when passed the ${typeof arg} argument '${JSON.stringify(\n\t\t\targ\n\t\t)}'`, () => {\n\t\t\tconst fulfillment = new Fulfillment(arg);\n\n\t\t\tit(\"exposes the argument on the 'value' property\", () => {\n\t\t\t\texpect(fulfillment).toHaveProperty(\"value\", arg);\n\t\t\t});\n\n\t\t\tit(\"has a 'status' property of 'fulfilled'\", () => {\n\t\t\t\texpect(fulfillment).toHaveProperty(\"status\", \"fulfilled\");\n\t\t\t});\n\t\t});\n\t});\n});\n\ndescribe(\"Rejection\", () => {\n\t_.forEach([\"BOOM!\", new Error(\"BOOM!\")], (arg) => {\n\t\tdescribe(`when passed the ${typeof arg} argument: '${arg}'`, () => {\n\t\t\tconst rejection = new Rejection(arg);\n\n\t\t\tit(\"returns the argument in the 'reason' property\", () => {\n\t\t\t\texpect(rejection).toHaveProperty(\"reason\", arg);\n\t\t\t});\n\n\t\t\tit(\"has a 'status' property whose value is 'rejected'\", () => {\n\t\t\t\texpect(rejection).toHaveProperty(\"status\", \"rejected\");\n\t\t\t});\n\t\t});\n\t});\n});\n"]} \ No newline at end of file diff --git a/dist/es6/esm/src/deferral.test.d.ts b/dist/es6/esm/src/deferral.test.d.ts deleted file mode 100644 index 4c655ce..0000000 --- a/dist/es6/esm/src/deferral.test.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export {}; -//# sourceMappingURL=deferral.test.d.ts.map \ No newline at end of file diff --git a/dist/es6/esm/src/deferral.test.d.ts.map b/dist/es6/esm/src/deferral.test.d.ts.map deleted file mode 100644 index 1e43120..0000000 --- a/dist/es6/esm/src/deferral.test.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"deferral.test.d.ts","sourceRoot":"","sources":["../../../../src/deferral.test.js"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/es6/esm/src/deferral.test.js b/dist/es6/esm/src/deferral.test.js deleted file mode 100644 index ca92d42..0000000 --- a/dist/es6/esm/src/deferral.test.js +++ /dev/null @@ -1,42 +0,0 @@ -/** @format */ -import { __awaiter } from "tslib"; -import FunPromise from "./fun-promise"; -import Deferral from "./deferral"; -import "./types"; -import "lodash"; -describe("Deferral", () => { - it("can be constructed", () => { - const deferral = new Deferral(); - expect(deferral).not.toBeNil(); - }); - describe("promise", () => { - it("is a FunPromise", () => { - const deferral = new Deferral(); - expect(deferral.promise).toBeInstanceOf(FunPromise); - }); - }); - describe("resolve", () => { - it("basically works", () => __awaiter(void 0, void 0, void 0, function* () { - const deferral = new Deferral(); - deferral.resolve(true); - yield expect(deferral.resolve(true)).resolves.toBe(true); - })); - it("does not change resolved value if called multiple times", () => __awaiter(void 0, void 0, void 0, function* () { - const deferral = new Deferral(); - yield expect(deferral.resolve(true)).resolves.toBe(true); - yield expect(deferral.resolve(false)).resolves.toBe(true); - })); - }); - describe("reject", () => { - it("basically works", () => __awaiter(void 0, void 0, void 0, function* () { - const deferral = new Deferral(); - yield expect(deferral.reject(new Error("BOOM!"))).rejects.toHaveProperty("message", "BOOM!"); - })); - it("does not change reason if called multiple times", () => __awaiter(void 0, void 0, void 0, function* () { - const deferral = new Deferral(); - yield expect(deferral.reject(new Error("BOOM!"))).rejects.toHaveProperty("message", "BOOM!"); - yield expect(deferral.reject(new Error("BANG!"))).rejects.toHaveProperty("message", "BOOM!"); - })); - }); -}); -//# sourceMappingURL=deferral.test.js.map \ No newline at end of file diff --git a/dist/es6/esm/src/deferral.test.js.map b/dist/es6/esm/src/deferral.test.js.map deleted file mode 100644 index f916d4d..0000000 --- a/dist/es6/esm/src/deferral.test.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"deferral.test.js","sourceRoot":"","sources":["../../../../src/deferral.test.js"],"names":[],"mappings":"AAAA,cAAc;;AAEd,OAAO,UAAU,MAAM,eAAe,CAAC;AACvC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAA6B,SAAS,CAAC;AACvC,OAAc,QAAQ,CAAC;AAEvB,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC7B,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;YAC1B,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;YAChC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;YAChC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;YAChC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvB,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAS,EAAE;YACxE,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;YAChC,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;YAChC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;YAChC,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CACvE,SAAS,EACT,OAAO,CACP,CAAC;QACH,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAS,EAAE;YAChE,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;YAChC,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CACvE,SAAS,EACT,OAAO,CACP,CAAC;YACF,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CACvE,SAAS,EACT,OAAO,CACP,CAAC;QACH,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["/** @format */\n\nimport FunPromise from \"./fun-promise\";\nimport Deferral from \"./deferral\";\nimport { PromiseState } from \"./types\";\nimport _ from \"lodash\";\n\ndescribe(\"Deferral\", () => {\n\tit(\"can be constructed\", () => {\n\t\tconst deferral = new Deferral();\n\t\texpect(deferral).not.toBeNil();\n\t});\n\n\tdescribe(\"promise\", () => {\n\t\tit(\"is a FunPromise\", () => {\n\t\t\tconst deferral = new Deferral();\n\t\t\texpect(deferral.promise).toBeInstanceOf(FunPromise);\n\t\t});\n\t});\n\n\tdescribe(\"resolve\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst deferral = new Deferral();\n\t\t\tdeferral.resolve(true);\n\t\t\tawait expect(deferral.resolve(true)).resolves.toBe(true);\n\t\t});\n\n\t\tit(\"does not change resolved value if called multiple times\", async () => {\n\t\t\tconst deferral = new Deferral();\n\t\t\tawait expect(deferral.resolve(true)).resolves.toBe(true);\n\t\t\tawait expect(deferral.resolve(false)).resolves.toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"reject\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst deferral = new Deferral();\n\t\t\tawait expect(deferral.reject(new Error(\"BOOM!\"))).rejects.toHaveProperty(\n\t\t\t\t\"message\",\n\t\t\t\t\"BOOM!\"\n\t\t\t);\n\t\t});\n\n\t\tit(\"does not change reason if called multiple times\", async () => {\n\t\t\tconst deferral = new Deferral();\n\t\t\tawait expect(deferral.reject(new Error(\"BOOM!\"))).rejects.toHaveProperty(\n\t\t\t\t\"message\",\n\t\t\t\t\"BOOM!\"\n\t\t\t);\n\t\t\tawait expect(deferral.reject(new Error(\"BANG!\"))).rejects.toHaveProperty(\n\t\t\t\t\"message\",\n\t\t\t\t\"BOOM!\"\n\t\t\t);\n\t\t});\n\t});\n});\n"]} \ No newline at end of file diff --git a/dist/es6/esm/src/fun-promise.d.ts b/dist/es6/esm/src/fun-promise.d.ts index 23424f3..fbe5861 100644 --- a/dist/es6/esm/src/fun-promise.d.ts +++ b/dist/es6/esm/src/fun-promise.d.ts @@ -26,7 +26,7 @@ export default class FunPromise implements Promise { /** * Constructor, which takes the promise to wrap. */ - constructor(wrapped: Promise); + constructor(wrapped: Promisable); /** * Takes a value (or a promise of a value) and returns a promise wrapping * it. @@ -298,6 +298,18 @@ export default class FunPromise implements Promise { * Equivalent to `FunPromise.resolve(values).fold(initialValue, accumulator)`. */ static fold(values: PromisableIterable, initialValue: T2, accumulator: (memo: T2, it: T) => Promisable): FunPromise; + /** + * Given an initial array of values and an accumulator function, apply the accumlator function to each element of the promise's resolved value, + * passing in the current array of values and the resolved item. Returns an array with the concatenated results of the accumulation. + * If any of the promise's values are rejected, the entire operation will be rejected. + * + * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve. + */ + flatFold>(initialValue: PromisableIterable, accumulator: (memo: T2[], it: Item) => PromisableIterable): FunPromise; + /** + * Equivalent to `FunPromise.resolve(values).flatFold(initialValue, accumulator)`. + */ + static flatFold(values: PromisableIterable, initialValue: PromisableIterable, accumulator: (memo: T2[], it: T) => PromisableIterable): FunPromise; /** * Handles rejections like 'catch', but wraps them in a [[`NestedError`]] with the given message. */ diff --git a/dist/es6/esm/src/fun-promise.d.ts.map b/dist/es6/esm/src/fun-promise.d.ts.map index d4b353b..9a8f3ba 100644 --- a/dist/es6/esm/src/fun-promise.d.ts.map +++ b/dist/es6/esm/src/fun-promise.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"fun-promise.d.ts","sourceRoot":"","sources":["../../../../src/fun-promise.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fun-promise.d.ts","sourceRoot":"","sources":["../../../../src/fun-promise.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/es6/esm/src/fun-promise.js b/dist/es6/esm/src/fun-promise.js index 4fa0242..5c493f5 100644 --- a/dist/es6/esm/src/fun-promise.js +++ b/dist/es6/esm/src/fun-promise.js @@ -25,7 +25,7 @@ import _isNil from "lodash/isNil"; import _map from "lodash/map"; import _negate from "lodash/negate"; import "lodash/noop"; -import "lodash/toArray"; +import _toArray from "lodash/toArray"; // import Debug from "debug"; // const debug = Debug("fun-promises"); /** @@ -184,9 +184,8 @@ export default class FunPromise { * as `true`. The items are not resolved sequentially unless you also pass a second argument as `true`. */ arrayify(resolveValues = false, sequentialResolution = false) { - const aryPromise = this.then((iter) => [ - ...iter, - ]); + const aryPromise = this.then((iterPromise) => __awaiter(this, void 0, void 0, function* () { return _toArray(yield iterPromise); }) // Just to be sure we're all de-promise'd + ); if (resolveValues) { if (sequentialResolution) { return aryPromise.then((ary) => __awaiter(this, void 0, void 0, function* () { @@ -403,6 +402,29 @@ export default class FunPromise { static fold(values, initialValue, accumulator) { return FunPromise.resolve(values).fold(initialValue, accumulator); } + /** + * Given an initial array of values and an accumulator function, apply the accumlator function to each element of the promise's resolved value, + * passing in the current array of values and the resolved item. Returns an array with the concatenated results of the accumulation. + * If any of the promise's values are rejected, the entire operation will be rejected. + * + * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve. + */ + flatFold(initialValue, accumulator) { + return this.arrayify().then((ary) => __awaiter(this, void 0, void 0, function* () { + let memoPromise = FunPromise.resolve(initialValue).arrayify(); + yield Promise.all(_map(ary, (promisableValue) => __awaiter(this, void 0, void 0, function* () { + const value = yield promisableValue; + memoPromise = memoPromise.then((memo) => __awaiter(this, void 0, void 0, function* () { return memo.concat(_toArray(yield accumulator(memo, value))); })); + }))); + return memoPromise; + })); + } + /** + * Equivalent to `FunPromise.resolve(values).flatFold(initialValue, accumulator)`. + */ + static flatFold(values, initialValue, accumulator) { + return FunPromise.resolve(values).flatFold(initialValue, accumulator); + } /** * Handles rejections like 'catch', but wraps them in a [[`NestedError`]] with the given message. */ diff --git a/dist/es6/esm/src/fun-promise.js.map b/dist/es6/esm/src/fun-promise.js.map index ce04870..59a607f 100644 --- a/dist/es6/esm/src/fun-promise.js.map +++ b/dist/es6/esm/src/fun-promise.js.map @@ -1 +1 @@ -{"version":3,"file":"fun-promise.js","sourceRoot":"","sources":["../../../../src/fun-promise.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @format\n */\n\n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n\nimport {\n\tPromisable,\n\tPromisableIterable,\n\tUnpromise,\n\tItem,\n\tSettlement,\n\tFulfillment,\n\tRejection,\n} from \"./types\";\nimport { NestedError } from \"ts-nested-error\";\n\nimport _defer from \"lodash/defer\";\nimport _delay from \"lodash/delay\";\nimport _filter from \"lodash/filter\";\nimport _flatten from \"lodash/flatten\";\nimport _identity from \"lodash/identity\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _isError from \"lodash/isError\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\nimport _map from \"lodash/map\";\nimport _negate from \"lodash/negate\";\nimport _noop from \"lodash/noop\";\nimport _toArray from \"lodash/toArray\";\n\n// import Debug from \"debug\";\n// const debug = Debug(\"fun-promises\");\n\n/**\n * The class that you should use instead of `Promise`. It implements the `Promise` API, so it should be a drop-in replacement.\n */\nexport default class FunPromise implements Promise {\n\t/**\n\t * Whether or not this FunPromise has been cancelled.\n\t */\n\tprivate _isCancelled: boolean = false;\n\n\t/**\n\t * The promise that was wrapped after attaching our custom logic.\n\t */\n\tprotected readonly wrapped: Promise;\n\n\t/**\n\t * Constructor, which takes the promise to wrap.\n\t */\n\tconstructor(wrapped: Promise) {\n\t\tthis.wrapped = new Promise(async (resolve, reject) => {\n\t\t\tlet resolved = null;\n\t\t\ttry {\n\t\t\t\tresolved = await wrapped;\n\t\t\t} catch (e) {\n\t\t\t\tif (this._isCancelled) return;\n\t\t\t\treject(e);\n\t\t\t}\n\t\t\tif (this._isCancelled) return;\n\t\t\tresolve(resolved);\n\t\t});\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise wrapping\n\t * it.\n\t */\n\tstatic resolve(value?: Promisable): FunPromise {\n\t\tif (value instanceof FunPromise) {\n\t\t\treturn value as FunPromise;\n\t\t} else if (value instanceof Promise) {\n\t\t\treturn new FunPromise(value);\n\t\t} else {\n\t\t\treturn new FunPromise(new Promise((resolve) => resolve(value)));\n\t\t}\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and resolves to the new value,\n\t * disregarding any previous resolution value.\n\t */\n\tresolve(value?: Promisable): FunPromise {\n\t\treturn new FunPromise(this.wrapped.then(() => value));\n\t}\n\n\t/**\n\t * An alias for `resolve` provided for consistency with the instance `return` method.\n\t *\n\t * @deprecated Use `resolve` instead.\n\t */\n\tstatic return(value?: Promisable): FunPromise {\n\t\treturn FunPromise.resolve(value);\n\t}\n\n\t/**\n\t * An alias for `resolve` provided for compatibility with [the Bluebird API|http://bluebirdjs.com/docs/api/return.html].\n\t *\n\t * @deprecated Use `resolve` instead.\n\t */\n\treturn(value?: Promisable): FunPromise {\n\t\treturn this.resolve(value);\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise rejecting\n\t * with that value, after unwrapping as many layers of `PromiseLike`\n\t * wrappers as necessary.\n\t */\n\tstatic reject(value?: unknown): FunPromise {\n\t\treturn new FunPromise(Promise.reject(value));\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise rejecting\n\t * with that value, after unwrapping as many layers of `PromiseLike`\n\t * wrappers as necessary. This disregards any existing status.\n\t */\n\treject(value?: unknown): FunPromise {\n\t\treturn FunPromise.reject(value);\n\t}\n\n\t/**\n\t * Attaches callbacks for the resolution and/or rejection of the Promise.\n\t * @param onfulfilled The optional callback to execute when the Promise is resolved.\n\t * @param onrejected The optional callback to execute when the Promise is rejected. If provided, the result of this callback is the new resolution value, and this promise is resolved, not rejected.\n\t * @returns A Promise for the completion of which ever callback is executed.\n\t */\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable\n\t): FunPromise;\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable,\n\t\tonrejected: (reason: unknown) => Promisable\n\t): FunPromise;\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable,\n\t\tonrejected?: (reason: unknown) => Promisable\n\t): FunPromise {\n\t\tif (_isNil(onrejected)) {\n\t\t\treturn new FunPromise(this.wrapped.then(onfulfilled));\n\t\t} else {\n\t\t\treturn new FunPromise(this.wrapped.then(onfulfilled, onrejected));\n\t\t}\n\t}\n\n\t/**\n\t * Attaches a callback for only the rejection of the Promise. If the callback throws, then throws a [[`NestedError`]] with\n\t * both the original rejection reason and the new thrown value.\n\t *\n\t * @param onrejected The callback to execute when the Promise is rejected.\n\t * @returns A Promise for the completion of the callback.\n\t */\n\tcatch(\n\t\tonrejected: (reason: unknown) => Promisable = _identity\n\t): FunPromise {\n\t\treturn new FunPromise(this.wrapped.catch(onrejected));\n\t}\n\n\t/**\n\t * Creates a Promise that is resolved with an array of results when all of the\n\t * provided Promises resolve, or rejected when any Promise is rejected.\n\t * @param values An array of Promises.\n\t * @returns A new Promise.\n\t */\n\tstatic all(values: PromisableIterable): FunPromise;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable, Promisable, Promisable]\n\t): FunPromise<[T1, T2, T3, T4]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable, Promisable]\n\t): FunPromise<[T1, T2, T3]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable]\n\t): FunPromise<[T1, T2]>;\n\tstatic all(values: [Promisable]): FunPromise<[T1]>;\n\tstatic all(...values: any[]): any {\n\t\treturn FunPromise.resolve(_flatten(values)).all();\n\t}\n\tall(): FunPromise[]> {\n\t\treturn this.arrayify(true);\n\t}\n\n\t/**\n\t * Given a function (or a promise of a function) that returns a value (or a promise of a value),\n\t * create a promise that executes the function and returns the value. If executing the function\n\t * throws an exception, then that exception becomes the rejection of the promise.\n\t *\n\t * Any arguments after the first will be passed into the function when it is invoked. If they are\n\t * a `PromiseLike`, then they will be resolved and the resolution value will be passed into the\n\t * function instead.\n\t *\n\t * This function is really useful in the following cases:\n\t * 1. to [avoid releasing Zalgo](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n\t * 2. when you want to create a `FunPromise` based on an `async` function\n\t * 3. when you want to create a `FunPromise` based on a normal function\n\t */\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6,\n\t\t\t\targ7: Arg7,\n\t\t\t\targ8: Arg8\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable,\n\t\targ7: Promisable,\n\t\targ8: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6,\n\t\t\t\targ7: Arg7\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable,\n\t\targ7: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(arg1: Arg1, arg2: Arg2, arg3: Arg3, arg4: Arg4) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1, arg2: Arg2, arg3: Arg3) => Promisable>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1, arg2: Arg2) => Promisable>,\n\t\targ1: Promisable,\n\t\targ2: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1) => Promisable>,\n\t\targ1: Promisable\n\t): FunPromise;\n\tstatic try(source: Promisable<() => Promisable>): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(...args: ArgT[]) => Promisable>,\n\t\t...args: ArgT[]\n\t): FunPromise {\n\t\treturn FunPromise.resolve(source).then((f) => {\n\t\t\tif (_isEmpty(args)) {\n\t\t\t\treturn f();\n\t\t\t} else {\n\t\t\t\treturn Promise.all(args).then((realArgs) => f(...realArgs));\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Unwraps layers of `PromiseLike` wrappers as necessary.\n\t *\n\t * This behavior is actually part of the Promise/A+ spec, but the type system struggles with that fact,\n\t * so this method is a workaround.\n\t *\n\t * In a future version of this library, `FunPromise` will extend `Promise>` instead of\n\t * just `Promise`, which will render this method irrelevant. Unfortunately, Typescript's type system\n\t * doesn't seem capable of handling that reality quite yet, so this is what we get.\n\t */\n\tsimplify(): FunPromise> {\n\t\treturn (this as unknown) as FunPromise>;\n\t}\n\n\t/**\n\t * For each element of the resolved iterable, unwraps layers of `PromiseLike` wrappers as necessary.\n\t */\n\tsimplifyAll(): FunPromise>[]> {\n\t\treturn this.arrayify().map((it) => FunPromise.resolve(it).simplify());\n\t}\n\n\t/**\n\t * Coerces the resolve value (which must be an `Iterable`) into an array. The `Iterable` requirement\n\t * comes from the `Item` return value: `Item` is equivalent to `never` if `T` is not an `Iterable`.\n\t *\n\t * Note that this function does *NOT* resolve the items within the array unless you pass the first argument\n\t * as `true`. The items are not resolved sequentially unless you also pass a second argument as `true`.\n\t */\n\tarrayify(\n\t\tresolveValues: boolean = false,\n\t\tsequentialResolution: boolean = false\n\t): FunPromise[]> {\n\t\tconst aryPromise: FunPromise[]> = this.then((iter) => [\n\t\t\t...((iter as unknown) as Iterable>),\n\t\t]);\n\t\tif (resolveValues) {\n\t\t\tif (sequentialResolution) {\n\t\t\t\treturn aryPromise.then(async (ary) => {\n\t\t\t\t\tconst results = [];\n\t\t\t\t\twhile (!_isEmpty(ary)) {\n\t\t\t\t\t\tresults.push(await ary.shift());\n\t\t\t\t\t}\n\t\t\t\t\treturn results;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn aryPromise.then((ary) => Promise.all(ary));\n\t\t\t}\n\t\t} else {\n\t\t\treturn aryPromise;\n\t\t}\n\t}\n\n\t/**\n\t * Given a mapping function, apply the mapping function to each element of the promise's resolved value,\n\t * and return an array with the results of the mapping. If any of the mapping results are rejected,\n\t * the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result correspond to the order of the elements in the promise's\n\t * resolved value. However, the resolution order is not guaranteed. For example, although the\n\t * output at index 0 will hold the mapping of the input element at index 0, it is not guaranteed that\n\t * the mapping of index 0 will be awaited before the mapping of index 1.\n\t */\n\tmap>(mapper: (it: Item) => Promisable): FunPromise {\n\t\tconst results = [];\n\t\treturn FunPromise.try(async () => {\n\t\t\tawait Promise.all(\n\t\t\t\t_map(await this.arrayify(), async (value, idx) => {\n\t\t\t\t\tresults[idx] = await mapper(await value);\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn results;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).map(mapper)`.\n\t */\n\tstatic map(\n\t\tvalues: PromisableIterable,\n\t\tmapper: (it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).map(mapper);\n\t}\n\n\t/**\n\t * Required to implement `Promise`, but you almost certainly don't care about it.\n\t *\n\t * All the same, it returns the string tag of the underlying promise.\n\t */\n\tget [Symbol.toStringTag]() {\n\t\treturn this.wrapped[Symbol.toStringTag];\n\t}\n\n\t/**\n\t * Executes the provided code whether the promise rejects or resolves.\n\t */\n\tfinally(): FunPromise;\n\tfinally(onfinally: () => void): FunPromise;\n\tfinally(onfinally?) {\n\t\tif (_isFunction(onfinally)) {\n\t\t\treturn new FunPromise(this.wrapped.finally(onfinally));\n\t\t} else {\n\t\t\treturn this;\n\t\t}\n\t}\n\n\t/**\n\t * Given a [[`PromisableIterable`]] whose values are nullary functions returning [[Promisable|`Promisable`]],\n\t * this executes all the functions simultaneously and returns the first whose return value passes the provided test.\n\t * The default test returns true if the value is not `null` or `undefined`.\n\t *\n\t * If no function resolves successfully, the last seen rejection is thrown. If some functions resolve but some reject,\n\t * and none of the resolved values pass the test, then the last seen rejection is thrown.\n\t *\n\t * If all the functions resolve but to a value but no value passes the test, then this rejects with an error saying as much.\n\t */\n\tstatic coalesce(\n\t\tfns: PromisableIterable<() => Promisable>,\n\t\ttest: (item: T) => Promisable = _negate(_isNil)\n\t): FunPromise {\n\t\tlet resolved = false;\n\t\tlet lastSeenReason: unknown = new Error(\"No values left after coalescing\");\n\t\tlet resolveValue;\n\t\treturn FunPromise.map(fns, (fn) =>\n\t\t\tFunPromise.try(fn)\n\t\t\t\t.then((result) => {\n\t\t\t\t\tif (resolved) return null;\n\t\t\t\t\treturn FunPromise.try(test, result).then((testResult) => {\n\t\t\t\t\t\tif (resolved) return null;\n\t\t\t\t\t\tif (testResult) {\n\t\t\t\t\t\t\tresolved = true;\n\t\t\t\t\t\t\tresolveValue = result;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch((e) => {\n\t\t\t\t\tlastSeenReason = e;\n\t\t\t\t})\n\t\t).then(() => {\n\t\t\tif (resolved) {\n\t\t\t\treturn resolveValue;\n\t\t\t} else {\n\t\t\t\tthrow lastSeenReason;\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Waits for `waitTimeMs` milliseconds before resolving. If `returnValue` is provided, resolves with the provided value.\n\t *\n\t * If `waitTimeMs` is less than or equal to zero, then it simply defers until the call stack is clear.\n\t */\n\tstatic delay(waitTimeMs: number): FunPromise;\n\tstatic delay(\n\t\twaitTimeMs: number,\n\t\treturnValue: Promisable\n\t): FunPromise;\n\tstatic delay(waitTimeMs, returnValue?) {\n\t\treturn FunPromise.resolve().delay(waitTimeMs, returnValue);\n\t}\n\n\t/**\n\t * Waits for `waitTimeMs` milliseconds before resolving. If `returnValue` is provided, resolves with the provided value.\n\t *\n\t * If `waitTimeMs` is less than or equal to zero, then it simply defers until the call stack is clear.\n\t */\n\tdelay(\n\t\twaitTimeMs: number,\n\t\treturnValue?: Promisable\n\t): FunPromise {\n\t\tif (waitTimeMs <= 0) {\n\t\t\treturn new FunPromise(\n\t\t\t\tnew Promise((resolve) => _defer(resolve, returnValue))\n\t\t\t);\n\t\t} else {\n\t\t\treturn new FunPromise(\n\t\t\t\tnew Promise((resolve) => _delay(resolve, waitTimeMs, returnValue))\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Given a filtering function, apply the filtering function to each element of the promise's resolved value,\n\t * and return an array with the values for which the filtering function returns `true`. If any of the filtering\n\t * results are rejected, the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result are stable with regard to the order of the elements in the promise's\n\t * resolved value. That is, if `X < Y` and `input[X]` and `input[Y]` are both in the input, and `input[X]` and\n\t * `input[Y]` both pass the filtering function, then the output index of `input[X]` will be less than the output\n\t * index of `input[Y]`. However, the resolution order is not guaranteed: that is, `input[Y]` may be resolved and\n\t * tested before `input[X]` even though `input[X]` has a lower output index than `input[Y]`.\n\t */\n\tfilter(test: (it: Item) => Promisable): FunPromise[]> {\n\t\treturn this.arrayify().then(async (ary) => {\n\t\t\tconst results = await FunPromise.map(ary, async (it) => test(await it));\n\t\t\t// @ts-ignore\n\t\t\treturn _filter(ary, (it, idx) => results[idx]);\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(items).filter(test)`.\n\t */\n\tstatic filter(\n\t\titems: PromisableIterable,\n\t\ttest: (it: Item>) => Promisable\n\t): FunPromise>[]> {\n\t\treturn FunPromise.resolve(items).filter(test);\n\t}\n\n\t/**\n\t * Given a mapping function, apply the mapping function to each element of the promise's resolved value,\n\t * and return an array with the concatenated results of the mapping. If any of the mapping results are\n\t * rejected, the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result correspond to the order of the elements in the promise's\n\t * resolved value. However, the resolution order is not guaranteed.\n\t */\n\tflatMap>(\n\t\tmapper: (it: Item) => Promisable\n\t): FunPromise {\n\t\treturn this.arrayify().then(async (ary: Promisable>[]) => {\n\t\t\tconst promises: Array>> = _map(ary, async (value) =>\n\t\t\t\tmapper(await value)\n\t\t\t);\n\t\t\tconst resolved: T2[][] = await Promise.all(promises);\n\t\t\tconst flattened: T2[] = _flatten(resolved);\n\t\t\treturn flattened;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).flatMap(mapper)`.\n\t */\n\tstatic flatMap(\n\t\tvalues: PromisableIterable,\n\t\tmapper: (it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).flatMap(mapper);\n\t}\n\n\t/**\n\t * Access the resolved value without changing it. Note that if the callback rejects (ie: throws),\n\t * then the resulting promise will be rejected.\n\t */\n\ttap(callback: (val: T) => Promisable): FunPromise {\n\t\treturn this.then(async (val) => {\n\t\t\tawait callback(val);\n\t\t\treturn val;\n\t\t});\n\t}\n\n\t/**\n\t * Access the rejection reason without changing it. Note that if the callback itself rejects (ie: throws),\n\t * both rejection reasons will be capture in a single [[`NestedError`]].\n\t */\n\ttapCatch(callback: (reason: unknown) => Promisable): FunPromise {\n\t\treturn this.catch(async (err) => {\n\t\t\ttry {\n\t\t\t\tawait callback(err);\n\t\t\t} catch (err2) {\n\t\t\t\tthrow new NestedError(\"Error thrown in 'tapCatch'\", err, err2);\n\t\t\t}\n\t\t\tthrow err;\n\t\t});\n\t}\n\n\t/**\n\t * Access each of the resolved values of a resolved iterable without changing it. Note that if the callback rejects (ie: throws),\n\t * then the resulting promise will be rejected.\n\t */\n\ttapEach(callback: (val: Item) => Promisable): FunPromise[]> {\n\t\treturn this.arrayify(true).tap(async (ary) => {\n\t\t\tawait Promise.all(_map(ary, callback));\n\t\t});\n\t}\n\n\t/**\n\t * Given an initial value and an accumulator function, apply the accumlator function to each element of the promise's resolved value,\n\t * passing in the current value and the result. Returns an array with the result of the accumulation. If any of the promise's values are\n\t * rejected, the entire operation will be rejected.\n\t *\n\t * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve.\n\t */\n\tfold>(\n\t\tinitialValue: T2,\n\t\taccumulator: (memo: T2, it: Item) => Promisable\n\t): FunPromise {\n\t\treturn this.arrayify().then(async (ary: Promisable>[]) => {\n\t\t\tlet memoPromise = FunPromise.resolve(initialValue);\n\t\t\tawait Promise.all(\n\t\t\t\t_map(ary, async (promisableValue) => {\n\t\t\t\t\tconst value = await promisableValue;\n\t\t\t\t\tmemoPromise = memoPromise.then((memo) => accumulator(memo, value));\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn await memoPromise;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).fold(initialValue, accumulator)`.\n\t */\n\tstatic fold(\n\t\tvalues: PromisableIterable,\n\t\tinitialValue: T2,\n\t\taccumulator: (memo: T2, it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).fold(initialValue, accumulator);\n\t}\n\n\t/**\n\t * Handles rejections like 'catch', but wraps them in a [[`NestedError`]] with the given message.\n\t */\n\twrapError(msg: string): FunPromise {\n\t\treturn this.catch(NestedError.rethrow(msg));\n\t}\n\n\t/**\n\t * Resolves all the elements of the resolved value, which is assumed to be an `Iterable`. If any\n\t * of the values reject, all the reasons are collected and wrapped in a [[`NestedError`]].\n\t */\n\twrapErrors(msg: string): FunPromise[]> {\n\t\treturn this.arrayify().then(async (ary) => {\n\t\t\tlet errors = [];\n\t\t\tawait Promise.all(\n\t\t\t\t_map(ary, (val) => Promise.resolve(val).catch((e) => errors.push(e)))\n\t\t\t);\n\t\t\tif (_isEmpty(errors)) {\n\t\t\t\treturn ary;\n\t\t\t} else {\n\t\t\t\tthrow new NestedError(msg, ...errors);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Cancel the FunPromise. A cancelled FunPromise will silently disregard any resolution or rejection which occurs after the cancellation.\n\t */\n\tcancel() {\n\t\tthis._isCancelled = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns whether or not the promise has been cancelled. See `cancel()` for more details.\n\t */\n\tisCancelled() {\n\t\treturn this._isCancelled;\n\t}\n\n\t/**\n\t * Captures either fulfillment or rejection and resolves an object that describes the result.\n\t */\n\tsettle(): FunPromise> {\n\t\treturn new FunPromise(\n\t\t\tthis.wrapped.then(\n\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Assuming that the resolved value is an iterable, then for each element of the\n\t * array, captures either the fulfillment or rejection of that element.\n\t */\n\tsettleAll(): FunPromise>[]> {\n\t\treturn new FunPromise(\n\t\t\tthis.arrayify().wrapped.then((ary) =>\n\t\t\t\tPromise.all(\n\t\t\t\t\t_map(ary, (val) =>\n\t\t\t\t\t\tPromise.resolve(val).then(\n\t\t\t\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(iterable).settleAll()`.\n\t */\n\tstatic settleAll(\n\t\titerable: PromisableIterable\n\t): FunPromise[]> {\n\t\treturn new FunPromise(\n\t\t\tPromise.resolve(iterable).then((ary) =>\n\t\t\t\tPromise.all(\n\t\t\t\t\t_map(ary, (val) =>\n\t\t\t\t\t\tPromise.resolve(val).then(\n\t\t\t\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t}\n}\n"]} \ No newline at end of file +{"version":3,"file":"fun-promise.js","sourceRoot":"","sources":["../../../../src/fun-promise.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,2BAA2B;AAC3B,uCAAuC;AACvC,sCAAsC;AACtC,+CAA+C;AAC/C,6CAA6C;AAC7C,4CAA4C;AAC5C,sCAAsC;AACtC,sCAAsC;AACtC,sCAAsC;AAEtC,OAAO,EAMN,WAAW,EACX,SAAS,GACT,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,OAAO,MAAM,eAAe,CAAC;AACpC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,SAAS,MAAM,iBAAiB,CAAC;AACxC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAqB,gBAAgB,CAAC;AACtC,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAC5C,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,IAAI,MAAM,YAAY,CAAC;AAC9B,OAAO,OAAO,MAAM,eAAe,CAAC;AACpC,OAAkB,aAAa,CAAC;AAChC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,6BAA6B;AAC7B,uCAAuC;AAEvC;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,UAAU;IAW9B;;OAEG;IACH,YAAY,OAAsB;QAblC;;WAEG;QACH;;;;mBAAgC,KAAK;WAAC;QAEtC;;WAEG;QACH;;;;;WAAuC;QAMtC,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;YACpD,IAAI,QAAQ,GAAG,IAAI,CAAC;YACpB,IAAI;gBACH,QAAQ,GAAG,MAAM,OAAO,CAAC;aACzB;YAAC,OAAO,CAAC,EAAE;gBACX,IAAI,IAAI,CAAC,YAAY;oBAAE,OAAO;gBAC9B,MAAM,CAAC,CAAC,CAAC,CAAC;aACV;YACD,IAAI,IAAI,CAAC,YAAY;gBAAE,OAAO;YAC9B,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnB,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAW,KAAqB;QAC7C,IAAI,KAAK,YAAY,UAAU,EAAE;YAChC,OAAO,KAAsB,CAAC;SAC9B;aAAM,IAAI,KAAK,YAAY,OAAO,EAAE;YACpC,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;SAC7B;aAAM;YACN,OAAO,IAAI,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAChE;IACF,CAAC;IAED;;;OAGG;IACH,OAAO,CAAY,KAAsB;QACxC,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAW,KAAqB;QAC5C,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAY,KAAsB;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,KAAe;QAC5B,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAe;QACrB,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAeD,IAAI,CACH,WAA+C,EAC/C,UAAsD;QAEtD,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE;YACvB,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;SACtD;aAAM;YACN,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;SAClE;IACF,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CACJ,aAAuD,SAAS;QAEhE,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IACvD,CAAC;IAwFD,MAAM,CAAC,GAAG,CAAC,GAAG,MAAa;QAC1B,OAAO,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACnD,CAAC;IACD,GAAG;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAqHD,MAAM,CAAC,GAAG,CACT,MAAsD,EACtD,GAAG,IAAY;QAEf,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YAC5C,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACnB,OAAO,CAAC,EAAE,CAAC;aACX;iBAAM;gBACN,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;aAC5D;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,QAAQ;QACP,OAAQ,IAA4C,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvE,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CACP,gBAAyB,KAAK,EAC9B,uBAAgC,KAAK;QAErC,MAAM,UAAU,GAAI,IAAI,CAAC,IAAI,CAC5B,CAAO,WAAW,EAAE,EAAE,gDAAC,OAAA,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAA,GAAA,CAAC,yCAAyC;SACvD,CAAC;QACvC,IAAI,aAAa,EAAE;YAClB,IAAI,oBAAoB,EAAE;gBACzB,OAAO,UAAU,CAAC,IAAI,CAAC,CAAO,GAAG,EAAE,EAAE;oBACpC,MAAM,OAAO,GAAG,EAAE,CAAC;oBACnB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;wBACtB,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;qBAChC;oBACD,OAAO,OAAO,CAAC;gBAChB,CAAC,CAAA,CAAC,CAAC;aACH;iBAAM;gBACN,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;aAClD;SACD;aAAM;YACN,OAAO,UAAU,CAAC;SAClB;IACF,CAAC;IAED;;;;;;;;;OASG;IACH,GAAG,CAAe,MAAuC;QACxD,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,OAAO,UAAU,CAAC,GAAG,CAAC,GAAS,EAAE;YAChC,MAAM,OAAO,CAAC,GAAG,CAChB,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAO,KAAK,EAAE,GAAG,EAAE,EAAE;gBAChD,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;YAC1C,CAAC,CAAA,CAAC,CACF,CAAC;YACF,OAAO,OAAO,CAAC;QAChB,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAG,CACT,MAA6B,EAC7B,MAAiC;QAEjC,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAOD,OAAO,CAAC,SAAU;QACjB,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE;YAC3B,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;SACvD;aAAM;YACN,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,QAAQ,CACd,GAA4C,EAC5C,OAAyC,OAAO,CAAC,MAAM,CAAC;QAExD,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,cAAc,GAAY,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC3E,IAAI,YAAY,CAAC;QACjB,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CACjC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;aAChB,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAChB,IAAI,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAC1B,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;gBACvD,IAAI,QAAQ;oBAAE,OAAO,IAAI,CAAC;gBAC1B,IAAI,UAAU,EAAE;oBACf,QAAQ,GAAG,IAAI,CAAC;oBAChB,YAAY,GAAG,MAAM,CAAC;iBACtB;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACZ,cAAc,GAAG,CAAC,CAAC;QACpB,CAAC,CAAC,CACH,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,IAAI,QAAQ,EAAE;gBACb,OAAO,YAAY,CAAC;aACpB;iBAAM;gBACN,MAAM,cAAc,CAAC;aACrB;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAYD,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,WAAY;QACpC,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC;IAED;;;;OAIG;IACH,KAAK,CACJ,UAAkB,EAClB,WAA2B;QAE3B,IAAI,UAAU,IAAI,CAAC,EAAE;YACpB,OAAO,IAAI,UAAU,CACpB,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CACtD,CAAC;SACF;aAAM;YACN,OAAO,IAAI,UAAU,CACpB,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAClE,CAAC;SACF;IACF,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,IAA0C;QAChD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAO,GAAG,EAAE,EAAE;YACzC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAO,EAAE,EAAE,EAAE,gDAAC,OAAA,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA,GAAA,CAAC,CAAC;YACxE,aAAa;YACb,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CACZ,KAA4B,EAC5B,IAA8D;QAE9D,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;OAOG;IACH,OAAO,CACN,MAAyC;QAEzC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAO,GAA0B,EAAE,EAAE;YAChE,MAAM,QAAQ,GAA8B,IAAI,CAAC,GAAG,EAAE,CAAO,KAAK,EAAE,EAAE,gDACrE,OAAA,MAAM,CAAC,MAAM,KAAK,CAAC,CAAA,GAAA,CACnB,CAAC;YACF,MAAM,QAAQ,GAAW,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,SAAS,GAAS,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC3C,OAAO,SAAS,CAAC;QAClB,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO,CACb,MAA6B,EAC7B,MAAmC;QAEnC,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,QAAsC;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAO,GAAG,EAAE,EAAE;YAC9B,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;YACpB,OAAO,GAAG,CAAC;QACZ,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,QAA+C;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAO,GAAG,EAAE,EAAE;YAC/B,IAAI;gBACH,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;aACpB;YAAC,OAAO,IAAI,EAAE;gBACd,MAAM,IAAI,WAAW,CAAC,4BAA4B,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;aAC/D;YACD,MAAM,GAAG,CAAC;QACX,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,QAA4C;QACnD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAO,GAAG,EAAE,EAAE;YAC5C,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;QACxC,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,IAAI,CACH,YAAgB,EAChB,WAAsD;QAEtD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAO,GAA0B,EAAE,EAAE;YAChE,IAAI,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACnD,MAAM,OAAO,CAAC,GAAG,CAChB,IAAI,CAAC,GAAG,EAAE,CAAO,eAAe,EAAE,EAAE;gBACnC,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC;gBACpC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACpE,CAAC,CAAA,CAAC,CACF,CAAC;YACF,OAAO,MAAM,WAAW,CAAC;QAC1B,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,CACV,MAA6B,EAC7B,YAAgB,EAChB,WAAgD;QAEhD,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACnE,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CACP,YAAoC,EACpC,WAAgE;QAEhE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAO,GAA0B,EAAE,EAAE;YAChE,IAAI,WAAW,GAAqB,UAAU,CAAC,OAAO,CACrD,YAAY,CACZ,CAAC,QAAQ,EAAsB,CAAC;YACjC,MAAM,OAAO,CAAC,GAAG,CAChB,IAAI,CAAC,GAAG,EAAE,CAAO,eAAe,EAAE,EAAE;gBACnC,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC;gBACpC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAO,IAAI,EAAE,EAAE,gDAC7C,OAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA,GAAA,CACrD,CAAC;YACH,CAAC,CAAA,CAAC,CACF,CAAC;YACF,OAAO,WAAW,CAAC;QACpB,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CACd,MAA6B,EAC7B,YAAoC,EACpC,WAA0D;QAE1D,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,GAAW;QACrB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAO,GAAG,EAAE,EAAE;YACzC,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,MAAM,OAAO,CAAC,GAAG,CAChB,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CACrE,CAAC;YACF,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACrB,OAAO,GAAG,CAAC;aACX;iBAAM;gBACN,MAAM,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC;aACtC;QACF,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM;QACL,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;OAEG;IACH,WAAW;QACV,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,MAAM;QACL,OAAO,IAAI,UAAU,CACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAChB,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,EACjC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CACjC,CACD,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,SAAS;QACR,OAAO,IAAI,UAAU,CACpB,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACpC,OAAO,CAAC,GAAG,CACV,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CACjB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CACxB,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,EACjC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CACjC,CACD,CACD,CACD,CACD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CACf,QAA+B;QAE/B,OAAO,IAAI,UAAU,CACpB,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACtC,OAAO,CAAC,GAAG,CACV,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CACjB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CACxB,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,EACjC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CACjC,CACD,CACD,CACD,CACD,CAAC;IACH,CAAC;CACD","sourcesContent":["/**\n * @format\n */\n\n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n\nimport {\n\tPromisable,\n\tPromisableIterable,\n\tUnpromise,\n\tItem,\n\tSettlement,\n\tFulfillment,\n\tRejection,\n} from \"./types\";\nimport { NestedError } from \"ts-nested-error\";\n\nimport _defer from \"lodash/defer\";\nimport _delay from \"lodash/delay\";\nimport _filter from \"lodash/filter\";\nimport _flatten from \"lodash/flatten\";\nimport _identity from \"lodash/identity\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _isError from \"lodash/isError\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\nimport _map from \"lodash/map\";\nimport _negate from \"lodash/negate\";\nimport _noop from \"lodash/noop\";\nimport _toArray from \"lodash/toArray\";\n\n// import Debug from \"debug\";\n// const debug = Debug(\"fun-promises\");\n\n/**\n * The class that you should use instead of `Promise`. It implements the `Promise` API, so it should be a drop-in replacement.\n */\nexport default class FunPromise implements Promise {\n\t/**\n\t * Whether or not this FunPromise has been cancelled.\n\t */\n\tprivate _isCancelled: boolean = false;\n\n\t/**\n\t * The promise that was wrapped after attaching our custom logic.\n\t */\n\tprotected readonly wrapped: Promise;\n\n\t/**\n\t * Constructor, which takes the promise to wrap.\n\t */\n\tconstructor(wrapped: Promisable) {\n\t\tthis.wrapped = new Promise(async (resolve, reject) => {\n\t\t\tlet resolved = null;\n\t\t\ttry {\n\t\t\t\tresolved = await wrapped;\n\t\t\t} catch (e) {\n\t\t\t\tif (this._isCancelled) return;\n\t\t\t\treject(e);\n\t\t\t}\n\t\t\tif (this._isCancelled) return;\n\t\t\tresolve(resolved);\n\t\t});\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise wrapping\n\t * it.\n\t */\n\tstatic resolve(value?: Promisable): FunPromise {\n\t\tif (value instanceof FunPromise) {\n\t\t\treturn value as FunPromise;\n\t\t} else if (value instanceof Promise) {\n\t\t\treturn new FunPromise(value);\n\t\t} else {\n\t\t\treturn new FunPromise(new Promise((resolve) => resolve(value)));\n\t\t}\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and resolves to the new value,\n\t * disregarding any previous resolution value.\n\t */\n\tresolve(value?: Promisable): FunPromise {\n\t\treturn new FunPromise(this.wrapped.then(() => value));\n\t}\n\n\t/**\n\t * An alias for `resolve` provided for consistency with the instance `return` method.\n\t *\n\t * @deprecated Use `resolve` instead.\n\t */\n\tstatic return(value?: Promisable): FunPromise {\n\t\treturn FunPromise.resolve(value);\n\t}\n\n\t/**\n\t * An alias for `resolve` provided for compatibility with [the Bluebird API|http://bluebirdjs.com/docs/api/return.html].\n\t *\n\t * @deprecated Use `resolve` instead.\n\t */\n\treturn(value?: Promisable): FunPromise {\n\t\treturn this.resolve(value);\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise rejecting\n\t * with that value, after unwrapping as many layers of `PromiseLike`\n\t * wrappers as necessary.\n\t */\n\tstatic reject(value?: unknown): FunPromise {\n\t\treturn new FunPromise(Promise.reject(value));\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise rejecting\n\t * with that value, after unwrapping as many layers of `PromiseLike`\n\t * wrappers as necessary. This disregards any existing status.\n\t */\n\treject(value?: unknown): FunPromise {\n\t\treturn FunPromise.reject(value);\n\t}\n\n\t/**\n\t * Attaches callbacks for the resolution and/or rejection of the Promise.\n\t * @param onfulfilled The optional callback to execute when the Promise is resolved.\n\t * @param onrejected The optional callback to execute when the Promise is rejected. If provided, the result of this callback is the new resolution value, and this promise is resolved, not rejected.\n\t * @returns A Promise for the completion of which ever callback is executed.\n\t */\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable\n\t): FunPromise;\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable,\n\t\tonrejected: (reason: unknown) => Promisable\n\t): FunPromise;\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable,\n\t\tonrejected?: (reason: unknown) => Promisable\n\t): FunPromise {\n\t\tif (_isNil(onrejected)) {\n\t\t\treturn new FunPromise(this.wrapped.then(onfulfilled));\n\t\t} else {\n\t\t\treturn new FunPromise(this.wrapped.then(onfulfilled, onrejected));\n\t\t}\n\t}\n\n\t/**\n\t * Attaches a callback for only the rejection of the Promise. If the callback throws, then throws a [[`NestedError`]] with\n\t * both the original rejection reason and the new thrown value.\n\t *\n\t * @param onrejected The callback to execute when the Promise is rejected.\n\t * @returns A Promise for the completion of the callback.\n\t */\n\tcatch(\n\t\tonrejected: (reason: unknown) => Promisable = _identity\n\t): FunPromise {\n\t\treturn new FunPromise(this.wrapped.catch(onrejected));\n\t}\n\n\t/**\n\t * Creates a Promise that is resolved with an array of results when all of the\n\t * provided Promises resolve, or rejected when any Promise is rejected.\n\t * @param values An array of Promises.\n\t * @returns A new Promise.\n\t */\n\tstatic all(values: PromisableIterable): FunPromise;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable, Promisable, Promisable]\n\t): FunPromise<[T1, T2, T3, T4]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable, Promisable]\n\t): FunPromise<[T1, T2, T3]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable]\n\t): FunPromise<[T1, T2]>;\n\tstatic all(values: [Promisable]): FunPromise<[T1]>;\n\tstatic all(...values: any[]): any {\n\t\treturn FunPromise.resolve(_flatten(values)).all();\n\t}\n\tall(): FunPromise[]> {\n\t\treturn this.arrayify(true);\n\t}\n\n\t/**\n\t * Given a function (or a promise of a function) that returns a value (or a promise of a value),\n\t * create a promise that executes the function and returns the value. If executing the function\n\t * throws an exception, then that exception becomes the rejection of the promise.\n\t *\n\t * Any arguments after the first will be passed into the function when it is invoked. If they are\n\t * a `PromiseLike`, then they will be resolved and the resolution value will be passed into the\n\t * function instead.\n\t *\n\t * This function is really useful in the following cases:\n\t * 1. to [avoid releasing Zalgo](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n\t * 2. when you want to create a `FunPromise` based on an `async` function\n\t * 3. when you want to create a `FunPromise` based on a normal function\n\t */\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6,\n\t\t\t\targ7: Arg7,\n\t\t\t\targ8: Arg8\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable,\n\t\targ7: Promisable,\n\t\targ8: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6,\n\t\t\t\targ7: Arg7\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable,\n\t\targ7: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(arg1: Arg1, arg2: Arg2, arg3: Arg3, arg4: Arg4) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1, arg2: Arg2, arg3: Arg3) => Promisable>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1, arg2: Arg2) => Promisable>,\n\t\targ1: Promisable,\n\t\targ2: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1) => Promisable>,\n\t\targ1: Promisable\n\t): FunPromise;\n\tstatic try(source: Promisable<() => Promisable>): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(...args: ArgT[]) => Promisable>,\n\t\t...args: ArgT[]\n\t): FunPromise {\n\t\treturn FunPromise.resolve(source).then((f) => {\n\t\t\tif (_isEmpty(args)) {\n\t\t\t\treturn f();\n\t\t\t} else {\n\t\t\t\treturn Promise.all(args).then((realArgs) => f(...realArgs));\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Unwraps layers of `PromiseLike` wrappers as necessary.\n\t *\n\t * This behavior is actually part of the Promise/A+ spec, but the type system struggles with that fact,\n\t * so this method is a workaround.\n\t *\n\t * In a future version of this library, `FunPromise` will extend `Promise>` instead of\n\t * just `Promise`, which will render this method irrelevant. Unfortunately, Typescript's type system\n\t * doesn't seem capable of handling that reality quite yet, so this is what we get.\n\t */\n\tsimplify(): FunPromise> {\n\t\treturn (this as unknown) as FunPromise>;\n\t}\n\n\t/**\n\t * For each element of the resolved iterable, unwraps layers of `PromiseLike` wrappers as necessary.\n\t */\n\tsimplifyAll(): FunPromise>[]> {\n\t\treturn this.arrayify().map((it) => FunPromise.resolve(it).simplify());\n\t}\n\n\t/**\n\t * Coerces the resolve value (which must be an `Iterable`) into an array. The `Iterable` requirement\n\t * comes from the `Item` return value: `Item` is equivalent to `never` if `T` is not an `Iterable`.\n\t *\n\t * Note that this function does *NOT* resolve the items within the array unless you pass the first argument\n\t * as `true`. The items are not resolved sequentially unless you also pass a second argument as `true`.\n\t */\n\tarrayify(\n\t\tresolveValues: boolean = false,\n\t\tsequentialResolution: boolean = false\n\t): FunPromise[]> {\n\t\tconst aryPromise = (this.then(\n\t\t\tasync (iterPromise) => _toArray(await iterPromise) // Just to be sure we're all de-promise'd\n\t\t) as unknown) as FunPromise[]>;\n\t\tif (resolveValues) {\n\t\t\tif (sequentialResolution) {\n\t\t\t\treturn aryPromise.then(async (ary) => {\n\t\t\t\t\tconst results = [];\n\t\t\t\t\twhile (!_isEmpty(ary)) {\n\t\t\t\t\t\tresults.push(await ary.shift());\n\t\t\t\t\t}\n\t\t\t\t\treturn results;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn aryPromise.then((ary) => Promise.all(ary));\n\t\t\t}\n\t\t} else {\n\t\t\treturn aryPromise;\n\t\t}\n\t}\n\n\t/**\n\t * Given a mapping function, apply the mapping function to each element of the promise's resolved value,\n\t * and return an array with the results of the mapping. If any of the mapping results are rejected,\n\t * the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result correspond to the order of the elements in the promise's\n\t * resolved value. However, the resolution order is not guaranteed. For example, although the\n\t * output at index 0 will hold the mapping of the input element at index 0, it is not guaranteed that\n\t * the mapping of index 0 will be awaited before the mapping of index 1.\n\t */\n\tmap>(mapper: (it: Item) => Promisable): FunPromise {\n\t\tconst results = [];\n\t\treturn FunPromise.try(async () => {\n\t\t\tawait Promise.all(\n\t\t\t\t_map(await this.arrayify(), async (value, idx) => {\n\t\t\t\t\tresults[idx] = await mapper(await value);\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn results;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).map(mapper)`.\n\t */\n\tstatic map(\n\t\tvalues: PromisableIterable,\n\t\tmapper: (it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).map(mapper);\n\t}\n\n\t/**\n\t * Required to implement `Promise`, but you almost certainly don't care about it.\n\t *\n\t * All the same, it returns the string tag of the underlying promise.\n\t */\n\tget [Symbol.toStringTag]() {\n\t\treturn this.wrapped[Symbol.toStringTag];\n\t}\n\n\t/**\n\t * Executes the provided code whether the promise rejects or resolves.\n\t */\n\tfinally(): FunPromise;\n\tfinally(onfinally: () => void): FunPromise;\n\tfinally(onfinally?) {\n\t\tif (_isFunction(onfinally)) {\n\t\t\treturn new FunPromise(this.wrapped.finally(onfinally));\n\t\t} else {\n\t\t\treturn this;\n\t\t}\n\t}\n\n\t/**\n\t * Given a [[`PromisableIterable`]] whose values are nullary functions returning [[Promisable|`Promisable`]],\n\t * this executes all the functions simultaneously and returns the first whose return value passes the provided test.\n\t * The default test returns true if the value is not `null` or `undefined`.\n\t *\n\t * If no function resolves successfully, the last seen rejection is thrown. If some functions resolve but some reject,\n\t * and none of the resolved values pass the test, then the last seen rejection is thrown.\n\t *\n\t * If all the functions resolve but to a value but no value passes the test, then this rejects with an error saying as much.\n\t */\n\tstatic coalesce(\n\t\tfns: PromisableIterable<() => Promisable>,\n\t\ttest: (item: T) => Promisable = _negate(_isNil)\n\t): FunPromise {\n\t\tlet resolved = false;\n\t\tlet lastSeenReason: unknown = new Error(\"No values left after coalescing\");\n\t\tlet resolveValue;\n\t\treturn FunPromise.map(fns, (fn) =>\n\t\t\tFunPromise.try(fn)\n\t\t\t\t.then((result) => {\n\t\t\t\t\tif (resolved) return null;\n\t\t\t\t\treturn FunPromise.try(test, result).then((testResult) => {\n\t\t\t\t\t\tif (resolved) return null;\n\t\t\t\t\t\tif (testResult) {\n\t\t\t\t\t\t\tresolved = true;\n\t\t\t\t\t\t\tresolveValue = result;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch((e) => {\n\t\t\t\t\tlastSeenReason = e;\n\t\t\t\t})\n\t\t).then(() => {\n\t\t\tif (resolved) {\n\t\t\t\treturn resolveValue;\n\t\t\t} else {\n\t\t\t\tthrow lastSeenReason;\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Waits for `waitTimeMs` milliseconds before resolving. If `returnValue` is provided, resolves with the provided value.\n\t *\n\t * If `waitTimeMs` is less than or equal to zero, then it simply defers until the call stack is clear.\n\t */\n\tstatic delay(waitTimeMs: number): FunPromise;\n\tstatic delay(\n\t\twaitTimeMs: number,\n\t\treturnValue: Promisable\n\t): FunPromise;\n\tstatic delay(waitTimeMs, returnValue?) {\n\t\treturn FunPromise.resolve().delay(waitTimeMs, returnValue);\n\t}\n\n\t/**\n\t * Waits for `waitTimeMs` milliseconds before resolving. If `returnValue` is provided, resolves with the provided value.\n\t *\n\t * If `waitTimeMs` is less than or equal to zero, then it simply defers until the call stack is clear.\n\t */\n\tdelay(\n\t\twaitTimeMs: number,\n\t\treturnValue?: Promisable\n\t): FunPromise {\n\t\tif (waitTimeMs <= 0) {\n\t\t\treturn new FunPromise(\n\t\t\t\tnew Promise((resolve) => _defer(resolve, returnValue))\n\t\t\t);\n\t\t} else {\n\t\t\treturn new FunPromise(\n\t\t\t\tnew Promise((resolve) => _delay(resolve, waitTimeMs, returnValue))\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Given a filtering function, apply the filtering function to each element of the promise's resolved value,\n\t * and return an array with the values for which the filtering function returns `true`. If any of the filtering\n\t * results are rejected, the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result are stable with regard to the order of the elements in the promise's\n\t * resolved value. That is, if `X < Y` and `input[X]` and `input[Y]` are both in the input, and `input[X]` and\n\t * `input[Y]` both pass the filtering function, then the output index of `input[X]` will be less than the output\n\t * index of `input[Y]`. However, the resolution order is not guaranteed: that is, `input[Y]` may be resolved and\n\t * tested before `input[X]` even though `input[X]` has a lower output index than `input[Y]`.\n\t */\n\tfilter(test: (it: Item) => Promisable): FunPromise[]> {\n\t\treturn this.arrayify().then(async (ary) => {\n\t\t\tconst results = await FunPromise.map(ary, async (it) => test(await it));\n\t\t\t// @ts-ignore\n\t\t\treturn _filter(ary, (it, idx) => results[idx]);\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(items).filter(test)`.\n\t */\n\tstatic filter(\n\t\titems: PromisableIterable,\n\t\ttest: (it: Item>) => Promisable\n\t): FunPromise>[]> {\n\t\treturn FunPromise.resolve(items).filter(test);\n\t}\n\n\t/**\n\t * Given a mapping function, apply the mapping function to each element of the promise's resolved value,\n\t * and return an array with the concatenated results of the mapping. If any of the mapping results are\n\t * rejected, the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result correspond to the order of the elements in the promise's\n\t * resolved value. However, the resolution order is not guaranteed.\n\t */\n\tflatMap>(\n\t\tmapper: (it: Item) => Promisable\n\t): FunPromise {\n\t\treturn this.arrayify().then(async (ary: Promisable>[]) => {\n\t\t\tconst promises: Array>> = _map(ary, async (value) =>\n\t\t\t\tmapper(await value)\n\t\t\t);\n\t\t\tconst resolved: T2[][] = await Promise.all(promises);\n\t\t\tconst flattened: T2[] = _flatten(resolved);\n\t\t\treturn flattened;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).flatMap(mapper)`.\n\t */\n\tstatic flatMap(\n\t\tvalues: PromisableIterable,\n\t\tmapper: (it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).flatMap(mapper);\n\t}\n\n\t/**\n\t * Access the resolved value without changing it. Note that if the callback rejects (ie: throws),\n\t * then the resulting promise will be rejected.\n\t */\n\ttap(callback: (val: T) => Promisable): FunPromise {\n\t\treturn this.then(async (val) => {\n\t\t\tawait callback(val);\n\t\t\treturn val;\n\t\t});\n\t}\n\n\t/**\n\t * Access the rejection reason without changing it. Note that if the callback itself rejects (ie: throws),\n\t * both rejection reasons will be capture in a single [[`NestedError`]].\n\t */\n\ttapCatch(callback: (reason: unknown) => Promisable): FunPromise {\n\t\treturn this.catch(async (err) => {\n\t\t\ttry {\n\t\t\t\tawait callback(err);\n\t\t\t} catch (err2) {\n\t\t\t\tthrow new NestedError(\"Error thrown in 'tapCatch'\", err, err2);\n\t\t\t}\n\t\t\tthrow err;\n\t\t});\n\t}\n\n\t/**\n\t * Access each of the resolved values of a resolved iterable without changing it. Note that if the callback rejects (ie: throws),\n\t * then the resulting promise will be rejected.\n\t */\n\ttapEach(callback: (val: Item) => Promisable): FunPromise[]> {\n\t\treturn this.arrayify(true).tap(async (ary) => {\n\t\t\tawait Promise.all(_map(ary, callback));\n\t\t});\n\t}\n\n\t/**\n\t * Given an initial value and an accumulator function, apply the accumlator function to each element of the promise's resolved value,\n\t * passing in the current value and the result. Returns an array with the result of the accumulation. If any of the promise's values are\n\t * rejected, the entire operation will be rejected.\n\t *\n\t * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve.\n\t */\n\tfold>(\n\t\tinitialValue: T2,\n\t\taccumulator: (memo: T2, it: Item) => Promisable\n\t): FunPromise {\n\t\treturn this.arrayify().then(async (ary: Promisable>[]) => {\n\t\t\tlet memoPromise = FunPromise.resolve(initialValue);\n\t\t\tawait Promise.all(\n\t\t\t\t_map(ary, async (promisableValue) => {\n\t\t\t\t\tconst value = await promisableValue;\n\t\t\t\t\tmemoPromise = memoPromise.then((memo) => accumulator(memo, value));\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn await memoPromise;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).fold(initialValue, accumulator)`.\n\t */\n\tstatic fold(\n\t\tvalues: PromisableIterable,\n\t\tinitialValue: T2,\n\t\taccumulator: (memo: T2, it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).fold(initialValue, accumulator);\n\t}\n\n\t/**\n\t * Given an initial array of values and an accumulator function, apply the accumlator function to each element of the promise's resolved value,\n\t * passing in the current array of values and the resolved item. Returns an array with the concatenated results of the accumulation.\n\t * If any of the promise's values are rejected, the entire operation will be rejected.\n\t *\n\t * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve.\n\t */\n\tflatFold>(\n\t\tinitialValue: PromisableIterable,\n\t\taccumulator: (memo: T2[], it: Item) => PromisableIterable\n\t): FunPromise {\n\t\treturn this.arrayify().then(async (ary: Promisable>[]) => {\n\t\t\tlet memoPromise: FunPromise = FunPromise.resolve(\n\t\t\t\tinitialValue\n\t\t\t).arrayify() as FunPromise;\n\t\t\tawait Promise.all(\n\t\t\t\t_map(ary, async (promisableValue) => {\n\t\t\t\t\tconst value = await promisableValue;\n\t\t\t\t\tmemoPromise = memoPromise.then(async (memo) =>\n\t\t\t\t\t\tmemo.concat(_toArray(await accumulator(memo, value)))\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn memoPromise;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).flatFold(initialValue, accumulator)`.\n\t */\n\tstatic flatFold(\n\t\tvalues: PromisableIterable,\n\t\tinitialValue: PromisableIterable,\n\t\taccumulator: (memo: T2[], it: T) => PromisableIterable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).flatFold(initialValue, accumulator);\n\t}\n\n\t/**\n\t * Handles rejections like 'catch', but wraps them in a [[`NestedError`]] with the given message.\n\t */\n\twrapError(msg: string): FunPromise {\n\t\treturn this.catch(NestedError.rethrow(msg));\n\t}\n\n\t/**\n\t * Resolves all the elements of the resolved value, which is assumed to be an `Iterable`. If any\n\t * of the values reject, all the reasons are collected and wrapped in a [[`NestedError`]].\n\t */\n\twrapErrors(msg: string): FunPromise[]> {\n\t\treturn this.arrayify().then(async (ary) => {\n\t\t\tlet errors = [];\n\t\t\tawait Promise.all(\n\t\t\t\t_map(ary, (val) => Promise.resolve(val).catch((e) => errors.push(e)))\n\t\t\t);\n\t\t\tif (_isEmpty(errors)) {\n\t\t\t\treturn ary;\n\t\t\t} else {\n\t\t\t\tthrow new NestedError(msg, ...errors);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Cancel the FunPromise. A cancelled FunPromise will silently disregard any resolution or rejection which occurs after the cancellation.\n\t */\n\tcancel() {\n\t\tthis._isCancelled = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns whether or not the promise has been cancelled. See `cancel()` for more details.\n\t */\n\tisCancelled() {\n\t\treturn this._isCancelled;\n\t}\n\n\t/**\n\t * Captures either fulfillment or rejection and resolves an object that describes the result.\n\t */\n\tsettle(): FunPromise> {\n\t\treturn new FunPromise(\n\t\t\tthis.wrapped.then(\n\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Assuming that the resolved value is an iterable, then for each element of the\n\t * array, captures either the fulfillment or rejection of that element.\n\t */\n\tsettleAll(): FunPromise>[]> {\n\t\treturn new FunPromise(\n\t\t\tthis.arrayify().wrapped.then((ary) =>\n\t\t\t\tPromise.all(\n\t\t\t\t\t_map(ary, (val) =>\n\t\t\t\t\t\tPromise.resolve(val).then(\n\t\t\t\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(iterable).settleAll()`.\n\t */\n\tstatic settleAll(\n\t\titerable: PromisableIterable\n\t): FunPromise[]> {\n\t\treturn new FunPromise(\n\t\t\tPromise.resolve(iterable).then((ary) =>\n\t\t\t\tPromise.all(\n\t\t\t\t\t_map(ary, (val) =>\n\t\t\t\t\t\tPromise.resolve(val).then(\n\t\t\t\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t}\n}\n"]} \ No newline at end of file diff --git a/dist/es6/esm/src/fun-promise.test.d.ts b/dist/es6/esm/src/fun-promise.test.d.ts deleted file mode 100644 index 597914a..0000000 --- a/dist/es6/esm/src/fun-promise.test.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export {}; -//# sourceMappingURL=fun-promise.test.d.ts.map \ No newline at end of file diff --git a/dist/es6/esm/src/fun-promise.test.d.ts.map b/dist/es6/esm/src/fun-promise.test.d.ts.map deleted file mode 100644 index e2ecf9b..0000000 --- a/dist/es6/esm/src/fun-promise.test.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fun-promise.test.d.ts","sourceRoot":"","sources":["../../../../src/fun-promise.test.js"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/es6/esm/src/fun-promise.test.js b/dist/es6/esm/src/fun-promise.test.js deleted file mode 100644 index d2bc230..0000000 --- a/dist/es6/esm/src/fun-promise.test.js +++ /dev/null @@ -1,599 +0,0 @@ -/** @format */ -import { __awaiter } from "tslib"; -import FunPromise from "./fun-promise"; -import _ from "lodash"; -import { NestedError } from "ts-nested-error"; -import { Fulfillment, Rejection } from "./types"; -const tokenPromise = new Promise((resolve) => resolve(true)); -const tokenFunPromise = new FunPromise(tokenPromise); -function withRejection(rejectionReason, callback) { - const rejection = Promise.reject(rejectionReason); - try { - return callback(rejection); - } - finally { - rejection.catch(_.noop); // Disable uncaught exception issues - } -} -describe("FunPromise", () => { - it("can be constructed and resolved", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(new FunPromise(tokenPromise)).resolves.toBe(true); - })); - describe("resolve/return", () => { - _.forEach({ static: FunPromise, instance: tokenFunPromise }, (impl, implName) => { - _.forEach(["resolve", "return"], (methodName) => { - describe(methodName, () => { - describe(implName, () => { - function doResolve(value) { - return impl[methodName](value); - } - it("rejects when provided a rejection", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(doResolve(Promise.reject("BOOM!"))).rejects.toBe("BOOM!"); - })); - it("does not resolve the elements of an array", () => __awaiter(void 0, void 0, void 0, function* () { - expect.hasAssertions(); - yield withRejection("BOOM!", (rejection) => __awaiter(void 0, void 0, void 0, function* () { - yield expect(doResolve([rejection])).resolves.toHaveLength(1); - })); - })); - describe("resolves correctly", () => { - it("with a value", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(doResolve(tokenPromise)).resolves.toBe(true); - })); - it("returns the FunPromise if passed a FunPromise", () => { - expect(doResolve(tokenFunPromise)).toEqual(tokenFunPromise); - }); - it("without a value", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(doResolve()).resolves.toBeNil(); - })); - }); - }); - }); - }); - }); - }); - describe("then", () => { - it("works without onrejected", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(tokenFunPromise.then(_.identity)).resolves.toBe(true); - })); - }); - describe("catch", () => { - it("handles rejections", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(tokenFunPromise - .then(() => Promise.reject("BOOM!")) - .catch((e) => { - expect(e).toBe("BOOM!"); - return "DONE!"; - })).resolves.toBe("DONE!"); - })); - it("returns the error when not passed an argument", () => __awaiter(void 0, void 0, void 0, function* () { - const error = new Error("BOOM!"); - yield expect(tokenFunPromise.then(() => Promise.reject(error)).catch()).resolves.toBe(error); - })); - }); - describe("arrayify", () => { - it("basically works", () => __awaiter(void 0, void 0, void 0, function* () { - const value = [1, 2, 3, 4]; - yield expect(FunPromise.resolve(value).arrayify()).resolves.toStrictEqual(value); - })); - it("returns a clone", () => __awaiter(void 0, void 0, void 0, function* () { - const value = [1, 2, 3, 4]; - yield expect(FunPromise.resolve(value) - .arrayify() - .then((it) => { - it.pop(); - return it; - })).resolves.not.toBe(value); - expect(value).toHaveLength(4); - })); - it("does not resolve values when called without an argument", () => __awaiter(void 0, void 0, void 0, function* () { - const rejection = Promise.reject("BOOM!"); - try { - yield expect(FunPromise.resolve([1, 2, rejection]).arrayify()).resolves.toBeArrayOfSize(3); - } - finally { - rejection.catch((e) => { }); // Disarm the rejection - } - })); - it("resolves values when called with the sole argument `true`", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(FunPromise.resolve([ - Promise.resolve(1), - FunPromise.resolve(2), - ]).arrayify(true)).resolves.toEqual([1, 2]); - })); - it("rejects values when called with the sole argument `true` and a rejection in the mix", () => __awaiter(void 0, void 0, void 0, function* () { - const rejection = Promise.reject("BOOM!"); - yield expect(FunPromise.resolve([1, 2, rejection]).arrayify(true)).rejects.toBe("BOOM!"); - })); - it("rejects values in order when called with the arguments `(true, true)`", () => __awaiter(void 0, void 0, void 0, function* () { - const rejection1 = Promise.reject("BOOM!"); - const rejection2 = Promise.reject("BANG!"); - try { - yield expect(FunPromise.resolve([1, 2, rejection1, rejection2]).arrayify(true, true)).rejects.toBe("BOOM!"); - } - finally { - rejection1.catch((e) => { }); // Disarm the rejection - rejection2.catch((e) => { }); // Disarm the rejection - } - })); - it("resolves values in order when called with the arguments `(true, true)`", () => __awaiter(void 0, void 0, void 0, function* () { - let sawFirst = false; - let sawSecond = false; - let sawThird = false; - let sawFourth = false; - yield expect(FunPromise.resolve([ - FunPromise.try(() => { - expect(sawFirst).toBe(false); - expect(sawSecond).toBe(false); - expect(sawThird).toBe(false); - expect(sawFourth).toBe(false); - sawFirst = true; - return 1; - }), - FunPromise.try(() => { - expect(sawFirst).toBe(true); - expect(sawSecond).toBe(false); - expect(sawThird).toBe(false); - expect(sawFourth).toBe(false); - sawSecond = true; - return 2; - }), - FunPromise.try(() => { - expect(sawFirst).toBe(true); - expect(sawSecond).toBe(true); - expect(sawThird).toBe(false); - expect(sawFourth).toBe(false); - sawThird = true; - return 3; - }), - FunPromise.try(() => { - expect(sawFirst).toBe(true); - expect(sawSecond).toBe(true); - expect(sawThird).toBe(true); - expect(sawFourth).toBe(false); - sawFourth = true; - return 4; - }), - ]).arrayify(true, true)).resolves.toStrictEqual([1, 2, 3, 4]); - expect(sawFirst).toBe(true); - expect(sawSecond).toBe(true); - expect(sawThird).toBe(true); - expect(sawFourth).toBe(true); - })); - }); - describe("all", () => { - _.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - describe("basically works", () => { - _.times(10, (argCount) => { - const simpleArgs = _.times(argCount, (i) => Math.pow(2, i)); - function runAll(args) { - if (staticVersion) { - return FunPromise.all(args); - } - else { - return FunPromise.resolve(args).all(); - } - } - it(`for ${argCount} arguments`, () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(runAll(simpleArgs)).resolves.toStrictEqual(simpleArgs); - })); - }); - }); - }); - }); - }); - describe("try", () => { - it("basically works", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(FunPromise.try(() => true)).resolves.toBe(true); - })); - it("works with one argument", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(FunPromise.try((i) => i, 42)).resolves.toBe(42); - })); - it("explodes properly", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(FunPromise.try(() => Promise.reject("BOOM!"))).rejects.toBe("BOOM!"); - })); - }); - describe("map", () => { - _.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - function runMap(args, mapper) { - if (staticVersion) { - return FunPromise.map(args, mapper); - } - else { - return FunPromise.resolve(args).map(mapper); - } - } - it("basically works", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(runMap(["Hello", "Goodbye"], (it) => `${it}, World!`)).resolves.toStrictEqual(["Hello, World!", "Goodbye, World!"]); - })); - it("works with some test values", () => __awaiter(void 0, void 0, void 0, function* () { - const defaultValues = [1, 2, 4, 8, 16]; - const defaultMapper = (it) => { - if (Math.random() < 0.5) { - return Promise.resolve(it * 2); - } - else { - return it * 2; - } - }; - yield expect(runMap(defaultValues, defaultMapper)).resolves.toStrictEqual([2, 4, 8, 16, 32]); - })); - }); - }); - }); - describe("Symbol.toStringTag", () => { - it("is the same as the promise passed in", () => { - const promise = new Promise((resolve) => resolve()); - const promiseTag = promise[Symbol.toStringTag]; - expect(promiseTag).not.toBeNil(); - expect(new FunPromise(promise)[Symbol.toStringTag]).toBe(promiseTag); - }); - }); - describe("finally", () => { - it("returns the same promise when given no arguments", () => { - expect(tokenFunPromise.finally()).toBe(tokenFunPromise); - }); - it("executes on resolution", () => __awaiter(void 0, void 0, void 0, function* () { - let finallyExecuted = false; - yield expect(FunPromise.resolve(false).finally(() => { - finallyExecuted = true; - })).resolves.toBe(false); - expect(finallyExecuted).toBe(true); - })); - it("executes on rejection", () => __awaiter(void 0, void 0, void 0, function* () { - let finallyExecuted = false; - yield expect(FunPromise.reject("BOOM!").finally(() => { - finallyExecuted = true; - })).rejects.toBe("BOOM!"); - expect(finallyExecuted).toBe(true); - })); - }); - describe("reject", () => { - _.forEach({ static: FunPromise, instance: tokenFunPromise }, (impl, name) => { - describe(name, () => { - it("rejects correctly", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(impl.reject(true)).rejects.toBe(true); - })); - it("doesn't change the object that is rejected", () => __awaiter(void 0, void 0, void 0, function* () { - const reason = { foo: true, bar: 42 }; - yield expect(impl.reject(reason)).rejects.toBe(reason); - })); - }); - }); - }); - describe("coalesce", () => { - function runCoalesce(args, test) { - return FunPromise.coalesce(args, test); - } - it("basically works", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(runCoalesce([() => null, Promise.resolve(() => true)])).resolves.toBe(true); - })); - it("returns the first resolving value", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(runCoalesce([() => FunPromise.delay(1000).resolve(true), () => false])).resolves.toBe(false); - })); - it("returns the value that passes the test", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(runCoalesce([() => 2, () => 4], (it) => it > 2)).resolves.toBe(4); - })); - it("throws the error if nothing passes the test", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(runCoalesce([() => Promise.reject("BOOM!"), () => 4], (it) => it > 4)).rejects.toBe("BOOM!"); - })); - it("punts appropriately after the first resolution", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(runCoalesce(_.times(3, (idx) => () => idx))).resolves.toBe(0); - })); - }); - describe("delay", () => { - _.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - _.forEach([-1000, -1, 0, 1, 1000], (delayMs) => { - describe(`When requesting a delay of ${delayMs} milliseconds`, () => { - function runDelay(arg) { - if (staticVersion) { - return FunPromise.delay(delayMs, arg); - } - else { - return FunPromise.resolve().delay(delayMs, arg); - } - } - describe("basically works", () => { - it("with no arg", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(runDelay()).resolves; - })); - it("with one arg", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(runDelay(1000)).resolves.toBe(1000); - })); - }); - }); - }); - }); - }); - }); - describe("simplify", () => { - it("basically works", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(new FunPromise(Promise.resolve(Promise.resolve(true))).simplify()).resolves.toBe(true); - })); - }); - describe("filter", () => { - _.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - const defaultValues = [ - 1, - true, - {}, - null, - Promise.resolve(null), - Promise.resolve(), - "Hello, Dolly!", - ]; - const defaultExpect = [1, true, {}, "Hello, Dolly!"]; - const defaultTest = (it) => !_.isNil(it); - function doFilter(values = defaultValues, test = defaultTest) { - if (staticVersion) { - return FunPromise.filter(values, test); - } - else { - return FunPromise.resolve(values).filter(test); - } - } - it("basically works", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(doFilter()).resolves.not.toBeEmpty(); - yield expect(doFilter()).resolves.toBeArrayOfSize(4); - })); - }); - }); - }); - describe("flatMap", () => { - _.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - const defaultValues = [ - 1, - true, - {}, - null, - Promise.resolve(null), - Promise.resolve(), - "Hello, Dolly!", - ]; - const defaultMapper = (it) => { - if (_.isNil(it)) { - return []; - } - else { - return [it]; - } - }; - const defaultExpect = [1, true, {}, "Hello, Dolly!"]; - function doFlatMap(values = defaultValues, mapper = defaultMapper) { - if (staticVersion) { - return FunPromise.flatMap(values, mapper); - } - else { - return FunPromise.resolve(values).flatMap(mapper); - } - } - it("basically works", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(doFlatMap()).resolves.toStrictEqual(defaultExpect); - })); - }); - }); - }); - describe("tap", () => { - it("basically works", () => __awaiter(void 0, void 0, void 0, function* () { - let sawTap = false; - yield expect(tokenFunPromise.tap((val) => { - expect(val).toBe(true); - sawTap = true; - return false; - })).resolves.toBe(true); - expect(sawTap).toBe(true); - })); - it("rejects if it throws an exception", () => __awaiter(void 0, void 0, void 0, function* () { - let sawTap = false; - yield expect(tokenFunPromise.tap((val) => { - sawTap = true; - throw "BOOM!"; - })).rejects.toBe("BOOM!"); - expect(sawTap).toBe(true); - })); - }); - describe("fold", () => { - _.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - const defaultValues = [1, 2, 3, 4, 5]; - function doFold(values = defaultValues, initialValue = 0, accumulator = (a, b) => a + b) { - if (staticVersion) { - return FunPromise.fold(values, initialValue, accumulator); - } - else { - return FunPromise.resolve(values).fold(initialValue, accumulator); - } - } - it("basically works", () => __awaiter(void 0, void 0, void 0, function* () { - const values = [1, 2, 3, 4, 5]; - yield expect(doFold()).resolves.toBe(1 + 2 + 3 + 4 + 5); - })); - }); - }); - }); - describe("tapCatch", () => { - it("basically works", () => __awaiter(void 0, void 0, void 0, function* () { - let sawTapCatch = false; - yield expect(FunPromise.reject("BOOM!").tapCatch((e) => { - sawTapCatch = true; - expect(e).toBe("BOOM!"); - return "BANG!"; - })).rejects.toBe("BOOM!"); - expect(sawTapCatch).toBe(true); - })); - it("nests explosions", () => __awaiter(void 0, void 0, void 0, function* () { - let sawCatch = false; - const err1 = new Error("BOOM!"); - const err2 = new Error("BANG!"); - yield expect(FunPromise.reject(err1) - .tapCatch((e) => { - throw err2; - }) - .catch((e) => { - sawCatch = true; - expect(e).toBeInstanceOf(NestedError); - expect(e).toHaveProperty("message", "Error thrown in 'tapCatch'"); - expect(e).toHaveProperty("innerErrors"); - expect(e.innerErrors).toHaveLength(2); - expect(e.innerErrors).toEqual([err1, err2]); - return "Hello!"; - })).resolves.toBe("Hello!"); - expect(sawCatch).toBe(true); - })); - }); - describe("tapEach", () => { - it("basically works", () => __awaiter(void 0, void 0, void 0, function* () { - const values = [ - 123, - Promise.resolve(true), - "Hello, Dolly!", - null, - undefined, - ]; - const funPromise = FunPromise.resolve(values); - let count = 0; - yield expect(funPromise.tapEach(() => { - count++; - })).resolves.toEqual(yield Promise.all(values)); - expect(count).toBe(values.length); - })); - }); - describe("wrapError", () => { - it("basically works", () => __awaiter(void 0, void 0, void 0, function* () { - const reason = "BOOM!"; - yield expect(FunPromise.reject(reason).wrapError("BANG!")).rejects.toHaveProperty("message", "BANG!"); - yield expect(FunPromise.reject(reason).wrapError("BANG!")).rejects.toHaveProperty("innerError"); - })); - }); - describe("wrapErrors", () => { - it("basically works", () => __awaiter(void 0, void 0, void 0, function* () { - const err1 = new Error("BOOM!"); - const err2 = new Error("BANG!"); - yield expect(FunPromise.resolve([Promise.reject(err1), Promise.reject(err2)]) - .wrapErrors("ERRORS!") - .catch((e) => { - expect(e).toBeInstanceOf(NestedError); - expect(e).toHaveProperty("message", "ERRORS!"); - expect(e.innerErrors).toHaveLength(2); - expect(e.innerErrors).toEqual([err1, err2]); - return true; - })).resolves.toBe(true); - })); - it("doesn't do anything if there is no error", () => __awaiter(void 0, void 0, void 0, function* () { - const values = [1, 2, 3, true, false, null, undefined]; - yield expect(FunPromise.resolve(values).wrapErrors("ERRORS!")).resolves.toEqual(values); - })); - }); - describe("cancellation", () => { - it("initially reports not cancelled", () => { - expect(FunPromise.resolve(true).isCancelled()).toBe(false); - }); - it("reports cancelled after cancel is called", () => { - expect(FunPromise.resolve(true).cancel().isCancelled()).toBe(true); - }); - it("prevents resolution after cancellation", () => { - let resolver; - let sawResolve = false; - const promise = new Promise((resolve) => { - resolver = resolve; - }).then(() => { - sawResolve = true; - }); - expect(resolver).not.toBeNil(); - const cancelled = new FunPromise(promise).cancel(); - resolver(true); - expect(sawResolve).toBe(false); - }); - it("prevents rejection after cancellation", () => { - let rejector; - let sawReject = false; - const promise = new Promise((resolve, reject) => { - rejector = reject; - }).catch(() => { - sawReject = true; - }); - expect(rejector).not.toBeNil(); - const cancelled = new FunPromise(promise).cancel(); - rejector("BOOM!"); - expect(sawReject).toBe(false); - }); - it("prevents rejection when resolving throws after cancellation", () => { - let resolver; - let sawThen = true; - let sawCatch = false; - let doCancel; - const promise = new Promise((resolve) => { - resolver = resolve; - }).then(() => { - sawThen = true; - doCancel(); - throw "BOOM!"; - }); - expect(resolver).not.toBeNil(); - const toCancel = new FunPromise(promise); - doCancel = () => { - toCancel.cancel(); - }; - toCancel.catch((e) => { - sawCatch = true; - }); - resolver(true); - expect(sawThen).toBe(true); - expect(sawCatch).toBe(false); - }); - }); - describe("simplifyAll", () => { - it("basically works", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(FunPromise.resolve("Hello").simplifyAll()).resolves.toEqual([ - "H", - "e", - "l", - "l", - "o", - ]); - })); - it("doesn't explode on an empty list", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(FunPromise.resolve([]).simplifyAll()).resolves.toEqual([]); - })); - }); - describe("settle", () => { - it("basically works for rejections", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(FunPromise.reject("BOOM!").settle()).resolves.toHaveProperty("reason", "BOOM!"); - })); - it("basically works for fulfillments", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(FunPromise.resolve(true).settle()).resolves.toHaveProperty("value", true); - })); - }); - describe("settleAll", () => { - _.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - function doSettleAll(values) { - if (staticVersion) { - return FunPromise.settleAll(values); - } - else { - return FunPromise.resolve(values).settleAll(); - } - } - it("basically works", () => __awaiter(void 0, void 0, void 0, function* () { - const values = [ - { in: Promise.resolve(true), out: new Fulfillment(true) }, - { in: Promise.reject("BOOM!"), out: new Rejection("BOOM!") }, - { in: Promise.reject(null), out: new Rejection(null) }, - { in: null, out: new Fulfillment(null) }, - ]; - yield expect(doSettleAll(_.map(values, "in"))).resolves.toEqual(_.map(values, "out")); - })); - it("doesn't explode on empty lists", () => __awaiter(void 0, void 0, void 0, function* () { - yield expect(doSettleAll([])).resolves.toEqual([]); - })); - }); - }); - }); -}); -//# sourceMappingURL=fun-promise.test.js.map \ No newline at end of file diff --git a/dist/es6/esm/src/fun-promise.test.js.map b/dist/es6/esm/src/fun-promise.test.js.map deleted file mode 100644 index ae0c7f4..0000000 --- a/dist/es6/esm/src/fun-promise.test.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fun-promise.test.js","sourceRoot":"","sources":["../../../../src/fun-promise.test.js"],"names":[],"mappings":"AAAA,cAAc;;AAEd,OAAO,UAAU,MAAM,eAAe,CAAC;AACvC,OAAO,CAAC,MAAM,QAAQ,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,MAAM,eAAe,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;AAErD,SAAS,aAAa,CAAC,eAAe,EAAE,QAAQ;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAClD,IAAI;QACH,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;KAC3B;YAAS;QACT,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oCAAoC;KAC7D;AACF,CAAC;AAED,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,iCAAiC,EAAE,GAAS,EAAE;QAChD,MAAM,MAAM,CAAC,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC,CAAA,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC/B,CAAC,CAAC,OAAO,CACR,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,EACjD,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;YAClB,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE;gBAC/C,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;oBACzB,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;wBACvB,SAAS,SAAS,CAAC,KAAK;4BACvB,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC;wBAChC,CAAC;wBAED,EAAE,CAAC,mCAAmC,EAAE,GAAS,EAAE;4BAClD,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAC5D,OAAO,CACP,CAAC;wBACH,CAAC,CAAA,CAAC,CAAC;wBAEH,EAAE,CAAC,2CAA2C,EAAE,GAAS,EAAE;4BAC1D,MAAM,CAAC,aAAa,EAAE,CAAC;4BACvB,MAAM,aAAa,CAAC,OAAO,EAAE,CAAO,SAAS,EAAE,EAAE;gCAChD,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;4BAC/D,CAAC,CAAA,CAAC,CAAC;wBACJ,CAAC,CAAA,CAAC,CAAC;wBAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;4BACnC,EAAE,CAAC,cAAc,EAAE,GAAS,EAAE;gCAC7B,MAAM,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BAC3D,CAAC,CAAA,CAAC,CAAC;4BAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;gCACxD,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;4BAC7D,CAAC,CAAC,CAAC;4BAEH,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;gCAChC,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;4BAC9C,CAAC,CAAA,CAAC,CAAC;wBACJ,CAAC,CAAC,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACJ,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CACD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACrB,EAAE,CAAC,0BAA0B,EAAE,GAAS,EAAE;YACzC,MAAM,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,oBAAoB,EAAE,GAAS,EAAE;YACnC,MAAM,MAAM,CACX,eAAe;iBACb,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;iBACnC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACZ,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC;YAChB,CAAC,CAAC,CACH,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAS,EAAE;YAC9D,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YACjC,MAAM,MAAM,CACX,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CACzD,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;YAChC,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3B,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,CACxE,KAAK,CACL,CAAC;QACH,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;YAChC,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3B,MAAM,MAAM,CACX,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;iBACvB,QAAQ,EAAE;iBACV,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;gBACZ,EAAE,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,EAAE,CAAC;YACX,CAAC,CAAC,CACH,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAS,EAAE;YACxE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI;gBACH,MAAM,MAAM,CACX,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAChD,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;aAC9B;oBAAS;gBACT,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,uBAAuB;aACnD;QACF,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,GAAS,EAAE;YAC1E,MAAM,MAAM,CACX,UAAU,CAAC,OAAO,CAAC;gBAClB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;gBAClB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;aACrB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CACjB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,qFAAqF,EAAE,GAAS,EAAE;YACpG,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,MAAM,CACX,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CACpD,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,uEAAuE,EAAE,GAAS,EAAE;YACtF,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI;gBACH,MAAM,MAAM,CACX,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAC1D,IAAI,EACJ,IAAI,CACJ,CACD,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACxB;oBAAS;gBACT,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,uBAAuB;gBACpD,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,uBAAuB;aACpD;QACF,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,wEAAwE,EAAE,GAAS,EAAE;YACvF,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,MAAM,MAAM,CACX,UAAU,CAAC,OAAO,CAAC;gBAClB,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE;oBACnB,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC7B,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC9B,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC7B,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC9B,QAAQ,GAAG,IAAI,CAAC;oBAChB,OAAO,CAAC,CAAC;gBACV,CAAC,CAAC;gBACF,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE;oBACnB,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC5B,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC9B,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC7B,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC9B,SAAS,GAAG,IAAI,CAAC;oBACjB,OAAO,CAAC,CAAC;gBACV,CAAC,CAAC;gBACF,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE;oBACnB,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC5B,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC7B,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC7B,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC9B,QAAQ,GAAG,IAAI,CAAC;oBAChB,OAAO,CAAC,CAAC;gBACV,CAAC,CAAC;gBACF,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE;oBACnB,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC5B,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC7B,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC5B,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC9B,SAAS,GAAG,IAAI,CAAC;oBACjB,OAAO,CAAC,CAAC;gBACV,CAAC,CAAC;aACF,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CACvB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;QACpB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE;YAC1C,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE;gBACpD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;oBAChC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE;wBACxB,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAA,CAAC,EAAI,CAAC,CAAA,CAAC,CAAC;wBAEpD,SAAS,MAAM,CAAC,IAAI;4BACnB,IAAI,aAAa,EAAE;gCAClB,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;6BAC5B;iCAAM;gCACN,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;6BACtC;wBACF,CAAC;wBAED,EAAE,CAAC,OAAO,QAAQ,YAAY,EAAE,GAAS,EAAE;4BAC1C,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CACtD,UAAU,CACV,CAAC;wBACH,CAAC,CAAA,CAAC,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACJ,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;QACpB,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;YAChC,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,GAAS,EAAE;YACxC,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,mBAAmB,EAAE,GAAS,EAAE;YAClC,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CACvE,OAAO,CACP,CAAC;QACH,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;QACpB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE;YAC1C,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE;gBACpD,SAAS,MAAM,CAAC,IAAI,EAAE,MAAM;oBAC3B,IAAI,aAAa,EAAE;wBAClB,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;qBACpC;yBAAM;wBACN,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;qBAC5C;gBACF,CAAC;gBAED,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;oBAChC,MAAM,MAAM,CACX,MAAM,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,UAAU,CAAC,CACrD,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC,CAAC;gBAChE,CAAC,CAAA,CAAC,CAAC;gBAEH,EAAE,CAAC,6BAA6B,EAAE,GAAS,EAAE;oBAC5C,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBACvC,MAAM,aAAa,GAAG,CAAC,EAAE,EAAE,EAAE;wBAC5B,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE;4BACxB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;yBAC/B;6BAAM;4BACN,OAAO,EAAE,GAAG,CAAC,CAAC;yBACd;oBACF,CAAC,CAAC;oBACF,MAAM,MAAM,CACX,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,CACpC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC7C,CAAC,CAAA,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC/C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACpD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC/C,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC3D,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,GAAS,EAAE;YACvC,IAAI,eAAe,GAAG,KAAK,CAAC;YAC5B,MAAM,MAAM,CACX,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;gBACtC,eAAe,GAAG,IAAI,CAAC;YACxB,CAAC,CAAC,CACF,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,uBAAuB,EAAE,GAAS,EAAE;YACtC,IAAI,eAAe,GAAG,KAAK,CAAC;YAC5B,MAAM,MAAM,CACX,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;gBACvC,eAAe,GAAG,IAAI,CAAC;YACxB,CAAC,CAAC,CACF,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxB,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACvB,CAAC,CAAC,OAAO,CACR,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,EACjD,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;YACd,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE;gBACnB,EAAE,CAAC,mBAAmB,EAAE,GAAS,EAAE;oBAClC,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpD,CAAC,CAAA,CAAC,CAAC;gBAEH,EAAE,CAAC,4CAA4C,EAAE,GAAS,EAAE;oBAC3D,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;oBACtC,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACxD,CAAC,CAAA,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CACD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACzB,SAAS,WAAW,CAAC,IAAI,EAAE,IAAI;YAC9B,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC;QAED,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;YAChC,MAAM,MAAM,CACX,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CACtD,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAS,EAAE;YAClD,MAAM,MAAM,CACX,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CACtE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAS,EAAE;YACvD,MAAM,MAAM,CACX,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAC/C,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAS,EAAE;YAC5D,MAAM,MAAM,CACX,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CACrE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAS,EAAE;YAC/D,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CACtE,CAAC,CACD,CAAC;QACH,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACtB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE;YAC1C,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE;gBACpD,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE;oBAC9C,QAAQ,CAAC,8BAA8B,OAAO,eAAe,EAAE,GAAG,EAAE;wBACnE,SAAS,QAAQ,CAAC,GAAG;4BACpB,IAAI,aAAa,EAAE;gCAClB,OAAO,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;6BACtC;iCAAM;gCACN,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;6BAChD;wBACF,CAAC;wBAED,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;4BAChC,EAAE,CAAC,aAAa,EAAE,GAAS,EAAE;gCAC5B,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC;4BACnC,CAAC,CAAA,CAAC,CAAC;4BAEH,EAAE,CAAC,cAAc,EAAE,GAAS,EAAE;gCAC7B,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BAClD,CAAC,CAAA,CAAC,CAAC;wBACJ,CAAC,CAAC,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACJ,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;YAChC,MAAM,MAAM,CACX,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CACjE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACvB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE;YAC1C,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE;gBACpD,MAAM,aAAa,GAAG;oBACrB,CAAC;oBACD,IAAI;oBACJ,EAAE;oBACF,IAAI;oBACJ,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;oBACrB,OAAO,CAAC,OAAO,EAAE;oBACjB,eAAe;iBACf,CAAC;gBACF,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC;gBACrD,MAAM,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACzC,SAAS,QAAQ,CAAC,MAAM,GAAG,aAAa,EAAE,IAAI,GAAG,WAAW;oBAC3D,IAAI,aAAa,EAAE;wBAClB,OAAO,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;qBACvC;yBAAM;wBACN,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;qBAC/C;gBACF,CAAC;gBAED,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;oBAChC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;oBAClD,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBACtD,CAAC,CAAA,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACxB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE;YAC1C,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE;gBACpD,MAAM,aAAa,GAAG;oBACrB,CAAC;oBACD,IAAI;oBACJ,EAAE;oBACF,IAAI;oBACJ,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;oBACrB,OAAO,CAAC,OAAO,EAAE;oBACjB,eAAe;iBACf,CAAC;gBACF,MAAM,aAAa,GAAG,CAAC,EAAE,EAAE,EAAE;oBAC5B,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;wBAChB,OAAO,EAAE,CAAC;qBACV;yBAAM;wBACN,OAAO,CAAC,EAAE,CAAC,CAAC;qBACZ;gBACF,CAAC,CAAC;gBACF,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC;gBACrD,SAAS,SAAS,CAAC,MAAM,GAAG,aAAa,EAAE,MAAM,GAAG,aAAa;oBAChE,IAAI,aAAa,EAAE;wBAClB,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;qBAC1C;yBAAM;wBACN,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;qBAClD;gBACF,CAAC;gBAED,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;oBAChC,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;gBACjE,CAAC,CAAA,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;QACpB,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;YAChC,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,MAAM,MAAM,CACX,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvB,MAAM,GAAG,IAAI,CAAC;gBACd,OAAO,KAAK,CAAC;YACd,CAAC,CAAC,CACF,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAS,EAAE;YAClD,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,MAAM,MAAM,CACX,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC3B,MAAM,GAAG,IAAI,CAAC;gBACd,MAAM,OAAO,CAAC;YACf,CAAC,CAAC,CACF,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxB,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACrB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE;YAC1C,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE;gBACpD,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAEtC,SAAS,MAAM,CACd,MAAM,GAAG,aAAa,EACtB,YAAY,GAAG,CAAC,EAChB,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC;oBAE7B,IAAI,aAAa,EAAE;wBAClB,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;qBAC1D;yBAAM;wBACN,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;qBAClE;gBACF,CAAC;gBAED,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;oBAChC,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC/B,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzD,CAAC,CAAA,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;YAChC,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,MAAM,MAAM,CACX,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzC,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC;YAChB,CAAC,CAAC,CACF,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxB,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,kBAAkB,EAAE,GAAS,EAAE;YACjC,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,MAAM,CACX,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;iBACrB,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE;gBACf,MAAM,IAAI,CAAC;YACZ,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACZ,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;gBACtC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC;gBAClE,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;gBACxC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC5C,OAAO,QAAQ,CAAC;YACjB,CAAC,CAAC,CACH,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1B,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;YAChC,MAAM,MAAM,GAAG;gBACd,GAAG;gBACH,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;gBACrB,eAAe;gBACf,IAAI;gBACJ,SAAS;aACT,CAAC;YACF,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,MAAM,MAAM,CACX,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE;gBACvB,KAAK,EAAE,CAAC;YACT,CAAC,CAAC,CACF,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;YAChC,MAAM,MAAM,GAAG,OAAO,CAAC;YACvB,MAAM,MAAM,CACX,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAC5C,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC7C,MAAM,MAAM,CACX,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAC5C,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACxC,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;YAChC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,MAAM,CACX,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;iBAC9D,UAAU,CAAC,SAAS,CAAC;iBACrB,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACZ,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;gBACtC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAC/C,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC5C,OAAO,IAAI,CAAC;YACb,CAAC,CAAC,CACH,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAS,EAAE;YACzD,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YACvD,MAAM,MAAM,CACX,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAChD,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YAC1C,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YACjD,IAAI,QAAQ,CAAC;YACb,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBACvC,QAAQ,GAAG,OAAO,CAAC;YACpB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBACZ,UAAU,GAAG,IAAI,CAAC;YACnB,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;YACnD,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAChD,IAAI,QAAQ,CAAC;YACb,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC/C,QAAQ,GAAG,MAAM,CAAC;YACnB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBACb,SAAS,GAAG,IAAI,CAAC;YAClB,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;YACnD,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClB,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;YACtE,IAAI,QAAQ,CAAC;YACb,IAAI,OAAO,GAAG,IAAI,CAAC;YACnB,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,QAAQ,CAAC;YACb,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBACvC,QAAQ,GAAG,OAAO,CAAC;YACpB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBACZ,OAAO,GAAG,IAAI,CAAC;gBACf,QAAQ,EAAE,CAAC;gBACX,MAAM,OAAO,CAAC;YACf,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;YACzC,QAAQ,GAAG,GAAG,EAAE;gBACf,QAAQ,CAAC,MAAM,EAAE,CAAC;YACnB,CAAC,CAAC;YACF,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACpB,QAAQ,GAAG,IAAI,CAAC;YACjB,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;YAChC,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACxE,GAAG;gBACH,GAAG;gBACH,GAAG;gBACH,GAAG;gBACH,GAAG;aACH,CAAC,CAAC;QACJ,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAS,EAAE;YACjD,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,gCAAgC,EAAE,GAAS,EAAE;YAC/C,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,cAAc,CACxE,QAAQ,EACR,OAAO,CACP,CAAC;QACH,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAS,EAAE;YACjD,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,cAAc,CACtE,OAAO,EACP,IAAI,CACJ,CAAC;QACH,CAAC,CAAA,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QAC1B,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE;YAC1C,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE;gBACpD,SAAS,WAAW,CAAC,MAAM;oBAC1B,IAAI,aAAa,EAAE;wBAClB,OAAO,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;qBACpC;yBAAM;wBACN,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;qBAC9C;gBACF,CAAC;gBAED,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;oBAChC,MAAM,MAAM,GAAG;wBACd,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;wBACzD,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE;wBAC5D,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;wBACtD,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;qBACxC,CAAC;oBACF,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAC9D,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CACpB,CAAC;gBACH,CAAC,CAAA,CAAC,CAAC;gBAEH,EAAE,CAAC,gCAAgC,EAAE,GAAS,EAAE;oBAC/C,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACpD,CAAC,CAAA,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["/** @format */\n\nimport FunPromise from \"./fun-promise\";\nimport _ from \"lodash\";\nimport { NestedError } from \"ts-nested-error\";\nimport { Fulfillment, Rejection } from \"./types\";\n\nconst tokenPromise = new Promise((resolve) => resolve(true));\nconst tokenFunPromise = new FunPromise(tokenPromise);\n\nfunction withRejection(rejectionReason, callback) {\n\tconst rejection = Promise.reject(rejectionReason);\n\ttry {\n\t\treturn callback(rejection);\n\t} finally {\n\t\trejection.catch(_.noop); // Disable uncaught exception issues\n\t}\n}\n\ndescribe(\"FunPromise\", () => {\n\tit(\"can be constructed and resolved\", async () => {\n\t\tawait expect(new FunPromise(tokenPromise)).resolves.toBe(true);\n\t});\n\n\tdescribe(\"resolve/return\", () => {\n\t\t_.forEach(\n\t\t\t{ static: FunPromise, instance: tokenFunPromise },\n\t\t\t(impl, implName) => {\n\t\t\t\t_.forEach([\"resolve\", \"return\"], (methodName) => {\n\t\t\t\t\tdescribe(methodName, () => {\n\t\t\t\t\t\tdescribe(implName, () => {\n\t\t\t\t\t\t\tfunction doResolve(value) {\n\t\t\t\t\t\t\t\treturn impl[methodName](value);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tit(\"rejects when provided a rejection\", async () => {\n\t\t\t\t\t\t\t\tawait expect(doResolve(Promise.reject(\"BOOM!\"))).rejects.toBe(\n\t\t\t\t\t\t\t\t\t\"BOOM!\"\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tit(\"does not resolve the elements of an array\", async () => {\n\t\t\t\t\t\t\t\texpect.hasAssertions();\n\t\t\t\t\t\t\t\tawait withRejection(\"BOOM!\", async (rejection) => {\n\t\t\t\t\t\t\t\t\tawait expect(doResolve([rejection])).resolves.toHaveLength(1);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tdescribe(\"resolves correctly\", () => {\n\t\t\t\t\t\t\t\tit(\"with a value\", async () => {\n\t\t\t\t\t\t\t\t\tawait expect(doResolve(tokenPromise)).resolves.toBe(true);\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tit(\"returns the FunPromise if passed a FunPromise\", () => {\n\t\t\t\t\t\t\t\t\texpect(doResolve(tokenFunPromise)).toEqual(tokenFunPromise);\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tit(\"without a value\", async () => {\n\t\t\t\t\t\t\t\t\tawait expect(doResolve()).resolves.toBeNil();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t});\n\n\tdescribe(\"then\", () => {\n\t\tit(\"works without onrejected\", async () => {\n\t\t\tawait expect(tokenFunPromise.then(_.identity)).resolves.toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"catch\", () => {\n\t\tit(\"handles rejections\", async () => {\n\t\t\tawait expect(\n\t\t\t\ttokenFunPromise\n\t\t\t\t\t.then(() => Promise.reject(\"BOOM!\"))\n\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\texpect(e).toBe(\"BOOM!\");\n\t\t\t\t\t\treturn \"DONE!\";\n\t\t\t\t\t})\n\t\t\t).resolves.toBe(\"DONE!\");\n\t\t});\n\n\t\tit(\"returns the error when not passed an argument\", async () => {\n\t\t\tconst error = new Error(\"BOOM!\");\n\t\t\tawait expect(\n\t\t\t\ttokenFunPromise.then(() => Promise.reject(error)).catch()\n\t\t\t).resolves.toBe(error);\n\t\t});\n\t});\n\n\tdescribe(\"arrayify\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst value = [1, 2, 3, 4];\n\t\t\tawait expect(FunPromise.resolve(value).arrayify()).resolves.toStrictEqual(\n\t\t\t\tvalue\n\t\t\t);\n\t\t});\n\n\t\tit(\"returns a clone\", async () => {\n\t\t\tconst value = [1, 2, 3, 4];\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve(value)\n\t\t\t\t\t.arrayify()\n\t\t\t\t\t.then((it) => {\n\t\t\t\t\t\tit.pop();\n\t\t\t\t\t\treturn it;\n\t\t\t\t\t})\n\t\t\t).resolves.not.toBe(value);\n\t\t\texpect(value).toHaveLength(4);\n\t\t});\n\n\t\tit(\"does not resolve values when called without an argument\", async () => {\n\t\t\tconst rejection = Promise.reject(\"BOOM!\");\n\t\t\ttry {\n\t\t\t\tawait expect(\n\t\t\t\t\tFunPromise.resolve([1, 2, rejection]).arrayify()\n\t\t\t\t).resolves.toBeArrayOfSize(3);\n\t\t\t} finally {\n\t\t\t\trejection.catch((e) => {}); // Disarm the rejection\n\t\t\t}\n\t\t});\n\n\t\tit(\"resolves values when called with the sole argument `true`\", async () => {\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve([\n\t\t\t\t\tPromise.resolve(1),\n\t\t\t\t\tFunPromise.resolve(2),\n\t\t\t\t]).arrayify(true)\n\t\t\t).resolves.toEqual([1, 2]);\n\t\t});\n\n\t\tit(\"rejects values when called with the sole argument `true` and a rejection in the mix\", async () => {\n\t\t\tconst rejection = Promise.reject(\"BOOM!\");\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve([1, 2, rejection]).arrayify(true)\n\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t});\n\n\t\tit(\"rejects values in order when called with the arguments `(true, true)`\", async () => {\n\t\t\tconst rejection1 = Promise.reject(\"BOOM!\");\n\t\t\tconst rejection2 = Promise.reject(\"BANG!\");\n\t\t\ttry {\n\t\t\t\tawait expect(\n\t\t\t\t\tFunPromise.resolve([1, 2, rejection1, rejection2]).arrayify(\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t)\n\t\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t\t} finally {\n\t\t\t\trejection1.catch((e) => {}); // Disarm the rejection\n\t\t\t\trejection2.catch((e) => {}); // Disarm the rejection\n\t\t\t}\n\t\t});\n\n\t\tit(\"resolves values in order when called with the arguments `(true, true)`\", async () => {\n\t\t\tlet sawFirst = false;\n\t\t\tlet sawSecond = false;\n\t\t\tlet sawThird = false;\n\t\t\tlet sawFourth = false;\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve([\n\t\t\t\t\tFunPromise.try(() => {\n\t\t\t\t\t\texpect(sawFirst).toBe(false);\n\t\t\t\t\t\texpect(sawSecond).toBe(false);\n\t\t\t\t\t\texpect(sawThird).toBe(false);\n\t\t\t\t\t\texpect(sawFourth).toBe(false);\n\t\t\t\t\t\tsawFirst = true;\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}),\n\t\t\t\t\tFunPromise.try(() => {\n\t\t\t\t\t\texpect(sawFirst).toBe(true);\n\t\t\t\t\t\texpect(sawSecond).toBe(false);\n\t\t\t\t\t\texpect(sawThird).toBe(false);\n\t\t\t\t\t\texpect(sawFourth).toBe(false);\n\t\t\t\t\t\tsawSecond = true;\n\t\t\t\t\t\treturn 2;\n\t\t\t\t\t}),\n\t\t\t\t\tFunPromise.try(() => {\n\t\t\t\t\t\texpect(sawFirst).toBe(true);\n\t\t\t\t\t\texpect(sawSecond).toBe(true);\n\t\t\t\t\t\texpect(sawThird).toBe(false);\n\t\t\t\t\t\texpect(sawFourth).toBe(false);\n\t\t\t\t\t\tsawThird = true;\n\t\t\t\t\t\treturn 3;\n\t\t\t\t\t}),\n\t\t\t\t\tFunPromise.try(() => {\n\t\t\t\t\t\texpect(sawFirst).toBe(true);\n\t\t\t\t\t\texpect(sawSecond).toBe(true);\n\t\t\t\t\t\texpect(sawThird).toBe(true);\n\t\t\t\t\t\texpect(sawFourth).toBe(false);\n\t\t\t\t\t\tsawFourth = true;\n\t\t\t\t\t\treturn 4;\n\t\t\t\t\t}),\n\t\t\t\t]).arrayify(true, true)\n\t\t\t).resolves.toStrictEqual([1, 2, 3, 4]);\n\t\t\texpect(sawFirst).toBe(true);\n\t\t\texpect(sawSecond).toBe(true);\n\t\t\texpect(sawThird).toBe(true);\n\t\t\texpect(sawFourth).toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"all\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tdescribe(\"basically works\", () => {\n\t\t\t\t\t_.times(10, (argCount) => {\n\t\t\t\t\t\tconst simpleArgs = _.times(argCount, (i) => 2 ** i);\n\n\t\t\t\t\t\tfunction runAll(args) {\n\t\t\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\t\t\treturn FunPromise.all(args);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn FunPromise.resolve(args).all();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tit(`for ${argCount} arguments`, async () => {\n\t\t\t\t\t\t\tawait expect(runAll(simpleArgs)).resolves.toStrictEqual(\n\t\t\t\t\t\t\t\tsimpleArgs\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"try\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tawait expect(FunPromise.try(() => true)).resolves.toBe(true);\n\t\t});\n\n\t\tit(\"works with one argument\", async () => {\n\t\t\tawait expect(FunPromise.try((i) => i, 42)).resolves.toBe(42);\n\t\t});\n\n\t\tit(\"explodes properly\", async () => {\n\t\t\tawait expect(FunPromise.try(() => Promise.reject(\"BOOM!\"))).rejects.toBe(\n\t\t\t\t\"BOOM!\"\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\"map\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tfunction runMap(args, mapper) {\n\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\treturn FunPromise.map(args, mapper);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FunPromise.resolve(args).map(mapper);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tit(\"basically works\", async () => {\n\t\t\t\t\tawait expect(\n\t\t\t\t\t\trunMap([\"Hello\", \"Goodbye\"], (it) => `${it}, World!`)\n\t\t\t\t\t).resolves.toStrictEqual([\"Hello, World!\", \"Goodbye, World!\"]);\n\t\t\t\t});\n\n\t\t\t\tit(\"works with some test values\", async () => {\n\t\t\t\t\tconst defaultValues = [1, 2, 4, 8, 16];\n\t\t\t\t\tconst defaultMapper = (it) => {\n\t\t\t\t\t\tif (Math.random() < 0.5) {\n\t\t\t\t\t\t\treturn Promise.resolve(it * 2);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn it * 2;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tawait expect(\n\t\t\t\t\t\trunMap(defaultValues, defaultMapper)\n\t\t\t\t\t).resolves.toStrictEqual([2, 4, 8, 16, 32]);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"Symbol.toStringTag\", () => {\n\t\tit(\"is the same as the promise passed in\", () => {\n\t\t\tconst promise = new Promise((resolve) => resolve());\n\t\t\tconst promiseTag = promise[Symbol.toStringTag];\n\t\t\texpect(promiseTag).not.toBeNil();\n\t\t\texpect(new FunPromise(promise)[Symbol.toStringTag]).toBe(promiseTag);\n\t\t});\n\t});\n\n\tdescribe(\"finally\", () => {\n\t\tit(\"returns the same promise when given no arguments\", () => {\n\t\t\texpect(tokenFunPromise.finally()).toBe(tokenFunPromise);\n\t\t});\n\n\t\tit(\"executes on resolution\", async () => {\n\t\t\tlet finallyExecuted = false;\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve(false).finally(() => {\n\t\t\t\t\tfinallyExecuted = true;\n\t\t\t\t})\n\t\t\t).resolves.toBe(false);\n\t\t\texpect(finallyExecuted).toBe(true);\n\t\t});\n\n\t\tit(\"executes on rejection\", async () => {\n\t\t\tlet finallyExecuted = false;\n\t\t\tawait expect(\n\t\t\t\tFunPromise.reject(\"BOOM!\").finally(() => {\n\t\t\t\t\tfinallyExecuted = true;\n\t\t\t\t})\n\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t\texpect(finallyExecuted).toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"reject\", () => {\n\t\t_.forEach(\n\t\t\t{ static: FunPromise, instance: tokenFunPromise },\n\t\t\t(impl, name) => {\n\t\t\t\tdescribe(name, () => {\n\t\t\t\t\tit(\"rejects correctly\", async () => {\n\t\t\t\t\t\tawait expect(impl.reject(true)).rejects.toBe(true);\n\t\t\t\t\t});\n\n\t\t\t\t\tit(\"doesn't change the object that is rejected\", async () => {\n\t\t\t\t\t\tconst reason = { foo: true, bar: 42 };\n\t\t\t\t\t\tawait expect(impl.reject(reason)).rejects.toBe(reason);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t});\n\n\tdescribe(\"coalesce\", () => {\n\t\tfunction runCoalesce(args, test) {\n\t\t\treturn FunPromise.coalesce(args, test);\n\t\t}\n\n\t\tit(\"basically works\", async () => {\n\t\t\tawait expect(\n\t\t\t\trunCoalesce([() => null, Promise.resolve(() => true)])\n\t\t\t).resolves.toBe(true);\n\t\t});\n\n\t\tit(\"returns the first resolving value\", async () => {\n\t\t\tawait expect(\n\t\t\t\trunCoalesce([() => FunPromise.delay(1000).resolve(true), () => false])\n\t\t\t).resolves.toBe(false);\n\t\t});\n\n\t\tit(\"returns the value that passes the test\", async () => {\n\t\t\tawait expect(\n\t\t\t\trunCoalesce([() => 2, () => 4], (it) => it > 2)\n\t\t\t).resolves.toBe(4);\n\t\t});\n\n\t\tit(\"throws the error if nothing passes the test\", async () => {\n\t\t\tawait expect(\n\t\t\t\trunCoalesce([() => Promise.reject(\"BOOM!\"), () => 4], (it) => it > 4)\n\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t});\n\n\t\tit(\"punts appropriately after the first resolution\", async () => {\n\t\t\tawait expect(runCoalesce(_.times(3, (idx) => () => idx))).resolves.toBe(\n\t\t\t\t0\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\"delay\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\t_.forEach([-1000, -1, 0, 1, 1000], (delayMs) => {\n\t\t\t\t\tdescribe(`When requesting a delay of ${delayMs} milliseconds`, () => {\n\t\t\t\t\t\tfunction runDelay(arg) {\n\t\t\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\t\t\treturn FunPromise.delay(delayMs, arg);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn FunPromise.resolve().delay(delayMs, arg);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdescribe(\"basically works\", () => {\n\t\t\t\t\t\t\tit(\"with no arg\", async () => {\n\t\t\t\t\t\t\t\tawait expect(runDelay()).resolves;\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tit(\"with one arg\", async () => {\n\t\t\t\t\t\t\t\tawait expect(runDelay(1000)).resolves.toBe(1000);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"simplify\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tawait expect(\n\t\t\t\tnew FunPromise(Promise.resolve(Promise.resolve(true))).simplify()\n\t\t\t).resolves.toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"filter\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tconst defaultValues = [\n\t\t\t\t\t1,\n\t\t\t\t\ttrue,\n\t\t\t\t\t{},\n\t\t\t\t\tnull,\n\t\t\t\t\tPromise.resolve(null),\n\t\t\t\t\tPromise.resolve(),\n\t\t\t\t\t\"Hello, Dolly!\",\n\t\t\t\t];\n\t\t\t\tconst defaultExpect = [1, true, {}, \"Hello, Dolly!\"];\n\t\t\t\tconst defaultTest = (it) => !_.isNil(it);\n\t\t\t\tfunction doFilter(values = defaultValues, test = defaultTest) {\n\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\treturn FunPromise.filter(values, test);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FunPromise.resolve(values).filter(test);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tit(\"basically works\", async () => {\n\t\t\t\t\tawait expect(doFilter()).resolves.not.toBeEmpty();\n\t\t\t\t\tawait expect(doFilter()).resolves.toBeArrayOfSize(4);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"flatMap\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tconst defaultValues = [\n\t\t\t\t\t1,\n\t\t\t\t\ttrue,\n\t\t\t\t\t{},\n\t\t\t\t\tnull,\n\t\t\t\t\tPromise.resolve(null),\n\t\t\t\t\tPromise.resolve(),\n\t\t\t\t\t\"Hello, Dolly!\",\n\t\t\t\t];\n\t\t\t\tconst defaultMapper = (it) => {\n\t\t\t\t\tif (_.isNil(it)) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn [it];\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst defaultExpect = [1, true, {}, \"Hello, Dolly!\"];\n\t\t\t\tfunction doFlatMap(values = defaultValues, mapper = defaultMapper) {\n\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\treturn FunPromise.flatMap(values, mapper);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FunPromise.resolve(values).flatMap(mapper);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tit(\"basically works\", async () => {\n\t\t\t\t\tawait expect(doFlatMap()).resolves.toStrictEqual(defaultExpect);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"tap\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tlet sawTap = false;\n\t\t\tawait expect(\n\t\t\t\ttokenFunPromise.tap((val) => {\n\t\t\t\t\texpect(val).toBe(true);\n\t\t\t\t\tsawTap = true;\n\t\t\t\t\treturn false;\n\t\t\t\t})\n\t\t\t).resolves.toBe(true);\n\t\t\texpect(sawTap).toBe(true);\n\t\t});\n\n\t\tit(\"rejects if it throws an exception\", async () => {\n\t\t\tlet sawTap = false;\n\t\t\tawait expect(\n\t\t\t\ttokenFunPromise.tap((val) => {\n\t\t\t\t\tsawTap = true;\n\t\t\t\t\tthrow \"BOOM!\";\n\t\t\t\t})\n\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t\texpect(sawTap).toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"fold\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tconst defaultValues = [1, 2, 3, 4, 5];\n\n\t\t\t\tfunction doFold(\n\t\t\t\t\tvalues = defaultValues,\n\t\t\t\t\tinitialValue = 0,\n\t\t\t\t\taccumulator = (a, b) => a + b\n\t\t\t\t) {\n\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\treturn FunPromise.fold(values, initialValue, accumulator);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FunPromise.resolve(values).fold(initialValue, accumulator);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tit(\"basically works\", async () => {\n\t\t\t\t\tconst values = [1, 2, 3, 4, 5];\n\t\t\t\t\tawait expect(doFold()).resolves.toBe(1 + 2 + 3 + 4 + 5);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"tapCatch\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tlet sawTapCatch = false;\n\t\t\tawait expect(\n\t\t\t\tFunPromise.reject(\"BOOM!\").tapCatch((e) => {\n\t\t\t\t\tsawTapCatch = true;\n\t\t\t\t\texpect(e).toBe(\"BOOM!\");\n\t\t\t\t\treturn \"BANG!\";\n\t\t\t\t})\n\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t\texpect(sawTapCatch).toBe(true);\n\t\t});\n\n\t\tit(\"nests explosions\", async () => {\n\t\t\tlet sawCatch = false;\n\t\t\tconst err1 = new Error(\"BOOM!\");\n\t\t\tconst err2 = new Error(\"BANG!\");\n\t\t\tawait expect(\n\t\t\t\tFunPromise.reject(err1)\n\t\t\t\t\t.tapCatch((e) => {\n\t\t\t\t\t\tthrow err2;\n\t\t\t\t\t})\n\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\tsawCatch = true;\n\t\t\t\t\t\texpect(e).toBeInstanceOf(NestedError);\n\t\t\t\t\t\texpect(e).toHaveProperty(\"message\", \"Error thrown in 'tapCatch'\");\n\t\t\t\t\t\texpect(e).toHaveProperty(\"innerErrors\");\n\t\t\t\t\t\texpect(e.innerErrors).toHaveLength(2);\n\t\t\t\t\t\texpect(e.innerErrors).toEqual([err1, err2]);\n\t\t\t\t\t\treturn \"Hello!\";\n\t\t\t\t\t})\n\t\t\t).resolves.toBe(\"Hello!\");\n\t\t\texpect(sawCatch).toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"tapEach\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst values = [\n\t\t\t\t123,\n\t\t\t\tPromise.resolve(true),\n\t\t\t\t\"Hello, Dolly!\",\n\t\t\t\tnull,\n\t\t\t\tundefined,\n\t\t\t];\n\t\t\tconst funPromise = FunPromise.resolve(values);\n\t\t\tlet count = 0;\n\t\t\tawait expect(\n\t\t\t\tfunPromise.tapEach(() => {\n\t\t\t\t\tcount++;\n\t\t\t\t})\n\t\t\t).resolves.toEqual(await Promise.all(values));\n\t\t\texpect(count).toBe(values.length);\n\t\t});\n\t});\n\n\tdescribe(\"wrapError\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst reason = \"BOOM!\";\n\t\t\tawait expect(\n\t\t\t\tFunPromise.reject(reason).wrapError(\"BANG!\")\n\t\t\t).rejects.toHaveProperty(\"message\", \"BANG!\");\n\t\t\tawait expect(\n\t\t\t\tFunPromise.reject(reason).wrapError(\"BANG!\")\n\t\t\t).rejects.toHaveProperty(\"innerError\");\n\t\t});\n\t});\n\n\tdescribe(\"wrapErrors\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst err1 = new Error(\"BOOM!\");\n\t\t\tconst err2 = new Error(\"BANG!\");\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve([Promise.reject(err1), Promise.reject(err2)])\n\t\t\t\t\t.wrapErrors(\"ERRORS!\")\n\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\texpect(e).toBeInstanceOf(NestedError);\n\t\t\t\t\t\texpect(e).toHaveProperty(\"message\", \"ERRORS!\");\n\t\t\t\t\t\texpect(e.innerErrors).toHaveLength(2);\n\t\t\t\t\t\texpect(e.innerErrors).toEqual([err1, err2]);\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t})\n\t\t\t).resolves.toBe(true);\n\t\t});\n\n\t\tit(\"doesn't do anything if there is no error\", async () => {\n\t\t\tconst values = [1, 2, 3, true, false, null, undefined];\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve(values).wrapErrors(\"ERRORS!\")\n\t\t\t).resolves.toEqual(values);\n\t\t});\n\t});\n\n\tdescribe(\"cancellation\", () => {\n\t\tit(\"initially reports not cancelled\", () => {\n\t\t\texpect(FunPromise.resolve(true).isCancelled()).toBe(false);\n\t\t});\n\n\t\tit(\"reports cancelled after cancel is called\", () => {\n\t\t\texpect(FunPromise.resolve(true).cancel().isCancelled()).toBe(true);\n\t\t});\n\n\t\tit(\"prevents resolution after cancellation\", () => {\n\t\t\tlet resolver;\n\t\t\tlet sawResolve = false;\n\t\t\tconst promise = new Promise((resolve) => {\n\t\t\t\tresolver = resolve;\n\t\t\t}).then(() => {\n\t\t\t\tsawResolve = true;\n\t\t\t});\n\t\t\texpect(resolver).not.toBeNil();\n\t\t\tconst cancelled = new FunPromise(promise).cancel();\n\t\t\tresolver(true);\n\t\t\texpect(sawResolve).toBe(false);\n\t\t});\n\n\t\tit(\"prevents rejection after cancellation\", () => {\n\t\t\tlet rejector;\n\t\t\tlet sawReject = false;\n\t\t\tconst promise = new Promise((resolve, reject) => {\n\t\t\t\trejector = reject;\n\t\t\t}).catch(() => {\n\t\t\t\tsawReject = true;\n\t\t\t});\n\t\t\texpect(rejector).not.toBeNil();\n\t\t\tconst cancelled = new FunPromise(promise).cancel();\n\t\t\trejector(\"BOOM!\");\n\t\t\texpect(sawReject).toBe(false);\n\t\t});\n\n\t\tit(\"prevents rejection when resolving throws after cancellation\", () => {\n\t\t\tlet resolver;\n\t\t\tlet sawThen = true;\n\t\t\tlet sawCatch = false;\n\t\t\tlet doCancel;\n\t\t\tconst promise = new Promise((resolve) => {\n\t\t\t\tresolver = resolve;\n\t\t\t}).then(() => {\n\t\t\t\tsawThen = true;\n\t\t\t\tdoCancel();\n\t\t\t\tthrow \"BOOM!\";\n\t\t\t});\n\t\t\texpect(resolver).not.toBeNil();\n\t\t\tconst toCancel = new FunPromise(promise);\n\t\t\tdoCancel = () => {\n\t\t\t\ttoCancel.cancel();\n\t\t\t};\n\t\t\ttoCancel.catch((e) => {\n\t\t\t\tsawCatch = true;\n\t\t\t});\n\t\t\tresolver(true);\n\t\t\texpect(sawThen).toBe(true);\n\t\t\texpect(sawCatch).toBe(false);\n\t\t});\n\t});\n\n\tdescribe(\"simplifyAll\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tawait expect(FunPromise.resolve(\"Hello\").simplifyAll()).resolves.toEqual([\n\t\t\t\t\"H\",\n\t\t\t\t\"e\",\n\t\t\t\t\"l\",\n\t\t\t\t\"l\",\n\t\t\t\t\"o\",\n\t\t\t]);\n\t\t});\n\n\t\tit(\"doesn't explode on an empty list\", async () => {\n\t\t\tawait expect(FunPromise.resolve([]).simplifyAll()).resolves.toEqual([]);\n\t\t});\n\t});\n\n\tdescribe(\"settle\", () => {\n\t\tit(\"basically works for rejections\", async () => {\n\t\t\tawait expect(FunPromise.reject(\"BOOM!\").settle()).resolves.toHaveProperty(\n\t\t\t\t\"reason\",\n\t\t\t\t\"BOOM!\"\n\t\t\t);\n\t\t});\n\n\t\tit(\"basically works for fulfillments\", async () => {\n\t\t\tawait expect(FunPromise.resolve(true).settle()).resolves.toHaveProperty(\n\t\t\t\t\"value\",\n\t\t\t\ttrue\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\"settleAll\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tfunction doSettleAll(values) {\n\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\treturn FunPromise.settleAll(values);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FunPromise.resolve(values).settleAll();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tit(\"basically works\", async () => {\n\t\t\t\t\tconst values = [\n\t\t\t\t\t\t{ in: Promise.resolve(true), out: new Fulfillment(true) },\n\t\t\t\t\t\t{ in: Promise.reject(\"BOOM!\"), out: new Rejection(\"BOOM!\") },\n\t\t\t\t\t\t{ in: Promise.reject(null), out: new Rejection(null) },\n\t\t\t\t\t\t{ in: null, out: new Fulfillment(null) },\n\t\t\t\t\t];\n\t\t\t\t\tawait expect(doSettleAll(_.map(values, \"in\"))).resolves.toEqual(\n\t\t\t\t\t\t_.map(values, \"out\")\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\tit(\"doesn't explode on empty lists\", async () => {\n\t\t\t\t\tawait expect(doSettleAll([])).resolves.toEqual([]);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n});\n"]} \ No newline at end of file diff --git a/dist/es6/esm/src/types.test.d.ts b/dist/es6/esm/src/types.test.d.ts deleted file mode 100644 index 961011c..0000000 --- a/dist/es6/esm/src/types.test.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export {}; -//# sourceMappingURL=types.test.d.ts.map \ No newline at end of file diff --git a/dist/es6/esm/src/types.test.d.ts.map b/dist/es6/esm/src/types.test.d.ts.map deleted file mode 100644 index 87481cd..0000000 --- a/dist/es6/esm/src/types.test.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.test.d.ts","sourceRoot":"","sources":["../../../../src/types.test.js"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/es6/esm/src/types.test.js b/dist/es6/esm/src/types.test.js deleted file mode 100644 index edd56e7..0000000 --- a/dist/es6/esm/src/types.test.js +++ /dev/null @@ -1,30 +0,0 @@ -/** @format */ -import { Fulfillment, Rejection } from "./types"; -import _ from "lodash"; -describe("Fulfillment", () => { - _.forEach([true, { foo: true }], (arg) => { - describe(`when passed the ${typeof arg} argument '${JSON.stringify(arg)}'`, () => { - const fulfillment = new Fulfillment(arg); - it("exposes the argument on the 'value' property", () => { - expect(fulfillment).toHaveProperty("value", arg); - }); - it("has a 'status' property of 'fulfilled'", () => { - expect(fulfillment).toHaveProperty("status", "fulfilled"); - }); - }); - }); -}); -describe("Rejection", () => { - _.forEach(["BOOM!", new Error("BOOM!")], (arg) => { - describe(`when passed the ${typeof arg} argument: '${arg}'`, () => { - const rejection = new Rejection(arg); - it("returns the argument in the 'reason' property", () => { - expect(rejection).toHaveProperty("reason", arg); - }); - it("has a 'status' property whose value is 'rejected'", () => { - expect(rejection).toHaveProperty("status", "rejected"); - }); - }); - }); -}); -//# sourceMappingURL=types.test.js.map \ No newline at end of file diff --git a/dist/es6/esm/src/types.test.js.map b/dist/es6/esm/src/types.test.js.map deleted file mode 100644 index 69a3834..0000000 --- a/dist/es6/esm/src/types.test.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.test.js","sourceRoot":"","sources":["../../../../src/types.test.js"],"names":[],"mappings":"AAAA,cAAc;AAEd,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC5B,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;QACxC,QAAQ,CAAC,mBAAmB,OAAO,GAAG,cAAc,IAAI,CAAC,SAAS,CACjE,GAAG,CACH,GAAG,EAAE,GAAG,EAAE;YACV,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;YAEzC,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;gBACvD,MAAM,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;gBACjD,MAAM,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IAC1B,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;QAChD,QAAQ,CAAC,mBAAmB,OAAO,GAAG,eAAe,GAAG,GAAG,EAAE,GAAG,EAAE;YACjE,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;YAErC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;gBACxD,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;gBAC5D,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["/** @format */\n\nimport { Fulfillment, Rejection } from \"./types\";\nimport _ from \"lodash\";\n\ndescribe(\"Fulfillment\", () => {\n\t_.forEach([true, { foo: true }], (arg) => {\n\t\tdescribe(`when passed the ${typeof arg} argument '${JSON.stringify(\n\t\t\targ\n\t\t)}'`, () => {\n\t\t\tconst fulfillment = new Fulfillment(arg);\n\n\t\t\tit(\"exposes the argument on the 'value' property\", () => {\n\t\t\t\texpect(fulfillment).toHaveProperty(\"value\", arg);\n\t\t\t});\n\n\t\t\tit(\"has a 'status' property of 'fulfilled'\", () => {\n\t\t\t\texpect(fulfillment).toHaveProperty(\"status\", \"fulfilled\");\n\t\t\t});\n\t\t});\n\t});\n});\n\ndescribe(\"Rejection\", () => {\n\t_.forEach([\"BOOM!\", new Error(\"BOOM!\")], (arg) => {\n\t\tdescribe(`when passed the ${typeof arg} argument: '${arg}'`, () => {\n\t\t\tconst rejection = new Rejection(arg);\n\n\t\t\tit(\"returns the argument in the 'reason' property\", () => {\n\t\t\t\texpect(rejection).toHaveProperty(\"reason\", arg);\n\t\t\t});\n\n\t\t\tit(\"has a 'status' property whose value is 'rejected'\", () => {\n\t\t\t\texpect(rejection).toHaveProperty(\"status\", \"rejected\");\n\t\t\t});\n\t\t});\n\t});\n});\n"]} \ No newline at end of file diff --git a/dist/es6/umd/src/deferral.test.d.ts b/dist/es6/umd/src/deferral.test.d.ts deleted file mode 100644 index 4c655ce..0000000 --- a/dist/es6/umd/src/deferral.test.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export {}; -//# sourceMappingURL=deferral.test.d.ts.map \ No newline at end of file diff --git a/dist/es6/umd/src/deferral.test.d.ts.map b/dist/es6/umd/src/deferral.test.d.ts.map deleted file mode 100644 index 1e43120..0000000 --- a/dist/es6/umd/src/deferral.test.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"deferral.test.d.ts","sourceRoot":"","sources":["../../../../src/deferral.test.js"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/es6/umd/src/deferral.test.js b/dist/es6/umd/src/deferral.test.js deleted file mode 100644 index c1ff4c5..0000000 --- a/dist/es6/umd/src/deferral.test.js +++ /dev/null @@ -1,54 +0,0 @@ -/** @format */ -(function (factory) { - if (typeof module === "object" && typeof module.exports === "object") { - var v = factory(require, exports); - if (v !== undefined) module.exports = v; - } - else if (typeof define === "function" && define.amd) { - define(["require", "exports", "tslib", "./fun-promise", "./deferral", "./types", "lodash"], factory); - } -})(function (require, exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - const tslib_1 = require("tslib"); - const fun_promise_1 = require("./fun-promise"); - const deferral_1 = require("./deferral"); - require("./types"); - require("lodash"); - describe("Deferral", () => { - it("can be constructed", () => { - const deferral = new deferral_1.default(); - expect(deferral).not.toBeNil(); - }); - describe("promise", () => { - it("is a FunPromise", () => { - const deferral = new deferral_1.default(); - expect(deferral.promise).toBeInstanceOf(fun_promise_1.default); - }); - }); - describe("resolve", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const deferral = new deferral_1.default(); - deferral.resolve(true); - yield expect(deferral.resolve(true)).resolves.toBe(true); - })); - it("does not change resolved value if called multiple times", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const deferral = new deferral_1.default(); - yield expect(deferral.resolve(true)).resolves.toBe(true); - yield expect(deferral.resolve(false)).resolves.toBe(true); - })); - }); - describe("reject", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const deferral = new deferral_1.default(); - yield expect(deferral.reject(new Error("BOOM!"))).rejects.toHaveProperty("message", "BOOM!"); - })); - it("does not change reason if called multiple times", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const deferral = new deferral_1.default(); - yield expect(deferral.reject(new Error("BOOM!"))).rejects.toHaveProperty("message", "BOOM!"); - yield expect(deferral.reject(new Error("BANG!"))).rejects.toHaveProperty("message", "BOOM!"); - })); - }); - }); -}); -//# sourceMappingURL=deferral.test.js.map \ No newline at end of file diff --git a/dist/es6/umd/src/deferral.test.js.map b/dist/es6/umd/src/deferral.test.js.map deleted file mode 100644 index 4caf052..0000000 --- a/dist/es6/umd/src/deferral.test.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"deferral.test.js","sourceRoot":"","sources":["../../../../src/deferral.test.js"],"names":[],"mappings":"AAAA,cAAc;;;;;;;;;;;;;IAEd,+CAAuC;IACvC,yCAAkC;IAClC,mBAAuC;IACvC,kBAAuB;IAEvB,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAC7B,MAAM,QAAQ,GAAG,IAAI,kBAAQ,EAAE,CAAC;YAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;YACxB,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;gBAC1B,MAAM,QAAQ,GAAG,IAAI,kBAAQ,EAAE,CAAC;gBAChC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,qBAAU,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;YACxB,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;gBAChC,MAAM,QAAQ,GAAG,IAAI,kBAAQ,EAAE,CAAC;gBAChC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvB,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1D,CAAC,CAAA,CAAC,CAAC;YAEH,EAAE,CAAC,yDAAyD,EAAE,GAAS,EAAE;gBACxE,MAAM,QAAQ,GAAG,IAAI,kBAAQ,EAAE,CAAC;gBAChC,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzD,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3D,CAAC,CAAA,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACvB,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;gBAChC,MAAM,QAAQ,GAAG,IAAI,kBAAQ,EAAE,CAAC;gBAChC,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CACvE,SAAS,EACT,OAAO,CACP,CAAC;YACH,CAAC,CAAA,CAAC,CAAC;YAEH,EAAE,CAAC,iDAAiD,EAAE,GAAS,EAAE;gBAChE,MAAM,QAAQ,GAAG,IAAI,kBAAQ,EAAE,CAAC;gBAChC,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CACvE,SAAS,EACT,OAAO,CACP,CAAC;gBACF,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CACvE,SAAS,EACT,OAAO,CACP,CAAC;YACH,CAAC,CAAA,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC","sourcesContent":["/** @format */\n\nimport FunPromise from \"./fun-promise\";\nimport Deferral from \"./deferral\";\nimport { PromiseState } from \"./types\";\nimport _ from \"lodash\";\n\ndescribe(\"Deferral\", () => {\n\tit(\"can be constructed\", () => {\n\t\tconst deferral = new Deferral();\n\t\texpect(deferral).not.toBeNil();\n\t});\n\n\tdescribe(\"promise\", () => {\n\t\tit(\"is a FunPromise\", () => {\n\t\t\tconst deferral = new Deferral();\n\t\t\texpect(deferral.promise).toBeInstanceOf(FunPromise);\n\t\t});\n\t});\n\n\tdescribe(\"resolve\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst deferral = new Deferral();\n\t\t\tdeferral.resolve(true);\n\t\t\tawait expect(deferral.resolve(true)).resolves.toBe(true);\n\t\t});\n\n\t\tit(\"does not change resolved value if called multiple times\", async () => {\n\t\t\tconst deferral = new Deferral();\n\t\t\tawait expect(deferral.resolve(true)).resolves.toBe(true);\n\t\t\tawait expect(deferral.resolve(false)).resolves.toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"reject\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst deferral = new Deferral();\n\t\t\tawait expect(deferral.reject(new Error(\"BOOM!\"))).rejects.toHaveProperty(\n\t\t\t\t\"message\",\n\t\t\t\t\"BOOM!\"\n\t\t\t);\n\t\t});\n\n\t\tit(\"does not change reason if called multiple times\", async () => {\n\t\t\tconst deferral = new Deferral();\n\t\t\tawait expect(deferral.reject(new Error(\"BOOM!\"))).rejects.toHaveProperty(\n\t\t\t\t\"message\",\n\t\t\t\t\"BOOM!\"\n\t\t\t);\n\t\t\tawait expect(deferral.reject(new Error(\"BANG!\"))).rejects.toHaveProperty(\n\t\t\t\t\"message\",\n\t\t\t\t\"BOOM!\"\n\t\t\t);\n\t\t});\n\t});\n});\n"]} \ No newline at end of file diff --git a/dist/es6/umd/src/fun-promise.d.ts b/dist/es6/umd/src/fun-promise.d.ts index 23424f3..fbe5861 100644 --- a/dist/es6/umd/src/fun-promise.d.ts +++ b/dist/es6/umd/src/fun-promise.d.ts @@ -26,7 +26,7 @@ export default class FunPromise implements Promise { /** * Constructor, which takes the promise to wrap. */ - constructor(wrapped: Promise); + constructor(wrapped: Promisable); /** * Takes a value (or a promise of a value) and returns a promise wrapping * it. @@ -298,6 +298,18 @@ export default class FunPromise implements Promise { * Equivalent to `FunPromise.resolve(values).fold(initialValue, accumulator)`. */ static fold(values: PromisableIterable, initialValue: T2, accumulator: (memo: T2, it: T) => Promisable): FunPromise; + /** + * Given an initial array of values and an accumulator function, apply the accumlator function to each element of the promise's resolved value, + * passing in the current array of values and the resolved item. Returns an array with the concatenated results of the accumulation. + * If any of the promise's values are rejected, the entire operation will be rejected. + * + * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve. + */ + flatFold>(initialValue: PromisableIterable, accumulator: (memo: T2[], it: Item) => PromisableIterable): FunPromise; + /** + * Equivalent to `FunPromise.resolve(values).flatFold(initialValue, accumulator)`. + */ + static flatFold(values: PromisableIterable, initialValue: PromisableIterable, accumulator: (memo: T2[], it: T) => PromisableIterable): FunPromise; /** * Handles rejections like 'catch', but wraps them in a [[`NestedError`]] with the given message. */ diff --git a/dist/es6/umd/src/fun-promise.d.ts.map b/dist/es6/umd/src/fun-promise.d.ts.map index d4b353b..9a8f3ba 100644 --- a/dist/es6/umd/src/fun-promise.d.ts.map +++ b/dist/es6/umd/src/fun-promise.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"fun-promise.d.ts","sourceRoot":"","sources":["../../../../src/fun-promise.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fun-promise.d.ts","sourceRoot":"","sources":["../../../../src/fun-promise.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/es6/umd/src/fun-promise.js b/dist/es6/umd/src/fun-promise.js index 9825fc3..7e7ab35 100644 --- a/dist/es6/umd/src/fun-promise.js +++ b/dist/es6/umd/src/fun-promise.js @@ -36,7 +36,7 @@ const map_1 = require("lodash/map"); const negate_1 = require("lodash/negate"); require("lodash/noop"); - require("lodash/toArray"); + const toArray_1 = require("lodash/toArray"); // import Debug from "debug"; // const debug = Debug("fun-promises"); /** @@ -195,9 +195,8 @@ * as `true`. The items are not resolved sequentially unless you also pass a second argument as `true`. */ arrayify(resolveValues = false, sequentialResolution = false) { - const aryPromise = this.then((iter) => [ - ...iter, - ]); + const aryPromise = this.then((iterPromise) => tslib_1.__awaiter(this, void 0, void 0, function* () { return toArray_1.default(yield iterPromise); }) // Just to be sure we're all de-promise'd + ); if (resolveValues) { if (sequentialResolution) { return aryPromise.then((ary) => tslib_1.__awaiter(this, void 0, void 0, function* () { @@ -414,6 +413,29 @@ static fold(values, initialValue, accumulator) { return FunPromise.resolve(values).fold(initialValue, accumulator); } + /** + * Given an initial array of values and an accumulator function, apply the accumlator function to each element of the promise's resolved value, + * passing in the current array of values and the resolved item. Returns an array with the concatenated results of the accumulation. + * If any of the promise's values are rejected, the entire operation will be rejected. + * + * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve. + */ + flatFold(initialValue, accumulator) { + return this.arrayify().then((ary) => tslib_1.__awaiter(this, void 0, void 0, function* () { + let memoPromise = FunPromise.resolve(initialValue).arrayify(); + yield Promise.all(map_1.default(ary, (promisableValue) => tslib_1.__awaiter(this, void 0, void 0, function* () { + const value = yield promisableValue; + memoPromise = memoPromise.then((memo) => tslib_1.__awaiter(this, void 0, void 0, function* () { return memo.concat(toArray_1.default(yield accumulator(memo, value))); })); + }))); + return memoPromise; + })); + } + /** + * Equivalent to `FunPromise.resolve(values).flatFold(initialValue, accumulator)`. + */ + static flatFold(values, initialValue, accumulator) { + return FunPromise.resolve(values).flatFold(initialValue, accumulator); + } /** * Handles rejections like 'catch', but wraps them in a [[`NestedError`]] with the given message. */ diff --git a/dist/es6/umd/src/fun-promise.js.map b/dist/es6/umd/src/fun-promise.js.map index 60857c2..fcbd433 100644 --- a/dist/es6/umd/src/fun-promise.js.map +++ b/dist/es6/umd/src/fun-promise.js.map @@ -1 +1 @@ -{"version":3,"file":"fun-promise.js","sourceRoot":"","sources":["../../../../src/fun-promise.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @format\n */\n\n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n\nimport {\n\tPromisable,\n\tPromisableIterable,\n\tUnpromise,\n\tItem,\n\tSettlement,\n\tFulfillment,\n\tRejection,\n} from \"./types\";\nimport { NestedError } from \"ts-nested-error\";\n\nimport _defer from \"lodash/defer\";\nimport _delay from \"lodash/delay\";\nimport _filter from \"lodash/filter\";\nimport _flatten from \"lodash/flatten\";\nimport _identity from \"lodash/identity\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _isError from \"lodash/isError\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\nimport _map from \"lodash/map\";\nimport _negate from \"lodash/negate\";\nimport _noop from \"lodash/noop\";\nimport _toArray from \"lodash/toArray\";\n\n// import Debug from \"debug\";\n// const debug = Debug(\"fun-promises\");\n\n/**\n * The class that you should use instead of `Promise`. It implements the `Promise` API, so it should be a drop-in replacement.\n */\nexport default class FunPromise implements Promise {\n\t/**\n\t * Whether or not this FunPromise has been cancelled.\n\t */\n\tprivate _isCancelled: boolean = false;\n\n\t/**\n\t * The promise that was wrapped after attaching our custom logic.\n\t */\n\tprotected readonly wrapped: Promise;\n\n\t/**\n\t * Constructor, which takes the promise to wrap.\n\t */\n\tconstructor(wrapped: Promise) {\n\t\tthis.wrapped = new Promise(async (resolve, reject) => {\n\t\t\tlet resolved = null;\n\t\t\ttry {\n\t\t\t\tresolved = await wrapped;\n\t\t\t} catch (e) {\n\t\t\t\tif (this._isCancelled) return;\n\t\t\t\treject(e);\n\t\t\t}\n\t\t\tif (this._isCancelled) return;\n\t\t\tresolve(resolved);\n\t\t});\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise wrapping\n\t * it.\n\t */\n\tstatic resolve(value?: Promisable): FunPromise {\n\t\tif (value instanceof FunPromise) {\n\t\t\treturn value as FunPromise;\n\t\t} else if (value instanceof Promise) {\n\t\t\treturn new FunPromise(value);\n\t\t} else {\n\t\t\treturn new FunPromise(new Promise((resolve) => resolve(value)));\n\t\t}\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and resolves to the new value,\n\t * disregarding any previous resolution value.\n\t */\n\tresolve(value?: Promisable): FunPromise {\n\t\treturn new FunPromise(this.wrapped.then(() => value));\n\t}\n\n\t/**\n\t * An alias for `resolve` provided for consistency with the instance `return` method.\n\t *\n\t * @deprecated Use `resolve` instead.\n\t */\n\tstatic return(value?: Promisable): FunPromise {\n\t\treturn FunPromise.resolve(value);\n\t}\n\n\t/**\n\t * An alias for `resolve` provided for compatibility with [the Bluebird API|http://bluebirdjs.com/docs/api/return.html].\n\t *\n\t * @deprecated Use `resolve` instead.\n\t */\n\treturn(value?: Promisable): FunPromise {\n\t\treturn this.resolve(value);\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise rejecting\n\t * with that value, after unwrapping as many layers of `PromiseLike`\n\t * wrappers as necessary.\n\t */\n\tstatic reject(value?: unknown): FunPromise {\n\t\treturn new FunPromise(Promise.reject(value));\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise rejecting\n\t * with that value, after unwrapping as many layers of `PromiseLike`\n\t * wrappers as necessary. This disregards any existing status.\n\t */\n\treject(value?: unknown): FunPromise {\n\t\treturn FunPromise.reject(value);\n\t}\n\n\t/**\n\t * Attaches callbacks for the resolution and/or rejection of the Promise.\n\t * @param onfulfilled The optional callback to execute when the Promise is resolved.\n\t * @param onrejected The optional callback to execute when the Promise is rejected. If provided, the result of this callback is the new resolution value, and this promise is resolved, not rejected.\n\t * @returns A Promise for the completion of which ever callback is executed.\n\t */\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable\n\t): FunPromise;\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable,\n\t\tonrejected: (reason: unknown) => Promisable\n\t): FunPromise;\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable,\n\t\tonrejected?: (reason: unknown) => Promisable\n\t): FunPromise {\n\t\tif (_isNil(onrejected)) {\n\t\t\treturn new FunPromise(this.wrapped.then(onfulfilled));\n\t\t} else {\n\t\t\treturn new FunPromise(this.wrapped.then(onfulfilled, onrejected));\n\t\t}\n\t}\n\n\t/**\n\t * Attaches a callback for only the rejection of the Promise. If the callback throws, then throws a [[`NestedError`]] with\n\t * both the original rejection reason and the new thrown value.\n\t *\n\t * @param onrejected The callback to execute when the Promise is rejected.\n\t * @returns A Promise for the completion of the callback.\n\t */\n\tcatch(\n\t\tonrejected: (reason: unknown) => Promisable = _identity\n\t): FunPromise {\n\t\treturn new FunPromise(this.wrapped.catch(onrejected));\n\t}\n\n\t/**\n\t * Creates a Promise that is resolved with an array of results when all of the\n\t * provided Promises resolve, or rejected when any Promise is rejected.\n\t * @param values An array of Promises.\n\t * @returns A new Promise.\n\t */\n\tstatic all(values: PromisableIterable): FunPromise;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable, Promisable, Promisable]\n\t): FunPromise<[T1, T2, T3, T4]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable, Promisable]\n\t): FunPromise<[T1, T2, T3]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable]\n\t): FunPromise<[T1, T2]>;\n\tstatic all(values: [Promisable]): FunPromise<[T1]>;\n\tstatic all(...values: any[]): any {\n\t\treturn FunPromise.resolve(_flatten(values)).all();\n\t}\n\tall(): FunPromise[]> {\n\t\treturn this.arrayify(true);\n\t}\n\n\t/**\n\t * Given a function (or a promise of a function) that returns a value (or a promise of a value),\n\t * create a promise that executes the function and returns the value. If executing the function\n\t * throws an exception, then that exception becomes the rejection of the promise.\n\t *\n\t * Any arguments after the first will be passed into the function when it is invoked. If they are\n\t * a `PromiseLike`, then they will be resolved and the resolution value will be passed into the\n\t * function instead.\n\t *\n\t * This function is really useful in the following cases:\n\t * 1. to [avoid releasing Zalgo](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n\t * 2. when you want to create a `FunPromise` based on an `async` function\n\t * 3. when you want to create a `FunPromise` based on a normal function\n\t */\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6,\n\t\t\t\targ7: Arg7,\n\t\t\t\targ8: Arg8\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable,\n\t\targ7: Promisable,\n\t\targ8: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6,\n\t\t\t\targ7: Arg7\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable,\n\t\targ7: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(arg1: Arg1, arg2: Arg2, arg3: Arg3, arg4: Arg4) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1, arg2: Arg2, arg3: Arg3) => Promisable>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1, arg2: Arg2) => Promisable>,\n\t\targ1: Promisable,\n\t\targ2: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1) => Promisable>,\n\t\targ1: Promisable\n\t): FunPromise;\n\tstatic try(source: Promisable<() => Promisable>): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(...args: ArgT[]) => Promisable>,\n\t\t...args: ArgT[]\n\t): FunPromise {\n\t\treturn FunPromise.resolve(source).then((f) => {\n\t\t\tif (_isEmpty(args)) {\n\t\t\t\treturn f();\n\t\t\t} else {\n\t\t\t\treturn Promise.all(args).then((realArgs) => f(...realArgs));\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Unwraps layers of `PromiseLike` wrappers as necessary.\n\t *\n\t * This behavior is actually part of the Promise/A+ spec, but the type system struggles with that fact,\n\t * so this method is a workaround.\n\t *\n\t * In a future version of this library, `FunPromise` will extend `Promise>` instead of\n\t * just `Promise`, which will render this method irrelevant. Unfortunately, Typescript's type system\n\t * doesn't seem capable of handling that reality quite yet, so this is what we get.\n\t */\n\tsimplify(): FunPromise> {\n\t\treturn (this as unknown) as FunPromise>;\n\t}\n\n\t/**\n\t * For each element of the resolved iterable, unwraps layers of `PromiseLike` wrappers as necessary.\n\t */\n\tsimplifyAll(): FunPromise>[]> {\n\t\treturn this.arrayify().map((it) => FunPromise.resolve(it).simplify());\n\t}\n\n\t/**\n\t * Coerces the resolve value (which must be an `Iterable`) into an array. The `Iterable` requirement\n\t * comes from the `Item` return value: `Item` is equivalent to `never` if `T` is not an `Iterable`.\n\t *\n\t * Note that this function does *NOT* resolve the items within the array unless you pass the first argument\n\t * as `true`. The items are not resolved sequentially unless you also pass a second argument as `true`.\n\t */\n\tarrayify(\n\t\tresolveValues: boolean = false,\n\t\tsequentialResolution: boolean = false\n\t): FunPromise[]> {\n\t\tconst aryPromise: FunPromise[]> = this.then((iter) => [\n\t\t\t...((iter as unknown) as Iterable>),\n\t\t]);\n\t\tif (resolveValues) {\n\t\t\tif (sequentialResolution) {\n\t\t\t\treturn aryPromise.then(async (ary) => {\n\t\t\t\t\tconst results = [];\n\t\t\t\t\twhile (!_isEmpty(ary)) {\n\t\t\t\t\t\tresults.push(await ary.shift());\n\t\t\t\t\t}\n\t\t\t\t\treturn results;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn aryPromise.then((ary) => Promise.all(ary));\n\t\t\t}\n\t\t} else {\n\t\t\treturn aryPromise;\n\t\t}\n\t}\n\n\t/**\n\t * Given a mapping function, apply the mapping function to each element of the promise's resolved value,\n\t * and return an array with the results of the mapping. If any of the mapping results are rejected,\n\t * the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result correspond to the order of the elements in the promise's\n\t * resolved value. However, the resolution order is not guaranteed. For example, although the\n\t * output at index 0 will hold the mapping of the input element at index 0, it is not guaranteed that\n\t * the mapping of index 0 will be awaited before the mapping of index 1.\n\t */\n\tmap>(mapper: (it: Item) => Promisable): FunPromise {\n\t\tconst results = [];\n\t\treturn FunPromise.try(async () => {\n\t\t\tawait Promise.all(\n\t\t\t\t_map(await this.arrayify(), async (value, idx) => {\n\t\t\t\t\tresults[idx] = await mapper(await value);\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn results;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).map(mapper)`.\n\t */\n\tstatic map(\n\t\tvalues: PromisableIterable,\n\t\tmapper: (it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).map(mapper);\n\t}\n\n\t/**\n\t * Required to implement `Promise`, but you almost certainly don't care about it.\n\t *\n\t * All the same, it returns the string tag of the underlying promise.\n\t */\n\tget [Symbol.toStringTag]() {\n\t\treturn this.wrapped[Symbol.toStringTag];\n\t}\n\n\t/**\n\t * Executes the provided code whether the promise rejects or resolves.\n\t */\n\tfinally(): FunPromise;\n\tfinally(onfinally: () => void): FunPromise;\n\tfinally(onfinally?) {\n\t\tif (_isFunction(onfinally)) {\n\t\t\treturn new FunPromise(this.wrapped.finally(onfinally));\n\t\t} else {\n\t\t\treturn this;\n\t\t}\n\t}\n\n\t/**\n\t * Given a [[`PromisableIterable`]] whose values are nullary functions returning [[Promisable|`Promisable`]],\n\t * this executes all the functions simultaneously and returns the first whose return value passes the provided test.\n\t * The default test returns true if the value is not `null` or `undefined`.\n\t *\n\t * If no function resolves successfully, the last seen rejection is thrown. If some functions resolve but some reject,\n\t * and none of the resolved values pass the test, then the last seen rejection is thrown.\n\t *\n\t * If all the functions resolve but to a value but no value passes the test, then this rejects with an error saying as much.\n\t */\n\tstatic coalesce(\n\t\tfns: PromisableIterable<() => Promisable>,\n\t\ttest: (item: T) => Promisable = _negate(_isNil)\n\t): FunPromise {\n\t\tlet resolved = false;\n\t\tlet lastSeenReason: unknown = new Error(\"No values left after coalescing\");\n\t\tlet resolveValue;\n\t\treturn FunPromise.map(fns, (fn) =>\n\t\t\tFunPromise.try(fn)\n\t\t\t\t.then((result) => {\n\t\t\t\t\tif (resolved) return null;\n\t\t\t\t\treturn FunPromise.try(test, result).then((testResult) => {\n\t\t\t\t\t\tif (resolved) return null;\n\t\t\t\t\t\tif (testResult) {\n\t\t\t\t\t\t\tresolved = true;\n\t\t\t\t\t\t\tresolveValue = result;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch((e) => {\n\t\t\t\t\tlastSeenReason = e;\n\t\t\t\t})\n\t\t).then(() => {\n\t\t\tif (resolved) {\n\t\t\t\treturn resolveValue;\n\t\t\t} else {\n\t\t\t\tthrow lastSeenReason;\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Waits for `waitTimeMs` milliseconds before resolving. If `returnValue` is provided, resolves with the provided value.\n\t *\n\t * If `waitTimeMs` is less than or equal to zero, then it simply defers until the call stack is clear.\n\t */\n\tstatic delay(waitTimeMs: number): FunPromise;\n\tstatic delay(\n\t\twaitTimeMs: number,\n\t\treturnValue: Promisable\n\t): FunPromise;\n\tstatic delay(waitTimeMs, returnValue?) {\n\t\treturn FunPromise.resolve().delay(waitTimeMs, returnValue);\n\t}\n\n\t/**\n\t * Waits for `waitTimeMs` milliseconds before resolving. If `returnValue` is provided, resolves with the provided value.\n\t *\n\t * If `waitTimeMs` is less than or equal to zero, then it simply defers until the call stack is clear.\n\t */\n\tdelay(\n\t\twaitTimeMs: number,\n\t\treturnValue?: Promisable\n\t): FunPromise {\n\t\tif (waitTimeMs <= 0) {\n\t\t\treturn new FunPromise(\n\t\t\t\tnew Promise((resolve) => _defer(resolve, returnValue))\n\t\t\t);\n\t\t} else {\n\t\t\treturn new FunPromise(\n\t\t\t\tnew Promise((resolve) => _delay(resolve, waitTimeMs, returnValue))\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Given a filtering function, apply the filtering function to each element of the promise's resolved value,\n\t * and return an array with the values for which the filtering function returns `true`. If any of the filtering\n\t * results are rejected, the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result are stable with regard to the order of the elements in the promise's\n\t * resolved value. That is, if `X < Y` and `input[X]` and `input[Y]` are both in the input, and `input[X]` and\n\t * `input[Y]` both pass the filtering function, then the output index of `input[X]` will be less than the output\n\t * index of `input[Y]`. However, the resolution order is not guaranteed: that is, `input[Y]` may be resolved and\n\t * tested before `input[X]` even though `input[X]` has a lower output index than `input[Y]`.\n\t */\n\tfilter(test: (it: Item) => Promisable): FunPromise[]> {\n\t\treturn this.arrayify().then(async (ary) => {\n\t\t\tconst results = await FunPromise.map(ary, async (it) => test(await it));\n\t\t\t// @ts-ignore\n\t\t\treturn _filter(ary, (it, idx) => results[idx]);\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(items).filter(test)`.\n\t */\n\tstatic filter(\n\t\titems: PromisableIterable,\n\t\ttest: (it: Item>) => Promisable\n\t): FunPromise>[]> {\n\t\treturn FunPromise.resolve(items).filter(test);\n\t}\n\n\t/**\n\t * Given a mapping function, apply the mapping function to each element of the promise's resolved value,\n\t * and return an array with the concatenated results of the mapping. If any of the mapping results are\n\t * rejected, the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result correspond to the order of the elements in the promise's\n\t * resolved value. However, the resolution order is not guaranteed.\n\t */\n\tflatMap>(\n\t\tmapper: (it: Item) => Promisable\n\t): FunPromise {\n\t\treturn this.arrayify().then(async (ary: Promisable>[]) => {\n\t\t\tconst promises: Array>> = _map(ary, async (value) =>\n\t\t\t\tmapper(await value)\n\t\t\t);\n\t\t\tconst resolved: T2[][] = await Promise.all(promises);\n\t\t\tconst flattened: T2[] = _flatten(resolved);\n\t\t\treturn flattened;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).flatMap(mapper)`.\n\t */\n\tstatic flatMap(\n\t\tvalues: PromisableIterable,\n\t\tmapper: (it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).flatMap(mapper);\n\t}\n\n\t/**\n\t * Access the resolved value without changing it. Note that if the callback rejects (ie: throws),\n\t * then the resulting promise will be rejected.\n\t */\n\ttap(callback: (val: T) => Promisable): FunPromise {\n\t\treturn this.then(async (val) => {\n\t\t\tawait callback(val);\n\t\t\treturn val;\n\t\t});\n\t}\n\n\t/**\n\t * Access the rejection reason without changing it. Note that if the callback itself rejects (ie: throws),\n\t * both rejection reasons will be capture in a single [[`NestedError`]].\n\t */\n\ttapCatch(callback: (reason: unknown) => Promisable): FunPromise {\n\t\treturn this.catch(async (err) => {\n\t\t\ttry {\n\t\t\t\tawait callback(err);\n\t\t\t} catch (err2) {\n\t\t\t\tthrow new NestedError(\"Error thrown in 'tapCatch'\", err, err2);\n\t\t\t}\n\t\t\tthrow err;\n\t\t});\n\t}\n\n\t/**\n\t * Access each of the resolved values of a resolved iterable without changing it. Note that if the callback rejects (ie: throws),\n\t * then the resulting promise will be rejected.\n\t */\n\ttapEach(callback: (val: Item) => Promisable): FunPromise[]> {\n\t\treturn this.arrayify(true).tap(async (ary) => {\n\t\t\tawait Promise.all(_map(ary, callback));\n\t\t});\n\t}\n\n\t/**\n\t * Given an initial value and an accumulator function, apply the accumlator function to each element of the promise's resolved value,\n\t * passing in the current value and the result. Returns an array with the result of the accumulation. If any of the promise's values are\n\t * rejected, the entire operation will be rejected.\n\t *\n\t * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve.\n\t */\n\tfold>(\n\t\tinitialValue: T2,\n\t\taccumulator: (memo: T2, it: Item) => Promisable\n\t): FunPromise {\n\t\treturn this.arrayify().then(async (ary: Promisable>[]) => {\n\t\t\tlet memoPromise = FunPromise.resolve(initialValue);\n\t\t\tawait Promise.all(\n\t\t\t\t_map(ary, async (promisableValue) => {\n\t\t\t\t\tconst value = await promisableValue;\n\t\t\t\t\tmemoPromise = memoPromise.then((memo) => accumulator(memo, value));\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn await memoPromise;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).fold(initialValue, accumulator)`.\n\t */\n\tstatic fold(\n\t\tvalues: PromisableIterable,\n\t\tinitialValue: T2,\n\t\taccumulator: (memo: T2, it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).fold(initialValue, accumulator);\n\t}\n\n\t/**\n\t * Handles rejections like 'catch', but wraps them in a [[`NestedError`]] with the given message.\n\t */\n\twrapError(msg: string): FunPromise {\n\t\treturn this.catch(NestedError.rethrow(msg));\n\t}\n\n\t/**\n\t * Resolves all the elements of the resolved value, which is assumed to be an `Iterable`. If any\n\t * of the values reject, all the reasons are collected and wrapped in a [[`NestedError`]].\n\t */\n\twrapErrors(msg: string): FunPromise[]> {\n\t\treturn this.arrayify().then(async (ary) => {\n\t\t\tlet errors = [];\n\t\t\tawait Promise.all(\n\t\t\t\t_map(ary, (val) => Promise.resolve(val).catch((e) => errors.push(e)))\n\t\t\t);\n\t\t\tif (_isEmpty(errors)) {\n\t\t\t\treturn ary;\n\t\t\t} else {\n\t\t\t\tthrow new NestedError(msg, ...errors);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Cancel the FunPromise. A cancelled FunPromise will silently disregard any resolution or rejection which occurs after the cancellation.\n\t */\n\tcancel() {\n\t\tthis._isCancelled = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns whether or not the promise has been cancelled. See `cancel()` for more details.\n\t */\n\tisCancelled() {\n\t\treturn this._isCancelled;\n\t}\n\n\t/**\n\t * Captures either fulfillment or rejection and resolves an object that describes the result.\n\t */\n\tsettle(): FunPromise> {\n\t\treturn new FunPromise(\n\t\t\tthis.wrapped.then(\n\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Assuming that the resolved value is an iterable, then for each element of the\n\t * array, captures either the fulfillment or rejection of that element.\n\t */\n\tsettleAll(): FunPromise>[]> {\n\t\treturn new FunPromise(\n\t\t\tthis.arrayify().wrapped.then((ary) =>\n\t\t\t\tPromise.all(\n\t\t\t\t\t_map(ary, (val) =>\n\t\t\t\t\t\tPromise.resolve(val).then(\n\t\t\t\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(iterable).settleAll()`.\n\t */\n\tstatic settleAll(\n\t\titerable: PromisableIterable\n\t): FunPromise[]> {\n\t\treturn new FunPromise(\n\t\t\tPromise.resolve(iterable).then((ary) =>\n\t\t\t\tPromise.all(\n\t\t\t\t\t_map(ary, (val) =>\n\t\t\t\t\t\tPromise.resolve(val).then(\n\t\t\t\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t}\n}\n"]} \ No newline at end of file +{"version":3,"file":"fun-promise.js","sourceRoot":"","sources":["../../../../src/fun-promise.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @format\n */\n\n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n\nimport {\n\tPromisable,\n\tPromisableIterable,\n\tUnpromise,\n\tItem,\n\tSettlement,\n\tFulfillment,\n\tRejection,\n} from \"./types\";\nimport { NestedError } from \"ts-nested-error\";\n\nimport _defer from \"lodash/defer\";\nimport _delay from \"lodash/delay\";\nimport _filter from \"lodash/filter\";\nimport _flatten from \"lodash/flatten\";\nimport _identity from \"lodash/identity\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _isError from \"lodash/isError\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\nimport _map from \"lodash/map\";\nimport _negate from \"lodash/negate\";\nimport _noop from \"lodash/noop\";\nimport _toArray from \"lodash/toArray\";\n\n// import Debug from \"debug\";\n// const debug = Debug(\"fun-promises\");\n\n/**\n * The class that you should use instead of `Promise`. It implements the `Promise` API, so it should be a drop-in replacement.\n */\nexport default class FunPromise implements Promise {\n\t/**\n\t * Whether or not this FunPromise has been cancelled.\n\t */\n\tprivate _isCancelled: boolean = false;\n\n\t/**\n\t * The promise that was wrapped after attaching our custom logic.\n\t */\n\tprotected readonly wrapped: Promise;\n\n\t/**\n\t * Constructor, which takes the promise to wrap.\n\t */\n\tconstructor(wrapped: Promisable) {\n\t\tthis.wrapped = new Promise(async (resolve, reject) => {\n\t\t\tlet resolved = null;\n\t\t\ttry {\n\t\t\t\tresolved = await wrapped;\n\t\t\t} catch (e) {\n\t\t\t\tif (this._isCancelled) return;\n\t\t\t\treject(e);\n\t\t\t}\n\t\t\tif (this._isCancelled) return;\n\t\t\tresolve(resolved);\n\t\t});\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise wrapping\n\t * it.\n\t */\n\tstatic resolve(value?: Promisable): FunPromise {\n\t\tif (value instanceof FunPromise) {\n\t\t\treturn value as FunPromise;\n\t\t} else if (value instanceof Promise) {\n\t\t\treturn new FunPromise(value);\n\t\t} else {\n\t\t\treturn new FunPromise(new Promise((resolve) => resolve(value)));\n\t\t}\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and resolves to the new value,\n\t * disregarding any previous resolution value.\n\t */\n\tresolve(value?: Promisable): FunPromise {\n\t\treturn new FunPromise(this.wrapped.then(() => value));\n\t}\n\n\t/**\n\t * An alias for `resolve` provided for consistency with the instance `return` method.\n\t *\n\t * @deprecated Use `resolve` instead.\n\t */\n\tstatic return(value?: Promisable): FunPromise {\n\t\treturn FunPromise.resolve(value);\n\t}\n\n\t/**\n\t * An alias for `resolve` provided for compatibility with [the Bluebird API|http://bluebirdjs.com/docs/api/return.html].\n\t *\n\t * @deprecated Use `resolve` instead.\n\t */\n\treturn(value?: Promisable): FunPromise {\n\t\treturn this.resolve(value);\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise rejecting\n\t * with that value, after unwrapping as many layers of `PromiseLike`\n\t * wrappers as necessary.\n\t */\n\tstatic reject(value?: unknown): FunPromise {\n\t\treturn new FunPromise(Promise.reject(value));\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise rejecting\n\t * with that value, after unwrapping as many layers of `PromiseLike`\n\t * wrappers as necessary. This disregards any existing status.\n\t */\n\treject(value?: unknown): FunPromise {\n\t\treturn FunPromise.reject(value);\n\t}\n\n\t/**\n\t * Attaches callbacks for the resolution and/or rejection of the Promise.\n\t * @param onfulfilled The optional callback to execute when the Promise is resolved.\n\t * @param onrejected The optional callback to execute when the Promise is rejected. If provided, the result of this callback is the new resolution value, and this promise is resolved, not rejected.\n\t * @returns A Promise for the completion of which ever callback is executed.\n\t */\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable\n\t): FunPromise;\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable,\n\t\tonrejected: (reason: unknown) => Promisable\n\t): FunPromise;\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable,\n\t\tonrejected?: (reason: unknown) => Promisable\n\t): FunPromise {\n\t\tif (_isNil(onrejected)) {\n\t\t\treturn new FunPromise(this.wrapped.then(onfulfilled));\n\t\t} else {\n\t\t\treturn new FunPromise(this.wrapped.then(onfulfilled, onrejected));\n\t\t}\n\t}\n\n\t/**\n\t * Attaches a callback for only the rejection of the Promise. If the callback throws, then throws a [[`NestedError`]] with\n\t * both the original rejection reason and the new thrown value.\n\t *\n\t * @param onrejected The callback to execute when the Promise is rejected.\n\t * @returns A Promise for the completion of the callback.\n\t */\n\tcatch(\n\t\tonrejected: (reason: unknown) => Promisable = _identity\n\t): FunPromise {\n\t\treturn new FunPromise(this.wrapped.catch(onrejected));\n\t}\n\n\t/**\n\t * Creates a Promise that is resolved with an array of results when all of the\n\t * provided Promises resolve, or rejected when any Promise is rejected.\n\t * @param values An array of Promises.\n\t * @returns A new Promise.\n\t */\n\tstatic all(values: PromisableIterable): FunPromise;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable, Promisable, Promisable]\n\t): FunPromise<[T1, T2, T3, T4]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable, Promisable]\n\t): FunPromise<[T1, T2, T3]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable]\n\t): FunPromise<[T1, T2]>;\n\tstatic all(values: [Promisable]): FunPromise<[T1]>;\n\tstatic all(...values: any[]): any {\n\t\treturn FunPromise.resolve(_flatten(values)).all();\n\t}\n\tall(): FunPromise[]> {\n\t\treturn this.arrayify(true);\n\t}\n\n\t/**\n\t * Given a function (or a promise of a function) that returns a value (or a promise of a value),\n\t * create a promise that executes the function and returns the value. If executing the function\n\t * throws an exception, then that exception becomes the rejection of the promise.\n\t *\n\t * Any arguments after the first will be passed into the function when it is invoked. If they are\n\t * a `PromiseLike`, then they will be resolved and the resolution value will be passed into the\n\t * function instead.\n\t *\n\t * This function is really useful in the following cases:\n\t * 1. to [avoid releasing Zalgo](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n\t * 2. when you want to create a `FunPromise` based on an `async` function\n\t * 3. when you want to create a `FunPromise` based on a normal function\n\t */\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6,\n\t\t\t\targ7: Arg7,\n\t\t\t\targ8: Arg8\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable,\n\t\targ7: Promisable,\n\t\targ8: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6,\n\t\t\t\targ7: Arg7\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable,\n\t\targ7: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(arg1: Arg1, arg2: Arg2, arg3: Arg3, arg4: Arg4) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1, arg2: Arg2, arg3: Arg3) => Promisable>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1, arg2: Arg2) => Promisable>,\n\t\targ1: Promisable,\n\t\targ2: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1) => Promisable>,\n\t\targ1: Promisable\n\t): FunPromise;\n\tstatic try(source: Promisable<() => Promisable>): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(...args: ArgT[]) => Promisable>,\n\t\t...args: ArgT[]\n\t): FunPromise {\n\t\treturn FunPromise.resolve(source).then((f) => {\n\t\t\tif (_isEmpty(args)) {\n\t\t\t\treturn f();\n\t\t\t} else {\n\t\t\t\treturn Promise.all(args).then((realArgs) => f(...realArgs));\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Unwraps layers of `PromiseLike` wrappers as necessary.\n\t *\n\t * This behavior is actually part of the Promise/A+ spec, but the type system struggles with that fact,\n\t * so this method is a workaround.\n\t *\n\t * In a future version of this library, `FunPromise` will extend `Promise>` instead of\n\t * just `Promise`, which will render this method irrelevant. Unfortunately, Typescript's type system\n\t * doesn't seem capable of handling that reality quite yet, so this is what we get.\n\t */\n\tsimplify(): FunPromise> {\n\t\treturn (this as unknown) as FunPromise>;\n\t}\n\n\t/**\n\t * For each element of the resolved iterable, unwraps layers of `PromiseLike` wrappers as necessary.\n\t */\n\tsimplifyAll(): FunPromise>[]> {\n\t\treturn this.arrayify().map((it) => FunPromise.resolve(it).simplify());\n\t}\n\n\t/**\n\t * Coerces the resolve value (which must be an `Iterable`) into an array. The `Iterable` requirement\n\t * comes from the `Item` return value: `Item` is equivalent to `never` if `T` is not an `Iterable`.\n\t *\n\t * Note that this function does *NOT* resolve the items within the array unless you pass the first argument\n\t * as `true`. The items are not resolved sequentially unless you also pass a second argument as `true`.\n\t */\n\tarrayify(\n\t\tresolveValues: boolean = false,\n\t\tsequentialResolution: boolean = false\n\t): FunPromise[]> {\n\t\tconst aryPromise = (this.then(\n\t\t\tasync (iterPromise) => _toArray(await iterPromise) // Just to be sure we're all de-promise'd\n\t\t) as unknown) as FunPromise[]>;\n\t\tif (resolveValues) {\n\t\t\tif (sequentialResolution) {\n\t\t\t\treturn aryPromise.then(async (ary) => {\n\t\t\t\t\tconst results = [];\n\t\t\t\t\twhile (!_isEmpty(ary)) {\n\t\t\t\t\t\tresults.push(await ary.shift());\n\t\t\t\t\t}\n\t\t\t\t\treturn results;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn aryPromise.then((ary) => Promise.all(ary));\n\t\t\t}\n\t\t} else {\n\t\t\treturn aryPromise;\n\t\t}\n\t}\n\n\t/**\n\t * Given a mapping function, apply the mapping function to each element of the promise's resolved value,\n\t * and return an array with the results of the mapping. If any of the mapping results are rejected,\n\t * the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result correspond to the order of the elements in the promise's\n\t * resolved value. However, the resolution order is not guaranteed. For example, although the\n\t * output at index 0 will hold the mapping of the input element at index 0, it is not guaranteed that\n\t * the mapping of index 0 will be awaited before the mapping of index 1.\n\t */\n\tmap>(mapper: (it: Item) => Promisable): FunPromise {\n\t\tconst results = [];\n\t\treturn FunPromise.try(async () => {\n\t\t\tawait Promise.all(\n\t\t\t\t_map(await this.arrayify(), async (value, idx) => {\n\t\t\t\t\tresults[idx] = await mapper(await value);\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn results;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).map(mapper)`.\n\t */\n\tstatic map(\n\t\tvalues: PromisableIterable,\n\t\tmapper: (it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).map(mapper);\n\t}\n\n\t/**\n\t * Required to implement `Promise`, but you almost certainly don't care about it.\n\t *\n\t * All the same, it returns the string tag of the underlying promise.\n\t */\n\tget [Symbol.toStringTag]() {\n\t\treturn this.wrapped[Symbol.toStringTag];\n\t}\n\n\t/**\n\t * Executes the provided code whether the promise rejects or resolves.\n\t */\n\tfinally(): FunPromise;\n\tfinally(onfinally: () => void): FunPromise;\n\tfinally(onfinally?) {\n\t\tif (_isFunction(onfinally)) {\n\t\t\treturn new FunPromise(this.wrapped.finally(onfinally));\n\t\t} else {\n\t\t\treturn this;\n\t\t}\n\t}\n\n\t/**\n\t * Given a [[`PromisableIterable`]] whose values are nullary functions returning [[Promisable|`Promisable`]],\n\t * this executes all the functions simultaneously and returns the first whose return value passes the provided test.\n\t * The default test returns true if the value is not `null` or `undefined`.\n\t *\n\t * If no function resolves successfully, the last seen rejection is thrown. If some functions resolve but some reject,\n\t * and none of the resolved values pass the test, then the last seen rejection is thrown.\n\t *\n\t * If all the functions resolve but to a value but no value passes the test, then this rejects with an error saying as much.\n\t */\n\tstatic coalesce(\n\t\tfns: PromisableIterable<() => Promisable>,\n\t\ttest: (item: T) => Promisable = _negate(_isNil)\n\t): FunPromise {\n\t\tlet resolved = false;\n\t\tlet lastSeenReason: unknown = new Error(\"No values left after coalescing\");\n\t\tlet resolveValue;\n\t\treturn FunPromise.map(fns, (fn) =>\n\t\t\tFunPromise.try(fn)\n\t\t\t\t.then((result) => {\n\t\t\t\t\tif (resolved) return null;\n\t\t\t\t\treturn FunPromise.try(test, result).then((testResult) => {\n\t\t\t\t\t\tif (resolved) return null;\n\t\t\t\t\t\tif (testResult) {\n\t\t\t\t\t\t\tresolved = true;\n\t\t\t\t\t\t\tresolveValue = result;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch((e) => {\n\t\t\t\t\tlastSeenReason = e;\n\t\t\t\t})\n\t\t).then(() => {\n\t\t\tif (resolved) {\n\t\t\t\treturn resolveValue;\n\t\t\t} else {\n\t\t\t\tthrow lastSeenReason;\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Waits for `waitTimeMs` milliseconds before resolving. If `returnValue` is provided, resolves with the provided value.\n\t *\n\t * If `waitTimeMs` is less than or equal to zero, then it simply defers until the call stack is clear.\n\t */\n\tstatic delay(waitTimeMs: number): FunPromise;\n\tstatic delay(\n\t\twaitTimeMs: number,\n\t\treturnValue: Promisable\n\t): FunPromise;\n\tstatic delay(waitTimeMs, returnValue?) {\n\t\treturn FunPromise.resolve().delay(waitTimeMs, returnValue);\n\t}\n\n\t/**\n\t * Waits for `waitTimeMs` milliseconds before resolving. If `returnValue` is provided, resolves with the provided value.\n\t *\n\t * If `waitTimeMs` is less than or equal to zero, then it simply defers until the call stack is clear.\n\t */\n\tdelay(\n\t\twaitTimeMs: number,\n\t\treturnValue?: Promisable\n\t): FunPromise {\n\t\tif (waitTimeMs <= 0) {\n\t\t\treturn new FunPromise(\n\t\t\t\tnew Promise((resolve) => _defer(resolve, returnValue))\n\t\t\t);\n\t\t} else {\n\t\t\treturn new FunPromise(\n\t\t\t\tnew Promise((resolve) => _delay(resolve, waitTimeMs, returnValue))\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Given a filtering function, apply the filtering function to each element of the promise's resolved value,\n\t * and return an array with the values for which the filtering function returns `true`. If any of the filtering\n\t * results are rejected, the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result are stable with regard to the order of the elements in the promise's\n\t * resolved value. That is, if `X < Y` and `input[X]` and `input[Y]` are both in the input, and `input[X]` and\n\t * `input[Y]` both pass the filtering function, then the output index of `input[X]` will be less than the output\n\t * index of `input[Y]`. However, the resolution order is not guaranteed: that is, `input[Y]` may be resolved and\n\t * tested before `input[X]` even though `input[X]` has a lower output index than `input[Y]`.\n\t */\n\tfilter(test: (it: Item) => Promisable): FunPromise[]> {\n\t\treturn this.arrayify().then(async (ary) => {\n\t\t\tconst results = await FunPromise.map(ary, async (it) => test(await it));\n\t\t\t// @ts-ignore\n\t\t\treturn _filter(ary, (it, idx) => results[idx]);\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(items).filter(test)`.\n\t */\n\tstatic filter(\n\t\titems: PromisableIterable,\n\t\ttest: (it: Item>) => Promisable\n\t): FunPromise>[]> {\n\t\treturn FunPromise.resolve(items).filter(test);\n\t}\n\n\t/**\n\t * Given a mapping function, apply the mapping function to each element of the promise's resolved value,\n\t * and return an array with the concatenated results of the mapping. If any of the mapping results are\n\t * rejected, the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result correspond to the order of the elements in the promise's\n\t * resolved value. However, the resolution order is not guaranteed.\n\t */\n\tflatMap>(\n\t\tmapper: (it: Item) => Promisable\n\t): FunPromise {\n\t\treturn this.arrayify().then(async (ary: Promisable>[]) => {\n\t\t\tconst promises: Array>> = _map(ary, async (value) =>\n\t\t\t\tmapper(await value)\n\t\t\t);\n\t\t\tconst resolved: T2[][] = await Promise.all(promises);\n\t\t\tconst flattened: T2[] = _flatten(resolved);\n\t\t\treturn flattened;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).flatMap(mapper)`.\n\t */\n\tstatic flatMap(\n\t\tvalues: PromisableIterable,\n\t\tmapper: (it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).flatMap(mapper);\n\t}\n\n\t/**\n\t * Access the resolved value without changing it. Note that if the callback rejects (ie: throws),\n\t * then the resulting promise will be rejected.\n\t */\n\ttap(callback: (val: T) => Promisable): FunPromise {\n\t\treturn this.then(async (val) => {\n\t\t\tawait callback(val);\n\t\t\treturn val;\n\t\t});\n\t}\n\n\t/**\n\t * Access the rejection reason without changing it. Note that if the callback itself rejects (ie: throws),\n\t * both rejection reasons will be capture in a single [[`NestedError`]].\n\t */\n\ttapCatch(callback: (reason: unknown) => Promisable): FunPromise {\n\t\treturn this.catch(async (err) => {\n\t\t\ttry {\n\t\t\t\tawait callback(err);\n\t\t\t} catch (err2) {\n\t\t\t\tthrow new NestedError(\"Error thrown in 'tapCatch'\", err, err2);\n\t\t\t}\n\t\t\tthrow err;\n\t\t});\n\t}\n\n\t/**\n\t * Access each of the resolved values of a resolved iterable without changing it. Note that if the callback rejects (ie: throws),\n\t * then the resulting promise will be rejected.\n\t */\n\ttapEach(callback: (val: Item) => Promisable): FunPromise[]> {\n\t\treturn this.arrayify(true).tap(async (ary) => {\n\t\t\tawait Promise.all(_map(ary, callback));\n\t\t});\n\t}\n\n\t/**\n\t * Given an initial value and an accumulator function, apply the accumlator function to each element of the promise's resolved value,\n\t * passing in the current value and the result. Returns an array with the result of the accumulation. If any of the promise's values are\n\t * rejected, the entire operation will be rejected.\n\t *\n\t * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve.\n\t */\n\tfold>(\n\t\tinitialValue: T2,\n\t\taccumulator: (memo: T2, it: Item) => Promisable\n\t): FunPromise {\n\t\treturn this.arrayify().then(async (ary: Promisable>[]) => {\n\t\t\tlet memoPromise = FunPromise.resolve(initialValue);\n\t\t\tawait Promise.all(\n\t\t\t\t_map(ary, async (promisableValue) => {\n\t\t\t\t\tconst value = await promisableValue;\n\t\t\t\t\tmemoPromise = memoPromise.then((memo) => accumulator(memo, value));\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn await memoPromise;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).fold(initialValue, accumulator)`.\n\t */\n\tstatic fold(\n\t\tvalues: PromisableIterable,\n\t\tinitialValue: T2,\n\t\taccumulator: (memo: T2, it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).fold(initialValue, accumulator);\n\t}\n\n\t/**\n\t * Given an initial array of values and an accumulator function, apply the accumlator function to each element of the promise's resolved value,\n\t * passing in the current array of values and the resolved item. Returns an array with the concatenated results of the accumulation.\n\t * If any of the promise's values are rejected, the entire operation will be rejected.\n\t *\n\t * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve.\n\t */\n\tflatFold>(\n\t\tinitialValue: PromisableIterable,\n\t\taccumulator: (memo: T2[], it: Item) => PromisableIterable\n\t): FunPromise {\n\t\treturn this.arrayify().then(async (ary: Promisable>[]) => {\n\t\t\tlet memoPromise: FunPromise = FunPromise.resolve(\n\t\t\t\tinitialValue\n\t\t\t).arrayify() as FunPromise;\n\t\t\tawait Promise.all(\n\t\t\t\t_map(ary, async (promisableValue) => {\n\t\t\t\t\tconst value = await promisableValue;\n\t\t\t\t\tmemoPromise = memoPromise.then(async (memo) =>\n\t\t\t\t\t\tmemo.concat(_toArray(await accumulator(memo, value)))\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn memoPromise;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).flatFold(initialValue, accumulator)`.\n\t */\n\tstatic flatFold(\n\t\tvalues: PromisableIterable,\n\t\tinitialValue: PromisableIterable,\n\t\taccumulator: (memo: T2[], it: T) => PromisableIterable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).flatFold(initialValue, accumulator);\n\t}\n\n\t/**\n\t * Handles rejections like 'catch', but wraps them in a [[`NestedError`]] with the given message.\n\t */\n\twrapError(msg: string): FunPromise {\n\t\treturn this.catch(NestedError.rethrow(msg));\n\t}\n\n\t/**\n\t * Resolves all the elements of the resolved value, which is assumed to be an `Iterable`. If any\n\t * of the values reject, all the reasons are collected and wrapped in a [[`NestedError`]].\n\t */\n\twrapErrors(msg: string): FunPromise[]> {\n\t\treturn this.arrayify().then(async (ary) => {\n\t\t\tlet errors = [];\n\t\t\tawait Promise.all(\n\t\t\t\t_map(ary, (val) => Promise.resolve(val).catch((e) => errors.push(e)))\n\t\t\t);\n\t\t\tif (_isEmpty(errors)) {\n\t\t\t\treturn ary;\n\t\t\t} else {\n\t\t\t\tthrow new NestedError(msg, ...errors);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Cancel the FunPromise. A cancelled FunPromise will silently disregard any resolution or rejection which occurs after the cancellation.\n\t */\n\tcancel() {\n\t\tthis._isCancelled = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns whether or not the promise has been cancelled. See `cancel()` for more details.\n\t */\n\tisCancelled() {\n\t\treturn this._isCancelled;\n\t}\n\n\t/**\n\t * Captures either fulfillment or rejection and resolves an object that describes the result.\n\t */\n\tsettle(): FunPromise> {\n\t\treturn new FunPromise(\n\t\t\tthis.wrapped.then(\n\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Assuming that the resolved value is an iterable, then for each element of the\n\t * array, captures either the fulfillment or rejection of that element.\n\t */\n\tsettleAll(): FunPromise>[]> {\n\t\treturn new FunPromise(\n\t\t\tthis.arrayify().wrapped.then((ary) =>\n\t\t\t\tPromise.all(\n\t\t\t\t\t_map(ary, (val) =>\n\t\t\t\t\t\tPromise.resolve(val).then(\n\t\t\t\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(iterable).settleAll()`.\n\t */\n\tstatic settleAll(\n\t\titerable: PromisableIterable\n\t): FunPromise[]> {\n\t\treturn new FunPromise(\n\t\t\tPromise.resolve(iterable).then((ary) =>\n\t\t\t\tPromise.all(\n\t\t\t\t\t_map(ary, (val) =>\n\t\t\t\t\t\tPromise.resolve(val).then(\n\t\t\t\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t}\n}\n"]} \ No newline at end of file diff --git a/dist/es6/umd/src/fun-promise.test.d.ts b/dist/es6/umd/src/fun-promise.test.d.ts deleted file mode 100644 index 597914a..0000000 --- a/dist/es6/umd/src/fun-promise.test.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export {}; -//# sourceMappingURL=fun-promise.test.d.ts.map \ No newline at end of file diff --git a/dist/es6/umd/src/fun-promise.test.d.ts.map b/dist/es6/umd/src/fun-promise.test.d.ts.map deleted file mode 100644 index e2ecf9b..0000000 --- a/dist/es6/umd/src/fun-promise.test.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fun-promise.test.d.ts","sourceRoot":"","sources":["../../../../src/fun-promise.test.js"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/es6/umd/src/fun-promise.test.js b/dist/es6/umd/src/fun-promise.test.js deleted file mode 100644 index 9115660..0000000 --- a/dist/es6/umd/src/fun-promise.test.js +++ /dev/null @@ -1,611 +0,0 @@ -/** @format */ -(function (factory) { - if (typeof module === "object" && typeof module.exports === "object") { - var v = factory(require, exports); - if (v !== undefined) module.exports = v; - } - else if (typeof define === "function" && define.amd) { - define(["require", "exports", "tslib", "./fun-promise", "lodash", "ts-nested-error", "./types"], factory); - } -})(function (require, exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - const tslib_1 = require("tslib"); - const fun_promise_1 = require("./fun-promise"); - const lodash_1 = require("lodash"); - const ts_nested_error_1 = require("ts-nested-error"); - const types_1 = require("./types"); - const tokenPromise = new Promise((resolve) => resolve(true)); - const tokenFunPromise = new fun_promise_1.default(tokenPromise); - function withRejection(rejectionReason, callback) { - const rejection = Promise.reject(rejectionReason); - try { - return callback(rejection); - } - finally { - rejection.catch(lodash_1.default.noop); // Disable uncaught exception issues - } - } - describe("FunPromise", () => { - it("can be constructed and resolved", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(new fun_promise_1.default(tokenPromise)).resolves.toBe(true); - })); - describe("resolve/return", () => { - lodash_1.default.forEach({ static: fun_promise_1.default, instance: tokenFunPromise }, (impl, implName) => { - lodash_1.default.forEach(["resolve", "return"], (methodName) => { - describe(methodName, () => { - describe(implName, () => { - function doResolve(value) { - return impl[methodName](value); - } - it("rejects when provided a rejection", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(doResolve(Promise.reject("BOOM!"))).rejects.toBe("BOOM!"); - })); - it("does not resolve the elements of an array", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - expect.hasAssertions(); - yield withRejection("BOOM!", (rejection) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(doResolve([rejection])).resolves.toHaveLength(1); - })); - })); - describe("resolves correctly", () => { - it("with a value", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(doResolve(tokenPromise)).resolves.toBe(true); - })); - it("returns the FunPromise if passed a FunPromise", () => { - expect(doResolve(tokenFunPromise)).toEqual(tokenFunPromise); - }); - it("without a value", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(doResolve()).resolves.toBeNil(); - })); - }); - }); - }); - }); - }); - }); - describe("then", () => { - it("works without onrejected", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(tokenFunPromise.then(lodash_1.default.identity)).resolves.toBe(true); - })); - }); - describe("catch", () => { - it("handles rejections", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(tokenFunPromise - .then(() => Promise.reject("BOOM!")) - .catch((e) => { - expect(e).toBe("BOOM!"); - return "DONE!"; - })).resolves.toBe("DONE!"); - })); - it("returns the error when not passed an argument", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const error = new Error("BOOM!"); - yield expect(tokenFunPromise.then(() => Promise.reject(error)).catch()).resolves.toBe(error); - })); - }); - describe("arrayify", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const value = [1, 2, 3, 4]; - yield expect(fun_promise_1.default.resolve(value).arrayify()).resolves.toStrictEqual(value); - })); - it("returns a clone", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const value = [1, 2, 3, 4]; - yield expect(fun_promise_1.default.resolve(value) - .arrayify() - .then((it) => { - it.pop(); - return it; - })).resolves.not.toBe(value); - expect(value).toHaveLength(4); - })); - it("does not resolve values when called without an argument", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const rejection = Promise.reject("BOOM!"); - try { - yield expect(fun_promise_1.default.resolve([1, 2, rejection]).arrayify()).resolves.toBeArrayOfSize(3); - } - finally { - rejection.catch((e) => { }); // Disarm the rejection - } - })); - it("resolves values when called with the sole argument `true`", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(fun_promise_1.default.resolve([ - Promise.resolve(1), - fun_promise_1.default.resolve(2), - ]).arrayify(true)).resolves.toEqual([1, 2]); - })); - it("rejects values when called with the sole argument `true` and a rejection in the mix", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const rejection = Promise.reject("BOOM!"); - yield expect(fun_promise_1.default.resolve([1, 2, rejection]).arrayify(true)).rejects.toBe("BOOM!"); - })); - it("rejects values in order when called with the arguments `(true, true)`", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const rejection1 = Promise.reject("BOOM!"); - const rejection2 = Promise.reject("BANG!"); - try { - yield expect(fun_promise_1.default.resolve([1, 2, rejection1, rejection2]).arrayify(true, true)).rejects.toBe("BOOM!"); - } - finally { - rejection1.catch((e) => { }); // Disarm the rejection - rejection2.catch((e) => { }); // Disarm the rejection - } - })); - it("resolves values in order when called with the arguments `(true, true)`", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - let sawFirst = false; - let sawSecond = false; - let sawThird = false; - let sawFourth = false; - yield expect(fun_promise_1.default.resolve([ - fun_promise_1.default.try(() => { - expect(sawFirst).toBe(false); - expect(sawSecond).toBe(false); - expect(sawThird).toBe(false); - expect(sawFourth).toBe(false); - sawFirst = true; - return 1; - }), - fun_promise_1.default.try(() => { - expect(sawFirst).toBe(true); - expect(sawSecond).toBe(false); - expect(sawThird).toBe(false); - expect(sawFourth).toBe(false); - sawSecond = true; - return 2; - }), - fun_promise_1.default.try(() => { - expect(sawFirst).toBe(true); - expect(sawSecond).toBe(true); - expect(sawThird).toBe(false); - expect(sawFourth).toBe(false); - sawThird = true; - return 3; - }), - fun_promise_1.default.try(() => { - expect(sawFirst).toBe(true); - expect(sawSecond).toBe(true); - expect(sawThird).toBe(true); - expect(sawFourth).toBe(false); - sawFourth = true; - return 4; - }), - ]).arrayify(true, true)).resolves.toStrictEqual([1, 2, 3, 4]); - expect(sawFirst).toBe(true); - expect(sawSecond).toBe(true); - expect(sawThird).toBe(true); - expect(sawFourth).toBe(true); - })); - }); - describe("all", () => { - lodash_1.default.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - describe("basically works", () => { - lodash_1.default.times(10, (argCount) => { - const simpleArgs = lodash_1.default.times(argCount, (i) => Math.pow(2, i)); - function runAll(args) { - if (staticVersion) { - return fun_promise_1.default.all(args); - } - else { - return fun_promise_1.default.resolve(args).all(); - } - } - it(`for ${argCount} arguments`, () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(runAll(simpleArgs)).resolves.toStrictEqual(simpleArgs); - })); - }); - }); - }); - }); - }); - describe("try", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(fun_promise_1.default.try(() => true)).resolves.toBe(true); - })); - it("works with one argument", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(fun_promise_1.default.try((i) => i, 42)).resolves.toBe(42); - })); - it("explodes properly", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(fun_promise_1.default.try(() => Promise.reject("BOOM!"))).rejects.toBe("BOOM!"); - })); - }); - describe("map", () => { - lodash_1.default.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - function runMap(args, mapper) { - if (staticVersion) { - return fun_promise_1.default.map(args, mapper); - } - else { - return fun_promise_1.default.resolve(args).map(mapper); - } - } - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(runMap(["Hello", "Goodbye"], (it) => `${it}, World!`)).resolves.toStrictEqual(["Hello, World!", "Goodbye, World!"]); - })); - it("works with some test values", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const defaultValues = [1, 2, 4, 8, 16]; - const defaultMapper = (it) => { - if (Math.random() < 0.5) { - return Promise.resolve(it * 2); - } - else { - return it * 2; - } - }; - yield expect(runMap(defaultValues, defaultMapper)).resolves.toStrictEqual([2, 4, 8, 16, 32]); - })); - }); - }); - }); - describe("Symbol.toStringTag", () => { - it("is the same as the promise passed in", () => { - const promise = new Promise((resolve) => resolve()); - const promiseTag = promise[Symbol.toStringTag]; - expect(promiseTag).not.toBeNil(); - expect(new fun_promise_1.default(promise)[Symbol.toStringTag]).toBe(promiseTag); - }); - }); - describe("finally", () => { - it("returns the same promise when given no arguments", () => { - expect(tokenFunPromise.finally()).toBe(tokenFunPromise); - }); - it("executes on resolution", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - let finallyExecuted = false; - yield expect(fun_promise_1.default.resolve(false).finally(() => { - finallyExecuted = true; - })).resolves.toBe(false); - expect(finallyExecuted).toBe(true); - })); - it("executes on rejection", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - let finallyExecuted = false; - yield expect(fun_promise_1.default.reject("BOOM!").finally(() => { - finallyExecuted = true; - })).rejects.toBe("BOOM!"); - expect(finallyExecuted).toBe(true); - })); - }); - describe("reject", () => { - lodash_1.default.forEach({ static: fun_promise_1.default, instance: tokenFunPromise }, (impl, name) => { - describe(name, () => { - it("rejects correctly", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(impl.reject(true)).rejects.toBe(true); - })); - it("doesn't change the object that is rejected", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const reason = { foo: true, bar: 42 }; - yield expect(impl.reject(reason)).rejects.toBe(reason); - })); - }); - }); - }); - describe("coalesce", () => { - function runCoalesce(args, test) { - return fun_promise_1.default.coalesce(args, test); - } - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(runCoalesce([() => null, Promise.resolve(() => true)])).resolves.toBe(true); - })); - it("returns the first resolving value", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(runCoalesce([() => fun_promise_1.default.delay(1000).resolve(true), () => false])).resolves.toBe(false); - })); - it("returns the value that passes the test", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(runCoalesce([() => 2, () => 4], (it) => it > 2)).resolves.toBe(4); - })); - it("throws the error if nothing passes the test", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(runCoalesce([() => Promise.reject("BOOM!"), () => 4], (it) => it > 4)).rejects.toBe("BOOM!"); - })); - it("punts appropriately after the first resolution", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(runCoalesce(lodash_1.default.times(3, (idx) => () => idx))).resolves.toBe(0); - })); - }); - describe("delay", () => { - lodash_1.default.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - lodash_1.default.forEach([-1000, -1, 0, 1, 1000], (delayMs) => { - describe(`When requesting a delay of ${delayMs} milliseconds`, () => { - function runDelay(arg) { - if (staticVersion) { - return fun_promise_1.default.delay(delayMs, arg); - } - else { - return fun_promise_1.default.resolve().delay(delayMs, arg); - } - } - describe("basically works", () => { - it("with no arg", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(runDelay()).resolves; - })); - it("with one arg", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(runDelay(1000)).resolves.toBe(1000); - })); - }); - }); - }); - }); - }); - }); - describe("simplify", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(new fun_promise_1.default(Promise.resolve(Promise.resolve(true))).simplify()).resolves.toBe(true); - })); - }); - describe("filter", () => { - lodash_1.default.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - const defaultValues = [ - 1, - true, - {}, - null, - Promise.resolve(null), - Promise.resolve(), - "Hello, Dolly!", - ]; - const defaultExpect = [1, true, {}, "Hello, Dolly!"]; - const defaultTest = (it) => !lodash_1.default.isNil(it); - function doFilter(values = defaultValues, test = defaultTest) { - if (staticVersion) { - return fun_promise_1.default.filter(values, test); - } - else { - return fun_promise_1.default.resolve(values).filter(test); - } - } - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(doFilter()).resolves.not.toBeEmpty(); - yield expect(doFilter()).resolves.toBeArrayOfSize(4); - })); - }); - }); - }); - describe("flatMap", () => { - lodash_1.default.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - const defaultValues = [ - 1, - true, - {}, - null, - Promise.resolve(null), - Promise.resolve(), - "Hello, Dolly!", - ]; - const defaultMapper = (it) => { - if (lodash_1.default.isNil(it)) { - return []; - } - else { - return [it]; - } - }; - const defaultExpect = [1, true, {}, "Hello, Dolly!"]; - function doFlatMap(values = defaultValues, mapper = defaultMapper) { - if (staticVersion) { - return fun_promise_1.default.flatMap(values, mapper); - } - else { - return fun_promise_1.default.resolve(values).flatMap(mapper); - } - } - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(doFlatMap()).resolves.toStrictEqual(defaultExpect); - })); - }); - }); - }); - describe("tap", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - let sawTap = false; - yield expect(tokenFunPromise.tap((val) => { - expect(val).toBe(true); - sawTap = true; - return false; - })).resolves.toBe(true); - expect(sawTap).toBe(true); - })); - it("rejects if it throws an exception", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - let sawTap = false; - yield expect(tokenFunPromise.tap((val) => { - sawTap = true; - throw "BOOM!"; - })).rejects.toBe("BOOM!"); - expect(sawTap).toBe(true); - })); - }); - describe("fold", () => { - lodash_1.default.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - const defaultValues = [1, 2, 3, 4, 5]; - function doFold(values = defaultValues, initialValue = 0, accumulator = (a, b) => a + b) { - if (staticVersion) { - return fun_promise_1.default.fold(values, initialValue, accumulator); - } - else { - return fun_promise_1.default.resolve(values).fold(initialValue, accumulator); - } - } - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const values = [1, 2, 3, 4, 5]; - yield expect(doFold()).resolves.toBe(1 + 2 + 3 + 4 + 5); - })); - }); - }); - }); - describe("tapCatch", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - let sawTapCatch = false; - yield expect(fun_promise_1.default.reject("BOOM!").tapCatch((e) => { - sawTapCatch = true; - expect(e).toBe("BOOM!"); - return "BANG!"; - })).rejects.toBe("BOOM!"); - expect(sawTapCatch).toBe(true); - })); - it("nests explosions", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - let sawCatch = false; - const err1 = new Error("BOOM!"); - const err2 = new Error("BANG!"); - yield expect(fun_promise_1.default.reject(err1) - .tapCatch((e) => { - throw err2; - }) - .catch((e) => { - sawCatch = true; - expect(e).toBeInstanceOf(ts_nested_error_1.NestedError); - expect(e).toHaveProperty("message", "Error thrown in 'tapCatch'"); - expect(e).toHaveProperty("innerErrors"); - expect(e.innerErrors).toHaveLength(2); - expect(e.innerErrors).toEqual([err1, err2]); - return "Hello!"; - })).resolves.toBe("Hello!"); - expect(sawCatch).toBe(true); - })); - }); - describe("tapEach", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const values = [ - 123, - Promise.resolve(true), - "Hello, Dolly!", - null, - undefined, - ]; - const funPromise = fun_promise_1.default.resolve(values); - let count = 0; - yield expect(funPromise.tapEach(() => { - count++; - })).resolves.toEqual(yield Promise.all(values)); - expect(count).toBe(values.length); - })); - }); - describe("wrapError", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const reason = "BOOM!"; - yield expect(fun_promise_1.default.reject(reason).wrapError("BANG!")).rejects.toHaveProperty("message", "BANG!"); - yield expect(fun_promise_1.default.reject(reason).wrapError("BANG!")).rejects.toHaveProperty("innerError"); - })); - }); - describe("wrapErrors", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const err1 = new Error("BOOM!"); - const err2 = new Error("BANG!"); - yield expect(fun_promise_1.default.resolve([Promise.reject(err1), Promise.reject(err2)]) - .wrapErrors("ERRORS!") - .catch((e) => { - expect(e).toBeInstanceOf(ts_nested_error_1.NestedError); - expect(e).toHaveProperty("message", "ERRORS!"); - expect(e.innerErrors).toHaveLength(2); - expect(e.innerErrors).toEqual([err1, err2]); - return true; - })).resolves.toBe(true); - })); - it("doesn't do anything if there is no error", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const values = [1, 2, 3, true, false, null, undefined]; - yield expect(fun_promise_1.default.resolve(values).wrapErrors("ERRORS!")).resolves.toEqual(values); - })); - }); - describe("cancellation", () => { - it("initially reports not cancelled", () => { - expect(fun_promise_1.default.resolve(true).isCancelled()).toBe(false); - }); - it("reports cancelled after cancel is called", () => { - expect(fun_promise_1.default.resolve(true).cancel().isCancelled()).toBe(true); - }); - it("prevents resolution after cancellation", () => { - let resolver; - let sawResolve = false; - const promise = new Promise((resolve) => { - resolver = resolve; - }).then(() => { - sawResolve = true; - }); - expect(resolver).not.toBeNil(); - const cancelled = new fun_promise_1.default(promise).cancel(); - resolver(true); - expect(sawResolve).toBe(false); - }); - it("prevents rejection after cancellation", () => { - let rejector; - let sawReject = false; - const promise = new Promise((resolve, reject) => { - rejector = reject; - }).catch(() => { - sawReject = true; - }); - expect(rejector).not.toBeNil(); - const cancelled = new fun_promise_1.default(promise).cancel(); - rejector("BOOM!"); - expect(sawReject).toBe(false); - }); - it("prevents rejection when resolving throws after cancellation", () => { - let resolver; - let sawThen = true; - let sawCatch = false; - let doCancel; - const promise = new Promise((resolve) => { - resolver = resolve; - }).then(() => { - sawThen = true; - doCancel(); - throw "BOOM!"; - }); - expect(resolver).not.toBeNil(); - const toCancel = new fun_promise_1.default(promise); - doCancel = () => { - toCancel.cancel(); - }; - toCancel.catch((e) => { - sawCatch = true; - }); - resolver(true); - expect(sawThen).toBe(true); - expect(sawCatch).toBe(false); - }); - }); - describe("simplifyAll", () => { - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(fun_promise_1.default.resolve("Hello").simplifyAll()).resolves.toEqual([ - "H", - "e", - "l", - "l", - "o", - ]); - })); - it("doesn't explode on an empty list", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(fun_promise_1.default.resolve([]).simplifyAll()).resolves.toEqual([]); - })); - }); - describe("settle", () => { - it("basically works for rejections", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(fun_promise_1.default.reject("BOOM!").settle()).resolves.toHaveProperty("reason", "BOOM!"); - })); - it("basically works for fulfillments", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(fun_promise_1.default.resolve(true).settle()).resolves.toHaveProperty("value", true); - })); - }); - describe("settleAll", () => { - lodash_1.default.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - function doSettleAll(values) { - if (staticVersion) { - return fun_promise_1.default.settleAll(values); - } - else { - return fun_promise_1.default.resolve(values).settleAll(); - } - } - it("basically works", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const values = [ - { in: Promise.resolve(true), out: new types_1.Fulfillment(true) }, - { in: Promise.reject("BOOM!"), out: new types_1.Rejection("BOOM!") }, - { in: Promise.reject(null), out: new types_1.Rejection(null) }, - { in: null, out: new types_1.Fulfillment(null) }, - ]; - yield expect(doSettleAll(lodash_1.default.map(values, "in"))).resolves.toEqual(lodash_1.default.map(values, "out")); - })); - it("doesn't explode on empty lists", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - yield expect(doSettleAll([])).resolves.toEqual([]); - })); - }); - }); - }); - }); -}); -//# sourceMappingURL=fun-promise.test.js.map \ No newline at end of file diff --git a/dist/es6/umd/src/fun-promise.test.js.map b/dist/es6/umd/src/fun-promise.test.js.map deleted file mode 100644 index 2401647..0000000 --- a/dist/es6/umd/src/fun-promise.test.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fun-promise.test.js","sourceRoot":"","sources":["../../../../src/fun-promise.test.js"],"names":[],"mappings":"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","sourcesContent":["/** @format */\n\nimport FunPromise from \"./fun-promise\";\nimport _ from \"lodash\";\nimport { NestedError } from \"ts-nested-error\";\nimport { Fulfillment, Rejection } from \"./types\";\n\nconst tokenPromise = new Promise((resolve) => resolve(true));\nconst tokenFunPromise = new FunPromise(tokenPromise);\n\nfunction withRejection(rejectionReason, callback) {\n\tconst rejection = Promise.reject(rejectionReason);\n\ttry {\n\t\treturn callback(rejection);\n\t} finally {\n\t\trejection.catch(_.noop); // Disable uncaught exception issues\n\t}\n}\n\ndescribe(\"FunPromise\", () => {\n\tit(\"can be constructed and resolved\", async () => {\n\t\tawait expect(new FunPromise(tokenPromise)).resolves.toBe(true);\n\t});\n\n\tdescribe(\"resolve/return\", () => {\n\t\t_.forEach(\n\t\t\t{ static: FunPromise, instance: tokenFunPromise },\n\t\t\t(impl, implName) => {\n\t\t\t\t_.forEach([\"resolve\", \"return\"], (methodName) => {\n\t\t\t\t\tdescribe(methodName, () => {\n\t\t\t\t\t\tdescribe(implName, () => {\n\t\t\t\t\t\t\tfunction doResolve(value) {\n\t\t\t\t\t\t\t\treturn impl[methodName](value);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tit(\"rejects when provided a rejection\", async () => {\n\t\t\t\t\t\t\t\tawait expect(doResolve(Promise.reject(\"BOOM!\"))).rejects.toBe(\n\t\t\t\t\t\t\t\t\t\"BOOM!\"\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tit(\"does not resolve the elements of an array\", async () => {\n\t\t\t\t\t\t\t\texpect.hasAssertions();\n\t\t\t\t\t\t\t\tawait withRejection(\"BOOM!\", async (rejection) => {\n\t\t\t\t\t\t\t\t\tawait expect(doResolve([rejection])).resolves.toHaveLength(1);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tdescribe(\"resolves correctly\", () => {\n\t\t\t\t\t\t\t\tit(\"with a value\", async () => {\n\t\t\t\t\t\t\t\t\tawait expect(doResolve(tokenPromise)).resolves.toBe(true);\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tit(\"returns the FunPromise if passed a FunPromise\", () => {\n\t\t\t\t\t\t\t\t\texpect(doResolve(tokenFunPromise)).toEqual(tokenFunPromise);\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tit(\"without a value\", async () => {\n\t\t\t\t\t\t\t\t\tawait expect(doResolve()).resolves.toBeNil();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t});\n\n\tdescribe(\"then\", () => {\n\t\tit(\"works without onrejected\", async () => {\n\t\t\tawait expect(tokenFunPromise.then(_.identity)).resolves.toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"catch\", () => {\n\t\tit(\"handles rejections\", async () => {\n\t\t\tawait expect(\n\t\t\t\ttokenFunPromise\n\t\t\t\t\t.then(() => Promise.reject(\"BOOM!\"))\n\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\texpect(e).toBe(\"BOOM!\");\n\t\t\t\t\t\treturn \"DONE!\";\n\t\t\t\t\t})\n\t\t\t).resolves.toBe(\"DONE!\");\n\t\t});\n\n\t\tit(\"returns the error when not passed an argument\", async () => {\n\t\t\tconst error = new Error(\"BOOM!\");\n\t\t\tawait expect(\n\t\t\t\ttokenFunPromise.then(() => Promise.reject(error)).catch()\n\t\t\t).resolves.toBe(error);\n\t\t});\n\t});\n\n\tdescribe(\"arrayify\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst value = [1, 2, 3, 4];\n\t\t\tawait expect(FunPromise.resolve(value).arrayify()).resolves.toStrictEqual(\n\t\t\t\tvalue\n\t\t\t);\n\t\t});\n\n\t\tit(\"returns a clone\", async () => {\n\t\t\tconst value = [1, 2, 3, 4];\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve(value)\n\t\t\t\t\t.arrayify()\n\t\t\t\t\t.then((it) => {\n\t\t\t\t\t\tit.pop();\n\t\t\t\t\t\treturn it;\n\t\t\t\t\t})\n\t\t\t).resolves.not.toBe(value);\n\t\t\texpect(value).toHaveLength(4);\n\t\t});\n\n\t\tit(\"does not resolve values when called without an argument\", async () => {\n\t\t\tconst rejection = Promise.reject(\"BOOM!\");\n\t\t\ttry {\n\t\t\t\tawait expect(\n\t\t\t\t\tFunPromise.resolve([1, 2, rejection]).arrayify()\n\t\t\t\t).resolves.toBeArrayOfSize(3);\n\t\t\t} finally {\n\t\t\t\trejection.catch((e) => {}); // Disarm the rejection\n\t\t\t}\n\t\t});\n\n\t\tit(\"resolves values when called with the sole argument `true`\", async () => {\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve([\n\t\t\t\t\tPromise.resolve(1),\n\t\t\t\t\tFunPromise.resolve(2),\n\t\t\t\t]).arrayify(true)\n\t\t\t).resolves.toEqual([1, 2]);\n\t\t});\n\n\t\tit(\"rejects values when called with the sole argument `true` and a rejection in the mix\", async () => {\n\t\t\tconst rejection = Promise.reject(\"BOOM!\");\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve([1, 2, rejection]).arrayify(true)\n\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t});\n\n\t\tit(\"rejects values in order when called with the arguments `(true, true)`\", async () => {\n\t\t\tconst rejection1 = Promise.reject(\"BOOM!\");\n\t\t\tconst rejection2 = Promise.reject(\"BANG!\");\n\t\t\ttry {\n\t\t\t\tawait expect(\n\t\t\t\t\tFunPromise.resolve([1, 2, rejection1, rejection2]).arrayify(\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t)\n\t\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t\t} finally {\n\t\t\t\trejection1.catch((e) => {}); // Disarm the rejection\n\t\t\t\trejection2.catch((e) => {}); // Disarm the rejection\n\t\t\t}\n\t\t});\n\n\t\tit(\"resolves values in order when called with the arguments `(true, true)`\", async () => {\n\t\t\tlet sawFirst = false;\n\t\t\tlet sawSecond = false;\n\t\t\tlet sawThird = false;\n\t\t\tlet sawFourth = false;\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve([\n\t\t\t\t\tFunPromise.try(() => {\n\t\t\t\t\t\texpect(sawFirst).toBe(false);\n\t\t\t\t\t\texpect(sawSecond).toBe(false);\n\t\t\t\t\t\texpect(sawThird).toBe(false);\n\t\t\t\t\t\texpect(sawFourth).toBe(false);\n\t\t\t\t\t\tsawFirst = true;\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}),\n\t\t\t\t\tFunPromise.try(() => {\n\t\t\t\t\t\texpect(sawFirst).toBe(true);\n\t\t\t\t\t\texpect(sawSecond).toBe(false);\n\t\t\t\t\t\texpect(sawThird).toBe(false);\n\t\t\t\t\t\texpect(sawFourth).toBe(false);\n\t\t\t\t\t\tsawSecond = true;\n\t\t\t\t\t\treturn 2;\n\t\t\t\t\t}),\n\t\t\t\t\tFunPromise.try(() => {\n\t\t\t\t\t\texpect(sawFirst).toBe(true);\n\t\t\t\t\t\texpect(sawSecond).toBe(true);\n\t\t\t\t\t\texpect(sawThird).toBe(false);\n\t\t\t\t\t\texpect(sawFourth).toBe(false);\n\t\t\t\t\t\tsawThird = true;\n\t\t\t\t\t\treturn 3;\n\t\t\t\t\t}),\n\t\t\t\t\tFunPromise.try(() => {\n\t\t\t\t\t\texpect(sawFirst).toBe(true);\n\t\t\t\t\t\texpect(sawSecond).toBe(true);\n\t\t\t\t\t\texpect(sawThird).toBe(true);\n\t\t\t\t\t\texpect(sawFourth).toBe(false);\n\t\t\t\t\t\tsawFourth = true;\n\t\t\t\t\t\treturn 4;\n\t\t\t\t\t}),\n\t\t\t\t]).arrayify(true, true)\n\t\t\t).resolves.toStrictEqual([1, 2, 3, 4]);\n\t\t\texpect(sawFirst).toBe(true);\n\t\t\texpect(sawSecond).toBe(true);\n\t\t\texpect(sawThird).toBe(true);\n\t\t\texpect(sawFourth).toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"all\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tdescribe(\"basically works\", () => {\n\t\t\t\t\t_.times(10, (argCount) => {\n\t\t\t\t\t\tconst simpleArgs = _.times(argCount, (i) => 2 ** i);\n\n\t\t\t\t\t\tfunction runAll(args) {\n\t\t\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\t\t\treturn FunPromise.all(args);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn FunPromise.resolve(args).all();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tit(`for ${argCount} arguments`, async () => {\n\t\t\t\t\t\t\tawait expect(runAll(simpleArgs)).resolves.toStrictEqual(\n\t\t\t\t\t\t\t\tsimpleArgs\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"try\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tawait expect(FunPromise.try(() => true)).resolves.toBe(true);\n\t\t});\n\n\t\tit(\"works with one argument\", async () => {\n\t\t\tawait expect(FunPromise.try((i) => i, 42)).resolves.toBe(42);\n\t\t});\n\n\t\tit(\"explodes properly\", async () => {\n\t\t\tawait expect(FunPromise.try(() => Promise.reject(\"BOOM!\"))).rejects.toBe(\n\t\t\t\t\"BOOM!\"\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\"map\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tfunction runMap(args, mapper) {\n\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\treturn FunPromise.map(args, mapper);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FunPromise.resolve(args).map(mapper);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tit(\"basically works\", async () => {\n\t\t\t\t\tawait expect(\n\t\t\t\t\t\trunMap([\"Hello\", \"Goodbye\"], (it) => `${it}, World!`)\n\t\t\t\t\t).resolves.toStrictEqual([\"Hello, World!\", \"Goodbye, World!\"]);\n\t\t\t\t});\n\n\t\t\t\tit(\"works with some test values\", async () => {\n\t\t\t\t\tconst defaultValues = [1, 2, 4, 8, 16];\n\t\t\t\t\tconst defaultMapper = (it) => {\n\t\t\t\t\t\tif (Math.random() < 0.5) {\n\t\t\t\t\t\t\treturn Promise.resolve(it * 2);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn it * 2;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tawait expect(\n\t\t\t\t\t\trunMap(defaultValues, defaultMapper)\n\t\t\t\t\t).resolves.toStrictEqual([2, 4, 8, 16, 32]);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"Symbol.toStringTag\", () => {\n\t\tit(\"is the same as the promise passed in\", () => {\n\t\t\tconst promise = new Promise((resolve) => resolve());\n\t\t\tconst promiseTag = promise[Symbol.toStringTag];\n\t\t\texpect(promiseTag).not.toBeNil();\n\t\t\texpect(new FunPromise(promise)[Symbol.toStringTag]).toBe(promiseTag);\n\t\t});\n\t});\n\n\tdescribe(\"finally\", () => {\n\t\tit(\"returns the same promise when given no arguments\", () => {\n\t\t\texpect(tokenFunPromise.finally()).toBe(tokenFunPromise);\n\t\t});\n\n\t\tit(\"executes on resolution\", async () => {\n\t\t\tlet finallyExecuted = false;\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve(false).finally(() => {\n\t\t\t\t\tfinallyExecuted = true;\n\t\t\t\t})\n\t\t\t).resolves.toBe(false);\n\t\t\texpect(finallyExecuted).toBe(true);\n\t\t});\n\n\t\tit(\"executes on rejection\", async () => {\n\t\t\tlet finallyExecuted = false;\n\t\t\tawait expect(\n\t\t\t\tFunPromise.reject(\"BOOM!\").finally(() => {\n\t\t\t\t\tfinallyExecuted = true;\n\t\t\t\t})\n\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t\texpect(finallyExecuted).toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"reject\", () => {\n\t\t_.forEach(\n\t\t\t{ static: FunPromise, instance: tokenFunPromise },\n\t\t\t(impl, name) => {\n\t\t\t\tdescribe(name, () => {\n\t\t\t\t\tit(\"rejects correctly\", async () => {\n\t\t\t\t\t\tawait expect(impl.reject(true)).rejects.toBe(true);\n\t\t\t\t\t});\n\n\t\t\t\t\tit(\"doesn't change the object that is rejected\", async () => {\n\t\t\t\t\t\tconst reason = { foo: true, bar: 42 };\n\t\t\t\t\t\tawait expect(impl.reject(reason)).rejects.toBe(reason);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t});\n\n\tdescribe(\"coalesce\", () => {\n\t\tfunction runCoalesce(args, test) {\n\t\t\treturn FunPromise.coalesce(args, test);\n\t\t}\n\n\t\tit(\"basically works\", async () => {\n\t\t\tawait expect(\n\t\t\t\trunCoalesce([() => null, Promise.resolve(() => true)])\n\t\t\t).resolves.toBe(true);\n\t\t});\n\n\t\tit(\"returns the first resolving value\", async () => {\n\t\t\tawait expect(\n\t\t\t\trunCoalesce([() => FunPromise.delay(1000).resolve(true), () => false])\n\t\t\t).resolves.toBe(false);\n\t\t});\n\n\t\tit(\"returns the value that passes the test\", async () => {\n\t\t\tawait expect(\n\t\t\t\trunCoalesce([() => 2, () => 4], (it) => it > 2)\n\t\t\t).resolves.toBe(4);\n\t\t});\n\n\t\tit(\"throws the error if nothing passes the test\", async () => {\n\t\t\tawait expect(\n\t\t\t\trunCoalesce([() => Promise.reject(\"BOOM!\"), () => 4], (it) => it > 4)\n\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t});\n\n\t\tit(\"punts appropriately after the first resolution\", async () => {\n\t\t\tawait expect(runCoalesce(_.times(3, (idx) => () => idx))).resolves.toBe(\n\t\t\t\t0\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\"delay\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\t_.forEach([-1000, -1, 0, 1, 1000], (delayMs) => {\n\t\t\t\t\tdescribe(`When requesting a delay of ${delayMs} milliseconds`, () => {\n\t\t\t\t\t\tfunction runDelay(arg) {\n\t\t\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\t\t\treturn FunPromise.delay(delayMs, arg);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn FunPromise.resolve().delay(delayMs, arg);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdescribe(\"basically works\", () => {\n\t\t\t\t\t\t\tit(\"with no arg\", async () => {\n\t\t\t\t\t\t\t\tawait expect(runDelay()).resolves;\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tit(\"with one arg\", async () => {\n\t\t\t\t\t\t\t\tawait expect(runDelay(1000)).resolves.toBe(1000);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"simplify\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tawait expect(\n\t\t\t\tnew FunPromise(Promise.resolve(Promise.resolve(true))).simplify()\n\t\t\t).resolves.toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"filter\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tconst defaultValues = [\n\t\t\t\t\t1,\n\t\t\t\t\ttrue,\n\t\t\t\t\t{},\n\t\t\t\t\tnull,\n\t\t\t\t\tPromise.resolve(null),\n\t\t\t\t\tPromise.resolve(),\n\t\t\t\t\t\"Hello, Dolly!\",\n\t\t\t\t];\n\t\t\t\tconst defaultExpect = [1, true, {}, \"Hello, Dolly!\"];\n\t\t\t\tconst defaultTest = (it) => !_.isNil(it);\n\t\t\t\tfunction doFilter(values = defaultValues, test = defaultTest) {\n\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\treturn FunPromise.filter(values, test);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FunPromise.resolve(values).filter(test);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tit(\"basically works\", async () => {\n\t\t\t\t\tawait expect(doFilter()).resolves.not.toBeEmpty();\n\t\t\t\t\tawait expect(doFilter()).resolves.toBeArrayOfSize(4);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"flatMap\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tconst defaultValues = [\n\t\t\t\t\t1,\n\t\t\t\t\ttrue,\n\t\t\t\t\t{},\n\t\t\t\t\tnull,\n\t\t\t\t\tPromise.resolve(null),\n\t\t\t\t\tPromise.resolve(),\n\t\t\t\t\t\"Hello, Dolly!\",\n\t\t\t\t];\n\t\t\t\tconst defaultMapper = (it) => {\n\t\t\t\t\tif (_.isNil(it)) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn [it];\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst defaultExpect = [1, true, {}, \"Hello, Dolly!\"];\n\t\t\t\tfunction doFlatMap(values = defaultValues, mapper = defaultMapper) {\n\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\treturn FunPromise.flatMap(values, mapper);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FunPromise.resolve(values).flatMap(mapper);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tit(\"basically works\", async () => {\n\t\t\t\t\tawait expect(doFlatMap()).resolves.toStrictEqual(defaultExpect);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"tap\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tlet sawTap = false;\n\t\t\tawait expect(\n\t\t\t\ttokenFunPromise.tap((val) => {\n\t\t\t\t\texpect(val).toBe(true);\n\t\t\t\t\tsawTap = true;\n\t\t\t\t\treturn false;\n\t\t\t\t})\n\t\t\t).resolves.toBe(true);\n\t\t\texpect(sawTap).toBe(true);\n\t\t});\n\n\t\tit(\"rejects if it throws an exception\", async () => {\n\t\t\tlet sawTap = false;\n\t\t\tawait expect(\n\t\t\t\ttokenFunPromise.tap((val) => {\n\t\t\t\t\tsawTap = true;\n\t\t\t\t\tthrow \"BOOM!\";\n\t\t\t\t})\n\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t\texpect(sawTap).toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"fold\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tconst defaultValues = [1, 2, 3, 4, 5];\n\n\t\t\t\tfunction doFold(\n\t\t\t\t\tvalues = defaultValues,\n\t\t\t\t\tinitialValue = 0,\n\t\t\t\t\taccumulator = (a, b) => a + b\n\t\t\t\t) {\n\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\treturn FunPromise.fold(values, initialValue, accumulator);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FunPromise.resolve(values).fold(initialValue, accumulator);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tit(\"basically works\", async () => {\n\t\t\t\t\tconst values = [1, 2, 3, 4, 5];\n\t\t\t\t\tawait expect(doFold()).resolves.toBe(1 + 2 + 3 + 4 + 5);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"tapCatch\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tlet sawTapCatch = false;\n\t\t\tawait expect(\n\t\t\t\tFunPromise.reject(\"BOOM!\").tapCatch((e) => {\n\t\t\t\t\tsawTapCatch = true;\n\t\t\t\t\texpect(e).toBe(\"BOOM!\");\n\t\t\t\t\treturn \"BANG!\";\n\t\t\t\t})\n\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t\texpect(sawTapCatch).toBe(true);\n\t\t});\n\n\t\tit(\"nests explosions\", async () => {\n\t\t\tlet sawCatch = false;\n\t\t\tconst err1 = new Error(\"BOOM!\");\n\t\t\tconst err2 = new Error(\"BANG!\");\n\t\t\tawait expect(\n\t\t\t\tFunPromise.reject(err1)\n\t\t\t\t\t.tapCatch((e) => {\n\t\t\t\t\t\tthrow err2;\n\t\t\t\t\t})\n\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\tsawCatch = true;\n\t\t\t\t\t\texpect(e).toBeInstanceOf(NestedError);\n\t\t\t\t\t\texpect(e).toHaveProperty(\"message\", \"Error thrown in 'tapCatch'\");\n\t\t\t\t\t\texpect(e).toHaveProperty(\"innerErrors\");\n\t\t\t\t\t\texpect(e.innerErrors).toHaveLength(2);\n\t\t\t\t\t\texpect(e.innerErrors).toEqual([err1, err2]);\n\t\t\t\t\t\treturn \"Hello!\";\n\t\t\t\t\t})\n\t\t\t).resolves.toBe(\"Hello!\");\n\t\t\texpect(sawCatch).toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"tapEach\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst values = [\n\t\t\t\t123,\n\t\t\t\tPromise.resolve(true),\n\t\t\t\t\"Hello, Dolly!\",\n\t\t\t\tnull,\n\t\t\t\tundefined,\n\t\t\t];\n\t\t\tconst funPromise = FunPromise.resolve(values);\n\t\t\tlet count = 0;\n\t\t\tawait expect(\n\t\t\t\tfunPromise.tapEach(() => {\n\t\t\t\t\tcount++;\n\t\t\t\t})\n\t\t\t).resolves.toEqual(await Promise.all(values));\n\t\t\texpect(count).toBe(values.length);\n\t\t});\n\t});\n\n\tdescribe(\"wrapError\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst reason = \"BOOM!\";\n\t\t\tawait expect(\n\t\t\t\tFunPromise.reject(reason).wrapError(\"BANG!\")\n\t\t\t).rejects.toHaveProperty(\"message\", \"BANG!\");\n\t\t\tawait expect(\n\t\t\t\tFunPromise.reject(reason).wrapError(\"BANG!\")\n\t\t\t).rejects.toHaveProperty(\"innerError\");\n\t\t});\n\t});\n\n\tdescribe(\"wrapErrors\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst err1 = new Error(\"BOOM!\");\n\t\t\tconst err2 = new Error(\"BANG!\");\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve([Promise.reject(err1), Promise.reject(err2)])\n\t\t\t\t\t.wrapErrors(\"ERRORS!\")\n\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\texpect(e).toBeInstanceOf(NestedError);\n\t\t\t\t\t\texpect(e).toHaveProperty(\"message\", \"ERRORS!\");\n\t\t\t\t\t\texpect(e.innerErrors).toHaveLength(2);\n\t\t\t\t\t\texpect(e.innerErrors).toEqual([err1, err2]);\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t})\n\t\t\t).resolves.toBe(true);\n\t\t});\n\n\t\tit(\"doesn't do anything if there is no error\", async () => {\n\t\t\tconst values = [1, 2, 3, true, false, null, undefined];\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve(values).wrapErrors(\"ERRORS!\")\n\t\t\t).resolves.toEqual(values);\n\t\t});\n\t});\n\n\tdescribe(\"cancellation\", () => {\n\t\tit(\"initially reports not cancelled\", () => {\n\t\t\texpect(FunPromise.resolve(true).isCancelled()).toBe(false);\n\t\t});\n\n\t\tit(\"reports cancelled after cancel is called\", () => {\n\t\t\texpect(FunPromise.resolve(true).cancel().isCancelled()).toBe(true);\n\t\t});\n\n\t\tit(\"prevents resolution after cancellation\", () => {\n\t\t\tlet resolver;\n\t\t\tlet sawResolve = false;\n\t\t\tconst promise = new Promise((resolve) => {\n\t\t\t\tresolver = resolve;\n\t\t\t}).then(() => {\n\t\t\t\tsawResolve = true;\n\t\t\t});\n\t\t\texpect(resolver).not.toBeNil();\n\t\t\tconst cancelled = new FunPromise(promise).cancel();\n\t\t\tresolver(true);\n\t\t\texpect(sawResolve).toBe(false);\n\t\t});\n\n\t\tit(\"prevents rejection after cancellation\", () => {\n\t\t\tlet rejector;\n\t\t\tlet sawReject = false;\n\t\t\tconst promise = new Promise((resolve, reject) => {\n\t\t\t\trejector = reject;\n\t\t\t}).catch(() => {\n\t\t\t\tsawReject = true;\n\t\t\t});\n\t\t\texpect(rejector).not.toBeNil();\n\t\t\tconst cancelled = new FunPromise(promise).cancel();\n\t\t\trejector(\"BOOM!\");\n\t\t\texpect(sawReject).toBe(false);\n\t\t});\n\n\t\tit(\"prevents rejection when resolving throws after cancellation\", () => {\n\t\t\tlet resolver;\n\t\t\tlet sawThen = true;\n\t\t\tlet sawCatch = false;\n\t\t\tlet doCancel;\n\t\t\tconst promise = new Promise((resolve) => {\n\t\t\t\tresolver = resolve;\n\t\t\t}).then(() => {\n\t\t\t\tsawThen = true;\n\t\t\t\tdoCancel();\n\t\t\t\tthrow \"BOOM!\";\n\t\t\t});\n\t\t\texpect(resolver).not.toBeNil();\n\t\t\tconst toCancel = new FunPromise(promise);\n\t\t\tdoCancel = () => {\n\t\t\t\ttoCancel.cancel();\n\t\t\t};\n\t\t\ttoCancel.catch((e) => {\n\t\t\t\tsawCatch = true;\n\t\t\t});\n\t\t\tresolver(true);\n\t\t\texpect(sawThen).toBe(true);\n\t\t\texpect(sawCatch).toBe(false);\n\t\t});\n\t});\n\n\tdescribe(\"simplifyAll\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tawait expect(FunPromise.resolve(\"Hello\").simplifyAll()).resolves.toEqual([\n\t\t\t\t\"H\",\n\t\t\t\t\"e\",\n\t\t\t\t\"l\",\n\t\t\t\t\"l\",\n\t\t\t\t\"o\",\n\t\t\t]);\n\t\t});\n\n\t\tit(\"doesn't explode on an empty list\", async () => {\n\t\t\tawait expect(FunPromise.resolve([]).simplifyAll()).resolves.toEqual([]);\n\t\t});\n\t});\n\n\tdescribe(\"settle\", () => {\n\t\tit(\"basically works for rejections\", async () => {\n\t\t\tawait expect(FunPromise.reject(\"BOOM!\").settle()).resolves.toHaveProperty(\n\t\t\t\t\"reason\",\n\t\t\t\t\"BOOM!\"\n\t\t\t);\n\t\t});\n\n\t\tit(\"basically works for fulfillments\", async () => {\n\t\t\tawait expect(FunPromise.resolve(true).settle()).resolves.toHaveProperty(\n\t\t\t\t\"value\",\n\t\t\t\ttrue\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\"settleAll\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tfunction doSettleAll(values) {\n\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\treturn FunPromise.settleAll(values);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FunPromise.resolve(values).settleAll();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tit(\"basically works\", async () => {\n\t\t\t\t\tconst values = [\n\t\t\t\t\t\t{ in: Promise.resolve(true), out: new Fulfillment(true) },\n\t\t\t\t\t\t{ in: Promise.reject(\"BOOM!\"), out: new Rejection(\"BOOM!\") },\n\t\t\t\t\t\t{ in: Promise.reject(null), out: new Rejection(null) },\n\t\t\t\t\t\t{ in: null, out: new Fulfillment(null) },\n\t\t\t\t\t];\n\t\t\t\t\tawait expect(doSettleAll(_.map(values, \"in\"))).resolves.toEqual(\n\t\t\t\t\t\t_.map(values, \"out\")\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\tit(\"doesn't explode on empty lists\", async () => {\n\t\t\t\t\tawait expect(doSettleAll([])).resolves.toEqual([]);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n});\n"]} \ No newline at end of file diff --git a/dist/es6/umd/src/types.test.d.ts b/dist/es6/umd/src/types.test.d.ts deleted file mode 100644 index 961011c..0000000 --- a/dist/es6/umd/src/types.test.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export {}; -//# sourceMappingURL=types.test.d.ts.map \ No newline at end of file diff --git a/dist/es6/umd/src/types.test.d.ts.map b/dist/es6/umd/src/types.test.d.ts.map deleted file mode 100644 index 87481cd..0000000 --- a/dist/es6/umd/src/types.test.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.test.d.ts","sourceRoot":"","sources":["../../../../src/types.test.js"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/es6/umd/src/types.test.js b/dist/es6/umd/src/types.test.js deleted file mode 100644 index baadde2..0000000 --- a/dist/es6/umd/src/types.test.js +++ /dev/null @@ -1,42 +0,0 @@ -/** @format */ -(function (factory) { - if (typeof module === "object" && typeof module.exports === "object") { - var v = factory(require, exports); - if (v !== undefined) module.exports = v; - } - else if (typeof define === "function" && define.amd) { - define(["require", "exports", "./types", "lodash"], factory); - } -})(function (require, exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - const types_1 = require("./types"); - const lodash_1 = require("lodash"); - describe("Fulfillment", () => { - lodash_1.default.forEach([true, { foo: true }], (arg) => { - describe(`when passed the ${typeof arg} argument '${JSON.stringify(arg)}'`, () => { - const fulfillment = new types_1.Fulfillment(arg); - it("exposes the argument on the 'value' property", () => { - expect(fulfillment).toHaveProperty("value", arg); - }); - it("has a 'status' property of 'fulfilled'", () => { - expect(fulfillment).toHaveProperty("status", "fulfilled"); - }); - }); - }); - }); - describe("Rejection", () => { - lodash_1.default.forEach(["BOOM!", new Error("BOOM!")], (arg) => { - describe(`when passed the ${typeof arg} argument: '${arg}'`, () => { - const rejection = new types_1.Rejection(arg); - it("returns the argument in the 'reason' property", () => { - expect(rejection).toHaveProperty("reason", arg); - }); - it("has a 'status' property whose value is 'rejected'", () => { - expect(rejection).toHaveProperty("status", "rejected"); - }); - }); - }); - }); -}); -//# sourceMappingURL=types.test.js.map \ No newline at end of file diff --git a/dist/es6/umd/src/types.test.js.map b/dist/es6/umd/src/types.test.js.map deleted file mode 100644 index 6cdc7aa..0000000 --- a/dist/es6/umd/src/types.test.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.test.js","sourceRoot":"","sources":["../../../../src/types.test.js"],"names":[],"mappings":"AAAA,cAAc;;;;;;;;;;;;IAEd,mCAAiD;IACjD,mCAAuB;IAEvB,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC5B,gBAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;YACxC,QAAQ,CAAC,mBAAmB,OAAO,GAAG,cAAc,IAAI,CAAC,SAAS,CACjE,GAAG,CACH,GAAG,EAAE,GAAG,EAAE;gBACV,MAAM,WAAW,GAAG,IAAI,mBAAW,CAAC,GAAG,CAAC,CAAC;gBAEzC,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;oBACvD,MAAM,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;oBACjD,MAAM,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QAC1B,gBAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;YAChD,QAAQ,CAAC,mBAAmB,OAAO,GAAG,eAAe,GAAG,GAAG,EAAE,GAAG,EAAE;gBACjE,MAAM,SAAS,GAAG,IAAI,iBAAS,CAAC,GAAG,CAAC,CAAC;gBAErC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;oBACxD,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;oBAC5D,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBACxD,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC","sourcesContent":["/** @format */\n\nimport { Fulfillment, Rejection } from \"./types\";\nimport _ from \"lodash\";\n\ndescribe(\"Fulfillment\", () => {\n\t_.forEach([true, { foo: true }], (arg) => {\n\t\tdescribe(`when passed the ${typeof arg} argument '${JSON.stringify(\n\t\t\targ\n\t\t)}'`, () => {\n\t\t\tconst fulfillment = new Fulfillment(arg);\n\n\t\t\tit(\"exposes the argument on the 'value' property\", () => {\n\t\t\t\texpect(fulfillment).toHaveProperty(\"value\", arg);\n\t\t\t});\n\n\t\t\tit(\"has a 'status' property of 'fulfilled'\", () => {\n\t\t\t\texpect(fulfillment).toHaveProperty(\"status\", \"fulfilled\");\n\t\t\t});\n\t\t});\n\t});\n});\n\ndescribe(\"Rejection\", () => {\n\t_.forEach([\"BOOM!\", new Error(\"BOOM!\")], (arg) => {\n\t\tdescribe(`when passed the ${typeof arg} argument: '${arg}'`, () => {\n\t\t\tconst rejection = new Rejection(arg);\n\n\t\t\tit(\"returns the argument in the 'reason' property\", () => {\n\t\t\t\texpect(rejection).toHaveProperty(\"reason\", arg);\n\t\t\t});\n\n\t\t\tit(\"has a 'status' property whose value is 'rejected'\", () => {\n\t\t\t\texpect(rejection).toHaveProperty(\"status\", \"rejected\");\n\t\t\t});\n\t\t});\n\t});\n});\n"]} \ No newline at end of file diff --git a/dist/esm.index.js.xz b/dist/esm.index.js.xz new file mode 100644 index 0000000..b24a89c Binary files /dev/null and b/dist/esm.index.js.xz differ diff --git a/dist/esm.tar.xz b/dist/esm.tar.xz new file mode 100644 index 0000000..538dc60 Binary files /dev/null and b/dist/esm.tar.xz differ diff --git a/dist/esnext.index.js.xz b/dist/esnext.index.js.xz new file mode 100644 index 0000000..01aacfc Binary files /dev/null and b/dist/esnext.index.js.xz differ diff --git a/dist/esnext/src/deferral.test.d.ts b/dist/esnext/src/deferral.test.d.ts deleted file mode 100644 index 4c655ce..0000000 --- a/dist/esnext/src/deferral.test.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export {}; -//# sourceMappingURL=deferral.test.d.ts.map \ No newline at end of file diff --git a/dist/esnext/src/deferral.test.d.ts.map b/dist/esnext/src/deferral.test.d.ts.map deleted file mode 100644 index 8e3061d..0000000 --- a/dist/esnext/src/deferral.test.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"deferral.test.d.ts","sourceRoot":"","sources":["../../../src/deferral.test.js"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/esnext/src/deferral.test.js b/dist/esnext/src/deferral.test.js deleted file mode 100644 index d427625..0000000 --- a/dist/esnext/src/deferral.test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** @format */ -import FunPromise from "./fun-promise"; -import Deferral from "./deferral"; -import "./types"; -import "lodash"; -describe("Deferral", () => { - it("can be constructed", () => { - const deferral = new Deferral(); - expect(deferral).not.toBeNil(); - }); - describe("promise", () => { - it("is a FunPromise", () => { - const deferral = new Deferral(); - expect(deferral.promise).toBeInstanceOf(FunPromise); - }); - }); - describe("resolve", () => { - it("basically works", async () => { - const deferral = new Deferral(); - deferral.resolve(true); - await expect(deferral.resolve(true)).resolves.toBe(true); - }); - it("does not change resolved value if called multiple times", async () => { - const deferral = new Deferral(); - await expect(deferral.resolve(true)).resolves.toBe(true); - await expect(deferral.resolve(false)).resolves.toBe(true); - }); - }); - describe("reject", () => { - it("basically works", async () => { - const deferral = new Deferral(); - await expect(deferral.reject(new Error("BOOM!"))).rejects.toHaveProperty("message", "BOOM!"); - }); - it("does not change reason if called multiple times", async () => { - const deferral = new Deferral(); - await expect(deferral.reject(new Error("BOOM!"))).rejects.toHaveProperty("message", "BOOM!"); - await expect(deferral.reject(new Error("BANG!"))).rejects.toHaveProperty("message", "BOOM!"); - }); - }); -}); -//# sourceMappingURL=deferral.test.js.map \ No newline at end of file diff --git a/dist/esnext/src/deferral.test.js.map b/dist/esnext/src/deferral.test.js.map deleted file mode 100644 index 21c51b0..0000000 --- a/dist/esnext/src/deferral.test.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"deferral.test.js","sourceRoot":"","sources":["../../../src/deferral.test.js"],"names":[],"mappings":"AAAA,cAAc;AAEd,OAAO,UAAU,MAAM,eAAe,CAAC;AACvC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAA6B,SAAS,CAAC;AACvC,OAAc,QAAQ,CAAC;AAEvB,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC7B,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;YAC1B,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;YAChC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;YAChC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;YAChC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvB,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;YAChC,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;YAChC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;YAChC,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CACvE,SAAS,EACT,OAAO,CACP,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;YAChC,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CACvE,SAAS,EACT,OAAO,CACP,CAAC;YACF,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CACvE,SAAS,EACT,OAAO,CACP,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["/** @format */\n\nimport FunPromise from \"./fun-promise\";\nimport Deferral from \"./deferral\";\nimport { PromiseState } from \"./types\";\nimport _ from \"lodash\";\n\ndescribe(\"Deferral\", () => {\n\tit(\"can be constructed\", () => {\n\t\tconst deferral = new Deferral();\n\t\texpect(deferral).not.toBeNil();\n\t});\n\n\tdescribe(\"promise\", () => {\n\t\tit(\"is a FunPromise\", () => {\n\t\t\tconst deferral = new Deferral();\n\t\t\texpect(deferral.promise).toBeInstanceOf(FunPromise);\n\t\t});\n\t});\n\n\tdescribe(\"resolve\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst deferral = new Deferral();\n\t\t\tdeferral.resolve(true);\n\t\t\tawait expect(deferral.resolve(true)).resolves.toBe(true);\n\t\t});\n\n\t\tit(\"does not change resolved value if called multiple times\", async () => {\n\t\t\tconst deferral = new Deferral();\n\t\t\tawait expect(deferral.resolve(true)).resolves.toBe(true);\n\t\t\tawait expect(deferral.resolve(false)).resolves.toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"reject\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst deferral = new Deferral();\n\t\t\tawait expect(deferral.reject(new Error(\"BOOM!\"))).rejects.toHaveProperty(\n\t\t\t\t\"message\",\n\t\t\t\t\"BOOM!\"\n\t\t\t);\n\t\t});\n\n\t\tit(\"does not change reason if called multiple times\", async () => {\n\t\t\tconst deferral = new Deferral();\n\t\t\tawait expect(deferral.reject(new Error(\"BOOM!\"))).rejects.toHaveProperty(\n\t\t\t\t\"message\",\n\t\t\t\t\"BOOM!\"\n\t\t\t);\n\t\t\tawait expect(deferral.reject(new Error(\"BANG!\"))).rejects.toHaveProperty(\n\t\t\t\t\"message\",\n\t\t\t\t\"BOOM!\"\n\t\t\t);\n\t\t});\n\t});\n});\n"]} \ No newline at end of file diff --git a/dist/esnext/src/fun-promise.d.ts b/dist/esnext/src/fun-promise.d.ts index 23424f3..fbe5861 100644 --- a/dist/esnext/src/fun-promise.d.ts +++ b/dist/esnext/src/fun-promise.d.ts @@ -26,7 +26,7 @@ export default class FunPromise implements Promise { /** * Constructor, which takes the promise to wrap. */ - constructor(wrapped: Promise); + constructor(wrapped: Promisable); /** * Takes a value (or a promise of a value) and returns a promise wrapping * it. @@ -298,6 +298,18 @@ export default class FunPromise implements Promise { * Equivalent to `FunPromise.resolve(values).fold(initialValue, accumulator)`. */ static fold(values: PromisableIterable, initialValue: T2, accumulator: (memo: T2, it: T) => Promisable): FunPromise; + /** + * Given an initial array of values and an accumulator function, apply the accumlator function to each element of the promise's resolved value, + * passing in the current array of values and the resolved item. Returns an array with the concatenated results of the accumulation. + * If any of the promise's values are rejected, the entire operation will be rejected. + * + * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve. + */ + flatFold>(initialValue: PromisableIterable, accumulator: (memo: T2[], it: Item) => PromisableIterable): FunPromise; + /** + * Equivalent to `FunPromise.resolve(values).flatFold(initialValue, accumulator)`. + */ + static flatFold(values: PromisableIterable, initialValue: PromisableIterable, accumulator: (memo: T2[], it: T) => PromisableIterable): FunPromise; /** * Handles rejections like 'catch', but wraps them in a [[`NestedError`]] with the given message. */ diff --git a/dist/esnext/src/fun-promise.d.ts.map b/dist/esnext/src/fun-promise.d.ts.map index 23e99ed..58765b6 100644 --- a/dist/esnext/src/fun-promise.d.ts.map +++ b/dist/esnext/src/fun-promise.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"fun-promise.d.ts","sourceRoot":"","sources":["../../../src/fun-promise.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fun-promise.d.ts","sourceRoot":"","sources":["../../../src/fun-promise.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/esnext/src/fun-promise.js b/dist/esnext/src/fun-promise.js index d71387b..736a378 100644 --- a/dist/esnext/src/fun-promise.js +++ b/dist/esnext/src/fun-promise.js @@ -24,7 +24,7 @@ import _isNil from "lodash/isNil"; import _map from "lodash/map"; import _negate from "lodash/negate"; import "lodash/noop"; -import "lodash/toArray"; +import _toArray from "lodash/toArray"; // import Debug from "debug"; // const debug = Debug("fun-promises"); /** @@ -173,9 +173,8 @@ export default class FunPromise { * as `true`. The items are not resolved sequentially unless you also pass a second argument as `true`. */ arrayify(resolveValues = false, sequentialResolution = false) { - const aryPromise = this.then((iter) => [ - ...iter, - ]); + const aryPromise = this.then(async (iterPromise) => _toArray(await iterPromise) // Just to be sure we're all de-promise'd + ); if (resolveValues) { if (sequentialResolution) { return aryPromise.then(async (ary) => { @@ -392,6 +391,29 @@ export default class FunPromise { static fold(values, initialValue, accumulator) { return FunPromise.resolve(values).fold(initialValue, accumulator); } + /** + * Given an initial array of values and an accumulator function, apply the accumlator function to each element of the promise's resolved value, + * passing in the current array of values and the resolved item. Returns an array with the concatenated results of the accumulation. + * If any of the promise's values are rejected, the entire operation will be rejected. + * + * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve. + */ + flatFold(initialValue, accumulator) { + return this.arrayify().then(async (ary) => { + let memoPromise = FunPromise.resolve(initialValue).arrayify(); + await Promise.all(_map(ary, async (promisableValue) => { + const value = await promisableValue; + memoPromise = memoPromise.then(async (memo) => memo.concat(_toArray(await accumulator(memo, value)))); + })); + return memoPromise; + }); + } + /** + * Equivalent to `FunPromise.resolve(values).flatFold(initialValue, accumulator)`. + */ + static flatFold(values, initialValue, accumulator) { + return FunPromise.resolve(values).flatFold(initialValue, accumulator); + } /** * Handles rejections like 'catch', but wraps them in a [[`NestedError`]] with the given message. */ diff --git a/dist/esnext/src/fun-promise.js.map b/dist/esnext/src/fun-promise.js.map index 61e1654..7425938 100644 --- a/dist/esnext/src/fun-promise.js.map +++ b/dist/esnext/src/fun-promise.js.map @@ -1 +1 @@ -{"version":3,"file":"fun-promise.js","sourceRoot":"","sources":["../../../src/fun-promise.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @format\n */\n\n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n\nimport {\n\tPromisable,\n\tPromisableIterable,\n\tUnpromise,\n\tItem,\n\tSettlement,\n\tFulfillment,\n\tRejection,\n} from \"./types\";\nimport { NestedError } from \"ts-nested-error\";\n\nimport _defer from \"lodash/defer\";\nimport _delay from \"lodash/delay\";\nimport _filter from \"lodash/filter\";\nimport _flatten from \"lodash/flatten\";\nimport _identity from \"lodash/identity\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _isError from \"lodash/isError\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\nimport _map from \"lodash/map\";\nimport _negate from \"lodash/negate\";\nimport _noop from \"lodash/noop\";\nimport _toArray from \"lodash/toArray\";\n\n// import Debug from \"debug\";\n// const debug = Debug(\"fun-promises\");\n\n/**\n * The class that you should use instead of `Promise`. It implements the `Promise` API, so it should be a drop-in replacement.\n */\nexport default class FunPromise implements Promise {\n\t/**\n\t * Whether or not this FunPromise has been cancelled.\n\t */\n\tprivate _isCancelled: boolean = false;\n\n\t/**\n\t * The promise that was wrapped after attaching our custom logic.\n\t */\n\tprotected readonly wrapped: Promise;\n\n\t/**\n\t * Constructor, which takes the promise to wrap.\n\t */\n\tconstructor(wrapped: Promise) {\n\t\tthis.wrapped = new Promise(async (resolve, reject) => {\n\t\t\tlet resolved = null;\n\t\t\ttry {\n\t\t\t\tresolved = await wrapped;\n\t\t\t} catch (e) {\n\t\t\t\tif (this._isCancelled) return;\n\t\t\t\treject(e);\n\t\t\t}\n\t\t\tif (this._isCancelled) return;\n\t\t\tresolve(resolved);\n\t\t});\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise wrapping\n\t * it.\n\t */\n\tstatic resolve(value?: Promisable): FunPromise {\n\t\tif (value instanceof FunPromise) {\n\t\t\treturn value as FunPromise;\n\t\t} else if (value instanceof Promise) {\n\t\t\treturn new FunPromise(value);\n\t\t} else {\n\t\t\treturn new FunPromise(new Promise((resolve) => resolve(value)));\n\t\t}\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and resolves to the new value,\n\t * disregarding any previous resolution value.\n\t */\n\tresolve(value?: Promisable): FunPromise {\n\t\treturn new FunPromise(this.wrapped.then(() => value));\n\t}\n\n\t/**\n\t * An alias for `resolve` provided for consistency with the instance `return` method.\n\t *\n\t * @deprecated Use `resolve` instead.\n\t */\n\tstatic return(value?: Promisable): FunPromise {\n\t\treturn FunPromise.resolve(value);\n\t}\n\n\t/**\n\t * An alias for `resolve` provided for compatibility with [the Bluebird API|http://bluebirdjs.com/docs/api/return.html].\n\t *\n\t * @deprecated Use `resolve` instead.\n\t */\n\treturn(value?: Promisable): FunPromise {\n\t\treturn this.resolve(value);\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise rejecting\n\t * with that value, after unwrapping as many layers of `PromiseLike`\n\t * wrappers as necessary.\n\t */\n\tstatic reject(value?: unknown): FunPromise {\n\t\treturn new FunPromise(Promise.reject(value));\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise rejecting\n\t * with that value, after unwrapping as many layers of `PromiseLike`\n\t * wrappers as necessary. This disregards any existing status.\n\t */\n\treject(value?: unknown): FunPromise {\n\t\treturn FunPromise.reject(value);\n\t}\n\n\t/**\n\t * Attaches callbacks for the resolution and/or rejection of the Promise.\n\t * @param onfulfilled The optional callback to execute when the Promise is resolved.\n\t * @param onrejected The optional callback to execute when the Promise is rejected. If provided, the result of this callback is the new resolution value, and this promise is resolved, not rejected.\n\t * @returns A Promise for the completion of which ever callback is executed.\n\t */\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable\n\t): FunPromise;\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable,\n\t\tonrejected: (reason: unknown) => Promisable\n\t): FunPromise;\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable,\n\t\tonrejected?: (reason: unknown) => Promisable\n\t): FunPromise {\n\t\tif (_isNil(onrejected)) {\n\t\t\treturn new FunPromise(this.wrapped.then(onfulfilled));\n\t\t} else {\n\t\t\treturn new FunPromise(this.wrapped.then(onfulfilled, onrejected));\n\t\t}\n\t}\n\n\t/**\n\t * Attaches a callback for only the rejection of the Promise. If the callback throws, then throws a [[`NestedError`]] with\n\t * both the original rejection reason and the new thrown value.\n\t *\n\t * @param onrejected The callback to execute when the Promise is rejected.\n\t * @returns A Promise for the completion of the callback.\n\t */\n\tcatch(\n\t\tonrejected: (reason: unknown) => Promisable = _identity\n\t): FunPromise {\n\t\treturn new FunPromise(this.wrapped.catch(onrejected));\n\t}\n\n\t/**\n\t * Creates a Promise that is resolved with an array of results when all of the\n\t * provided Promises resolve, or rejected when any Promise is rejected.\n\t * @param values An array of Promises.\n\t * @returns A new Promise.\n\t */\n\tstatic all(values: PromisableIterable): FunPromise;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable, Promisable, Promisable]\n\t): FunPromise<[T1, T2, T3, T4]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable, Promisable]\n\t): FunPromise<[T1, T2, T3]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable]\n\t): FunPromise<[T1, T2]>;\n\tstatic all(values: [Promisable]): FunPromise<[T1]>;\n\tstatic all(...values: any[]): any {\n\t\treturn FunPromise.resolve(_flatten(values)).all();\n\t}\n\tall(): FunPromise[]> {\n\t\treturn this.arrayify(true);\n\t}\n\n\t/**\n\t * Given a function (or a promise of a function) that returns a value (or a promise of a value),\n\t * create a promise that executes the function and returns the value. If executing the function\n\t * throws an exception, then that exception becomes the rejection of the promise.\n\t *\n\t * Any arguments after the first will be passed into the function when it is invoked. If they are\n\t * a `PromiseLike`, then they will be resolved and the resolution value will be passed into the\n\t * function instead.\n\t *\n\t * This function is really useful in the following cases:\n\t * 1. to [avoid releasing Zalgo](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n\t * 2. when you want to create a `FunPromise` based on an `async` function\n\t * 3. when you want to create a `FunPromise` based on a normal function\n\t */\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6,\n\t\t\t\targ7: Arg7,\n\t\t\t\targ8: Arg8\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable,\n\t\targ7: Promisable,\n\t\targ8: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6,\n\t\t\t\targ7: Arg7\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable,\n\t\targ7: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(arg1: Arg1, arg2: Arg2, arg3: Arg3, arg4: Arg4) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1, arg2: Arg2, arg3: Arg3) => Promisable>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1, arg2: Arg2) => Promisable>,\n\t\targ1: Promisable,\n\t\targ2: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1) => Promisable>,\n\t\targ1: Promisable\n\t): FunPromise;\n\tstatic try(source: Promisable<() => Promisable>): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(...args: ArgT[]) => Promisable>,\n\t\t...args: ArgT[]\n\t): FunPromise {\n\t\treturn FunPromise.resolve(source).then((f) => {\n\t\t\tif (_isEmpty(args)) {\n\t\t\t\treturn f();\n\t\t\t} else {\n\t\t\t\treturn Promise.all(args).then((realArgs) => f(...realArgs));\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Unwraps layers of `PromiseLike` wrappers as necessary.\n\t *\n\t * This behavior is actually part of the Promise/A+ spec, but the type system struggles with that fact,\n\t * so this method is a workaround.\n\t *\n\t * In a future version of this library, `FunPromise` will extend `Promise>` instead of\n\t * just `Promise`, which will render this method irrelevant. Unfortunately, Typescript's type system\n\t * doesn't seem capable of handling that reality quite yet, so this is what we get.\n\t */\n\tsimplify(): FunPromise> {\n\t\treturn (this as unknown) as FunPromise>;\n\t}\n\n\t/**\n\t * For each element of the resolved iterable, unwraps layers of `PromiseLike` wrappers as necessary.\n\t */\n\tsimplifyAll(): FunPromise>[]> {\n\t\treturn this.arrayify().map((it) => FunPromise.resolve(it).simplify());\n\t}\n\n\t/**\n\t * Coerces the resolve value (which must be an `Iterable`) into an array. The `Iterable` requirement\n\t * comes from the `Item` return value: `Item` is equivalent to `never` if `T` is not an `Iterable`.\n\t *\n\t * Note that this function does *NOT* resolve the items within the array unless you pass the first argument\n\t * as `true`. The items are not resolved sequentially unless you also pass a second argument as `true`.\n\t */\n\tarrayify(\n\t\tresolveValues: boolean = false,\n\t\tsequentialResolution: boolean = false\n\t): FunPromise[]> {\n\t\tconst aryPromise: FunPromise[]> = this.then((iter) => [\n\t\t\t...((iter as unknown) as Iterable>),\n\t\t]);\n\t\tif (resolveValues) {\n\t\t\tif (sequentialResolution) {\n\t\t\t\treturn aryPromise.then(async (ary) => {\n\t\t\t\t\tconst results = [];\n\t\t\t\t\twhile (!_isEmpty(ary)) {\n\t\t\t\t\t\tresults.push(await ary.shift());\n\t\t\t\t\t}\n\t\t\t\t\treturn results;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn aryPromise.then((ary) => Promise.all(ary));\n\t\t\t}\n\t\t} else {\n\t\t\treturn aryPromise;\n\t\t}\n\t}\n\n\t/**\n\t * Given a mapping function, apply the mapping function to each element of the promise's resolved value,\n\t * and return an array with the results of the mapping. If any of the mapping results are rejected,\n\t * the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result correspond to the order of the elements in the promise's\n\t * resolved value. However, the resolution order is not guaranteed. For example, although the\n\t * output at index 0 will hold the mapping of the input element at index 0, it is not guaranteed that\n\t * the mapping of index 0 will be awaited before the mapping of index 1.\n\t */\n\tmap>(mapper: (it: Item) => Promisable): FunPromise {\n\t\tconst results = [];\n\t\treturn FunPromise.try(async () => {\n\t\t\tawait Promise.all(\n\t\t\t\t_map(await this.arrayify(), async (value, idx) => {\n\t\t\t\t\tresults[idx] = await mapper(await value);\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn results;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).map(mapper)`.\n\t */\n\tstatic map(\n\t\tvalues: PromisableIterable,\n\t\tmapper: (it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).map(mapper);\n\t}\n\n\t/**\n\t * Required to implement `Promise`, but you almost certainly don't care about it.\n\t *\n\t * All the same, it returns the string tag of the underlying promise.\n\t */\n\tget [Symbol.toStringTag]() {\n\t\treturn this.wrapped[Symbol.toStringTag];\n\t}\n\n\t/**\n\t * Executes the provided code whether the promise rejects or resolves.\n\t */\n\tfinally(): FunPromise;\n\tfinally(onfinally: () => void): FunPromise;\n\tfinally(onfinally?) {\n\t\tif (_isFunction(onfinally)) {\n\t\t\treturn new FunPromise(this.wrapped.finally(onfinally));\n\t\t} else {\n\t\t\treturn this;\n\t\t}\n\t}\n\n\t/**\n\t * Given a [[`PromisableIterable`]] whose values are nullary functions returning [[Promisable|`Promisable`]],\n\t * this executes all the functions simultaneously and returns the first whose return value passes the provided test.\n\t * The default test returns true if the value is not `null` or `undefined`.\n\t *\n\t * If no function resolves successfully, the last seen rejection is thrown. If some functions resolve but some reject,\n\t * and none of the resolved values pass the test, then the last seen rejection is thrown.\n\t *\n\t * If all the functions resolve but to a value but no value passes the test, then this rejects with an error saying as much.\n\t */\n\tstatic coalesce(\n\t\tfns: PromisableIterable<() => Promisable>,\n\t\ttest: (item: T) => Promisable = _negate(_isNil)\n\t): FunPromise {\n\t\tlet resolved = false;\n\t\tlet lastSeenReason: unknown = new Error(\"No values left after coalescing\");\n\t\tlet resolveValue;\n\t\treturn FunPromise.map(fns, (fn) =>\n\t\t\tFunPromise.try(fn)\n\t\t\t\t.then((result) => {\n\t\t\t\t\tif (resolved) return null;\n\t\t\t\t\treturn FunPromise.try(test, result).then((testResult) => {\n\t\t\t\t\t\tif (resolved) return null;\n\t\t\t\t\t\tif (testResult) {\n\t\t\t\t\t\t\tresolved = true;\n\t\t\t\t\t\t\tresolveValue = result;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch((e) => {\n\t\t\t\t\tlastSeenReason = e;\n\t\t\t\t})\n\t\t).then(() => {\n\t\t\tif (resolved) {\n\t\t\t\treturn resolveValue;\n\t\t\t} else {\n\t\t\t\tthrow lastSeenReason;\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Waits for `waitTimeMs` milliseconds before resolving. If `returnValue` is provided, resolves with the provided value.\n\t *\n\t * If `waitTimeMs` is less than or equal to zero, then it simply defers until the call stack is clear.\n\t */\n\tstatic delay(waitTimeMs: number): FunPromise;\n\tstatic delay(\n\t\twaitTimeMs: number,\n\t\treturnValue: Promisable\n\t): FunPromise;\n\tstatic delay(waitTimeMs, returnValue?) {\n\t\treturn FunPromise.resolve().delay(waitTimeMs, returnValue);\n\t}\n\n\t/**\n\t * Waits for `waitTimeMs` milliseconds before resolving. If `returnValue` is provided, resolves with the provided value.\n\t *\n\t * If `waitTimeMs` is less than or equal to zero, then it simply defers until the call stack is clear.\n\t */\n\tdelay(\n\t\twaitTimeMs: number,\n\t\treturnValue?: Promisable\n\t): FunPromise {\n\t\tif (waitTimeMs <= 0) {\n\t\t\treturn new FunPromise(\n\t\t\t\tnew Promise((resolve) => _defer(resolve, returnValue))\n\t\t\t);\n\t\t} else {\n\t\t\treturn new FunPromise(\n\t\t\t\tnew Promise((resolve) => _delay(resolve, waitTimeMs, returnValue))\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Given a filtering function, apply the filtering function to each element of the promise's resolved value,\n\t * and return an array with the values for which the filtering function returns `true`. If any of the filtering\n\t * results are rejected, the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result are stable with regard to the order of the elements in the promise's\n\t * resolved value. That is, if `X < Y` and `input[X]` and `input[Y]` are both in the input, and `input[X]` and\n\t * `input[Y]` both pass the filtering function, then the output index of `input[X]` will be less than the output\n\t * index of `input[Y]`. However, the resolution order is not guaranteed: that is, `input[Y]` may be resolved and\n\t * tested before `input[X]` even though `input[X]` has a lower output index than `input[Y]`.\n\t */\n\tfilter(test: (it: Item) => Promisable): FunPromise[]> {\n\t\treturn this.arrayify().then(async (ary) => {\n\t\t\tconst results = await FunPromise.map(ary, async (it) => test(await it));\n\t\t\t// @ts-ignore\n\t\t\treturn _filter(ary, (it, idx) => results[idx]);\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(items).filter(test)`.\n\t */\n\tstatic filter(\n\t\titems: PromisableIterable,\n\t\ttest: (it: Item>) => Promisable\n\t): FunPromise>[]> {\n\t\treturn FunPromise.resolve(items).filter(test);\n\t}\n\n\t/**\n\t * Given a mapping function, apply the mapping function to each element of the promise's resolved value,\n\t * and return an array with the concatenated results of the mapping. If any of the mapping results are\n\t * rejected, the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result correspond to the order of the elements in the promise's\n\t * resolved value. However, the resolution order is not guaranteed.\n\t */\n\tflatMap>(\n\t\tmapper: (it: Item) => Promisable\n\t): FunPromise {\n\t\treturn this.arrayify().then(async (ary: Promisable>[]) => {\n\t\t\tconst promises: Array>> = _map(ary, async (value) =>\n\t\t\t\tmapper(await value)\n\t\t\t);\n\t\t\tconst resolved: T2[][] = await Promise.all(promises);\n\t\t\tconst flattened: T2[] = _flatten(resolved);\n\t\t\treturn flattened;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).flatMap(mapper)`.\n\t */\n\tstatic flatMap(\n\t\tvalues: PromisableIterable,\n\t\tmapper: (it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).flatMap(mapper);\n\t}\n\n\t/**\n\t * Access the resolved value without changing it. Note that if the callback rejects (ie: throws),\n\t * then the resulting promise will be rejected.\n\t */\n\ttap(callback: (val: T) => Promisable): FunPromise {\n\t\treturn this.then(async (val) => {\n\t\t\tawait callback(val);\n\t\t\treturn val;\n\t\t});\n\t}\n\n\t/**\n\t * Access the rejection reason without changing it. Note that if the callback itself rejects (ie: throws),\n\t * both rejection reasons will be capture in a single [[`NestedError`]].\n\t */\n\ttapCatch(callback: (reason: unknown) => Promisable): FunPromise {\n\t\treturn this.catch(async (err) => {\n\t\t\ttry {\n\t\t\t\tawait callback(err);\n\t\t\t} catch (err2) {\n\t\t\t\tthrow new NestedError(\"Error thrown in 'tapCatch'\", err, err2);\n\t\t\t}\n\t\t\tthrow err;\n\t\t});\n\t}\n\n\t/**\n\t * Access each of the resolved values of a resolved iterable without changing it. Note that if the callback rejects (ie: throws),\n\t * then the resulting promise will be rejected.\n\t */\n\ttapEach(callback: (val: Item) => Promisable): FunPromise[]> {\n\t\treturn this.arrayify(true).tap(async (ary) => {\n\t\t\tawait Promise.all(_map(ary, callback));\n\t\t});\n\t}\n\n\t/**\n\t * Given an initial value and an accumulator function, apply the accumlator function to each element of the promise's resolved value,\n\t * passing in the current value and the result. Returns an array with the result of the accumulation. If any of the promise's values are\n\t * rejected, the entire operation will be rejected.\n\t *\n\t * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve.\n\t */\n\tfold>(\n\t\tinitialValue: T2,\n\t\taccumulator: (memo: T2, it: Item) => Promisable\n\t): FunPromise {\n\t\treturn this.arrayify().then(async (ary: Promisable>[]) => {\n\t\t\tlet memoPromise = FunPromise.resolve(initialValue);\n\t\t\tawait Promise.all(\n\t\t\t\t_map(ary, async (promisableValue) => {\n\t\t\t\t\tconst value = await promisableValue;\n\t\t\t\t\tmemoPromise = memoPromise.then((memo) => accumulator(memo, value));\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn await memoPromise;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).fold(initialValue, accumulator)`.\n\t */\n\tstatic fold(\n\t\tvalues: PromisableIterable,\n\t\tinitialValue: T2,\n\t\taccumulator: (memo: T2, it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).fold(initialValue, accumulator);\n\t}\n\n\t/**\n\t * Handles rejections like 'catch', but wraps them in a [[`NestedError`]] with the given message.\n\t */\n\twrapError(msg: string): FunPromise {\n\t\treturn this.catch(NestedError.rethrow(msg));\n\t}\n\n\t/**\n\t * Resolves all the elements of the resolved value, which is assumed to be an `Iterable`. If any\n\t * of the values reject, all the reasons are collected and wrapped in a [[`NestedError`]].\n\t */\n\twrapErrors(msg: string): FunPromise[]> {\n\t\treturn this.arrayify().then(async (ary) => {\n\t\t\tlet errors = [];\n\t\t\tawait Promise.all(\n\t\t\t\t_map(ary, (val) => Promise.resolve(val).catch((e) => errors.push(e)))\n\t\t\t);\n\t\t\tif (_isEmpty(errors)) {\n\t\t\t\treturn ary;\n\t\t\t} else {\n\t\t\t\tthrow new NestedError(msg, ...errors);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Cancel the FunPromise. A cancelled FunPromise will silently disregard any resolution or rejection which occurs after the cancellation.\n\t */\n\tcancel() {\n\t\tthis._isCancelled = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns whether or not the promise has been cancelled. See `cancel()` for more details.\n\t */\n\tisCancelled() {\n\t\treturn this._isCancelled;\n\t}\n\n\t/**\n\t * Captures either fulfillment or rejection and resolves an object that describes the result.\n\t */\n\tsettle(): FunPromise> {\n\t\treturn new FunPromise(\n\t\t\tthis.wrapped.then(\n\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Assuming that the resolved value is an iterable, then for each element of the\n\t * array, captures either the fulfillment or rejection of that element.\n\t */\n\tsettleAll(): FunPromise>[]> {\n\t\treturn new FunPromise(\n\t\t\tthis.arrayify().wrapped.then((ary) =>\n\t\t\t\tPromise.all(\n\t\t\t\t\t_map(ary, (val) =>\n\t\t\t\t\t\tPromise.resolve(val).then(\n\t\t\t\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(iterable).settleAll()`.\n\t */\n\tstatic settleAll(\n\t\titerable: PromisableIterable\n\t): FunPromise[]> {\n\t\treturn new FunPromise(\n\t\t\tPromise.resolve(iterable).then((ary) =>\n\t\t\t\tPromise.all(\n\t\t\t\t\t_map(ary, (val) =>\n\t\t\t\t\t\tPromise.resolve(val).then(\n\t\t\t\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t}\n}\n"]} \ No newline at end of file +{"version":3,"file":"fun-promise.js","sourceRoot":"","sources":["../../../src/fun-promise.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @format\n */\n\n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n\nimport {\n\tPromisable,\n\tPromisableIterable,\n\tUnpromise,\n\tItem,\n\tSettlement,\n\tFulfillment,\n\tRejection,\n} from \"./types\";\nimport { NestedError } from \"ts-nested-error\";\n\nimport _defer from \"lodash/defer\";\nimport _delay from \"lodash/delay\";\nimport _filter from \"lodash/filter\";\nimport _flatten from \"lodash/flatten\";\nimport _identity from \"lodash/identity\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _isError from \"lodash/isError\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\nimport _map from \"lodash/map\";\nimport _negate from \"lodash/negate\";\nimport _noop from \"lodash/noop\";\nimport _toArray from \"lodash/toArray\";\n\n// import Debug from \"debug\";\n// const debug = Debug(\"fun-promises\");\n\n/**\n * The class that you should use instead of `Promise`. It implements the `Promise` API, so it should be a drop-in replacement.\n */\nexport default class FunPromise implements Promise {\n\t/**\n\t * Whether or not this FunPromise has been cancelled.\n\t */\n\tprivate _isCancelled: boolean = false;\n\n\t/**\n\t * The promise that was wrapped after attaching our custom logic.\n\t */\n\tprotected readonly wrapped: Promise;\n\n\t/**\n\t * Constructor, which takes the promise to wrap.\n\t */\n\tconstructor(wrapped: Promisable) {\n\t\tthis.wrapped = new Promise(async (resolve, reject) => {\n\t\t\tlet resolved = null;\n\t\t\ttry {\n\t\t\t\tresolved = await wrapped;\n\t\t\t} catch (e) {\n\t\t\t\tif (this._isCancelled) return;\n\t\t\t\treject(e);\n\t\t\t}\n\t\t\tif (this._isCancelled) return;\n\t\t\tresolve(resolved);\n\t\t});\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise wrapping\n\t * it.\n\t */\n\tstatic resolve(value?: Promisable): FunPromise {\n\t\tif (value instanceof FunPromise) {\n\t\t\treturn value as FunPromise;\n\t\t} else if (value instanceof Promise) {\n\t\t\treturn new FunPromise(value);\n\t\t} else {\n\t\t\treturn new FunPromise(new Promise((resolve) => resolve(value)));\n\t\t}\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and resolves to the new value,\n\t * disregarding any previous resolution value.\n\t */\n\tresolve(value?: Promisable): FunPromise {\n\t\treturn new FunPromise(this.wrapped.then(() => value));\n\t}\n\n\t/**\n\t * An alias for `resolve` provided for consistency with the instance `return` method.\n\t *\n\t * @deprecated Use `resolve` instead.\n\t */\n\tstatic return(value?: Promisable): FunPromise {\n\t\treturn FunPromise.resolve(value);\n\t}\n\n\t/**\n\t * An alias for `resolve` provided for compatibility with [the Bluebird API|http://bluebirdjs.com/docs/api/return.html].\n\t *\n\t * @deprecated Use `resolve` instead.\n\t */\n\treturn(value?: Promisable): FunPromise {\n\t\treturn this.resolve(value);\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise rejecting\n\t * with that value, after unwrapping as many layers of `PromiseLike`\n\t * wrappers as necessary.\n\t */\n\tstatic reject(value?: unknown): FunPromise {\n\t\treturn new FunPromise(Promise.reject(value));\n\t}\n\n\t/**\n\t * Takes a value (or a promise of a value) and returns a promise rejecting\n\t * with that value, after unwrapping as many layers of `PromiseLike`\n\t * wrappers as necessary. This disregards any existing status.\n\t */\n\treject(value?: unknown): FunPromise {\n\t\treturn FunPromise.reject(value);\n\t}\n\n\t/**\n\t * Attaches callbacks for the resolution and/or rejection of the Promise.\n\t * @param onfulfilled The optional callback to execute when the Promise is resolved.\n\t * @param onrejected The optional callback to execute when the Promise is rejected. If provided, the result of this callback is the new resolution value, and this promise is resolved, not rejected.\n\t * @returns A Promise for the completion of which ever callback is executed.\n\t */\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable\n\t): FunPromise;\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable,\n\t\tonrejected: (reason: unknown) => Promisable\n\t): FunPromise;\n\tthen(\n\t\tonfulfilled: (value: T) => Promisable,\n\t\tonrejected?: (reason: unknown) => Promisable\n\t): FunPromise {\n\t\tif (_isNil(onrejected)) {\n\t\t\treturn new FunPromise(this.wrapped.then(onfulfilled));\n\t\t} else {\n\t\t\treturn new FunPromise(this.wrapped.then(onfulfilled, onrejected));\n\t\t}\n\t}\n\n\t/**\n\t * Attaches a callback for only the rejection of the Promise. If the callback throws, then throws a [[`NestedError`]] with\n\t * both the original rejection reason and the new thrown value.\n\t *\n\t * @param onrejected The callback to execute when the Promise is rejected.\n\t * @returns A Promise for the completion of the callback.\n\t */\n\tcatch(\n\t\tonrejected: (reason: unknown) => Promisable = _identity\n\t): FunPromise {\n\t\treturn new FunPromise(this.wrapped.catch(onrejected));\n\t}\n\n\t/**\n\t * Creates a Promise that is resolved with an array of results when all of the\n\t * provided Promises resolve, or rejected when any Promise is rejected.\n\t * @param values An array of Promises.\n\t * @returns A new Promise.\n\t */\n\tstatic all(values: PromisableIterable): FunPromise;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7, T8]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6, T7]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5, T6]>;\n\tstatic all(\n\t\tvalues: [\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable,\n\t\t\tPromisable\n\t\t]\n\t): FunPromise<[T1, T2, T3, T4, T5]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable, Promisable, Promisable]\n\t): FunPromise<[T1, T2, T3, T4]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable, Promisable]\n\t): FunPromise<[T1, T2, T3]>;\n\tstatic all(\n\t\tvalues: [Promisable, Promisable]\n\t): FunPromise<[T1, T2]>;\n\tstatic all(values: [Promisable]): FunPromise<[T1]>;\n\tstatic all(...values: any[]): any {\n\t\treturn FunPromise.resolve(_flatten(values)).all();\n\t}\n\tall(): FunPromise[]> {\n\t\treturn this.arrayify(true);\n\t}\n\n\t/**\n\t * Given a function (or a promise of a function) that returns a value (or a promise of a value),\n\t * create a promise that executes the function and returns the value. If executing the function\n\t * throws an exception, then that exception becomes the rejection of the promise.\n\t *\n\t * Any arguments after the first will be passed into the function when it is invoked. If they are\n\t * a `PromiseLike`, then they will be resolved and the resolution value will be passed into the\n\t * function instead.\n\t *\n\t * This function is really useful in the following cases:\n\t * 1. to [avoid releasing Zalgo](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n\t * 2. when you want to create a `FunPromise` based on an `async` function\n\t * 3. when you want to create a `FunPromise` based on a normal function\n\t */\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6,\n\t\t\t\targ7: Arg7,\n\t\t\t\targ8: Arg8\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable,\n\t\targ7: Promisable,\n\t\targ8: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6,\n\t\t\t\targ7: Arg7\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable,\n\t\targ7: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5,\n\t\t\t\targ6: Arg6\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable,\n\t\targ6: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(\n\t\t\t\targ1: Arg1,\n\t\t\t\targ2: Arg2,\n\t\t\t\targ3: Arg3,\n\t\t\t\targ4: Arg4,\n\t\t\t\targ5: Arg5\n\t\t\t) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable,\n\t\targ5: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<\n\t\t\t(arg1: Arg1, arg2: Arg2, arg3: Arg3, arg4: Arg4) => Promisable\n\t\t>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable,\n\t\targ4: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1, arg2: Arg2, arg3: Arg3) => Promisable>,\n\t\targ1: Promisable,\n\t\targ2: Promisable,\n\t\targ3: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1, arg2: Arg2) => Promisable>,\n\t\targ1: Promisable,\n\t\targ2: Promisable\n\t): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(arg1: Arg1) => Promisable>,\n\t\targ1: Promisable\n\t): FunPromise;\n\tstatic try(source: Promisable<() => Promisable>): FunPromise;\n\tstatic try(\n\t\tsource: Promisable<(...args: ArgT[]) => Promisable>,\n\t\t...args: ArgT[]\n\t): FunPromise {\n\t\treturn FunPromise.resolve(source).then((f) => {\n\t\t\tif (_isEmpty(args)) {\n\t\t\t\treturn f();\n\t\t\t} else {\n\t\t\t\treturn Promise.all(args).then((realArgs) => f(...realArgs));\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Unwraps layers of `PromiseLike` wrappers as necessary.\n\t *\n\t * This behavior is actually part of the Promise/A+ spec, but the type system struggles with that fact,\n\t * so this method is a workaround.\n\t *\n\t * In a future version of this library, `FunPromise` will extend `Promise>` instead of\n\t * just `Promise`, which will render this method irrelevant. Unfortunately, Typescript's type system\n\t * doesn't seem capable of handling that reality quite yet, so this is what we get.\n\t */\n\tsimplify(): FunPromise> {\n\t\treturn (this as unknown) as FunPromise>;\n\t}\n\n\t/**\n\t * For each element of the resolved iterable, unwraps layers of `PromiseLike` wrappers as necessary.\n\t */\n\tsimplifyAll(): FunPromise>[]> {\n\t\treturn this.arrayify().map((it) => FunPromise.resolve(it).simplify());\n\t}\n\n\t/**\n\t * Coerces the resolve value (which must be an `Iterable`) into an array. The `Iterable` requirement\n\t * comes from the `Item` return value: `Item` is equivalent to `never` if `T` is not an `Iterable`.\n\t *\n\t * Note that this function does *NOT* resolve the items within the array unless you pass the first argument\n\t * as `true`. The items are not resolved sequentially unless you also pass a second argument as `true`.\n\t */\n\tarrayify(\n\t\tresolveValues: boolean = false,\n\t\tsequentialResolution: boolean = false\n\t): FunPromise[]> {\n\t\tconst aryPromise = (this.then(\n\t\t\tasync (iterPromise) => _toArray(await iterPromise) // Just to be sure we're all de-promise'd\n\t\t) as unknown) as FunPromise[]>;\n\t\tif (resolveValues) {\n\t\t\tif (sequentialResolution) {\n\t\t\t\treturn aryPromise.then(async (ary) => {\n\t\t\t\t\tconst results = [];\n\t\t\t\t\twhile (!_isEmpty(ary)) {\n\t\t\t\t\t\tresults.push(await ary.shift());\n\t\t\t\t\t}\n\t\t\t\t\treturn results;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn aryPromise.then((ary) => Promise.all(ary));\n\t\t\t}\n\t\t} else {\n\t\t\treturn aryPromise;\n\t\t}\n\t}\n\n\t/**\n\t * Given a mapping function, apply the mapping function to each element of the promise's resolved value,\n\t * and return an array with the results of the mapping. If any of the mapping results are rejected,\n\t * the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result correspond to the order of the elements in the promise's\n\t * resolved value. However, the resolution order is not guaranteed. For example, although the\n\t * output at index 0 will hold the mapping of the input element at index 0, it is not guaranteed that\n\t * the mapping of index 0 will be awaited before the mapping of index 1.\n\t */\n\tmap>(mapper: (it: Item) => Promisable): FunPromise {\n\t\tconst results = [];\n\t\treturn FunPromise.try(async () => {\n\t\t\tawait Promise.all(\n\t\t\t\t_map(await this.arrayify(), async (value, idx) => {\n\t\t\t\t\tresults[idx] = await mapper(await value);\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn results;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).map(mapper)`.\n\t */\n\tstatic map(\n\t\tvalues: PromisableIterable,\n\t\tmapper: (it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).map(mapper);\n\t}\n\n\t/**\n\t * Required to implement `Promise`, but you almost certainly don't care about it.\n\t *\n\t * All the same, it returns the string tag of the underlying promise.\n\t */\n\tget [Symbol.toStringTag]() {\n\t\treturn this.wrapped[Symbol.toStringTag];\n\t}\n\n\t/**\n\t * Executes the provided code whether the promise rejects or resolves.\n\t */\n\tfinally(): FunPromise;\n\tfinally(onfinally: () => void): FunPromise;\n\tfinally(onfinally?) {\n\t\tif (_isFunction(onfinally)) {\n\t\t\treturn new FunPromise(this.wrapped.finally(onfinally));\n\t\t} else {\n\t\t\treturn this;\n\t\t}\n\t}\n\n\t/**\n\t * Given a [[`PromisableIterable`]] whose values are nullary functions returning [[Promisable|`Promisable`]],\n\t * this executes all the functions simultaneously and returns the first whose return value passes the provided test.\n\t * The default test returns true if the value is not `null` or `undefined`.\n\t *\n\t * If no function resolves successfully, the last seen rejection is thrown. If some functions resolve but some reject,\n\t * and none of the resolved values pass the test, then the last seen rejection is thrown.\n\t *\n\t * If all the functions resolve but to a value but no value passes the test, then this rejects with an error saying as much.\n\t */\n\tstatic coalesce(\n\t\tfns: PromisableIterable<() => Promisable>,\n\t\ttest: (item: T) => Promisable = _negate(_isNil)\n\t): FunPromise {\n\t\tlet resolved = false;\n\t\tlet lastSeenReason: unknown = new Error(\"No values left after coalescing\");\n\t\tlet resolveValue;\n\t\treturn FunPromise.map(fns, (fn) =>\n\t\t\tFunPromise.try(fn)\n\t\t\t\t.then((result) => {\n\t\t\t\t\tif (resolved) return null;\n\t\t\t\t\treturn FunPromise.try(test, result).then((testResult) => {\n\t\t\t\t\t\tif (resolved) return null;\n\t\t\t\t\t\tif (testResult) {\n\t\t\t\t\t\t\tresolved = true;\n\t\t\t\t\t\t\tresolveValue = result;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch((e) => {\n\t\t\t\t\tlastSeenReason = e;\n\t\t\t\t})\n\t\t).then(() => {\n\t\t\tif (resolved) {\n\t\t\t\treturn resolveValue;\n\t\t\t} else {\n\t\t\t\tthrow lastSeenReason;\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Waits for `waitTimeMs` milliseconds before resolving. If `returnValue` is provided, resolves with the provided value.\n\t *\n\t * If `waitTimeMs` is less than or equal to zero, then it simply defers until the call stack is clear.\n\t */\n\tstatic delay(waitTimeMs: number): FunPromise;\n\tstatic delay(\n\t\twaitTimeMs: number,\n\t\treturnValue: Promisable\n\t): FunPromise;\n\tstatic delay(waitTimeMs, returnValue?) {\n\t\treturn FunPromise.resolve().delay(waitTimeMs, returnValue);\n\t}\n\n\t/**\n\t * Waits for `waitTimeMs` milliseconds before resolving. If `returnValue` is provided, resolves with the provided value.\n\t *\n\t * If `waitTimeMs` is less than or equal to zero, then it simply defers until the call stack is clear.\n\t */\n\tdelay(\n\t\twaitTimeMs: number,\n\t\treturnValue?: Promisable\n\t): FunPromise {\n\t\tif (waitTimeMs <= 0) {\n\t\t\treturn new FunPromise(\n\t\t\t\tnew Promise((resolve) => _defer(resolve, returnValue))\n\t\t\t);\n\t\t} else {\n\t\t\treturn new FunPromise(\n\t\t\t\tnew Promise((resolve) => _delay(resolve, waitTimeMs, returnValue))\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Given a filtering function, apply the filtering function to each element of the promise's resolved value,\n\t * and return an array with the values for which the filtering function returns `true`. If any of the filtering\n\t * results are rejected, the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result are stable with regard to the order of the elements in the promise's\n\t * resolved value. That is, if `X < Y` and `input[X]` and `input[Y]` are both in the input, and `input[X]` and\n\t * `input[Y]` both pass the filtering function, then the output index of `input[X]` will be less than the output\n\t * index of `input[Y]`. However, the resolution order is not guaranteed: that is, `input[Y]` may be resolved and\n\t * tested before `input[X]` even though `input[X]` has a lower output index than `input[Y]`.\n\t */\n\tfilter(test: (it: Item) => Promisable): FunPromise[]> {\n\t\treturn this.arrayify().then(async (ary) => {\n\t\t\tconst results = await FunPromise.map(ary, async (it) => test(await it));\n\t\t\t// @ts-ignore\n\t\t\treturn _filter(ary, (it, idx) => results[idx]);\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(items).filter(test)`.\n\t */\n\tstatic filter(\n\t\titems: PromisableIterable,\n\t\ttest: (it: Item>) => Promisable\n\t): FunPromise>[]> {\n\t\treturn FunPromise.resolve(items).filter(test);\n\t}\n\n\t/**\n\t * Given a mapping function, apply the mapping function to each element of the promise's resolved value,\n\t * and return an array with the concatenated results of the mapping. If any of the mapping results are\n\t * rejected, the entire operation will be rejected.\n\t *\n\t * The order of the elements in the result correspond to the order of the elements in the promise's\n\t * resolved value. However, the resolution order is not guaranteed.\n\t */\n\tflatMap>(\n\t\tmapper: (it: Item) => Promisable\n\t): FunPromise {\n\t\treturn this.arrayify().then(async (ary: Promisable>[]) => {\n\t\t\tconst promises: Array>> = _map(ary, async (value) =>\n\t\t\t\tmapper(await value)\n\t\t\t);\n\t\t\tconst resolved: T2[][] = await Promise.all(promises);\n\t\t\tconst flattened: T2[] = _flatten(resolved);\n\t\t\treturn flattened;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).flatMap(mapper)`.\n\t */\n\tstatic flatMap(\n\t\tvalues: PromisableIterable,\n\t\tmapper: (it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).flatMap(mapper);\n\t}\n\n\t/**\n\t * Access the resolved value without changing it. Note that if the callback rejects (ie: throws),\n\t * then the resulting promise will be rejected.\n\t */\n\ttap(callback: (val: T) => Promisable): FunPromise {\n\t\treturn this.then(async (val) => {\n\t\t\tawait callback(val);\n\t\t\treturn val;\n\t\t});\n\t}\n\n\t/**\n\t * Access the rejection reason without changing it. Note that if the callback itself rejects (ie: throws),\n\t * both rejection reasons will be capture in a single [[`NestedError`]].\n\t */\n\ttapCatch(callback: (reason: unknown) => Promisable): FunPromise {\n\t\treturn this.catch(async (err) => {\n\t\t\ttry {\n\t\t\t\tawait callback(err);\n\t\t\t} catch (err2) {\n\t\t\t\tthrow new NestedError(\"Error thrown in 'tapCatch'\", err, err2);\n\t\t\t}\n\t\t\tthrow err;\n\t\t});\n\t}\n\n\t/**\n\t * Access each of the resolved values of a resolved iterable without changing it. Note that if the callback rejects (ie: throws),\n\t * then the resulting promise will be rejected.\n\t */\n\ttapEach(callback: (val: Item) => Promisable): FunPromise[]> {\n\t\treturn this.arrayify(true).tap(async (ary) => {\n\t\t\tawait Promise.all(_map(ary, callback));\n\t\t});\n\t}\n\n\t/**\n\t * Given an initial value and an accumulator function, apply the accumlator function to each element of the promise's resolved value,\n\t * passing in the current value and the result. Returns an array with the result of the accumulation. If any of the promise's values are\n\t * rejected, the entire operation will be rejected.\n\t *\n\t * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve.\n\t */\n\tfold>(\n\t\tinitialValue: T2,\n\t\taccumulator: (memo: T2, it: Item) => Promisable\n\t): FunPromise {\n\t\treturn this.arrayify().then(async (ary: Promisable>[]) => {\n\t\t\tlet memoPromise = FunPromise.resolve(initialValue);\n\t\t\tawait Promise.all(\n\t\t\t\t_map(ary, async (promisableValue) => {\n\t\t\t\t\tconst value = await promisableValue;\n\t\t\t\t\tmemoPromise = memoPromise.then((memo) => accumulator(memo, value));\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn await memoPromise;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).fold(initialValue, accumulator)`.\n\t */\n\tstatic fold(\n\t\tvalues: PromisableIterable,\n\t\tinitialValue: T2,\n\t\taccumulator: (memo: T2, it: T) => Promisable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).fold(initialValue, accumulator);\n\t}\n\n\t/**\n\t * Given an initial array of values and an accumulator function, apply the accumlator function to each element of the promise's resolved value,\n\t * passing in the current array of values and the resolved item. Returns an array with the concatenated results of the accumulation.\n\t * If any of the promise's values are rejected, the entire operation will be rejected.\n\t *\n\t * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve.\n\t */\n\tflatFold>(\n\t\tinitialValue: PromisableIterable,\n\t\taccumulator: (memo: T2[], it: Item) => PromisableIterable\n\t): FunPromise {\n\t\treturn this.arrayify().then(async (ary: Promisable>[]) => {\n\t\t\tlet memoPromise: FunPromise = FunPromise.resolve(\n\t\t\t\tinitialValue\n\t\t\t).arrayify() as FunPromise;\n\t\t\tawait Promise.all(\n\t\t\t\t_map(ary, async (promisableValue) => {\n\t\t\t\t\tconst value = await promisableValue;\n\t\t\t\t\tmemoPromise = memoPromise.then(async (memo) =>\n\t\t\t\t\t\tmemo.concat(_toArray(await accumulator(memo, value)))\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn memoPromise;\n\t\t});\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(values).flatFold(initialValue, accumulator)`.\n\t */\n\tstatic flatFold(\n\t\tvalues: PromisableIterable,\n\t\tinitialValue: PromisableIterable,\n\t\taccumulator: (memo: T2[], it: T) => PromisableIterable\n\t): FunPromise {\n\t\treturn FunPromise.resolve(values).flatFold(initialValue, accumulator);\n\t}\n\n\t/**\n\t * Handles rejections like 'catch', but wraps them in a [[`NestedError`]] with the given message.\n\t */\n\twrapError(msg: string): FunPromise {\n\t\treturn this.catch(NestedError.rethrow(msg));\n\t}\n\n\t/**\n\t * Resolves all the elements of the resolved value, which is assumed to be an `Iterable`. If any\n\t * of the values reject, all the reasons are collected and wrapped in a [[`NestedError`]].\n\t */\n\twrapErrors(msg: string): FunPromise[]> {\n\t\treturn this.arrayify().then(async (ary) => {\n\t\t\tlet errors = [];\n\t\t\tawait Promise.all(\n\t\t\t\t_map(ary, (val) => Promise.resolve(val).catch((e) => errors.push(e)))\n\t\t\t);\n\t\t\tif (_isEmpty(errors)) {\n\t\t\t\treturn ary;\n\t\t\t} else {\n\t\t\t\tthrow new NestedError(msg, ...errors);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Cancel the FunPromise. A cancelled FunPromise will silently disregard any resolution or rejection which occurs after the cancellation.\n\t */\n\tcancel() {\n\t\tthis._isCancelled = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns whether or not the promise has been cancelled. See `cancel()` for more details.\n\t */\n\tisCancelled() {\n\t\treturn this._isCancelled;\n\t}\n\n\t/**\n\t * Captures either fulfillment or rejection and resolves an object that describes the result.\n\t */\n\tsettle(): FunPromise> {\n\t\treturn new FunPromise(\n\t\t\tthis.wrapped.then(\n\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Assuming that the resolved value is an iterable, then for each element of the\n\t * array, captures either the fulfillment or rejection of that element.\n\t */\n\tsettleAll(): FunPromise>[]> {\n\t\treturn new FunPromise(\n\t\t\tthis.arrayify().wrapped.then((ary) =>\n\t\t\t\tPromise.all(\n\t\t\t\t\t_map(ary, (val) =>\n\t\t\t\t\t\tPromise.resolve(val).then(\n\t\t\t\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Equivalent to `FunPromise.resolve(iterable).settleAll()`.\n\t */\n\tstatic settleAll(\n\t\titerable: PromisableIterable\n\t): FunPromise[]> {\n\t\treturn new FunPromise(\n\t\t\tPromise.resolve(iterable).then((ary) =>\n\t\t\t\tPromise.all(\n\t\t\t\t\t_map(ary, (val) =>\n\t\t\t\t\t\tPromise.resolve(val).then(\n\t\t\t\t\t\t\t(value) => new Fulfillment(value),\n\t\t\t\t\t\t\t(reason) => new Rejection(reason)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t}\n}\n"]} \ No newline at end of file diff --git a/dist/esnext/src/fun-promise.test.d.ts b/dist/esnext/src/fun-promise.test.d.ts deleted file mode 100644 index 597914a..0000000 --- a/dist/esnext/src/fun-promise.test.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export {}; -//# sourceMappingURL=fun-promise.test.d.ts.map \ No newline at end of file diff --git a/dist/esnext/src/fun-promise.test.d.ts.map b/dist/esnext/src/fun-promise.test.d.ts.map deleted file mode 100644 index fe6edac..0000000 --- a/dist/esnext/src/fun-promise.test.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fun-promise.test.d.ts","sourceRoot":"","sources":["../../../src/fun-promise.test.js"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/esnext/src/fun-promise.test.js b/dist/esnext/src/fun-promise.test.js deleted file mode 100644 index df3f25e..0000000 --- a/dist/esnext/src/fun-promise.test.js +++ /dev/null @@ -1,598 +0,0 @@ -/** @format */ -import FunPromise from "./fun-promise"; -import _ from "lodash"; -import { NestedError } from "ts-nested-error"; -import { Fulfillment, Rejection } from "./types"; -const tokenPromise = new Promise((resolve) => resolve(true)); -const tokenFunPromise = new FunPromise(tokenPromise); -function withRejection(rejectionReason, callback) { - const rejection = Promise.reject(rejectionReason); - try { - return callback(rejection); - } - finally { - rejection.catch(_.noop); // Disable uncaught exception issues - } -} -describe("FunPromise", () => { - it("can be constructed and resolved", async () => { - await expect(new FunPromise(tokenPromise)).resolves.toBe(true); - }); - describe("resolve/return", () => { - _.forEach({ static: FunPromise, instance: tokenFunPromise }, (impl, implName) => { - _.forEach(["resolve", "return"], (methodName) => { - describe(methodName, () => { - describe(implName, () => { - function doResolve(value) { - return impl[methodName](value); - } - it("rejects when provided a rejection", async () => { - await expect(doResolve(Promise.reject("BOOM!"))).rejects.toBe("BOOM!"); - }); - it("does not resolve the elements of an array", async () => { - expect.hasAssertions(); - await withRejection("BOOM!", async (rejection) => { - await expect(doResolve([rejection])).resolves.toHaveLength(1); - }); - }); - describe("resolves correctly", () => { - it("with a value", async () => { - await expect(doResolve(tokenPromise)).resolves.toBe(true); - }); - it("returns the FunPromise if passed a FunPromise", () => { - expect(doResolve(tokenFunPromise)).toEqual(tokenFunPromise); - }); - it("without a value", async () => { - await expect(doResolve()).resolves.toBeNil(); - }); - }); - }); - }); - }); - }); - }); - describe("then", () => { - it("works without onrejected", async () => { - await expect(tokenFunPromise.then(_.identity)).resolves.toBe(true); - }); - }); - describe("catch", () => { - it("handles rejections", async () => { - await expect(tokenFunPromise - .then(() => Promise.reject("BOOM!")) - .catch((e) => { - expect(e).toBe("BOOM!"); - return "DONE!"; - })).resolves.toBe("DONE!"); - }); - it("returns the error when not passed an argument", async () => { - const error = new Error("BOOM!"); - await expect(tokenFunPromise.then(() => Promise.reject(error)).catch()).resolves.toBe(error); - }); - }); - describe("arrayify", () => { - it("basically works", async () => { - const value = [1, 2, 3, 4]; - await expect(FunPromise.resolve(value).arrayify()).resolves.toStrictEqual(value); - }); - it("returns a clone", async () => { - const value = [1, 2, 3, 4]; - await expect(FunPromise.resolve(value) - .arrayify() - .then((it) => { - it.pop(); - return it; - })).resolves.not.toBe(value); - expect(value).toHaveLength(4); - }); - it("does not resolve values when called without an argument", async () => { - const rejection = Promise.reject("BOOM!"); - try { - await expect(FunPromise.resolve([1, 2, rejection]).arrayify()).resolves.toBeArrayOfSize(3); - } - finally { - rejection.catch((e) => { }); // Disarm the rejection - } - }); - it("resolves values when called with the sole argument `true`", async () => { - await expect(FunPromise.resolve([ - Promise.resolve(1), - FunPromise.resolve(2), - ]).arrayify(true)).resolves.toEqual([1, 2]); - }); - it("rejects values when called with the sole argument `true` and a rejection in the mix", async () => { - const rejection = Promise.reject("BOOM!"); - await expect(FunPromise.resolve([1, 2, rejection]).arrayify(true)).rejects.toBe("BOOM!"); - }); - it("rejects values in order when called with the arguments `(true, true)`", async () => { - const rejection1 = Promise.reject("BOOM!"); - const rejection2 = Promise.reject("BANG!"); - try { - await expect(FunPromise.resolve([1, 2, rejection1, rejection2]).arrayify(true, true)).rejects.toBe("BOOM!"); - } - finally { - rejection1.catch((e) => { }); // Disarm the rejection - rejection2.catch((e) => { }); // Disarm the rejection - } - }); - it("resolves values in order when called with the arguments `(true, true)`", async () => { - let sawFirst = false; - let sawSecond = false; - let sawThird = false; - let sawFourth = false; - await expect(FunPromise.resolve([ - FunPromise.try(() => { - expect(sawFirst).toBe(false); - expect(sawSecond).toBe(false); - expect(sawThird).toBe(false); - expect(sawFourth).toBe(false); - sawFirst = true; - return 1; - }), - FunPromise.try(() => { - expect(sawFirst).toBe(true); - expect(sawSecond).toBe(false); - expect(sawThird).toBe(false); - expect(sawFourth).toBe(false); - sawSecond = true; - return 2; - }), - FunPromise.try(() => { - expect(sawFirst).toBe(true); - expect(sawSecond).toBe(true); - expect(sawThird).toBe(false); - expect(sawFourth).toBe(false); - sawThird = true; - return 3; - }), - FunPromise.try(() => { - expect(sawFirst).toBe(true); - expect(sawSecond).toBe(true); - expect(sawThird).toBe(true); - expect(sawFourth).toBe(false); - sawFourth = true; - return 4; - }), - ]).arrayify(true, true)).resolves.toStrictEqual([1, 2, 3, 4]); - expect(sawFirst).toBe(true); - expect(sawSecond).toBe(true); - expect(sawThird).toBe(true); - expect(sawFourth).toBe(true); - }); - }); - describe("all", () => { - _.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - describe("basically works", () => { - _.times(10, (argCount) => { - const simpleArgs = _.times(argCount, (i) => 2 ** i); - function runAll(args) { - if (staticVersion) { - return FunPromise.all(args); - } - else { - return FunPromise.resolve(args).all(); - } - } - it(`for ${argCount} arguments`, async () => { - await expect(runAll(simpleArgs)).resolves.toStrictEqual(simpleArgs); - }); - }); - }); - }); - }); - }); - describe("try", () => { - it("basically works", async () => { - await expect(FunPromise.try(() => true)).resolves.toBe(true); - }); - it("works with one argument", async () => { - await expect(FunPromise.try((i) => i, 42)).resolves.toBe(42); - }); - it("explodes properly", async () => { - await expect(FunPromise.try(() => Promise.reject("BOOM!"))).rejects.toBe("BOOM!"); - }); - }); - describe("map", () => { - _.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - function runMap(args, mapper) { - if (staticVersion) { - return FunPromise.map(args, mapper); - } - else { - return FunPromise.resolve(args).map(mapper); - } - } - it("basically works", async () => { - await expect(runMap(["Hello", "Goodbye"], (it) => `${it}, World!`)).resolves.toStrictEqual(["Hello, World!", "Goodbye, World!"]); - }); - it("works with some test values", async () => { - const defaultValues = [1, 2, 4, 8, 16]; - const defaultMapper = (it) => { - if (Math.random() < 0.5) { - return Promise.resolve(it * 2); - } - else { - return it * 2; - } - }; - await expect(runMap(defaultValues, defaultMapper)).resolves.toStrictEqual([2, 4, 8, 16, 32]); - }); - }); - }); - }); - describe("Symbol.toStringTag", () => { - it("is the same as the promise passed in", () => { - const promise = new Promise((resolve) => resolve()); - const promiseTag = promise[Symbol.toStringTag]; - expect(promiseTag).not.toBeNil(); - expect(new FunPromise(promise)[Symbol.toStringTag]).toBe(promiseTag); - }); - }); - describe("finally", () => { - it("returns the same promise when given no arguments", () => { - expect(tokenFunPromise.finally()).toBe(tokenFunPromise); - }); - it("executes on resolution", async () => { - let finallyExecuted = false; - await expect(FunPromise.resolve(false).finally(() => { - finallyExecuted = true; - })).resolves.toBe(false); - expect(finallyExecuted).toBe(true); - }); - it("executes on rejection", async () => { - let finallyExecuted = false; - await expect(FunPromise.reject("BOOM!").finally(() => { - finallyExecuted = true; - })).rejects.toBe("BOOM!"); - expect(finallyExecuted).toBe(true); - }); - }); - describe("reject", () => { - _.forEach({ static: FunPromise, instance: tokenFunPromise }, (impl, name) => { - describe(name, () => { - it("rejects correctly", async () => { - await expect(impl.reject(true)).rejects.toBe(true); - }); - it("doesn't change the object that is rejected", async () => { - const reason = { foo: true, bar: 42 }; - await expect(impl.reject(reason)).rejects.toBe(reason); - }); - }); - }); - }); - describe("coalesce", () => { - function runCoalesce(args, test) { - return FunPromise.coalesce(args, test); - } - it("basically works", async () => { - await expect(runCoalesce([() => null, Promise.resolve(() => true)])).resolves.toBe(true); - }); - it("returns the first resolving value", async () => { - await expect(runCoalesce([() => FunPromise.delay(1000).resolve(true), () => false])).resolves.toBe(false); - }); - it("returns the value that passes the test", async () => { - await expect(runCoalesce([() => 2, () => 4], (it) => it > 2)).resolves.toBe(4); - }); - it("throws the error if nothing passes the test", async () => { - await expect(runCoalesce([() => Promise.reject("BOOM!"), () => 4], (it) => it > 4)).rejects.toBe("BOOM!"); - }); - it("punts appropriately after the first resolution", async () => { - await expect(runCoalesce(_.times(3, (idx) => () => idx))).resolves.toBe(0); - }); - }); - describe("delay", () => { - _.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - _.forEach([-1000, -1, 0, 1, 1000], (delayMs) => { - describe(`When requesting a delay of ${delayMs} milliseconds`, () => { - function runDelay(arg) { - if (staticVersion) { - return FunPromise.delay(delayMs, arg); - } - else { - return FunPromise.resolve().delay(delayMs, arg); - } - } - describe("basically works", () => { - it("with no arg", async () => { - await expect(runDelay()).resolves; - }); - it("with one arg", async () => { - await expect(runDelay(1000)).resolves.toBe(1000); - }); - }); - }); - }); - }); - }); - }); - describe("simplify", () => { - it("basically works", async () => { - await expect(new FunPromise(Promise.resolve(Promise.resolve(true))).simplify()).resolves.toBe(true); - }); - }); - describe("filter", () => { - _.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - const defaultValues = [ - 1, - true, - {}, - null, - Promise.resolve(null), - Promise.resolve(), - "Hello, Dolly!", - ]; - const defaultExpect = [1, true, {}, "Hello, Dolly!"]; - const defaultTest = (it) => !_.isNil(it); - function doFilter(values = defaultValues, test = defaultTest) { - if (staticVersion) { - return FunPromise.filter(values, test); - } - else { - return FunPromise.resolve(values).filter(test); - } - } - it("basically works", async () => { - await expect(doFilter()).resolves.not.toBeEmpty(); - await expect(doFilter()).resolves.toBeArrayOfSize(4); - }); - }); - }); - }); - describe("flatMap", () => { - _.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - const defaultValues = [ - 1, - true, - {}, - null, - Promise.resolve(null), - Promise.resolve(), - "Hello, Dolly!", - ]; - const defaultMapper = (it) => { - if (_.isNil(it)) { - return []; - } - else { - return [it]; - } - }; - const defaultExpect = [1, true, {}, "Hello, Dolly!"]; - function doFlatMap(values = defaultValues, mapper = defaultMapper) { - if (staticVersion) { - return FunPromise.flatMap(values, mapper); - } - else { - return FunPromise.resolve(values).flatMap(mapper); - } - } - it("basically works", async () => { - await expect(doFlatMap()).resolves.toStrictEqual(defaultExpect); - }); - }); - }); - }); - describe("tap", () => { - it("basically works", async () => { - let sawTap = false; - await expect(tokenFunPromise.tap((val) => { - expect(val).toBe(true); - sawTap = true; - return false; - })).resolves.toBe(true); - expect(sawTap).toBe(true); - }); - it("rejects if it throws an exception", async () => { - let sawTap = false; - await expect(tokenFunPromise.tap((val) => { - sawTap = true; - throw "BOOM!"; - })).rejects.toBe("BOOM!"); - expect(sawTap).toBe(true); - }); - }); - describe("fold", () => { - _.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - const defaultValues = [1, 2, 3, 4, 5]; - function doFold(values = defaultValues, initialValue = 0, accumulator = (a, b) => a + b) { - if (staticVersion) { - return FunPromise.fold(values, initialValue, accumulator); - } - else { - return FunPromise.resolve(values).fold(initialValue, accumulator); - } - } - it("basically works", async () => { - const values = [1, 2, 3, 4, 5]; - await expect(doFold()).resolves.toBe(1 + 2 + 3 + 4 + 5); - }); - }); - }); - }); - describe("tapCatch", () => { - it("basically works", async () => { - let sawTapCatch = false; - await expect(FunPromise.reject("BOOM!").tapCatch((e) => { - sawTapCatch = true; - expect(e).toBe("BOOM!"); - return "BANG!"; - })).rejects.toBe("BOOM!"); - expect(sawTapCatch).toBe(true); - }); - it("nests explosions", async () => { - let sawCatch = false; - const err1 = new Error("BOOM!"); - const err2 = new Error("BANG!"); - await expect(FunPromise.reject(err1) - .tapCatch((e) => { - throw err2; - }) - .catch((e) => { - sawCatch = true; - expect(e).toBeInstanceOf(NestedError); - expect(e).toHaveProperty("message", "Error thrown in 'tapCatch'"); - expect(e).toHaveProperty("innerErrors"); - expect(e.innerErrors).toHaveLength(2); - expect(e.innerErrors).toEqual([err1, err2]); - return "Hello!"; - })).resolves.toBe("Hello!"); - expect(sawCatch).toBe(true); - }); - }); - describe("tapEach", () => { - it("basically works", async () => { - const values = [ - 123, - Promise.resolve(true), - "Hello, Dolly!", - null, - undefined, - ]; - const funPromise = FunPromise.resolve(values); - let count = 0; - await expect(funPromise.tapEach(() => { - count++; - })).resolves.toEqual(await Promise.all(values)); - expect(count).toBe(values.length); - }); - }); - describe("wrapError", () => { - it("basically works", async () => { - const reason = "BOOM!"; - await expect(FunPromise.reject(reason).wrapError("BANG!")).rejects.toHaveProperty("message", "BANG!"); - await expect(FunPromise.reject(reason).wrapError("BANG!")).rejects.toHaveProperty("innerError"); - }); - }); - describe("wrapErrors", () => { - it("basically works", async () => { - const err1 = new Error("BOOM!"); - const err2 = new Error("BANG!"); - await expect(FunPromise.resolve([Promise.reject(err1), Promise.reject(err2)]) - .wrapErrors("ERRORS!") - .catch((e) => { - expect(e).toBeInstanceOf(NestedError); - expect(e).toHaveProperty("message", "ERRORS!"); - expect(e.innerErrors).toHaveLength(2); - expect(e.innerErrors).toEqual([err1, err2]); - return true; - })).resolves.toBe(true); - }); - it("doesn't do anything if there is no error", async () => { - const values = [1, 2, 3, true, false, null, undefined]; - await expect(FunPromise.resolve(values).wrapErrors("ERRORS!")).resolves.toEqual(values); - }); - }); - describe("cancellation", () => { - it("initially reports not cancelled", () => { - expect(FunPromise.resolve(true).isCancelled()).toBe(false); - }); - it("reports cancelled after cancel is called", () => { - expect(FunPromise.resolve(true).cancel().isCancelled()).toBe(true); - }); - it("prevents resolution after cancellation", () => { - let resolver; - let sawResolve = false; - const promise = new Promise((resolve) => { - resolver = resolve; - }).then(() => { - sawResolve = true; - }); - expect(resolver).not.toBeNil(); - const cancelled = new FunPromise(promise).cancel(); - resolver(true); - expect(sawResolve).toBe(false); - }); - it("prevents rejection after cancellation", () => { - let rejector; - let sawReject = false; - const promise = new Promise((resolve, reject) => { - rejector = reject; - }).catch(() => { - sawReject = true; - }); - expect(rejector).not.toBeNil(); - const cancelled = new FunPromise(promise).cancel(); - rejector("BOOM!"); - expect(sawReject).toBe(false); - }); - it("prevents rejection when resolving throws after cancellation", () => { - let resolver; - let sawThen = true; - let sawCatch = false; - let doCancel; - const promise = new Promise((resolve) => { - resolver = resolve; - }).then(() => { - sawThen = true; - doCancel(); - throw "BOOM!"; - }); - expect(resolver).not.toBeNil(); - const toCancel = new FunPromise(promise); - doCancel = () => { - toCancel.cancel(); - }; - toCancel.catch((e) => { - sawCatch = true; - }); - resolver(true); - expect(sawThen).toBe(true); - expect(sawCatch).toBe(false); - }); - }); - describe("simplifyAll", () => { - it("basically works", async () => { - await expect(FunPromise.resolve("Hello").simplifyAll()).resolves.toEqual([ - "H", - "e", - "l", - "l", - "o", - ]); - }); - it("doesn't explode on an empty list", async () => { - await expect(FunPromise.resolve([]).simplifyAll()).resolves.toEqual([]); - }); - }); - describe("settle", () => { - it("basically works for rejections", async () => { - await expect(FunPromise.reject("BOOM!").settle()).resolves.toHaveProperty("reason", "BOOM!"); - }); - it("basically works for fulfillments", async () => { - await expect(FunPromise.resolve(true).settle()).resolves.toHaveProperty("value", true); - }); - }); - describe("settleAll", () => { - _.forEach([true, false], (staticVersion) => { - describe(staticVersion ? "static" : "instance", () => { - function doSettleAll(values) { - if (staticVersion) { - return FunPromise.settleAll(values); - } - else { - return FunPromise.resolve(values).settleAll(); - } - } - it("basically works", async () => { - const values = [ - { in: Promise.resolve(true), out: new Fulfillment(true) }, - { in: Promise.reject("BOOM!"), out: new Rejection("BOOM!") }, - { in: Promise.reject(null), out: new Rejection(null) }, - { in: null, out: new Fulfillment(null) }, - ]; - await expect(doSettleAll(_.map(values, "in"))).resolves.toEqual(_.map(values, "out")); - }); - it("doesn't explode on empty lists", async () => { - await expect(doSettleAll([])).resolves.toEqual([]); - }); - }); - }); - }); -}); -//# sourceMappingURL=fun-promise.test.js.map \ No newline at end of file diff --git a/dist/esnext/src/fun-promise.test.js.map b/dist/esnext/src/fun-promise.test.js.map deleted file mode 100644 index f39f252..0000000 --- a/dist/esnext/src/fun-promise.test.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fun-promise.test.js","sourceRoot":"","sources":["../../../src/fun-promise.test.js"],"names":[],"mappings":"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","sourcesContent":["/** @format */\n\nimport FunPromise from \"./fun-promise\";\nimport _ from \"lodash\";\nimport { NestedError } from \"ts-nested-error\";\nimport { Fulfillment, Rejection } from \"./types\";\n\nconst tokenPromise = new Promise((resolve) => resolve(true));\nconst tokenFunPromise = new FunPromise(tokenPromise);\n\nfunction withRejection(rejectionReason, callback) {\n\tconst rejection = Promise.reject(rejectionReason);\n\ttry {\n\t\treturn callback(rejection);\n\t} finally {\n\t\trejection.catch(_.noop); // Disable uncaught exception issues\n\t}\n}\n\ndescribe(\"FunPromise\", () => {\n\tit(\"can be constructed and resolved\", async () => {\n\t\tawait expect(new FunPromise(tokenPromise)).resolves.toBe(true);\n\t});\n\n\tdescribe(\"resolve/return\", () => {\n\t\t_.forEach(\n\t\t\t{ static: FunPromise, instance: tokenFunPromise },\n\t\t\t(impl, implName) => {\n\t\t\t\t_.forEach([\"resolve\", \"return\"], (methodName) => {\n\t\t\t\t\tdescribe(methodName, () => {\n\t\t\t\t\t\tdescribe(implName, () => {\n\t\t\t\t\t\t\tfunction doResolve(value) {\n\t\t\t\t\t\t\t\treturn impl[methodName](value);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tit(\"rejects when provided a rejection\", async () => {\n\t\t\t\t\t\t\t\tawait expect(doResolve(Promise.reject(\"BOOM!\"))).rejects.toBe(\n\t\t\t\t\t\t\t\t\t\"BOOM!\"\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tit(\"does not resolve the elements of an array\", async () => {\n\t\t\t\t\t\t\t\texpect.hasAssertions();\n\t\t\t\t\t\t\t\tawait withRejection(\"BOOM!\", async (rejection) => {\n\t\t\t\t\t\t\t\t\tawait expect(doResolve([rejection])).resolves.toHaveLength(1);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tdescribe(\"resolves correctly\", () => {\n\t\t\t\t\t\t\t\tit(\"with a value\", async () => {\n\t\t\t\t\t\t\t\t\tawait expect(doResolve(tokenPromise)).resolves.toBe(true);\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tit(\"returns the FunPromise if passed a FunPromise\", () => {\n\t\t\t\t\t\t\t\t\texpect(doResolve(tokenFunPromise)).toEqual(tokenFunPromise);\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tit(\"without a value\", async () => {\n\t\t\t\t\t\t\t\t\tawait expect(doResolve()).resolves.toBeNil();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t});\n\n\tdescribe(\"then\", () => {\n\t\tit(\"works without onrejected\", async () => {\n\t\t\tawait expect(tokenFunPromise.then(_.identity)).resolves.toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"catch\", () => {\n\t\tit(\"handles rejections\", async () => {\n\t\t\tawait expect(\n\t\t\t\ttokenFunPromise\n\t\t\t\t\t.then(() => Promise.reject(\"BOOM!\"))\n\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\texpect(e).toBe(\"BOOM!\");\n\t\t\t\t\t\treturn \"DONE!\";\n\t\t\t\t\t})\n\t\t\t).resolves.toBe(\"DONE!\");\n\t\t});\n\n\t\tit(\"returns the error when not passed an argument\", async () => {\n\t\t\tconst error = new Error(\"BOOM!\");\n\t\t\tawait expect(\n\t\t\t\ttokenFunPromise.then(() => Promise.reject(error)).catch()\n\t\t\t).resolves.toBe(error);\n\t\t});\n\t});\n\n\tdescribe(\"arrayify\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst value = [1, 2, 3, 4];\n\t\t\tawait expect(FunPromise.resolve(value).arrayify()).resolves.toStrictEqual(\n\t\t\t\tvalue\n\t\t\t);\n\t\t});\n\n\t\tit(\"returns a clone\", async () => {\n\t\t\tconst value = [1, 2, 3, 4];\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve(value)\n\t\t\t\t\t.arrayify()\n\t\t\t\t\t.then((it) => {\n\t\t\t\t\t\tit.pop();\n\t\t\t\t\t\treturn it;\n\t\t\t\t\t})\n\t\t\t).resolves.not.toBe(value);\n\t\t\texpect(value).toHaveLength(4);\n\t\t});\n\n\t\tit(\"does not resolve values when called without an argument\", async () => {\n\t\t\tconst rejection = Promise.reject(\"BOOM!\");\n\t\t\ttry {\n\t\t\t\tawait expect(\n\t\t\t\t\tFunPromise.resolve([1, 2, rejection]).arrayify()\n\t\t\t\t).resolves.toBeArrayOfSize(3);\n\t\t\t} finally {\n\t\t\t\trejection.catch((e) => {}); // Disarm the rejection\n\t\t\t}\n\t\t});\n\n\t\tit(\"resolves values when called with the sole argument `true`\", async () => {\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve([\n\t\t\t\t\tPromise.resolve(1),\n\t\t\t\t\tFunPromise.resolve(2),\n\t\t\t\t]).arrayify(true)\n\t\t\t).resolves.toEqual([1, 2]);\n\t\t});\n\n\t\tit(\"rejects values when called with the sole argument `true` and a rejection in the mix\", async () => {\n\t\t\tconst rejection = Promise.reject(\"BOOM!\");\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve([1, 2, rejection]).arrayify(true)\n\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t});\n\n\t\tit(\"rejects values in order when called with the arguments `(true, true)`\", async () => {\n\t\t\tconst rejection1 = Promise.reject(\"BOOM!\");\n\t\t\tconst rejection2 = Promise.reject(\"BANG!\");\n\t\t\ttry {\n\t\t\t\tawait expect(\n\t\t\t\t\tFunPromise.resolve([1, 2, rejection1, rejection2]).arrayify(\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t)\n\t\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t\t} finally {\n\t\t\t\trejection1.catch((e) => {}); // Disarm the rejection\n\t\t\t\trejection2.catch((e) => {}); // Disarm the rejection\n\t\t\t}\n\t\t});\n\n\t\tit(\"resolves values in order when called with the arguments `(true, true)`\", async () => {\n\t\t\tlet sawFirst = false;\n\t\t\tlet sawSecond = false;\n\t\t\tlet sawThird = false;\n\t\t\tlet sawFourth = false;\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve([\n\t\t\t\t\tFunPromise.try(() => {\n\t\t\t\t\t\texpect(sawFirst).toBe(false);\n\t\t\t\t\t\texpect(sawSecond).toBe(false);\n\t\t\t\t\t\texpect(sawThird).toBe(false);\n\t\t\t\t\t\texpect(sawFourth).toBe(false);\n\t\t\t\t\t\tsawFirst = true;\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}),\n\t\t\t\t\tFunPromise.try(() => {\n\t\t\t\t\t\texpect(sawFirst).toBe(true);\n\t\t\t\t\t\texpect(sawSecond).toBe(false);\n\t\t\t\t\t\texpect(sawThird).toBe(false);\n\t\t\t\t\t\texpect(sawFourth).toBe(false);\n\t\t\t\t\t\tsawSecond = true;\n\t\t\t\t\t\treturn 2;\n\t\t\t\t\t}),\n\t\t\t\t\tFunPromise.try(() => {\n\t\t\t\t\t\texpect(sawFirst).toBe(true);\n\t\t\t\t\t\texpect(sawSecond).toBe(true);\n\t\t\t\t\t\texpect(sawThird).toBe(false);\n\t\t\t\t\t\texpect(sawFourth).toBe(false);\n\t\t\t\t\t\tsawThird = true;\n\t\t\t\t\t\treturn 3;\n\t\t\t\t\t}),\n\t\t\t\t\tFunPromise.try(() => {\n\t\t\t\t\t\texpect(sawFirst).toBe(true);\n\t\t\t\t\t\texpect(sawSecond).toBe(true);\n\t\t\t\t\t\texpect(sawThird).toBe(true);\n\t\t\t\t\t\texpect(sawFourth).toBe(false);\n\t\t\t\t\t\tsawFourth = true;\n\t\t\t\t\t\treturn 4;\n\t\t\t\t\t}),\n\t\t\t\t]).arrayify(true, true)\n\t\t\t).resolves.toStrictEqual([1, 2, 3, 4]);\n\t\t\texpect(sawFirst).toBe(true);\n\t\t\texpect(sawSecond).toBe(true);\n\t\t\texpect(sawThird).toBe(true);\n\t\t\texpect(sawFourth).toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"all\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tdescribe(\"basically works\", () => {\n\t\t\t\t\t_.times(10, (argCount) => {\n\t\t\t\t\t\tconst simpleArgs = _.times(argCount, (i) => 2 ** i);\n\n\t\t\t\t\t\tfunction runAll(args) {\n\t\t\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\t\t\treturn FunPromise.all(args);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn FunPromise.resolve(args).all();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tit(`for ${argCount} arguments`, async () => {\n\t\t\t\t\t\t\tawait expect(runAll(simpleArgs)).resolves.toStrictEqual(\n\t\t\t\t\t\t\t\tsimpleArgs\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"try\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tawait expect(FunPromise.try(() => true)).resolves.toBe(true);\n\t\t});\n\n\t\tit(\"works with one argument\", async () => {\n\t\t\tawait expect(FunPromise.try((i) => i, 42)).resolves.toBe(42);\n\t\t});\n\n\t\tit(\"explodes properly\", async () => {\n\t\t\tawait expect(FunPromise.try(() => Promise.reject(\"BOOM!\"))).rejects.toBe(\n\t\t\t\t\"BOOM!\"\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\"map\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tfunction runMap(args, mapper) {\n\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\treturn FunPromise.map(args, mapper);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FunPromise.resolve(args).map(mapper);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tit(\"basically works\", async () => {\n\t\t\t\t\tawait expect(\n\t\t\t\t\t\trunMap([\"Hello\", \"Goodbye\"], (it) => `${it}, World!`)\n\t\t\t\t\t).resolves.toStrictEqual([\"Hello, World!\", \"Goodbye, World!\"]);\n\t\t\t\t});\n\n\t\t\t\tit(\"works with some test values\", async () => {\n\t\t\t\t\tconst defaultValues = [1, 2, 4, 8, 16];\n\t\t\t\t\tconst defaultMapper = (it) => {\n\t\t\t\t\t\tif (Math.random() < 0.5) {\n\t\t\t\t\t\t\treturn Promise.resolve(it * 2);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn it * 2;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tawait expect(\n\t\t\t\t\t\trunMap(defaultValues, defaultMapper)\n\t\t\t\t\t).resolves.toStrictEqual([2, 4, 8, 16, 32]);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"Symbol.toStringTag\", () => {\n\t\tit(\"is the same as the promise passed in\", () => {\n\t\t\tconst promise = new Promise((resolve) => resolve());\n\t\t\tconst promiseTag = promise[Symbol.toStringTag];\n\t\t\texpect(promiseTag).not.toBeNil();\n\t\t\texpect(new FunPromise(promise)[Symbol.toStringTag]).toBe(promiseTag);\n\t\t});\n\t});\n\n\tdescribe(\"finally\", () => {\n\t\tit(\"returns the same promise when given no arguments\", () => {\n\t\t\texpect(tokenFunPromise.finally()).toBe(tokenFunPromise);\n\t\t});\n\n\t\tit(\"executes on resolution\", async () => {\n\t\t\tlet finallyExecuted = false;\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve(false).finally(() => {\n\t\t\t\t\tfinallyExecuted = true;\n\t\t\t\t})\n\t\t\t).resolves.toBe(false);\n\t\t\texpect(finallyExecuted).toBe(true);\n\t\t});\n\n\t\tit(\"executes on rejection\", async () => {\n\t\t\tlet finallyExecuted = false;\n\t\t\tawait expect(\n\t\t\t\tFunPromise.reject(\"BOOM!\").finally(() => {\n\t\t\t\t\tfinallyExecuted = true;\n\t\t\t\t})\n\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t\texpect(finallyExecuted).toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"reject\", () => {\n\t\t_.forEach(\n\t\t\t{ static: FunPromise, instance: tokenFunPromise },\n\t\t\t(impl, name) => {\n\t\t\t\tdescribe(name, () => {\n\t\t\t\t\tit(\"rejects correctly\", async () => {\n\t\t\t\t\t\tawait expect(impl.reject(true)).rejects.toBe(true);\n\t\t\t\t\t});\n\n\t\t\t\t\tit(\"doesn't change the object that is rejected\", async () => {\n\t\t\t\t\t\tconst reason = { foo: true, bar: 42 };\n\t\t\t\t\t\tawait expect(impl.reject(reason)).rejects.toBe(reason);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t});\n\n\tdescribe(\"coalesce\", () => {\n\t\tfunction runCoalesce(args, test) {\n\t\t\treturn FunPromise.coalesce(args, test);\n\t\t}\n\n\t\tit(\"basically works\", async () => {\n\t\t\tawait expect(\n\t\t\t\trunCoalesce([() => null, Promise.resolve(() => true)])\n\t\t\t).resolves.toBe(true);\n\t\t});\n\n\t\tit(\"returns the first resolving value\", async () => {\n\t\t\tawait expect(\n\t\t\t\trunCoalesce([() => FunPromise.delay(1000).resolve(true), () => false])\n\t\t\t).resolves.toBe(false);\n\t\t});\n\n\t\tit(\"returns the value that passes the test\", async () => {\n\t\t\tawait expect(\n\t\t\t\trunCoalesce([() => 2, () => 4], (it) => it > 2)\n\t\t\t).resolves.toBe(4);\n\t\t});\n\n\t\tit(\"throws the error if nothing passes the test\", async () => {\n\t\t\tawait expect(\n\t\t\t\trunCoalesce([() => Promise.reject(\"BOOM!\"), () => 4], (it) => it > 4)\n\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t});\n\n\t\tit(\"punts appropriately after the first resolution\", async () => {\n\t\t\tawait expect(runCoalesce(_.times(3, (idx) => () => idx))).resolves.toBe(\n\t\t\t\t0\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\"delay\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\t_.forEach([-1000, -1, 0, 1, 1000], (delayMs) => {\n\t\t\t\t\tdescribe(`When requesting a delay of ${delayMs} milliseconds`, () => {\n\t\t\t\t\t\tfunction runDelay(arg) {\n\t\t\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\t\t\treturn FunPromise.delay(delayMs, arg);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn FunPromise.resolve().delay(delayMs, arg);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdescribe(\"basically works\", () => {\n\t\t\t\t\t\t\tit(\"with no arg\", async () => {\n\t\t\t\t\t\t\t\tawait expect(runDelay()).resolves;\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tit(\"with one arg\", async () => {\n\t\t\t\t\t\t\t\tawait expect(runDelay(1000)).resolves.toBe(1000);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"simplify\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tawait expect(\n\t\t\t\tnew FunPromise(Promise.resolve(Promise.resolve(true))).simplify()\n\t\t\t).resolves.toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"filter\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tconst defaultValues = [\n\t\t\t\t\t1,\n\t\t\t\t\ttrue,\n\t\t\t\t\t{},\n\t\t\t\t\tnull,\n\t\t\t\t\tPromise.resolve(null),\n\t\t\t\t\tPromise.resolve(),\n\t\t\t\t\t\"Hello, Dolly!\",\n\t\t\t\t];\n\t\t\t\tconst defaultExpect = [1, true, {}, \"Hello, Dolly!\"];\n\t\t\t\tconst defaultTest = (it) => !_.isNil(it);\n\t\t\t\tfunction doFilter(values = defaultValues, test = defaultTest) {\n\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\treturn FunPromise.filter(values, test);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FunPromise.resolve(values).filter(test);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tit(\"basically works\", async () => {\n\t\t\t\t\tawait expect(doFilter()).resolves.not.toBeEmpty();\n\t\t\t\t\tawait expect(doFilter()).resolves.toBeArrayOfSize(4);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"flatMap\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tconst defaultValues = [\n\t\t\t\t\t1,\n\t\t\t\t\ttrue,\n\t\t\t\t\t{},\n\t\t\t\t\tnull,\n\t\t\t\t\tPromise.resolve(null),\n\t\t\t\t\tPromise.resolve(),\n\t\t\t\t\t\"Hello, Dolly!\",\n\t\t\t\t];\n\t\t\t\tconst defaultMapper = (it) => {\n\t\t\t\t\tif (_.isNil(it)) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn [it];\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst defaultExpect = [1, true, {}, \"Hello, Dolly!\"];\n\t\t\t\tfunction doFlatMap(values = defaultValues, mapper = defaultMapper) {\n\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\treturn FunPromise.flatMap(values, mapper);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FunPromise.resolve(values).flatMap(mapper);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tit(\"basically works\", async () => {\n\t\t\t\t\tawait expect(doFlatMap()).resolves.toStrictEqual(defaultExpect);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"tap\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tlet sawTap = false;\n\t\t\tawait expect(\n\t\t\t\ttokenFunPromise.tap((val) => {\n\t\t\t\t\texpect(val).toBe(true);\n\t\t\t\t\tsawTap = true;\n\t\t\t\t\treturn false;\n\t\t\t\t})\n\t\t\t).resolves.toBe(true);\n\t\t\texpect(sawTap).toBe(true);\n\t\t});\n\n\t\tit(\"rejects if it throws an exception\", async () => {\n\t\t\tlet sawTap = false;\n\t\t\tawait expect(\n\t\t\t\ttokenFunPromise.tap((val) => {\n\t\t\t\t\tsawTap = true;\n\t\t\t\t\tthrow \"BOOM!\";\n\t\t\t\t})\n\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t\texpect(sawTap).toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"fold\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tconst defaultValues = [1, 2, 3, 4, 5];\n\n\t\t\t\tfunction doFold(\n\t\t\t\t\tvalues = defaultValues,\n\t\t\t\t\tinitialValue = 0,\n\t\t\t\t\taccumulator = (a, b) => a + b\n\t\t\t\t) {\n\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\treturn FunPromise.fold(values, initialValue, accumulator);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FunPromise.resolve(values).fold(initialValue, accumulator);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tit(\"basically works\", async () => {\n\t\t\t\t\tconst values = [1, 2, 3, 4, 5];\n\t\t\t\t\tawait expect(doFold()).resolves.toBe(1 + 2 + 3 + 4 + 5);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"tapCatch\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tlet sawTapCatch = false;\n\t\t\tawait expect(\n\t\t\t\tFunPromise.reject(\"BOOM!\").tapCatch((e) => {\n\t\t\t\t\tsawTapCatch = true;\n\t\t\t\t\texpect(e).toBe(\"BOOM!\");\n\t\t\t\t\treturn \"BANG!\";\n\t\t\t\t})\n\t\t\t).rejects.toBe(\"BOOM!\");\n\t\t\texpect(sawTapCatch).toBe(true);\n\t\t});\n\n\t\tit(\"nests explosions\", async () => {\n\t\t\tlet sawCatch = false;\n\t\t\tconst err1 = new Error(\"BOOM!\");\n\t\t\tconst err2 = new Error(\"BANG!\");\n\t\t\tawait expect(\n\t\t\t\tFunPromise.reject(err1)\n\t\t\t\t\t.tapCatch((e) => {\n\t\t\t\t\t\tthrow err2;\n\t\t\t\t\t})\n\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\tsawCatch = true;\n\t\t\t\t\t\texpect(e).toBeInstanceOf(NestedError);\n\t\t\t\t\t\texpect(e).toHaveProperty(\"message\", \"Error thrown in 'tapCatch'\");\n\t\t\t\t\t\texpect(e).toHaveProperty(\"innerErrors\");\n\t\t\t\t\t\texpect(e.innerErrors).toHaveLength(2);\n\t\t\t\t\t\texpect(e.innerErrors).toEqual([err1, err2]);\n\t\t\t\t\t\treturn \"Hello!\";\n\t\t\t\t\t})\n\t\t\t).resolves.toBe(\"Hello!\");\n\t\t\texpect(sawCatch).toBe(true);\n\t\t});\n\t});\n\n\tdescribe(\"tapEach\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst values = [\n\t\t\t\t123,\n\t\t\t\tPromise.resolve(true),\n\t\t\t\t\"Hello, Dolly!\",\n\t\t\t\tnull,\n\t\t\t\tundefined,\n\t\t\t];\n\t\t\tconst funPromise = FunPromise.resolve(values);\n\t\t\tlet count = 0;\n\t\t\tawait expect(\n\t\t\t\tfunPromise.tapEach(() => {\n\t\t\t\t\tcount++;\n\t\t\t\t})\n\t\t\t).resolves.toEqual(await Promise.all(values));\n\t\t\texpect(count).toBe(values.length);\n\t\t});\n\t});\n\n\tdescribe(\"wrapError\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst reason = \"BOOM!\";\n\t\t\tawait expect(\n\t\t\t\tFunPromise.reject(reason).wrapError(\"BANG!\")\n\t\t\t).rejects.toHaveProperty(\"message\", \"BANG!\");\n\t\t\tawait expect(\n\t\t\t\tFunPromise.reject(reason).wrapError(\"BANG!\")\n\t\t\t).rejects.toHaveProperty(\"innerError\");\n\t\t});\n\t});\n\n\tdescribe(\"wrapErrors\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tconst err1 = new Error(\"BOOM!\");\n\t\t\tconst err2 = new Error(\"BANG!\");\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve([Promise.reject(err1), Promise.reject(err2)])\n\t\t\t\t\t.wrapErrors(\"ERRORS!\")\n\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\texpect(e).toBeInstanceOf(NestedError);\n\t\t\t\t\t\texpect(e).toHaveProperty(\"message\", \"ERRORS!\");\n\t\t\t\t\t\texpect(e.innerErrors).toHaveLength(2);\n\t\t\t\t\t\texpect(e.innerErrors).toEqual([err1, err2]);\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t})\n\t\t\t).resolves.toBe(true);\n\t\t});\n\n\t\tit(\"doesn't do anything if there is no error\", async () => {\n\t\t\tconst values = [1, 2, 3, true, false, null, undefined];\n\t\t\tawait expect(\n\t\t\t\tFunPromise.resolve(values).wrapErrors(\"ERRORS!\")\n\t\t\t).resolves.toEqual(values);\n\t\t});\n\t});\n\n\tdescribe(\"cancellation\", () => {\n\t\tit(\"initially reports not cancelled\", () => {\n\t\t\texpect(FunPromise.resolve(true).isCancelled()).toBe(false);\n\t\t});\n\n\t\tit(\"reports cancelled after cancel is called\", () => {\n\t\t\texpect(FunPromise.resolve(true).cancel().isCancelled()).toBe(true);\n\t\t});\n\n\t\tit(\"prevents resolution after cancellation\", () => {\n\t\t\tlet resolver;\n\t\t\tlet sawResolve = false;\n\t\t\tconst promise = new Promise((resolve) => {\n\t\t\t\tresolver = resolve;\n\t\t\t}).then(() => {\n\t\t\t\tsawResolve = true;\n\t\t\t});\n\t\t\texpect(resolver).not.toBeNil();\n\t\t\tconst cancelled = new FunPromise(promise).cancel();\n\t\t\tresolver(true);\n\t\t\texpect(sawResolve).toBe(false);\n\t\t});\n\n\t\tit(\"prevents rejection after cancellation\", () => {\n\t\t\tlet rejector;\n\t\t\tlet sawReject = false;\n\t\t\tconst promise = new Promise((resolve, reject) => {\n\t\t\t\trejector = reject;\n\t\t\t}).catch(() => {\n\t\t\t\tsawReject = true;\n\t\t\t});\n\t\t\texpect(rejector).not.toBeNil();\n\t\t\tconst cancelled = new FunPromise(promise).cancel();\n\t\t\trejector(\"BOOM!\");\n\t\t\texpect(sawReject).toBe(false);\n\t\t});\n\n\t\tit(\"prevents rejection when resolving throws after cancellation\", () => {\n\t\t\tlet resolver;\n\t\t\tlet sawThen = true;\n\t\t\tlet sawCatch = false;\n\t\t\tlet doCancel;\n\t\t\tconst promise = new Promise((resolve) => {\n\t\t\t\tresolver = resolve;\n\t\t\t}).then(() => {\n\t\t\t\tsawThen = true;\n\t\t\t\tdoCancel();\n\t\t\t\tthrow \"BOOM!\";\n\t\t\t});\n\t\t\texpect(resolver).not.toBeNil();\n\t\t\tconst toCancel = new FunPromise(promise);\n\t\t\tdoCancel = () => {\n\t\t\t\ttoCancel.cancel();\n\t\t\t};\n\t\t\ttoCancel.catch((e) => {\n\t\t\t\tsawCatch = true;\n\t\t\t});\n\t\t\tresolver(true);\n\t\t\texpect(sawThen).toBe(true);\n\t\t\texpect(sawCatch).toBe(false);\n\t\t});\n\t});\n\n\tdescribe(\"simplifyAll\", () => {\n\t\tit(\"basically works\", async () => {\n\t\t\tawait expect(FunPromise.resolve(\"Hello\").simplifyAll()).resolves.toEqual([\n\t\t\t\t\"H\",\n\t\t\t\t\"e\",\n\t\t\t\t\"l\",\n\t\t\t\t\"l\",\n\t\t\t\t\"o\",\n\t\t\t]);\n\t\t});\n\n\t\tit(\"doesn't explode on an empty list\", async () => {\n\t\t\tawait expect(FunPromise.resolve([]).simplifyAll()).resolves.toEqual([]);\n\t\t});\n\t});\n\n\tdescribe(\"settle\", () => {\n\t\tit(\"basically works for rejections\", async () => {\n\t\t\tawait expect(FunPromise.reject(\"BOOM!\").settle()).resolves.toHaveProperty(\n\t\t\t\t\"reason\",\n\t\t\t\t\"BOOM!\"\n\t\t\t);\n\t\t});\n\n\t\tit(\"basically works for fulfillments\", async () => {\n\t\t\tawait expect(FunPromise.resolve(true).settle()).resolves.toHaveProperty(\n\t\t\t\t\"value\",\n\t\t\t\ttrue\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\"settleAll\", () => {\n\t\t_.forEach([true, false], (staticVersion) => {\n\t\t\tdescribe(staticVersion ? \"static\" : \"instance\", () => {\n\t\t\t\tfunction doSettleAll(values) {\n\t\t\t\t\tif (staticVersion) {\n\t\t\t\t\t\treturn FunPromise.settleAll(values);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FunPromise.resolve(values).settleAll();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tit(\"basically works\", async () => {\n\t\t\t\t\tconst values = [\n\t\t\t\t\t\t{ in: Promise.resolve(true), out: new Fulfillment(true) },\n\t\t\t\t\t\t{ in: Promise.reject(\"BOOM!\"), out: new Rejection(\"BOOM!\") },\n\t\t\t\t\t\t{ in: Promise.reject(null), out: new Rejection(null) },\n\t\t\t\t\t\t{ in: null, out: new Fulfillment(null) },\n\t\t\t\t\t];\n\t\t\t\t\tawait expect(doSettleAll(_.map(values, \"in\"))).resolves.toEqual(\n\t\t\t\t\t\t_.map(values, \"out\")\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\tit(\"doesn't explode on empty lists\", async () => {\n\t\t\t\t\tawait expect(doSettleAll([])).resolves.toEqual([]);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n});\n"]} \ No newline at end of file diff --git a/dist/esnext/src/types.test.d.ts b/dist/esnext/src/types.test.d.ts deleted file mode 100644 index 961011c..0000000 --- a/dist/esnext/src/types.test.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export {}; -//# sourceMappingURL=types.test.d.ts.map \ No newline at end of file diff --git a/dist/esnext/src/types.test.d.ts.map b/dist/esnext/src/types.test.d.ts.map deleted file mode 100644 index c68a00d..0000000 --- a/dist/esnext/src/types.test.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.test.d.ts","sourceRoot":"","sources":["../../../src/types.test.js"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/esnext/src/types.test.js b/dist/esnext/src/types.test.js deleted file mode 100644 index edd56e7..0000000 --- a/dist/esnext/src/types.test.js +++ /dev/null @@ -1,30 +0,0 @@ -/** @format */ -import { Fulfillment, Rejection } from "./types"; -import _ from "lodash"; -describe("Fulfillment", () => { - _.forEach([true, { foo: true }], (arg) => { - describe(`when passed the ${typeof arg} argument '${JSON.stringify(arg)}'`, () => { - const fulfillment = new Fulfillment(arg); - it("exposes the argument on the 'value' property", () => { - expect(fulfillment).toHaveProperty("value", arg); - }); - it("has a 'status' property of 'fulfilled'", () => { - expect(fulfillment).toHaveProperty("status", "fulfilled"); - }); - }); - }); -}); -describe("Rejection", () => { - _.forEach(["BOOM!", new Error("BOOM!")], (arg) => { - describe(`when passed the ${typeof arg} argument: '${arg}'`, () => { - const rejection = new Rejection(arg); - it("returns the argument in the 'reason' property", () => { - expect(rejection).toHaveProperty("reason", arg); - }); - it("has a 'status' property whose value is 'rejected'", () => { - expect(rejection).toHaveProperty("status", "rejected"); - }); - }); - }); -}); -//# sourceMappingURL=types.test.js.map \ No newline at end of file diff --git a/dist/esnext/src/types.test.js.map b/dist/esnext/src/types.test.js.map deleted file mode 100644 index 43b1b56..0000000 --- a/dist/esnext/src/types.test.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.test.js","sourceRoot":"","sources":["../../../src/types.test.js"],"names":[],"mappings":"AAAA,cAAc;AAEd,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC5B,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;QACxC,QAAQ,CAAC,mBAAmB,OAAO,GAAG,cAAc,IAAI,CAAC,SAAS,CACjE,GAAG,CACH,GAAG,EAAE,GAAG,EAAE;YACV,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;YAEzC,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;gBACvD,MAAM,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;gBACjD,MAAM,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IAC1B,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;QAChD,QAAQ,CAAC,mBAAmB,OAAO,GAAG,eAAe,GAAG,GAAG,EAAE,GAAG,EAAE;YACjE,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;YAErC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;gBACxD,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;gBAC5D,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["/** @format */\n\nimport { Fulfillment, Rejection } from \"./types\";\nimport _ from \"lodash\";\n\ndescribe(\"Fulfillment\", () => {\n\t_.forEach([true, { foo: true }], (arg) => {\n\t\tdescribe(`when passed the ${typeof arg} argument '${JSON.stringify(\n\t\t\targ\n\t\t)}'`, () => {\n\t\t\tconst fulfillment = new Fulfillment(arg);\n\n\t\t\tit(\"exposes the argument on the 'value' property\", () => {\n\t\t\t\texpect(fulfillment).toHaveProperty(\"value\", arg);\n\t\t\t});\n\n\t\t\tit(\"has a 'status' property of 'fulfilled'\", () => {\n\t\t\t\texpect(fulfillment).toHaveProperty(\"status\", \"fulfilled\");\n\t\t\t});\n\t\t});\n\t});\n});\n\ndescribe(\"Rejection\", () => {\n\t_.forEach([\"BOOM!\", new Error(\"BOOM!\")], (arg) => {\n\t\tdescribe(`when passed the ${typeof arg} argument: '${arg}'`, () => {\n\t\t\tconst rejection = new Rejection(arg);\n\n\t\t\tit(\"returns the argument in the 'reason' property\", () => {\n\t\t\t\texpect(rejection).toHaveProperty(\"reason\", arg);\n\t\t\t});\n\n\t\t\tit(\"has a 'status' property whose value is 'rejected'\", () => {\n\t\t\t\texpect(rejection).toHaveProperty(\"status\", \"rejected\");\n\t\t\t});\n\t\t});\n\t});\n});\n"]} \ No newline at end of file diff --git a/dist/node/v10/src/fun-promise.js b/dist/node/v10/src/fun-promise.js index 822333f..93b89ad 100644 --- a/dist/node/v10/src/fun-promise.js +++ b/dist/node/v10/src/fun-promise.js @@ -27,6 +27,7 @@ const isFunction_1 = __importDefault(require("lodash/isFunction")); const isNil_1 = __importDefault(require("lodash/isNil")); const map_1 = __importDefault(require("lodash/map")); const negate_1 = __importDefault(require("lodash/negate")); +const toArray_1 = __importDefault(require("lodash/toArray")); // import Debug from "debug"; // const debug = Debug("fun-promises"); /** @@ -171,9 +172,8 @@ class FunPromise { * as `true`. The items are not resolved sequentially unless you also pass a second argument as `true`. */ arrayify(resolveValues = false, sequentialResolution = false) { - const aryPromise = this.then((iter) => [ - ...iter, - ]); + const aryPromise = this.then(async (iterPromise) => toArray_1.default(await iterPromise) // Just to be sure we're all de-promise'd + ); if (resolveValues) { if (sequentialResolution) { return aryPromise.then(async (ary) => { @@ -390,6 +390,29 @@ class FunPromise { static fold(values, initialValue, accumulator) { return FunPromise.resolve(values).fold(initialValue, accumulator); } + /** + * Given an initial array of values and an accumulator function, apply the accumlator function to each element of the promise's resolved value, + * passing in the current array of values and the resolved item. Returns an array with the concatenated results of the accumulation. + * If any of the promise's values are rejected, the entire operation will be rejected. + * + * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve. + */ + flatFold(initialValue, accumulator) { + return this.arrayify().then(async (ary) => { + let memoPromise = FunPromise.resolve(initialValue).arrayify(); + await Promise.all(map_1.default(ary, async (promisableValue) => { + const value = await promisableValue; + memoPromise = memoPromise.then(async (memo) => memo.concat(toArray_1.default(await accumulator(memo, value)))); + })); + return memoPromise; + }); + } + /** + * Equivalent to `FunPromise.resolve(values).flatFold(initialValue, accumulator)`. + */ + static flatFold(values, initialValue, accumulator) { + return FunPromise.resolve(values).flatFold(initialValue, accumulator); + } /** * Handles rejections like 'catch', but wraps them in a [[`NestedError`]] with the given message. */ diff --git a/dist/node/v10/src/fun-promise.js.map b/dist/node/v10/src/fun-promise.js.map index 433adee..c8a431c 100644 --- a/dist/node/v10/src/fun-promise.js.map +++ b/dist/node/v10/src/fun-promise.js.map @@ -1 +1 @@ -{"version":3,"file":"fun-promise.js","sourceRoot":"","sources":["../../../../src/fun-promise.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fun-promise.js","sourceRoot":"","sources":["../../../../src/fun-promise.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/node/v12/src/fun-promise.js b/dist/node/v12/src/fun-promise.js index 822333f..93b89ad 100644 --- a/dist/node/v12/src/fun-promise.js +++ b/dist/node/v12/src/fun-promise.js @@ -27,6 +27,7 @@ const isFunction_1 = __importDefault(require("lodash/isFunction")); const isNil_1 = __importDefault(require("lodash/isNil")); const map_1 = __importDefault(require("lodash/map")); const negate_1 = __importDefault(require("lodash/negate")); +const toArray_1 = __importDefault(require("lodash/toArray")); // import Debug from "debug"; // const debug = Debug("fun-promises"); /** @@ -171,9 +172,8 @@ class FunPromise { * as `true`. The items are not resolved sequentially unless you also pass a second argument as `true`. */ arrayify(resolveValues = false, sequentialResolution = false) { - const aryPromise = this.then((iter) => [ - ...iter, - ]); + const aryPromise = this.then(async (iterPromise) => toArray_1.default(await iterPromise) // Just to be sure we're all de-promise'd + ); if (resolveValues) { if (sequentialResolution) { return aryPromise.then(async (ary) => { @@ -390,6 +390,29 @@ class FunPromise { static fold(values, initialValue, accumulator) { return FunPromise.resolve(values).fold(initialValue, accumulator); } + /** + * Given an initial array of values and an accumulator function, apply the accumlator function to each element of the promise's resolved value, + * passing in the current array of values and the resolved item. Returns an array with the concatenated results of the accumulation. + * If any of the promise's values are rejected, the entire operation will be rejected. + * + * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve. + */ + flatFold(initialValue, accumulator) { + return this.arrayify().then(async (ary) => { + let memoPromise = FunPromise.resolve(initialValue).arrayify(); + await Promise.all(map_1.default(ary, async (promisableValue) => { + const value = await promisableValue; + memoPromise = memoPromise.then(async (memo) => memo.concat(toArray_1.default(await accumulator(memo, value)))); + })); + return memoPromise; + }); + } + /** + * Equivalent to `FunPromise.resolve(values).flatFold(initialValue, accumulator)`. + */ + static flatFold(values, initialValue, accumulator) { + return FunPromise.resolve(values).flatFold(initialValue, accumulator); + } /** * Handles rejections like 'catch', but wraps them in a [[`NestedError`]] with the given message. */ diff --git a/dist/node/v12/src/fun-promise.js.map b/dist/node/v12/src/fun-promise.js.map index 433adee..c8a431c 100644 --- a/dist/node/v12/src/fun-promise.js.map +++ b/dist/node/v12/src/fun-promise.js.map @@ -1 +1 @@ -{"version":3,"file":"fun-promise.js","sourceRoot":"","sources":["../../../../src/fun-promise.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fun-promise.js","sourceRoot":"","sources":["../../../../src/fun-promise.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/node/v14/src/fun-promise.js b/dist/node/v14/src/fun-promise.js index 822333f..93b89ad 100644 --- a/dist/node/v14/src/fun-promise.js +++ b/dist/node/v14/src/fun-promise.js @@ -27,6 +27,7 @@ const isFunction_1 = __importDefault(require("lodash/isFunction")); const isNil_1 = __importDefault(require("lodash/isNil")); const map_1 = __importDefault(require("lodash/map")); const negate_1 = __importDefault(require("lodash/negate")); +const toArray_1 = __importDefault(require("lodash/toArray")); // import Debug from "debug"; // const debug = Debug("fun-promises"); /** @@ -171,9 +172,8 @@ class FunPromise { * as `true`. The items are not resolved sequentially unless you also pass a second argument as `true`. */ arrayify(resolveValues = false, sequentialResolution = false) { - const aryPromise = this.then((iter) => [ - ...iter, - ]); + const aryPromise = this.then(async (iterPromise) => toArray_1.default(await iterPromise) // Just to be sure we're all de-promise'd + ); if (resolveValues) { if (sequentialResolution) { return aryPromise.then(async (ary) => { @@ -390,6 +390,29 @@ class FunPromise { static fold(values, initialValue, accumulator) { return FunPromise.resolve(values).fold(initialValue, accumulator); } + /** + * Given an initial array of values and an accumulator function, apply the accumlator function to each element of the promise's resolved value, + * passing in the current array of values and the resolved item. Returns an array with the concatenated results of the accumulation. + * If any of the promise's values are rejected, the entire operation will be rejected. + * + * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve. + */ + flatFold(initialValue, accumulator) { + return this.arrayify().then(async (ary) => { + let memoPromise = FunPromise.resolve(initialValue).arrayify(); + await Promise.all(map_1.default(ary, async (promisableValue) => { + const value = await promisableValue; + memoPromise = memoPromise.then(async (memo) => memo.concat(toArray_1.default(await accumulator(memo, value)))); + })); + return memoPromise; + }); + } + /** + * Equivalent to `FunPromise.resolve(values).flatFold(initialValue, accumulator)`. + */ + static flatFold(values, initialValue, accumulator) { + return FunPromise.resolve(values).flatFold(initialValue, accumulator); + } /** * Handles rejections like 'catch', but wraps them in a [[`NestedError`]] with the given message. */ diff --git a/dist/node/v14/src/fun-promise.js.map b/dist/node/v14/src/fun-promise.js.map index 433adee..c8a431c 100644 --- a/dist/node/v14/src/fun-promise.js.map +++ b/dist/node/v14/src/fun-promise.js.map @@ -1 +1 @@ -{"version":3,"file":"fun-promise.js","sourceRoot":"","sources":["../../../../src/fun-promise.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fun-promise.js","sourceRoot":"","sources":["../../../../src/fun-promise.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/react-native.index.js.xz b/dist/react-native.index.js.xz new file mode 100644 index 0000000..f5f16a4 Binary files /dev/null and b/dist/react-native.index.js.xz differ diff --git a/dist/react-native.tar.xz b/dist/react-native.tar.xz new file mode 100644 index 0000000..175854a Binary files /dev/null and b/dist/react-native.tar.xz differ diff --git a/dist/react-native/src/fun-promise.js b/dist/react-native/src/fun-promise.js index 822333f..93b89ad 100644 --- a/dist/react-native/src/fun-promise.js +++ b/dist/react-native/src/fun-promise.js @@ -27,6 +27,7 @@ const isFunction_1 = __importDefault(require("lodash/isFunction")); const isNil_1 = __importDefault(require("lodash/isNil")); const map_1 = __importDefault(require("lodash/map")); const negate_1 = __importDefault(require("lodash/negate")); +const toArray_1 = __importDefault(require("lodash/toArray")); // import Debug from "debug"; // const debug = Debug("fun-promises"); /** @@ -171,9 +172,8 @@ class FunPromise { * as `true`. The items are not resolved sequentially unless you also pass a second argument as `true`. */ arrayify(resolveValues = false, sequentialResolution = false) { - const aryPromise = this.then((iter) => [ - ...iter, - ]); + const aryPromise = this.then(async (iterPromise) => toArray_1.default(await iterPromise) // Just to be sure we're all de-promise'd + ); if (resolveValues) { if (sequentialResolution) { return aryPromise.then(async (ary) => { @@ -390,6 +390,29 @@ class FunPromise { static fold(values, initialValue, accumulator) { return FunPromise.resolve(values).fold(initialValue, accumulator); } + /** + * Given an initial array of values and an accumulator function, apply the accumlator function to each element of the promise's resolved value, + * passing in the current array of values and the resolved item. Returns an array with the concatenated results of the accumulation. + * If any of the promise's values are rejected, the entire operation will be rejected. + * + * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve. + */ + flatFold(initialValue, accumulator) { + return this.arrayify().then(async (ary) => { + let memoPromise = FunPromise.resolve(initialValue).arrayify(); + await Promise.all(map_1.default(ary, async (promisableValue) => { + const value = await promisableValue; + memoPromise = memoPromise.then(async (memo) => memo.concat(toArray_1.default(await accumulator(memo, value)))); + })); + return memoPromise; + }); + } + /** + * Equivalent to `FunPromise.resolve(values).flatFold(initialValue, accumulator)`. + */ + static flatFold(values, initialValue, accumulator) { + return FunPromise.resolve(values).flatFold(initialValue, accumulator); + } /** * Handles rejections like 'catch', but wraps them in a [[`NestedError`]] with the given message. */ diff --git a/dist/react-native/src/fun-promise.js.map b/dist/react-native/src/fun-promise.js.map index 764d06a..6ae34be 100644 --- a/dist/react-native/src/fun-promise.js.map +++ b/dist/react-native/src/fun-promise.js.map @@ -1 +1 @@ -{"version":3,"file":"fun-promise.js","sourceRoot":"","sources":["../../../src/fun-promise.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fun-promise.js","sourceRoot":"","sources":["../../../src/fun-promise.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/umd.index.js.xz b/dist/umd.index.js.xz new file mode 100644 index 0000000..f0481c1 Binary files /dev/null and b/dist/umd.index.js.xz differ diff --git a/dist/umd.tar.xz b/dist/umd.tar.xz new file mode 100644 index 0000000..6d7077e Binary files /dev/null and b/dist/umd.tar.xz differ diff --git a/dist/v10.index.js.xz b/dist/v10.index.js.xz new file mode 100644 index 0000000..5737f9f Binary files /dev/null and b/dist/v10.index.js.xz differ diff --git a/dist/v10.tar.xz b/dist/v10.tar.xz new file mode 100644 index 0000000..d8e9947 Binary files /dev/null and b/dist/v10.tar.xz differ diff --git a/dist/v12.index.js.xz b/dist/v12.index.js.xz new file mode 100644 index 0000000..1aa0721 Binary files /dev/null and b/dist/v12.index.js.xz differ diff --git a/dist/v12.tar.xz b/dist/v12.tar.xz new file mode 100644 index 0000000..cb882c4 Binary files /dev/null and b/dist/v12.tar.xz differ diff --git a/dist/v14.index.js.xz b/dist/v14.index.js.xz new file mode 100644 index 0000000..65a1238 Binary files /dev/null and b/dist/v14.index.js.xz differ diff --git a/dist/v14.tar.xz b/dist/v14.tar.xz new file mode 100644 index 0000000..b1d7676 Binary files /dev/null and b/dist/v14.tar.xz differ diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index f9b5de2..4f14275 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,48 +1,53 @@ + + fun-promises Changelog ## [1.2.0](https://github.com/RobertFischer/fun-promises/compare/v1.1.0...v1.2.0) (2020-12-03) - ### Features -* **fold:** implements fold in case map and filter don't cut it ([86c010f](https://github.com/RobertFischer/fun-promises/commit/86c010ff5f934602a2a964cb71ebb73697ed7c2a)), closes [#12](https://github.com/RobertFischer/fun-promises/issues/12) -* **tap:** implement 'tap' for peeking at values ([0f4816a](https://github.com/RobertFischer/fun-promises/commit/0f4816ab42fd9f18bf91e179d2c03fed25822f11)) - +- **fold:** implements fold in case map and filter don't cut it + ([86c010f](https://github.com/RobertFischer/fun-promises/commit/86c010ff5f934602a2a964cb71ebb73697ed7c2a)), + closes [#12](https://github.com/RobertFischer/fun-promises/issues/12) +- **tap:** implement 'tap' for peeking at values + ([0f4816a](https://github.com/RobertFischer/fun-promises/commit/0f4816ab42fd9f18bf91e179d2c03fed25822f11)) ### Reverts -* **release:** the cleanup caused a problem with the autocommitting ([6c03637](https://github.com/RobertFischer/fun-promises/commit/6c03637137923e0581a4a736bcb6bd4aa25c77d4)) +- **release:** the cleanup caused a problem with the autocommitting + ([6c03637](https://github.com/RobertFischer/fun-promises/commit/6c03637137923e0581a4a736bcb6bd4aa25c77d4)) ## [1.2.0-rc.2](https://github.com/RobertFischer/fun-promises/compare/v1.2.0-rc.1...v1.2.0-rc.2) (2020-12-02) - ### Features -* **fold:** implements fold in case map and filter don't cut it ([86c010f](https://github.com/RobertFischer/fun-promises/commit/86c010ff5f934602a2a964cb71ebb73697ed7c2a)), closes [#12](https://github.com/RobertFischer/fun-promises/issues/12) +- **fold:** implements fold in case map and filter don't cut it + ([86c010f](https://github.com/RobertFischer/fun-promises/commit/86c010ff5f934602a2a964cb71ebb73697ed7c2a)), + closes [#12](https://github.com/RobertFischer/fun-promises/issues/12) ## [1.2.0-rc.1](https://github.com/RobertFischer/fun-promises/compare/v1.1.0...v1.2.0-rc.1) (2020-12-02) - ### Features -* **tap:** implement 'tap' for peeking at values ([0f4816a](https://github.com/RobertFischer/fun-promises/commit/0f4816ab42fd9f18bf91e179d2c03fed25822f11)) - +- **tap:** implement 'tap' for peeking at values + ([0f4816a](https://github.com/RobertFischer/fun-promises/commit/0f4816ab42fd9f18bf91e179d2c03fed25822f11)) ### Reverts -* **release:** the cleanup caused a problem with the autocommitting ([6c03637](https://github.com/RobertFischer/fun-promises/commit/6c03637137923e0581a4a736bcb6bd4aa25c77d4)) +- **release:** the cleanup caused a problem with the autocommitting + ([6c03637](https://github.com/RobertFischer/fun-promises/commit/6c03637137923e0581a4a736bcb6bd4aa25c77d4)) ## [1.1.0-rc.2](https://github.com/RobertFischer/fun-promises/compare/v1.1.0-rc.1...v1.1.0-rc.2) (2020-12-02) - ### Features -* **tap:** implement 'tap' for peeking at values ([ce059bd](https://github.com/RobertFischer/fun-promises/commit/ce059bdb12c4706f8bf8189d5b09dadae740fa47)) - +- **tap:** implement 'tap' for peeking at values + ([ce059bd](https://github.com/RobertFischer/fun-promises/commit/ce059bdb12c4706f8bf8189d5b09dadae740fa47)) ### Reverts -* **release:** the cleanup caused a problem with the autocommitting ([c9ad636](https://github.com/RobertFischer/fun-promises/commit/c9ad636762e510ce0218f4c13b506cac05f4ab0f)) +- **release:** the cleanup caused a problem with the autocommitting + ([c9ad636](https://github.com/RobertFischer/fun-promises/commit/c9ad636762e510ce0218f4c13b506cac05f4ab0f)) diff --git a/docs/assets/js/search.json b/docs/assets/js/search.json index 9c09dbf..a73d869 100644 --- a/docs/assets/js/search.json +++ b/docs/assets/js/search.json @@ -1 +1 @@ -{"kinds":{"1":"Module","128":"Class","512":"Constructor","1024":"Property","2048":"Method","262144":"Accessor","4194304":"Type alias","16777216":"Reference"},"rows":[{"id":0,"kind":1,"name":"\"src/types\"","url":"modules/_src_types_.html","classes":"tsd-kind-module"},{"id":1,"kind":128,"name":"Fulfillment","url":"classes/_src_types_.fulfillment.html","classes":"tsd-kind-class tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/types\""},{"id":2,"kind":512,"name":"constructor","url":"classes/_src_types_.fulfillment.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"\"src/types\".Fulfillment"},{"id":3,"kind":1024,"name":"value","url":"classes/_src_types_.fulfillment.html#value","classes":"tsd-kind-property tsd-parent-kind-class","parent":"\"src/types\".Fulfillment"},{"id":4,"kind":262144,"name":"status","url":"classes/_src_types_.fulfillment.html#status","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"\"src/types\".Fulfillment"},{"id":5,"kind":128,"name":"Rejection","url":"classes/_src_types_.rejection.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"\"src/types\""},{"id":6,"kind":512,"name":"constructor","url":"classes/_src_types_.rejection.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"\"src/types\".Rejection"},{"id":7,"kind":1024,"name":"reason","url":"classes/_src_types_.rejection.html#reason","classes":"tsd-kind-property tsd-parent-kind-class","parent":"\"src/types\".Rejection"},{"id":8,"kind":262144,"name":"status","url":"classes/_src_types_.rejection.html#status","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"\"src/types\".Rejection"},{"id":9,"kind":4194304,"name":"Item","url":"modules/_src_types_.html#item","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/types\""},{"id":10,"kind":4194304,"name":"Unpromise","url":"modules/_src_types_.html#unpromise","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/types\""},{"id":11,"kind":4194304,"name":"Promisable","url":"modules/_src_types_.html#promisable","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/types\""},{"id":12,"kind":4194304,"name":"SimplifiedPromise","url":"modules/_src_types_.html#simplifiedpromise","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/types\""},{"id":13,"kind":4194304,"name":"SimplifiedPromiseLike","url":"modules/_src_types_.html#simplifiedpromiselike","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/types\""},{"id":14,"kind":4194304,"name":"SimplifiedPromisable","url":"modules/_src_types_.html#simplifiedpromisable","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/types\""},{"id":15,"kind":4194304,"name":"PromisableIterable","url":"modules/_src_types_.html#promisableiterable","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/types\""},{"id":16,"kind":4194304,"name":"IterableOfPromisables","url":"modules/_src_types_.html#iterableofpromisables","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/types\""},{"id":17,"kind":4194304,"name":"Settlement","url":"modules/_src_types_.html#settlement","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/types\""},{"id":18,"kind":1,"name":"\"src/fun-promise\"","url":"modules/_src_fun_promise_.html","classes":"tsd-kind-module"},{"id":19,"kind":128,"name":"FunPromise","url":"classes/_src_fun_promise_.funpromise.html","classes":"tsd-kind-class tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/fun-promise\""},{"id":20,"kind":1024,"name":"wrapped","url":"classes/_src_fun_promise_.funpromise.html#wrapped","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-protected","parent":"\"src/fun-promise\".FunPromise"},{"id":21,"kind":512,"name":"constructor","url":"classes/_src_fun_promise_.funpromise.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":22,"kind":2048,"name":"resolve","url":"classes/_src_fun_promise_.funpromise.html#resolve-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":23,"kind":2048,"name":"resolve","url":"classes/_src_fun_promise_.funpromise.html#resolve","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"\"src/fun-promise\".FunPromise"},{"id":24,"kind":2048,"name":"return","url":"classes/_src_fun_promise_.funpromise.html#return-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":25,"kind":2048,"name":"return","url":"classes/_src_fun_promise_.funpromise.html#return","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"\"src/fun-promise\".FunPromise"},{"id":26,"kind":2048,"name":"reject","url":"classes/_src_fun_promise_.funpromise.html#reject-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":27,"kind":2048,"name":"reject","url":"classes/_src_fun_promise_.funpromise.html#reject","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":28,"kind":2048,"name":"then","url":"classes/_src_fun_promise_.funpromise.html#then","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"\"src/fun-promise\".FunPromise"},{"id":29,"kind":2048,"name":"catch","url":"classes/_src_fun_promise_.funpromise.html#catch","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"\"src/fun-promise\".FunPromise"},{"id":30,"kind":2048,"name":"all","url":"classes/_src_fun_promise_.funpromise.html#all-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":31,"kind":2048,"name":"all","url":"classes/_src_fun_promise_.funpromise.html#all","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":32,"kind":2048,"name":"try","url":"classes/_src_fun_promise_.funpromise.html#try","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":33,"kind":2048,"name":"simplify","url":"classes/_src_fun_promise_.funpromise.html#simplify","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":34,"kind":2048,"name":"simplifyAll","url":"classes/_src_fun_promise_.funpromise.html#simplifyall","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":35,"kind":2048,"name":"arrayify","url":"classes/_src_fun_promise_.funpromise.html#arrayify","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":36,"kind":2048,"name":"map","url":"classes/_src_fun_promise_.funpromise.html#map","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"\"src/fun-promise\".FunPromise"},{"id":37,"kind":2048,"name":"map","url":"classes/_src_fun_promise_.funpromise.html#map-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":38,"kind":262144,"name":"[Symbol.toStringTag]","url":"classes/_src_fun_promise_.funpromise.html#_symbol_tostringtag_","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":39,"kind":2048,"name":"finally","url":"classes/_src_fun_promise_.funpromise.html#finally","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":40,"kind":2048,"name":"coalesce","url":"classes/_src_fun_promise_.funpromise.html#coalesce","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":41,"kind":2048,"name":"delay","url":"classes/_src_fun_promise_.funpromise.html#delay-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":42,"kind":2048,"name":"delay","url":"classes/_src_fun_promise_.funpromise.html#delay","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"\"src/fun-promise\".FunPromise"},{"id":43,"kind":2048,"name":"filter","url":"classes/_src_fun_promise_.funpromise.html#filter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":44,"kind":2048,"name":"filter","url":"classes/_src_fun_promise_.funpromise.html#filter-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":45,"kind":2048,"name":"flatMap","url":"classes/_src_fun_promise_.funpromise.html#flatmap","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"\"src/fun-promise\".FunPromise"},{"id":46,"kind":2048,"name":"flatMap","url":"classes/_src_fun_promise_.funpromise.html#flatmap-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":47,"kind":2048,"name":"tap","url":"classes/_src_fun_promise_.funpromise.html#tap","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":48,"kind":2048,"name":"tapCatch","url":"classes/_src_fun_promise_.funpromise.html#tapcatch","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":49,"kind":2048,"name":"tapEach","url":"classes/_src_fun_promise_.funpromise.html#tapeach","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":50,"kind":2048,"name":"fold","url":"classes/_src_fun_promise_.funpromise.html#fold","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"\"src/fun-promise\".FunPromise"},{"id":51,"kind":2048,"name":"fold","url":"classes/_src_fun_promise_.funpromise.html#fold-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":52,"kind":2048,"name":"wrapError","url":"classes/_src_fun_promise_.funpromise.html#wraperror","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":53,"kind":2048,"name":"wrapErrors","url":"classes/_src_fun_promise_.funpromise.html#wraperrors","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":54,"kind":2048,"name":"cancel","url":"classes/_src_fun_promise_.funpromise.html#cancel","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":55,"kind":2048,"name":"isCancelled","url":"classes/_src_fun_promise_.funpromise.html#iscancelled","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":56,"kind":2048,"name":"settle","url":"classes/_src_fun_promise_.funpromise.html#settle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":57,"kind":2048,"name":"settleAll","url":"classes/_src_fun_promise_.funpromise.html#settleall","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":58,"kind":2048,"name":"settleAll","url":"classes/_src_fun_promise_.funpromise.html#settleall-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":59,"kind":1,"name":"\"src/deferral\"","url":"modules/_src_deferral_.html","classes":"tsd-kind-module"},{"id":60,"kind":128,"name":"Deferral","url":"classes/_src_deferral_.deferral.html","classes":"tsd-kind-class tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/deferral\""},{"id":61,"kind":1024,"name":"promise","url":"classes/_src_deferral_.deferral.html#promise","classes":"tsd-kind-property tsd-parent-kind-class","parent":"\"src/deferral\".Deferral"},{"id":62,"kind":2048,"name":"resolve","url":"classes/_src_deferral_.deferral.html#resolve","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/deferral\".Deferral"},{"id":63,"kind":2048,"name":"reject","url":"classes/_src_deferral_.deferral.html#reject","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/deferral\".Deferral"},{"id":64,"kind":512,"name":"constructor","url":"classes/_src_deferral_.deferral.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"\"src/deferral\".Deferral"},{"id":65,"kind":1,"name":"\"index\"","url":"modules/_index_.html","classes":"tsd-kind-module"},{"id":66,"kind":16777216,"name":"Item","url":"modules/_index_.html#item","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":67,"kind":16777216,"name":"Unpromise","url":"modules/_index_.html#unpromise","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":68,"kind":16777216,"name":"Promisable","url":"modules/_index_.html#promisable","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":69,"kind":16777216,"name":"SimplifiedPromise","url":"modules/_index_.html#simplifiedpromise","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":70,"kind":16777216,"name":"SimplifiedPromiseLike","url":"modules/_index_.html#simplifiedpromiselike","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":71,"kind":16777216,"name":"SimplifiedPromisable","url":"modules/_index_.html#simplifiedpromisable","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":72,"kind":16777216,"name":"PromisableIterable","url":"modules/_index_.html#promisableiterable","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":73,"kind":16777216,"name":"IterableOfPromisables","url":"modules/_index_.html#iterableofpromisables","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":74,"kind":16777216,"name":"Fulfillment","url":"modules/_index_.html#fulfillment","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":75,"kind":16777216,"name":"Rejection","url":"modules/_index_.html#rejection","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":76,"kind":16777216,"name":"Settlement","url":"modules/_index_.html#settlement","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":77,"kind":1,"name":"\"src/deferral.test\"","url":"modules/_src_deferral_test_.html","classes":"tsd-kind-module"},{"id":78,"kind":1,"name":"\"src/fun-promise.test\"","url":"modules/_src_fun_promise_test_.html","classes":"tsd-kind-module"},{"id":79,"kind":1,"name":"\"src/types.test\"","url":"modules/_src_types_test_.html","classes":"tsd-kind-module"}],"index":{"version":"2.3.9","fields":["name","parent"],"fieldVectors":[["name/0",[0,18.876]],["parent/0",[]],["name/1",[1,35.132]],["parent/1",[0,2.122]],["name/2",[2,29.195]],["parent/2",[3,3.568]],["name/3",[4,40.292]],["parent/3",[3,3.568]],["name/4",[5,35.132]],["parent/4",[3,3.568]],["name/5",[6,35.132]],["parent/5",[0,2.122]],["name/6",[2,29.195]],["parent/6",[7,3.568]],["name/7",[8,40.292]],["parent/7",[7,3.568]],["name/8",[5,35.132]],["parent/8",[7,3.568]],["name/9",[9,35.132]],["parent/9",[0,2.122]],["name/10",[10,35.132]],["parent/10",[0,2.122]],["name/11",[11,35.132]],["parent/11",[0,2.122]],["name/12",[12,35.132]],["parent/12",[0,2.122]],["name/13",[13,35.132]],["parent/13",[0,2.122]],["name/14",[14,35.132]],["parent/14",[0,2.122]],["name/15",[15,35.132]],["parent/15",[0,2.122]],["name/16",[16,35.132]],["parent/16",[0,2.122]],["name/17",[17,35.132]],["parent/17",[0,2.122]],["name/18",[18,4.643,19,22.616]],["parent/18",[]],["name/19",[20,40.292]],["parent/19",[18,0.551,19,2.685]],["name/20",[21,40.292]],["parent/20",[18,0.551,22,0.614]],["name/21",[2,29.195]],["parent/21",[18,0.551,22,0.614]],["name/22",[23,31.733]],["parent/22",[18,0.551,22,0.614]],["name/23",[23,31.733]],["parent/23",[18,0.551,22,0.614]],["name/24",[24,35.132]],["parent/24",[18,0.551,22,0.614]],["name/25",[24,35.132]],["parent/25",[18,0.551,22,0.614]],["name/26",[25,31.733]],["parent/26",[18,0.551,22,0.614]],["name/27",[25,31.733]],["parent/27",[18,0.551,22,0.614]],["name/28",[26,40.292]],["parent/28",[18,0.551,22,0.614]],["name/29",[27,40.292]],["parent/29",[18,0.551,22,0.614]],["name/30",[28,35.132]],["parent/30",[18,0.551,22,0.614]],["name/31",[28,35.132]],["parent/31",[18,0.551,22,0.614]],["name/32",[29,40.292]],["parent/32",[18,0.551,22,0.614]],["name/33",[30,40.292]],["parent/33",[18,0.551,22,0.614]],["name/34",[31,40.292]],["parent/34",[18,0.551,22,0.614]],["name/35",[32,40.292]],["parent/35",[18,0.551,22,0.614]],["name/36",[33,35.132]],["parent/36",[18,0.551,22,0.614]],["name/37",[33,35.132]],["parent/37",[18,0.551,22,0.614]],["name/38",[34,40.292]],["parent/38",[18,0.551,22,0.614]],["name/39",[35,40.292]],["parent/39",[18,0.551,22,0.614]],["name/40",[36,40.292]],["parent/40",[18,0.551,22,0.614]],["name/41",[37,35.132]],["parent/41",[18,0.551,22,0.614]],["name/42",[37,35.132]],["parent/42",[18,0.551,22,0.614]],["name/43",[38,35.132]],["parent/43",[18,0.551,22,0.614]],["name/44",[38,35.132]],["parent/44",[18,0.551,22,0.614]],["name/45",[39,35.132]],["parent/45",[18,0.551,22,0.614]],["name/46",[39,35.132]],["parent/46",[18,0.551,22,0.614]],["name/47",[40,40.292]],["parent/47",[18,0.551,22,0.614]],["name/48",[41,40.292]],["parent/48",[18,0.551,22,0.614]],["name/49",[42,40.292]],["parent/49",[18,0.551,22,0.614]],["name/50",[43,35.132]],["parent/50",[18,0.551,22,0.614]],["name/51",[43,35.132]],["parent/51",[18,0.551,22,0.614]],["name/52",[44,40.292]],["parent/52",[18,0.551,22,0.614]],["name/53",[45,40.292]],["parent/53",[18,0.551,22,0.614]],["name/54",[46,40.292]],["parent/54",[18,0.551,22,0.614]],["name/55",[47,40.292]],["parent/55",[18,0.551,22,0.614]],["name/56",[48,40.292]],["parent/56",[18,0.551,22,0.614]],["name/57",[49,35.132]],["parent/57",[18,0.551,22,0.614]],["name/58",[49,35.132]],["parent/58",[18,0.551,22,0.614]],["name/59",[50,35.132]],["parent/59",[]],["name/60",[51,40.292]],["parent/60",[50,3.95]],["name/61",[19,31.733]],["parent/61",[52,3.283]],["name/62",[23,31.733]],["parent/62",[52,3.283]],["name/63",[25,31.733]],["parent/63",[52,3.283]],["name/64",[2,29.195]],["parent/64",[52,3.283]],["name/65",[53,18.876]],["parent/65",[]],["name/66",[9,35.132]],["parent/66",[53,2.122]],["name/67",[10,35.132]],["parent/67",[53,2.122]],["name/68",[11,35.132]],["parent/68",[53,2.122]],["name/69",[12,35.132]],["parent/69",[53,2.122]],["name/70",[13,35.132]],["parent/70",[53,2.122]],["name/71",[14,35.132]],["parent/71",[53,2.122]],["name/72",[15,35.132]],["parent/72",[53,2.122]],["name/73",[16,35.132]],["parent/73",[53,2.122]],["name/74",[1,35.132]],["parent/74",[53,2.122]],["name/75",[6,35.132]],["parent/75",[53,2.122]],["name/76",[17,35.132]],["parent/76",[53,2.122]],["name/77",[54,40.292]],["parent/77",[]],["name/78",[18,4.643,55,28.716]],["parent/78",[]],["name/79",[56,40.292]],["parent/79",[]]],"invertedIndex":[["all",{"_index":28,"name":{"30":{},"31":{}},"parent":{}}],["arrayify",{"_index":32,"name":{"35":{}},"parent":{}}],["cancel",{"_index":46,"name":{"54":{}},"parent":{}}],["catch",{"_index":27,"name":{"29":{}},"parent":{}}],["coalesce",{"_index":36,"name":{"40":{}},"parent":{}}],["constructor",{"_index":2,"name":{"2":{},"6":{},"21":{},"64":{}},"parent":{}}],["deferral",{"_index":51,"name":{"60":{}},"parent":{}}],["delay",{"_index":37,"name":{"41":{},"42":{}},"parent":{}}],["filter",{"_index":38,"name":{"43":{},"44":{}},"parent":{}}],["finally",{"_index":35,"name":{"39":{}},"parent":{}}],["flatmap",{"_index":39,"name":{"45":{},"46":{}},"parent":{}}],["fold",{"_index":43,"name":{"50":{},"51":{}},"parent":{}}],["fulfillment",{"_index":1,"name":{"1":{},"74":{}},"parent":{}}],["funpromise",{"_index":20,"name":{"19":{}},"parent":{}}],["index",{"_index":53,"name":{"65":{}},"parent":{"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{}}}],["iscancelled",{"_index":47,"name":{"55":{}},"parent":{}}],["item",{"_index":9,"name":{"9":{},"66":{}},"parent":{}}],["iterableofpromisables",{"_index":16,"name":{"16":{},"73":{}},"parent":{}}],["map",{"_index":33,"name":{"36":{},"37":{}},"parent":{}}],["promisable",{"_index":11,"name":{"11":{},"68":{}},"parent":{}}],["promisableiterable",{"_index":15,"name":{"15":{},"72":{}},"parent":{}}],["promise",{"_index":19,"name":{"18":{},"61":{}},"parent":{"19":{}}}],["promise\".funpromise",{"_index":22,"name":{},"parent":{"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{}}}],["promise.test",{"_index":55,"name":{"78":{}},"parent":{}}],["reason",{"_index":8,"name":{"7":{}},"parent":{}}],["reject",{"_index":25,"name":{"26":{},"27":{},"63":{}},"parent":{}}],["rejection",{"_index":6,"name":{"5":{},"75":{}},"parent":{}}],["resolve",{"_index":23,"name":{"22":{},"23":{},"62":{}},"parent":{}}],["return",{"_index":24,"name":{"24":{},"25":{}},"parent":{}}],["settle",{"_index":48,"name":{"56":{}},"parent":{}}],["settleall",{"_index":49,"name":{"57":{},"58":{}},"parent":{}}],["settlement",{"_index":17,"name":{"17":{},"76":{}},"parent":{}}],["simplifiedpromisable",{"_index":14,"name":{"14":{},"71":{}},"parent":{}}],["simplifiedpromise",{"_index":12,"name":{"12":{},"69":{}},"parent":{}}],["simplifiedpromiselike",{"_index":13,"name":{"13":{},"70":{}},"parent":{}}],["simplify",{"_index":30,"name":{"33":{}},"parent":{}}],["simplifyall",{"_index":31,"name":{"34":{}},"parent":{}}],["src/deferral",{"_index":50,"name":{"59":{}},"parent":{"60":{}}}],["src/deferral\".deferral",{"_index":52,"name":{},"parent":{"61":{},"62":{},"63":{},"64":{}}}],["src/deferral.test",{"_index":54,"name":{"77":{}},"parent":{}}],["src/fun",{"_index":18,"name":{"18":{},"78":{}},"parent":{"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{}}}],["src/types",{"_index":0,"name":{"0":{}},"parent":{"1":{},"5":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{}}}],["src/types\".fulfillment",{"_index":3,"name":{},"parent":{"2":{},"3":{},"4":{}}}],["src/types\".rejection",{"_index":7,"name":{},"parent":{"6":{},"7":{},"8":{}}}],["src/types.test",{"_index":56,"name":{"79":{}},"parent":{}}],["status",{"_index":5,"name":{"4":{},"8":{}},"parent":{}}],["symbol.tostringtag",{"_index":34,"name":{"38":{}},"parent":{}}],["tap",{"_index":40,"name":{"47":{}},"parent":{}}],["tapcatch",{"_index":41,"name":{"48":{}},"parent":{}}],["tapeach",{"_index":42,"name":{"49":{}},"parent":{}}],["then",{"_index":26,"name":{"28":{}},"parent":{}}],["try",{"_index":29,"name":{"32":{}},"parent":{}}],["unpromise",{"_index":10,"name":{"10":{},"67":{}},"parent":{}}],["value",{"_index":4,"name":{"3":{}},"parent":{}}],["wraperror",{"_index":44,"name":{"52":{}},"parent":{}}],["wraperrors",{"_index":45,"name":{"53":{}},"parent":{}}],["wrapped",{"_index":21,"name":{"20":{}},"parent":{}}]],"pipeline":[]}} \ No newline at end of file +{"kinds":{"1":"Module","128":"Class","512":"Constructor","1024":"Property","2048":"Method","262144":"Accessor","4194304":"Type alias","16777216":"Reference"},"rows":[{"id":0,"kind":1,"name":"\"src/types\"","url":"modules/_src_types_.html","classes":"tsd-kind-module"},{"id":1,"kind":128,"name":"Fulfillment","url":"classes/_src_types_.fulfillment.html","classes":"tsd-kind-class tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/types\""},{"id":2,"kind":512,"name":"constructor","url":"classes/_src_types_.fulfillment.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"\"src/types\".Fulfillment"},{"id":3,"kind":1024,"name":"value","url":"classes/_src_types_.fulfillment.html#value","classes":"tsd-kind-property tsd-parent-kind-class","parent":"\"src/types\".Fulfillment"},{"id":4,"kind":262144,"name":"status","url":"classes/_src_types_.fulfillment.html#status","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"\"src/types\".Fulfillment"},{"id":5,"kind":128,"name":"Rejection","url":"classes/_src_types_.rejection.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"\"src/types\""},{"id":6,"kind":512,"name":"constructor","url":"classes/_src_types_.rejection.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"\"src/types\".Rejection"},{"id":7,"kind":1024,"name":"reason","url":"classes/_src_types_.rejection.html#reason","classes":"tsd-kind-property tsd-parent-kind-class","parent":"\"src/types\".Rejection"},{"id":8,"kind":262144,"name":"status","url":"classes/_src_types_.rejection.html#status","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"\"src/types\".Rejection"},{"id":9,"kind":4194304,"name":"Item","url":"modules/_src_types_.html#item","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/types\""},{"id":10,"kind":4194304,"name":"Unpromise","url":"modules/_src_types_.html#unpromise","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/types\""},{"id":11,"kind":4194304,"name":"Promisable","url":"modules/_src_types_.html#promisable","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/types\""},{"id":12,"kind":4194304,"name":"SimplifiedPromise","url":"modules/_src_types_.html#simplifiedpromise","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/types\""},{"id":13,"kind":4194304,"name":"SimplifiedPromiseLike","url":"modules/_src_types_.html#simplifiedpromiselike","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/types\""},{"id":14,"kind":4194304,"name":"SimplifiedPromisable","url":"modules/_src_types_.html#simplifiedpromisable","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/types\""},{"id":15,"kind":4194304,"name":"PromisableIterable","url":"modules/_src_types_.html#promisableiterable","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/types\""},{"id":16,"kind":4194304,"name":"IterableOfPromisables","url":"modules/_src_types_.html#iterableofpromisables","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/types\""},{"id":17,"kind":4194304,"name":"Settlement","url":"modules/_src_types_.html#settlement","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/types\""},{"id":18,"kind":1,"name":"\"src/fun-promise\"","url":"modules/_src_fun_promise_.html","classes":"tsd-kind-module"},{"id":19,"kind":128,"name":"FunPromise","url":"classes/_src_fun_promise_.funpromise.html","classes":"tsd-kind-class tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/fun-promise\""},{"id":20,"kind":1024,"name":"wrapped","url":"classes/_src_fun_promise_.funpromise.html#wrapped","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-protected","parent":"\"src/fun-promise\".FunPromise"},{"id":21,"kind":512,"name":"constructor","url":"classes/_src_fun_promise_.funpromise.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":22,"kind":2048,"name":"resolve","url":"classes/_src_fun_promise_.funpromise.html#resolve-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":23,"kind":2048,"name":"resolve","url":"classes/_src_fun_promise_.funpromise.html#resolve","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"\"src/fun-promise\".FunPromise"},{"id":24,"kind":2048,"name":"return","url":"classes/_src_fun_promise_.funpromise.html#return-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":25,"kind":2048,"name":"return","url":"classes/_src_fun_promise_.funpromise.html#return","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"\"src/fun-promise\".FunPromise"},{"id":26,"kind":2048,"name":"reject","url":"classes/_src_fun_promise_.funpromise.html#reject-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":27,"kind":2048,"name":"reject","url":"classes/_src_fun_promise_.funpromise.html#reject","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":28,"kind":2048,"name":"then","url":"classes/_src_fun_promise_.funpromise.html#then","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"\"src/fun-promise\".FunPromise"},{"id":29,"kind":2048,"name":"catch","url":"classes/_src_fun_promise_.funpromise.html#catch","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"\"src/fun-promise\".FunPromise"},{"id":30,"kind":2048,"name":"all","url":"classes/_src_fun_promise_.funpromise.html#all-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":31,"kind":2048,"name":"all","url":"classes/_src_fun_promise_.funpromise.html#all","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":32,"kind":2048,"name":"try","url":"classes/_src_fun_promise_.funpromise.html#try","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":33,"kind":2048,"name":"simplify","url":"classes/_src_fun_promise_.funpromise.html#simplify","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":34,"kind":2048,"name":"simplifyAll","url":"classes/_src_fun_promise_.funpromise.html#simplifyall","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":35,"kind":2048,"name":"arrayify","url":"classes/_src_fun_promise_.funpromise.html#arrayify","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":36,"kind":2048,"name":"map","url":"classes/_src_fun_promise_.funpromise.html#map","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"\"src/fun-promise\".FunPromise"},{"id":37,"kind":2048,"name":"map","url":"classes/_src_fun_promise_.funpromise.html#map-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":38,"kind":262144,"name":"[Symbol.toStringTag]","url":"classes/_src_fun_promise_.funpromise.html#_symbol_tostringtag_","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":39,"kind":2048,"name":"finally","url":"classes/_src_fun_promise_.funpromise.html#finally","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":40,"kind":2048,"name":"coalesce","url":"classes/_src_fun_promise_.funpromise.html#coalesce","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":41,"kind":2048,"name":"delay","url":"classes/_src_fun_promise_.funpromise.html#delay-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":42,"kind":2048,"name":"delay","url":"classes/_src_fun_promise_.funpromise.html#delay","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"\"src/fun-promise\".FunPromise"},{"id":43,"kind":2048,"name":"filter","url":"classes/_src_fun_promise_.funpromise.html#filter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":44,"kind":2048,"name":"filter","url":"classes/_src_fun_promise_.funpromise.html#filter-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":45,"kind":2048,"name":"flatMap","url":"classes/_src_fun_promise_.funpromise.html#flatmap","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"\"src/fun-promise\".FunPromise"},{"id":46,"kind":2048,"name":"flatMap","url":"classes/_src_fun_promise_.funpromise.html#flatmap-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":47,"kind":2048,"name":"tap","url":"classes/_src_fun_promise_.funpromise.html#tap","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":48,"kind":2048,"name":"tapCatch","url":"classes/_src_fun_promise_.funpromise.html#tapcatch","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":49,"kind":2048,"name":"tapEach","url":"classes/_src_fun_promise_.funpromise.html#tapeach","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":50,"kind":2048,"name":"fold","url":"classes/_src_fun_promise_.funpromise.html#fold","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"\"src/fun-promise\".FunPromise"},{"id":51,"kind":2048,"name":"fold","url":"classes/_src_fun_promise_.funpromise.html#fold-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":52,"kind":2048,"name":"flatFold","url":"classes/_src_fun_promise_.funpromise.html#flatfold","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"\"src/fun-promise\".FunPromise"},{"id":53,"kind":2048,"name":"flatFold","url":"classes/_src_fun_promise_.funpromise.html#flatfold-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":54,"kind":2048,"name":"wrapError","url":"classes/_src_fun_promise_.funpromise.html#wraperror","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":55,"kind":2048,"name":"wrapErrors","url":"classes/_src_fun_promise_.funpromise.html#wraperrors","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":56,"kind":2048,"name":"cancel","url":"classes/_src_fun_promise_.funpromise.html#cancel","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":57,"kind":2048,"name":"isCancelled","url":"classes/_src_fun_promise_.funpromise.html#iscancelled","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":58,"kind":2048,"name":"settle","url":"classes/_src_fun_promise_.funpromise.html#settle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":59,"kind":2048,"name":"settleAll","url":"classes/_src_fun_promise_.funpromise.html#settleall","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/fun-promise\".FunPromise"},{"id":60,"kind":2048,"name":"settleAll","url":"classes/_src_fun_promise_.funpromise.html#settleall-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"\"src/fun-promise\".FunPromise"},{"id":61,"kind":1,"name":"\"src/deferral\"","url":"modules/_src_deferral_.html","classes":"tsd-kind-module"},{"id":62,"kind":128,"name":"Deferral","url":"classes/_src_deferral_.deferral.html","classes":"tsd-kind-class tsd-parent-kind-module tsd-has-type-parameter","parent":"\"src/deferral\""},{"id":63,"kind":1024,"name":"promise","url":"classes/_src_deferral_.deferral.html#promise","classes":"tsd-kind-property tsd-parent-kind-class","parent":"\"src/deferral\".Deferral"},{"id":64,"kind":2048,"name":"resolve","url":"classes/_src_deferral_.deferral.html#resolve","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/deferral\".Deferral"},{"id":65,"kind":2048,"name":"reject","url":"classes/_src_deferral_.deferral.html#reject","classes":"tsd-kind-method tsd-parent-kind-class","parent":"\"src/deferral\".Deferral"},{"id":66,"kind":512,"name":"constructor","url":"classes/_src_deferral_.deferral.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"\"src/deferral\".Deferral"},{"id":67,"kind":1,"name":"\"index\"","url":"modules/_index_.html","classes":"tsd-kind-module"},{"id":68,"kind":16777216,"name":"Item","url":"modules/_index_.html#item","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":69,"kind":16777216,"name":"Unpromise","url":"modules/_index_.html#unpromise","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":70,"kind":16777216,"name":"Promisable","url":"modules/_index_.html#promisable","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":71,"kind":16777216,"name":"SimplifiedPromise","url":"modules/_index_.html#simplifiedpromise","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":72,"kind":16777216,"name":"SimplifiedPromiseLike","url":"modules/_index_.html#simplifiedpromiselike","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":73,"kind":16777216,"name":"SimplifiedPromisable","url":"modules/_index_.html#simplifiedpromisable","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":74,"kind":16777216,"name":"PromisableIterable","url":"modules/_index_.html#promisableiterable","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":75,"kind":16777216,"name":"IterableOfPromisables","url":"modules/_index_.html#iterableofpromisables","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":76,"kind":16777216,"name":"Fulfillment","url":"modules/_index_.html#fulfillment","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":77,"kind":16777216,"name":"Rejection","url":"modules/_index_.html#rejection","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":78,"kind":16777216,"name":"Settlement","url":"modules/_index_.html#settlement","classes":"tsd-kind-reference tsd-parent-kind-module","parent":"\"index\""},{"id":79,"kind":1,"name":"\"src/deferral.test\"","url":"modules/_src_deferral_test_.html","classes":"tsd-kind-module"},{"id":80,"kind":1,"name":"\"src/fun-promise.test\"","url":"modules/_src_fun_promise_test_.html","classes":"tsd-kind-module"},{"id":81,"kind":1,"name":"\"src/types.test\"","url":"modules/_src_types_test_.html","classes":"tsd-kind-module"}],"index":{"version":"2.3.9","fields":["name","parent"],"fieldVectors":[["name/0",[0,19.117]],["parent/0",[]],["name/1",[1,35.37]],["parent/1",[0,2.157]],["name/2",[2,29.434]],["parent/2",[3,3.608]],["name/3",[4,40.529]],["parent/3",[3,3.608]],["name/4",[5,35.37]],["parent/4",[3,3.608]],["name/5",[6,35.37]],["parent/5",[0,2.157]],["name/6",[2,29.434]],["parent/6",[7,3.608]],["name/7",[8,40.529]],["parent/7",[7,3.608]],["name/8",[5,35.37]],["parent/8",[7,3.608]],["name/9",[9,35.37]],["parent/9",[0,2.157]],["name/10",[10,35.37]],["parent/10",[0,2.157]],["name/11",[11,35.37]],["parent/11",[0,2.157]],["name/12",[12,35.37]],["parent/12",[0,2.157]],["name/13",[13,35.37]],["parent/13",[0,2.157]],["name/14",[14,35.37]],["parent/14",[0,2.157]],["name/15",[15,35.37]],["parent/15",[0,2.157]],["name/16",[16,35.37]],["parent/16",[0,2.157]],["name/17",[17,35.37]],["parent/17",[0,2.157]],["name/18",[18,4.486,19,22.784]],["parent/18",[]],["name/19",[20,40.529]],["parent/19",[18,0.535,19,2.719]],["name/20",[21,40.529]],["parent/20",[18,0.535,22,0.595]],["name/21",[2,29.434]],["parent/21",[18,0.535,22,0.595]],["name/22",[23,31.972]],["parent/22",[18,0.535,22,0.595]],["name/23",[23,31.972]],["parent/23",[18,0.535,22,0.595]],["name/24",[24,35.37]],["parent/24",[18,0.535,22,0.595]],["name/25",[24,35.37]],["parent/25",[18,0.535,22,0.595]],["name/26",[25,31.972]],["parent/26",[18,0.535,22,0.595]],["name/27",[25,31.972]],["parent/27",[18,0.535,22,0.595]],["name/28",[26,40.529]],["parent/28",[18,0.535,22,0.595]],["name/29",[27,40.529]],["parent/29",[18,0.535,22,0.595]],["name/30",[28,35.37]],["parent/30",[18,0.535,22,0.595]],["name/31",[28,35.37]],["parent/31",[18,0.535,22,0.595]],["name/32",[29,40.529]],["parent/32",[18,0.535,22,0.595]],["name/33",[30,40.529]],["parent/33",[18,0.535,22,0.595]],["name/34",[31,40.529]],["parent/34",[18,0.535,22,0.595]],["name/35",[32,40.529]],["parent/35",[18,0.535,22,0.595]],["name/36",[33,35.37]],["parent/36",[18,0.535,22,0.595]],["name/37",[33,35.37]],["parent/37",[18,0.535,22,0.595]],["name/38",[34,40.529]],["parent/38",[18,0.535,22,0.595]],["name/39",[35,40.529]],["parent/39",[18,0.535,22,0.595]],["name/40",[36,40.529]],["parent/40",[18,0.535,22,0.595]],["name/41",[37,35.37]],["parent/41",[18,0.535,22,0.595]],["name/42",[37,35.37]],["parent/42",[18,0.535,22,0.595]],["name/43",[38,35.37]],["parent/43",[18,0.535,22,0.595]],["name/44",[38,35.37]],["parent/44",[18,0.535,22,0.595]],["name/45",[39,35.37]],["parent/45",[18,0.535,22,0.595]],["name/46",[39,35.37]],["parent/46",[18,0.535,22,0.595]],["name/47",[40,40.529]],["parent/47",[18,0.535,22,0.595]],["name/48",[41,40.529]],["parent/48",[18,0.535,22,0.595]],["name/49",[42,40.529]],["parent/49",[18,0.535,22,0.595]],["name/50",[43,35.37]],["parent/50",[18,0.535,22,0.595]],["name/51",[43,35.37]],["parent/51",[18,0.535,22,0.595]],["name/52",[44,35.37]],["parent/52",[18,0.535,22,0.595]],["name/53",[44,35.37]],["parent/53",[18,0.535,22,0.595]],["name/54",[45,40.529]],["parent/54",[18,0.535,22,0.595]],["name/55",[46,40.529]],["parent/55",[18,0.535,22,0.595]],["name/56",[47,40.529]],["parent/56",[18,0.535,22,0.595]],["name/57",[48,40.529]],["parent/57",[18,0.535,22,0.595]],["name/58",[49,40.529]],["parent/58",[18,0.535,22,0.595]],["name/59",[50,35.37]],["parent/59",[18,0.535,22,0.595]],["name/60",[50,35.37]],["parent/60",[18,0.535,22,0.595]],["name/61",[51,35.37]],["parent/61",[]],["name/62",[52,40.529]],["parent/62",[51,3.991]],["name/63",[19,31.972]],["parent/63",[53,3.321]],["name/64",[23,31.972]],["parent/64",[53,3.321]],["name/65",[25,31.972]],["parent/65",[53,3.321]],["name/66",[2,29.434]],["parent/66",[53,3.321]],["name/67",[54,19.117]],["parent/67",[]],["name/68",[9,35.37]],["parent/68",[54,2.157]],["name/69",[10,35.37]],["parent/69",[54,2.157]],["name/70",[11,35.37]],["parent/70",[54,2.157]],["name/71",[12,35.37]],["parent/71",[54,2.157]],["name/72",[13,35.37]],["parent/72",[54,2.157]],["name/73",[14,35.37]],["parent/73",[54,2.157]],["name/74",[15,35.37]],["parent/74",[54,2.157]],["name/75",[16,35.37]],["parent/75",[54,2.157]],["name/76",[1,35.37]],["parent/76",[54,2.157]],["name/77",[6,35.37]],["parent/77",[54,2.157]],["name/78",[17,35.37]],["parent/78",[54,2.157]],["name/79",[55,40.529]],["parent/79",[]],["name/80",[18,4.486,56,28.881]],["parent/80",[]],["name/81",[57,40.529]],["parent/81",[]]],"invertedIndex":[["all",{"_index":28,"name":{"30":{},"31":{}},"parent":{}}],["arrayify",{"_index":32,"name":{"35":{}},"parent":{}}],["cancel",{"_index":47,"name":{"56":{}},"parent":{}}],["catch",{"_index":27,"name":{"29":{}},"parent":{}}],["coalesce",{"_index":36,"name":{"40":{}},"parent":{}}],["constructor",{"_index":2,"name":{"2":{},"6":{},"21":{},"66":{}},"parent":{}}],["deferral",{"_index":52,"name":{"62":{}},"parent":{}}],["delay",{"_index":37,"name":{"41":{},"42":{}},"parent":{}}],["filter",{"_index":38,"name":{"43":{},"44":{}},"parent":{}}],["finally",{"_index":35,"name":{"39":{}},"parent":{}}],["flatfold",{"_index":44,"name":{"52":{},"53":{}},"parent":{}}],["flatmap",{"_index":39,"name":{"45":{},"46":{}},"parent":{}}],["fold",{"_index":43,"name":{"50":{},"51":{}},"parent":{}}],["fulfillment",{"_index":1,"name":{"1":{},"76":{}},"parent":{}}],["funpromise",{"_index":20,"name":{"19":{}},"parent":{}}],["index",{"_index":54,"name":{"67":{}},"parent":{"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{}}}],["iscancelled",{"_index":48,"name":{"57":{}},"parent":{}}],["item",{"_index":9,"name":{"9":{},"68":{}},"parent":{}}],["iterableofpromisables",{"_index":16,"name":{"16":{},"75":{}},"parent":{}}],["map",{"_index":33,"name":{"36":{},"37":{}},"parent":{}}],["promisable",{"_index":11,"name":{"11":{},"70":{}},"parent":{}}],["promisableiterable",{"_index":15,"name":{"15":{},"74":{}},"parent":{}}],["promise",{"_index":19,"name":{"18":{},"63":{}},"parent":{"19":{}}}],["promise\".funpromise",{"_index":22,"name":{},"parent":{"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{}}}],["promise.test",{"_index":56,"name":{"80":{}},"parent":{}}],["reason",{"_index":8,"name":{"7":{}},"parent":{}}],["reject",{"_index":25,"name":{"26":{},"27":{},"65":{}},"parent":{}}],["rejection",{"_index":6,"name":{"5":{},"77":{}},"parent":{}}],["resolve",{"_index":23,"name":{"22":{},"23":{},"64":{}},"parent":{}}],["return",{"_index":24,"name":{"24":{},"25":{}},"parent":{}}],["settle",{"_index":49,"name":{"58":{}},"parent":{}}],["settleall",{"_index":50,"name":{"59":{},"60":{}},"parent":{}}],["settlement",{"_index":17,"name":{"17":{},"78":{}},"parent":{}}],["simplifiedpromisable",{"_index":14,"name":{"14":{},"73":{}},"parent":{}}],["simplifiedpromise",{"_index":12,"name":{"12":{},"71":{}},"parent":{}}],["simplifiedpromiselike",{"_index":13,"name":{"13":{},"72":{}},"parent":{}}],["simplify",{"_index":30,"name":{"33":{}},"parent":{}}],["simplifyall",{"_index":31,"name":{"34":{}},"parent":{}}],["src/deferral",{"_index":51,"name":{"61":{}},"parent":{"62":{}}}],["src/deferral\".deferral",{"_index":53,"name":{},"parent":{"63":{},"64":{},"65":{},"66":{}}}],["src/deferral.test",{"_index":55,"name":{"79":{}},"parent":{}}],["src/fun",{"_index":18,"name":{"18":{},"80":{}},"parent":{"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{}}}],["src/types",{"_index":0,"name":{"0":{}},"parent":{"1":{},"5":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{}}}],["src/types\".fulfillment",{"_index":3,"name":{},"parent":{"2":{},"3":{},"4":{}}}],["src/types\".rejection",{"_index":7,"name":{},"parent":{"6":{},"7":{},"8":{}}}],["src/types.test",{"_index":57,"name":{"81":{}},"parent":{}}],["status",{"_index":5,"name":{"4":{},"8":{}},"parent":{}}],["symbol.tostringtag",{"_index":34,"name":{"38":{}},"parent":{}}],["tap",{"_index":40,"name":{"47":{}},"parent":{}}],["tapcatch",{"_index":41,"name":{"48":{}},"parent":{}}],["tapeach",{"_index":42,"name":{"49":{}},"parent":{}}],["then",{"_index":26,"name":{"28":{}},"parent":{}}],["try",{"_index":29,"name":{"32":{}},"parent":{}}],["unpromise",{"_index":10,"name":{"10":{},"69":{}},"parent":{}}],["value",{"_index":4,"name":{"3":{}},"parent":{}}],["wraperror",{"_index":45,"name":{"54":{}},"parent":{}}],["wraperrors",{"_index":46,"name":{"55":{}},"parent":{}}],["wrapped",{"_index":21,"name":{"20":{}},"parent":{}}]],"pipeline":[]}} \ No newline at end of file diff --git a/docs/classes/_src_deferral_.deferral.html b/docs/classes/_src_deferral_.deferral.html index a2e05ba..9abcf81 100644 --- a/docs/classes/_src_deferral_.deferral.html +++ b/docs/classes/_src_deferral_.deferral.html @@ -131,7 +131,7 @@

constructor

  • @@ -153,7 +153,7 @@

    Readonly promise

    promise: FunPromise<T>
    @@ -175,7 +175,7 @@

    reject

  • @@ -203,7 +203,7 @@

    resolve

  • diff --git a/docs/classes/_src_fun_promise_.funpromise.html b/docs/classes/_src_fun_promise_.funpromise.html index fc3be3e..c0b180a 100644 --- a/docs/classes/_src_fun_promise_.funpromise.html +++ b/docs/classes/_src_fun_promise_.funpromise.html @@ -126,6 +126,7 @@

    Methods

  • delay
  • filter
  • finally
  • +
  • flatFold
  • flatMap
  • fold
  • isCancelled
  • @@ -147,6 +148,7 @@

    Methods

  • coalesce
  • delay
  • filter
  • +
  • flatFold
  • flatMap
  • fold
  • map
  • @@ -166,13 +168,13 @@

    Constructors

    constructor

    • @@ -183,7 +185,7 @@

      constructor

      Parameters

      Returns FunPromise

      @@ -199,7 +201,7 @@

      Protected wrapped: Promise<T>

      @@ -221,7 +223,7 @@

      [Symbol.toStringTag]

    • @@ -247,7 +249,7 @@

      all

    • Returns FunPromise<Item<T>[]>

      @@ -264,7 +266,7 @@

      arrayify

    • @@ -298,7 +300,7 @@

      cancel

    • @@ -320,7 +322,7 @@

      catch

    • @@ -377,7 +379,7 @@

      delay

    • @@ -415,7 +417,7 @@

      filter

    • @@ -469,7 +471,7 @@

      finally

    • @@ -482,7 +484,7 @@

      Returns

      Parameters

      @@ -507,6 +509,67 @@

      Returns + +

      flatFold

      + +
        +
      • + +
        +
        +

        Given an initial array of values and an accumulator function, apply the accumlator function to each element of the promise's resolved value, + passing in the current array of values and the resolved item. Returns an array with the concatenated results of the accumulation. + If any of the promise's values are rejected, the entire operation will be rejected.

        +
        +

        The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve.

        +
        +

        Type parameters

        +
          +
        • +

          T2 = Item<T>

          +
        • +
        +

        Parameters

        + +

        Returns FunPromise<T2[]>

        +
      • +
      +

      flatMap

      @@ -517,7 +580,7 @@

      flatMap

    • @@ -573,7 +636,7 @@

      fold

    • @@ -634,7 +697,7 @@

      isCancelled

    • @@ -656,7 +719,7 @@

      map

    • @@ -714,7 +777,7 @@

      reject

    • @@ -744,7 +807,7 @@

      resolve

    • @@ -779,7 +842,7 @@

      return

    • @@ -818,7 +881,7 @@

      settle

    • @@ -840,7 +903,7 @@

      settleAll

    • @@ -863,7 +926,7 @@

      simplify

    • @@ -890,7 +953,7 @@

      simplifyAll

    • @@ -912,7 +975,7 @@

      tap

    • @@ -959,7 +1022,7 @@

      tapCatch

    • @@ -1006,7 +1069,7 @@

      tapEach

    • @@ -1054,7 +1117,7 @@

      then

    • @@ -1101,7 +1164,7 @@

      Returns

      Type parameters

      @@ -1172,7 +1235,7 @@

      wrapError

    • @@ -1200,7 +1263,7 @@

      wrapErrors

    • @@ -1239,7 +1302,7 @@

      Static all

    • @@ -1269,7 +1332,7 @@

      Returns

      Type parameters

      @@ -1316,7 +1379,7 @@

      Returns

      Type parameters

      @@ -1360,7 +1423,7 @@

      Returns

      Type parameters

      @@ -1401,7 +1464,7 @@

      Returns

      Type parameters

      @@ -1439,7 +1502,7 @@

      Returns

      Type parameters

      @@ -1474,7 +1537,7 @@

      Returns

      Type parameters

      @@ -1506,7 +1569,7 @@

      Returns

      Type parameters

      @@ -1535,7 +1598,7 @@

      Returns

      Type parameters

      @@ -1561,7 +1624,7 @@

      Returns

      Type parameters

      @@ -1584,7 +1647,7 @@

      Returns

      Type parameters

      @@ -1613,7 +1676,7 @@

      Static coalesce

    • @@ -1674,7 +1737,7 @@

      Static delay

    • @@ -1694,7 +1757,7 @@

      Returns

      Type parameters

      @@ -1726,7 +1789,7 @@

      Static filter

    • @@ -1771,6 +1834,70 @@

      Returns + +

      Static flatFold

      + + +
    • Static flatMap

      @@ -1781,7 +1908,7 @@

      Static flatMap

    • @@ -1839,7 +1966,7 @@

      Static fold

    • @@ -1903,7 +2030,7 @@

      Static map

    • @@ -1961,7 +2088,7 @@

      Static reject

    • @@ -1991,7 +2118,7 @@

      Static resolve

    • @@ -2026,7 +2153,7 @@

      Static return

    • @@ -2065,7 +2192,7 @@

      Static settleAll

    • @@ -2107,7 +2234,7 @@

      Static try

    • @@ -2191,7 +2318,7 @@

      Returns

      Type parameters

      @@ -2253,7 +2380,7 @@

      Returns

      Type parameters

      @@ -2309,7 +2436,7 @@

      Returns

      Type parameters

      @@ -2359,7 +2486,7 @@

      Returns

      Type parameters

      @@ -2403,7 +2530,7 @@

      Returns

      Type parameters

      @@ -2441,7 +2568,7 @@

      Returns

      Type parameters

      @@ -2473,7 +2600,7 @@

      Returns

      Type parameters

      @@ -2499,7 +2626,7 @@

      Returns

      Type parameters

      @@ -2577,6 +2704,9 @@

      Returns finally

    • +
    • + flatFold +
    • flatMap
    • @@ -2640,6 +2770,9 @@

      Returns filter

    • +
    • + flatFold +
    • flatMap
    • diff --git a/docs/classes/_src_types_.fulfillment.html b/docs/classes/_src_types_.fulfillment.html index 032d8b9..eaf8d08 100644 --- a/docs/classes/_src_types_.fulfillment.html +++ b/docs/classes/_src_types_.fulfillment.html @@ -131,7 +131,7 @@

      constructor

    • Parameters

      @@ -153,7 +153,7 @@

      Readonly value

      value: T
      @@ -170,7 +170,7 @@

      status

    • Returns "fulfilled"

      diff --git a/docs/classes/_src_types_.rejection.html b/docs/classes/_src_types_.rejection.html index c6e1ac1..6c1fd15 100644 --- a/docs/classes/_src_types_.rejection.html +++ b/docs/classes/_src_types_.rejection.html @@ -123,7 +123,7 @@

      constructor

    • Parameters

      @@ -145,7 +145,7 @@

      Readonly reason

      reason: unknown
      @@ -162,7 +162,7 @@

      status

    • Returns "rejected"

      diff --git a/docs/coverage.txt b/docs/coverage.txt index 608cbe6..b13e1e2 100644 --- a/docs/coverage.txt +++ b/docs/coverage.txt @@ -15,6 +15,7 @@ chrome 49 edge 87 edge 86 edge 18 +firefox 84 firefox 83 firefox 82 firefox 81 @@ -38,6 +39,6 @@ safari 12.1 samsung 13.0 samsung 12.0 samsung 11.1-11.2 -These browsers account for 92.34% of all users globally -These browsers account for 92.77% of all users in the US +These browsers account for 92.35% of all users globally +These browsers account for 92.78% of all users in the US Note that functionally equivalent but unlisted browsers do not count in these stats, so real coverage is much higher than the percentages reported. diff --git a/docs/index.html b/docs/index.html index a208e7e..bec2e2f 100644 --- a/docs/index.html +++ b/docs/index.html @@ -79,10 +79,10 @@

      npm

      CDN for Browsers

      -

      The following URL contains a script which will set the FunPromise global to be - an object containing the various exports of +

      The following URL contains a script which will set the FunPromises global to + be an object containing the various exports of index.ts.

      -
      https://unpkg.com/browse/fun-promises@latest/dist/browser/index.js
      +
      https://unpkg.com/fun-promises@latest/dist/browser/index.js

      Usage

      @@ -139,6 +139,12 @@

      Deferral class

      This is an inside-out promise: it gives you access to the resolve and reject methods of the promise so that you can perform operations on them later, as well as having accessor to query the state of promise.

      + +

      fold/map/filter

      +
      +

      Optimized promise-based implementations for all your collection-processing + needs. Note that map and fold also come in "flat" varieties for + concatenating iterables: flatMap and flatFold.

      try

      diff --git a/docs/modules/_src_types_.html b/docs/modules/_src_types_.html index c9e3ff1..0c4bfc0 100644 --- a/docs/modules/_src_types_.html +++ b/docs/modules/_src_types_.html @@ -108,7 +108,7 @@

      Item

      Item<T>: Unpromise<T> extends Array<infer U> ? U : Unpromise<T> extends Iterable<infer U> ? U : never
      @@ -130,7 +130,7 @@

      IterableOfPromisables

      IterableOfPromisables<T>: Iterable<Promisable<T>>
      @@ -152,7 +152,7 @@

      Promisable

      Promisable<T>: T | PromiseLike<T>
      @@ -173,7 +173,7 @@

      PromisableIterable

      PromisableIterable<T>: Promisable<IterableOfPromisables<T>>
      @@ -195,7 +195,7 @@

      Settlement

      Settlement<T>: PromiseSettledResult<T> & Fulfillment<T> | Rejection
      @@ -216,7 +216,7 @@

      SimplifiedPromisable

      SimplifiedPromisable<T>: Promisable<Unpromise<T>>
      @@ -237,7 +237,7 @@

      SimplifiedPromise

      SimplifiedPromise<T>: Promise<Unpromise<T>>
      @@ -258,7 +258,7 @@

      SimplifiedPromiseLike

      SimplifiedPromiseLike<T>: PromiseLike<Unpromise<T>>
      @@ -279,7 +279,7 @@

      Unpromise

      Unpromise<T>: T extends PromiseLike<infer U> ? Unpromise<U> : T extends Promisable<infer U> ? U extends T ? T : Unpromise<U> : T
      diff --git a/docs/test-results.txt b/docs/test-results.txt index c185d85..b4ef052 100644 --- a/docs/test-results.txt +++ b/docs/test-results.txt @@ -1,40 +1,40 @@ $ jest --detectOpenHandles --forceExit ./*.test.js ./src/*.test.js --verbose PASS src/fun-promise.test.js FunPromise - ✓ can be constructed and resolved (3 ms) + ✓ can be constructed and resolved (4 ms) resolve/return resolve static - ✓ rejects when provided a rejection (19 ms) + ✓ rejects when provided a rejection (21 ms) ✓ does not resolve the elements of an array (1 ms) resolves correctly ✓ with a value (1 ms) - ✓ returns the FunPromise if passed a FunPromise (1 ms) + ✓ returns the FunPromise if passed a FunPromise (2 ms) ✓ without a value (1 ms) instance - ✓ rejects when provided a rejection (9 ms) - ✓ does not resolve the elements of an array (2 ms) + ✓ rejects when provided a rejection (1 ms) + ✓ does not resolve the elements of an array (1 ms) resolves correctly ✓ with a value (1 ms) ✓ returns the FunPromise if passed a FunPromise (1 ms) - ✓ without a value + ✓ without a value (1 ms) return static ✓ rejects when provided a rejection (1 ms) - ✓ does not resolve the elements of an array + ✓ does not resolve the elements of an array (1 ms) resolves correctly - ✓ with a value - ✓ returns the FunPromise if passed a FunPromise (1 ms) - ✓ without a value (1 ms) + ✓ with a value (1 ms) + ✓ returns the FunPromise if passed a FunPromise (9 ms) + ✓ without a value instance - ✓ rejects when provided a rejection (1 ms) - ✓ does not resolve the elements of an array + ✓ rejects when provided a rejection (2 ms) + ✓ does not resolve the elements of an array (1 ms) resolves correctly - ✓ with a value (1 ms) + ✓ with a value ✓ returns the FunPromise if passed a FunPromise (1 ms) - ✓ without a value + ✓ without a value (1 ms) then - ✓ works without onrejected + ✓ works without onrejected (1 ms) catch ✓ handles rejections (2 ms) ✓ returns the error when not passed an argument (1 ms) @@ -42,39 +42,39 @@ PASS src/fun-promise.test.js ✓ basically works (1 ms) ✓ returns a clone (1 ms) ✓ does not resolve values when called without an argument (1 ms) - ✓ resolves values when called with the sole argument `true` (1 ms) - ✓ rejects values when called with the sole argument `true` and a rejection in the mix (2 ms) - ✓ rejects values in order when called with the arguments `(true, true)` (1 ms) - ✓ resolves values in order when called with the arguments `(true, true)` (3 ms) + ✓ resolves values when called with the sole argument `true` (2 ms) + ✓ rejects values when called with the sole argument `true` and a rejection in the mix (1 ms) + ✓ rejects values in order when called with the arguments `(true, true)` (2 ms) + ✓ resolves values in order when called with the arguments `(true, true)` (4 ms) all static basically works ✓ for 0 arguments (1 ms) - ✓ for 1 arguments + ✓ for 1 arguments (1 ms) ✓ for 2 arguments (1 ms) ✓ for 3 arguments (1 ms) ✓ for 4 arguments (1 ms) - ✓ for 5 arguments (1 ms) - ✓ for 6 arguments - ✓ for 7 arguments - ✓ for 8 arguments (7 ms) + ✓ for 5 arguments (6 ms) + ✓ for 6 arguments (1 ms) + ✓ for 7 arguments (1 ms) + ✓ for 8 arguments (1 ms) ✓ for 9 arguments (1 ms) instance basically works - ✓ for 0 arguments + ✓ for 0 arguments (1 ms) ✓ for 1 arguments (1 ms) ✓ for 2 arguments (1 ms) ✓ for 3 arguments (1 ms) - ✓ for 4 arguments + ✓ for 4 arguments (1 ms) ✓ for 5 arguments (1 ms) ✓ for 6 arguments (1 ms) ✓ for 7 arguments (1 ms) ✓ for 8 arguments (1 ms) - ✓ for 9 arguments + ✓ for 9 arguments (1 ms) try ✓ basically works (1 ms) ✓ works with one argument (1 ms) - ✓ explodes properly (1 ms) + ✓ explodes properly (2 ms) map static ✓ basically works (2 ms) @@ -83,9 +83,9 @@ PASS src/fun-promise.test.js ✓ basically works (1 ms) ✓ works with some test values (1 ms) Symbol.toStringTag - ✓ is the same as the promise passed in + ✓ is the same as the promise passed in (1 ms) finally - ✓ returns the same promise when given no arguments + ✓ returns the same promise when given no arguments (1 ms) ✓ executes on resolution (1 ms) ✓ executes on rejection (2 ms) reject @@ -93,20 +93,20 @@ PASS src/fun-promise.test.js ✓ rejects correctly (1 ms) ✓ doesn't change the object that is rejected (1 ms) instance - ✓ rejects correctly - ✓ doesn't change the object that is rejected + ✓ rejects correctly (1 ms) + ✓ doesn't change the object that is rejected (2 ms) coalesce ✓ basically works (2 ms) - ✓ returns the first resolving value (1003 ms) - ✓ returns the value that passes the test (2 ms) + ✓ returns the first resolving value (1004 ms) + ✓ returns the value that passes the test (1 ms) ✓ throws the error if nothing passes the test (2 ms) - ✓ punts appropriately after the first resolution (1 ms) + ✓ punts appropriately after the first resolution (3 ms) delay static When requesting a delay of -1000 milliseconds basically works - ✓ with no arg (1 ms) - ✓ with one arg (11 ms) + ✓ with no arg (4 ms) + ✓ with one arg (9 ms) When requesting a delay of -1 milliseconds basically works ✓ with no arg (1 ms) @@ -114,43 +114,43 @@ PASS src/fun-promise.test.js When requesting a delay of 0 milliseconds basically works ✓ with no arg (1 ms) - ✓ with one arg (2 ms) + ✓ with one arg (3 ms) When requesting a delay of 1 milliseconds basically works ✓ with no arg (1 ms) ✓ with one arg (2 ms) When requesting a delay of 1000 milliseconds basically works - ✓ with no arg + ✓ with no arg (1 ms) ✓ with one arg (1001 ms) instance When requesting a delay of -1000 milliseconds basically works ✓ with no arg (1 ms) - ✓ with one arg (2 ms) + ✓ with one arg (1 ms) When requesting a delay of -1 milliseconds basically works ✓ with no arg (1 ms) - ✓ with one arg (2 ms) + ✓ with one arg (1 ms) When requesting a delay of 0 milliseconds basically works ✓ with no arg (1 ms) - ✓ with one arg (2 ms) + ✓ with one arg (1 ms) When requesting a delay of 1 milliseconds basically works ✓ with no arg (1 ms) - ✓ with one arg (1 ms) + ✓ with one arg (2 ms) When requesting a delay of 1000 milliseconds basically works - ✓ with no arg - ✓ with one arg (1000 ms) + ✓ with no arg (1 ms) + ✓ with one arg (1002 ms) simplify ✓ basically works (1 ms) filter static - ✓ basically works (3 ms) + ✓ basically works (4 ms) instance - ✓ basically works (2 ms) + ✓ basically works (1 ms) flatMap static ✓ basically works (1 ms) @@ -165,23 +165,23 @@ PASS src/fun-promise.test.js instance ✓ basically works (1 ms) tapCatch - ✓ basically works (1 ms) - ✓ nests explosions (3 ms) + ✓ basically works (2 ms) + ✓ nests explosions (4 ms) tapEach - ✓ basically works (1 ms) - wrapError ✓ basically works (6 ms) + wrapError + ✓ basically works (2 ms) wrapErrors - ✓ basically works (3 ms) - ✓ doesn't do anything if there is no error + ✓ basically works (2 ms) + ✓ doesn't do anything if there is no error (1 ms) cancellation - ✓ initially reports not cancelled + ✓ initially reports not cancelled (1 ms) ✓ reports cancelled after cancel is called (1 ms) - ✓ prevents resolution after cancellation + ✓ prevents resolution after cancellation (1 ms) ✓ prevents rejection after cancellation ✓ prevents rejection when resolving throws after cancellation (1 ms) simplifyAll - ✓ basically works (1 ms) + ✓ basically works (2 ms) ✓ doesn't explode on an empty list (1 ms) settle ✓ basically works for rejections (1 ms) @@ -191,27 +191,25 @@ PASS src/fun-promise.test.js ✓ basically works (1 ms) ✓ doesn't explode on empty lists (1 ms) instance + ✓ basically works (2 ms) + ✓ doesn't explode on empty lists + flatFold + static ✓ basically works (1 ms) - ✓ doesn't explode on empty lists (1 ms) + instance + ✓ basically works (2 ms) PASS src/deferral.test.js Deferral ✓ can be constructed (1 ms) promise - ✓ is a FunPromise (1 ms) + ✓ is a FunPromise (7 ms) resolve ✓ basically works (2 ms) - ✓ does not change resolved value if called multiple times (1 ms) + ✓ does not change resolved value if called multiple times (2 ms) reject - ✓ basically works (8 ms) - ✓ does not change reason if called multiple times (2 ms) - -PASS ./assumptions.test.js - lodash - castArray - ✓ DOES NOT turn iterables into arrays (1 ms) - toArray - ✓ does turn iterables into arrays (2 ms) + ✓ basically works (1 ms) + ✓ does not change reason if called multiple times (3 ms) PASS src/types.test.js Fulfillment @@ -220,14 +218,21 @@ PASS src/types.test.js ✓ has a 'status' property of 'fulfilled' (1 ms) when passed the object argument '{"foo":true}' ✓ exposes the argument on the 'value' property (1 ms) - ✓ has a 'status' property of 'fulfilled' + ✓ has a 'status' property of 'fulfilled' (1 ms) Rejection when passed the string argument: 'BOOM!' ✓ returns the argument in the 'reason' property (1 ms) ✓ has a 'status' property whose value is 'rejected' (1 ms) when passed the object argument: 'Error: BOOM!' ✓ returns the argument in the 'reason' property (1 ms) - ✓ has a 'status' property whose value is 'rejected' + ✓ has a 'status' property whose value is 'rejected' (1 ms) + +PASS ./assumptions.test.js + lodash + castArray + ✓ DOES NOT turn iterables into arrays (2 ms) + toArray + ✓ does turn iterables into arrays (2 ms) ----------------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s @@ -239,13 +244,13 @@ All files | 100 | 100 | 100 | 100 | ----------------|---------|----------|---------|---------|------------------- =============================== Coverage summary =============================== -Statements : 100% ( 181/181 ) +Statements : 100% ( 194/194 ) Branches : 100% ( 34/34 ) -Functions : 100% ( 102/102 ) -Lines : 100% ( 155/155 ) +Functions : 100% ( 111/111 ) +Lines : 100% ( 166/166 ) ================================================================================ Test Suites: 4 passed, 4 total -Tests: 135 passed, 135 total +Tests: 137 passed, 137 total Snapshots: 0 total -Time: 4.458 s, estimated 9 s +Time: 4.675 s, estimated 9 s Ran all test suites matching /.\/assumptions.test.js|.\/src\/deferral.test.js|.\/src\/fun-promise.test.js|.\/src\/types.test.js/i. diff --git a/package.json b/package.json index c0d50e6..f789009 100644 --- a/package.json +++ b/package.json @@ -43,14 +43,14 @@ "lodash": "^4.17.20", "ts-nested-error": "^1.2.1", "tslib": "^2.0.3", - "typescript": "^4.1.2" + "typescript": "^4.1.3" }, "devDependencies": { "@babel/cli": "^7.12.10", "@babel/core": "^7.12.10", "@babel/plugin-proposal-class-properties": "^7.12.1", "@babel/plugin-transform-runtime": "^7.12.10", - "@babel/preset-env": "^7.12.10", + "@babel/preset-env": "^7.12.11", "@semantic-release/changelog": "^5.0.1", "@semantic-release/commit-analyzer": "^8.0.1", "@semantic-release/git": "^9.0.0", @@ -70,7 +70,7 @@ "babel-plugin-remove-debug": "^0.0.4", "conventional-changelog-conventionalcommits": "^4.5.0", "cz-conventional-changelog": "^3.3.0", - "husky": "^4.3.5", + "husky": "^4.3.6", "jest": "^26.6.3", "jest-extended": "^0.11.5", "lint-staged": "^10.5.3", @@ -83,10 +83,10 @@ "typedoc-plugin-nojekyll": "^1.0.1" }, "scripts": { - "build": "echo 'Executing build' && yarn build:dists && yarn build:docs", + "build": "echo 'Executing build' && yarn build:bundles && yarn build:docs && ls -R dist docs", "build:amd": "tsc -p ./tsconfig/amd.json", "build:browser": "( test -d ./dist/esnext || yarn build:esnext ) && parcel build ./dist/esnext/index.js --target browser --out-dir ./dist/browser/ --global FunPromise --detailed-report 15", - "build:bundle": "./script/bootstrap && yarn build:dists && ./script/bundle-dists", + "build:bundles": "./script/bootstrap && yarn build:dists && ./script/bundle-dists", "build:cjs": "tsc -p ./tsconfig/cjs.json", "build:dists": "rm -rf dist && yarn build:esnext && yarn build:es6 && yarn build:node && yarn build:react-native && yarn build:browser", "build:docs": "rm -rf ./docs && mkdir ./docs && yarn build:docs:typedocs && yarn build:docs:changelog && yarn build:docs:test && yarn build:docs:coverage && mkdir -p ./dist && tar cJvf ./dist/docs.tar.xz ./docs", @@ -106,7 +106,7 @@ "bump-deps": "yarn upgrade -LCA && yarn install && yarn test", "clean": "./script/clean", "polish": "prettier --write .", - "prepack": "echo 'Executing prepack' && yarn build:dists", + "prepack": "echo 'Executing prepack' && yarn build:bundles", "serve:docs": "yarn build:docs && npx http-server ./docs", "test": "jest --detectOpenHandles --forceExit ./*.test.js ./src/*.test.js", "watch:compile": "tsc --watch -p tsconfig.json", diff --git a/release.config.js b/release.config.js index d3c91f5..4346c51 100644 --- a/release.config.js +++ b/release.config.js @@ -5,7 +5,6 @@ const path = require("path"); const { name } = require("./package.json"); const distributions = { - NPM: `dist/${name}-v*.tgz`, "Browser - Single File": "./dist/browser.index.js.xz", "Browser - with Source Maps": "./dist/browser.tar.xz", "ES6 AMD - Single File": "./dist/amd.index.js.xz", @@ -16,7 +15,7 @@ const distributions = { "Node 10": "./dist/v10.tar.xz", "Node 12": "./dist/v12.tar.xz", "Node 14": "./dist/v14.tar.xz", - "React Native": "./dist/react-native-tar.xz", + "React Native": "./dist/react-native.tar.xz", }; const assets = _.concat( diff --git a/script/push b/script/push new file mode 100755 index 0000000..2a1f9ca --- /dev/null +++ b/script/push @@ -0,0 +1,10 @@ +#!/bin/bash + +set -o pipefail +set -exu + +cd "$(dirname "$0")/.." + +./script/clean +git pull +git push diff --git a/src/fun-promise.test.js b/src/fun-promise.test.js index 936440c..37f6551 100644 --- a/src/fun-promise.test.js +++ b/src/fun-promise.test.js @@ -737,4 +737,30 @@ describe("FunPromise", () => { }); }); }); + + describe("flatFold", () => { + _.forEach([true, false], (staticVersion) => { + describe(staticVersion ? "static" : "instance", () => { + function doFlatFold(values, initialValues, accumulator) { + if (staticVersion) { + return FunPromise.flatFold(values, initialValues, accumulator); + } else { + return FunPromise.resolve(values).flatFold( + initialValues, + accumulator + ); + } + } + + it("basically works", async () => { + const values = [4, 5, 6]; + const initialValues = [1, 2, 3]; + const accumulator = (xs, x) => [x, x]; + await expect( + doFlatFold(values, initialValues, accumulator) + ).resolves.toEqual([1, 2, 3, 4, 4, 5, 5, 6, 6]); + }); + }); + }); + }); }); diff --git a/src/fun-promise.ts b/src/fun-promise.ts index b5a3053..7e3a69b 100644 --- a/src/fun-promise.ts +++ b/src/fun-promise.ts @@ -57,7 +57,7 @@ export default class FunPromise implements Promise { /** * Constructor, which takes the promise to wrap. */ - constructor(wrapped: Promise) { + constructor(wrapped: Promisable) { this.wrapped = new Promise(async (resolve, reject) => { let resolved = null; try { @@ -419,9 +419,9 @@ export default class FunPromise implements Promise { resolveValues: boolean = false, sequentialResolution: boolean = false ): FunPromise[]> { - const aryPromise: FunPromise[]> = this.then((iter) => [ - ...((iter as unknown) as Iterable>), - ]); + const aryPromise = (this.then( + async (iterPromise) => _toArray(await iterPromise) // Just to be sure we're all de-promise'd + ) as unknown) as FunPromise[]>; if (resolveValues) { if (sequentialResolution) { return aryPromise.then(async (ary) => { @@ -698,6 +698,44 @@ export default class FunPromise implements Promise { return FunPromise.resolve(values).fold(initialValue, accumulator); } + /** + * Given an initial array of values and an accumulator function, apply the accumlator function to each element of the promise's resolved value, + * passing in the current array of values and the resolved item. Returns an array with the concatenated results of the accumulation. + * If any of the promise's values are rejected, the entire operation will be rejected. + * + * The resolution order is not guaranteed. The accumulator function will be passed values as those values resolve. + */ + flatFold>( + initialValue: PromisableIterable, + accumulator: (memo: T2[], it: Item) => PromisableIterable + ): FunPromise { + return this.arrayify().then(async (ary: Promisable>[]) => { + let memoPromise: FunPromise = FunPromise.resolve( + initialValue + ).arrayify() as FunPromise; + await Promise.all( + _map(ary, async (promisableValue) => { + const value = await promisableValue; + memoPromise = memoPromise.then(async (memo) => + memo.concat(_toArray(await accumulator(memo, value))) + ); + }) + ); + return memoPromise; + }); + } + + /** + * Equivalent to `FunPromise.resolve(values).flatFold(initialValue, accumulator)`. + */ + static flatFold( + values: PromisableIterable, + initialValue: PromisableIterable, + accumulator: (memo: T2[], it: T) => PromisableIterable + ): FunPromise { + return FunPromise.resolve(values).flatFold(initialValue, accumulator); + } + /** * Handles rejections like 'catch', but wraps them in a [[`NestedError`]] with the given message. */ diff --git a/yarn.lock b/yarn.lock index 09c6f8f..092f73d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20,9 +20,9 @@ chokidar "^3.4.0" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== dependencies: "@babel/highlight" "^7.10.4" @@ -53,11 +53,11 @@ source-map "^0.5.0" "@babel/generator@^7.12.10", "@babel/generator@^7.4.4": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.10.tgz#2b188fc329fb8e4f762181703beffc0fe6df3460" - integrity sha512-6mCdfhWgmqLdtTkhXjnIz0LcdVCd26wS2JXRtj2XY0u5klDsXBREA/pG5NVOuVnF2LUrBGNFtQkIqqTbblg0ww== + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af" + integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA== dependencies: - "@babel/types" "^7.12.10" + "@babel/types" "^7.12.11" jsesc "^2.5.1" source-map "^0.5.0" @@ -76,14 +76,14 @@ "@babel/helper-explode-assignable-expression" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helper-builder-react-jsx-experimental@^7.12.10": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.10.tgz#a58cb96a793dc0fcd5c9ed3bb36d62fdc60534c2" - integrity sha512-3Kcr2LGpL7CTRDTTYm1bzeor9qZbxbvU2AxsLA6mUG9gYarSfIKMK0UlU+azLWI+s0+BH768bwyaziWB2NOJlQ== +"@babel/helper-builder-react-jsx-experimental@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.11.tgz#a39616d7e4cf8f9da1f82b5fc3ee1f7406beeb11" + integrity sha512-4oGVOekPI8dh9JphkPXC68iIuP6qp/RPbaPmorRmEFbRAHZjSqxPjqHudn18GVDPgCuFM/KdFXc63C17Ygfa9w== dependencies: "@babel/helper-annotate-as-pure" "^7.12.10" "@babel/helper-module-imports" "^7.12.5" - "@babel/types" "^7.12.10" + "@babel/types" "^7.12.11" "@babel/helper-builder-react-jsx@^7.10.4": version "7.10.4" @@ -139,15 +139,15 @@ "@babel/types" "^7.12.1" "@babel/helper-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" - integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42" + integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA== dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/helper-get-function-arity" "^7.12.10" + "@babel/template" "^7.12.7" + "@babel/types" "^7.12.11" -"@babel/helper-get-function-arity@^7.10.4": +"@babel/helper-get-function-arity@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf" integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag== @@ -161,7 +161,7 @@ dependencies: "@babel/types" "^7.10.4" -"@babel/helper-member-expression-to-functions@^7.12.1": +"@babel/helper-member-expression-to-functions@^7.12.1", "@babel/helper-member-expression-to-functions@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855" integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw== @@ -190,7 +190,7 @@ "@babel/types" "^7.12.1" lodash "^4.17.19" -"@babel/helper-optimise-call-expression@^7.10.4": +"@babel/helper-optimise-call-expression@^7.10.4", "@babel/helper-optimise-call-expression@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d" integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ== @@ -212,14 +212,14 @@ "@babel/types" "^7.12.1" "@babel/helper-replace-supers@^7.12.1": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz#f009a17543bbbbce16b06206ae73b63d3fca68d9" - integrity sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA== + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz#ea511658fc66c7908f923106dd88e08d1997d60d" + integrity sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA== dependencies: - "@babel/helper-member-expression-to-functions" "^7.12.1" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/traverse" "^7.12.5" - "@babel/types" "^7.12.5" + "@babel/helper-member-expression-to-functions" "^7.12.7" + "@babel/helper-optimise-call-expression" "^7.12.10" + "@babel/traverse" "^7.12.10" + "@babel/types" "^7.12.11" "@babel/helper-simple-access@^7.12.1": version "7.12.1" @@ -236,21 +236,21 @@ "@babel/types" "^7.12.1" "@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" - integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a" + integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g== dependencies: - "@babel/types" "^7.11.0" + "@babel/types" "^7.12.11" -"@babel/helper-validator-identifier@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" - integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== +"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" + integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== -"@babel/helper-validator-option@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9" - integrity sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A== +"@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz#d66cb8b7a3e7fe4c6962b32020a131ecf0847f4f" + integrity sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw== "@babel/helper-wrap-function@^7.10.4": version "7.12.3" @@ -281,9 +281,9 @@ js-tokens "^4.0.0" "@babel/parser@^7.1.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.7", "@babel/parser@^7.4.4": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.10.tgz#824600d59e96aea26a5a2af5a9d812af05c3ae81" - integrity sha512-PJdRPwyoOqFAWfLytxrWwGrAxghCgh/yTNCYciOz8QgjflA7aZhECPZAa2VUedKg2+QMWkI0L9lynh2SNmNEgA== + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79" + integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== "@babel/plugin-proposal-async-generator-functions@^7.12.1": version "7.12.1" @@ -527,10 +527,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-block-scoping@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz#f0ee727874b42a208a48a586b84c3d222c2bbef1" - integrity sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w== +"@babel/plugin-transform-block-scoping@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.11.tgz#83ae92a104dbb93a7d6c6dd1844f351083c46b4f" + integrity sha512-atR1Rxc3hM+VPg/NvNvfYw0npQEAcHuJ+MGZnFn6h3bo+1U3BWXMdFMlvVRApBTWKQMX7SOwRJZA5FBF/JQbvA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" @@ -697,12 +697,12 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-react-jsx@^7.0.0": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.10.tgz#a7af3097c73479123594c8c8fe39545abebd44e3" - integrity sha512-MM7/BC8QdHXM7Qc1wdnuk73R4gbuOpfrSUgfV/nODGc86sPY1tgmY2M9E9uAnf2e4DOIp8aKGWqgZfQxnTNGuw== + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.11.tgz#09a7319195946b0ddc09f9a5f01346f2cb80dfdd" + integrity sha512-5nWOw6mTylaFU72BdZfa0dP1HsGdY3IMExpxn8LBE8dNmkQjB+W+sR+JwIdtbzkPvVuFviT3zyNbSUkuVTVxbw== dependencies: "@babel/helper-builder-react-jsx" "^7.10.4" - "@babel/helper-builder-react-jsx-experimental" "^7.12.10" + "@babel/helper-builder-react-jsx-experimental" "^7.12.11" "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-jsx" "^7.12.1" @@ -780,16 +780,16 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/preset-env@^7.12.10", "@babel/preset-env@^7.4.4": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.10.tgz#ca981b95f641f2610531bd71948656306905e6ab" - integrity sha512-Gz9hnBT/tGeTE2DBNDkD7BiWRELZt+8lSysHuDwmYXUIvtwZl0zI+D6mZgXZX0u8YBlLS4tmai9ONNY9tjRgRA== +"@babel/preset-env@^7.12.11", "@babel/preset-env@^7.4.4": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.11.tgz#55d5f7981487365c93dbbc84507b1c7215e857f9" + integrity sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw== dependencies: "@babel/compat-data" "^7.12.7" "@babel/helper-compilation-targets" "^7.12.5" "@babel/helper-module-imports" "^7.12.5" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-validator-option" "^7.12.1" + "@babel/helper-validator-option" "^7.12.11" "@babel/plugin-proposal-async-generator-functions" "^7.12.1" "@babel/plugin-proposal-class-properties" "^7.12.1" "@babel/plugin-proposal-dynamic-import" "^7.12.1" @@ -818,7 +818,7 @@ "@babel/plugin-transform-arrow-functions" "^7.12.1" "@babel/plugin-transform-async-to-generator" "^7.12.1" "@babel/plugin-transform-block-scoped-functions" "^7.12.1" - "@babel/plugin-transform-block-scoping" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.11" "@babel/plugin-transform-classes" "^7.12.1" "@babel/plugin-transform-computed-properties" "^7.12.1" "@babel/plugin-transform-destructuring" "^7.12.1" @@ -848,7 +848,7 @@ "@babel/plugin-transform-unicode-escapes" "^7.12.1" "@babel/plugin-transform-unicode-regex" "^7.12.1" "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.12.10" + "@babel/types" "^7.12.11" core-js-compat "^3.8.0" semver "^5.5.0" @@ -902,12 +902,12 @@ globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.10.tgz#7965e4a7260b26f09c56bcfcb0498af1f6d9b260" - integrity sha512-sf6wboJV5mGyip2hIpDSKsr80RszPinEFjsHTalMxZAZkoQ2/2yQzxlcFN52SJqsyPfLtPmenL4g2KB3KJXPDw== +"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.11.tgz#a86e4d71e30a9b6ee102590446c98662589283ce" + integrity sha512-ukA9SQtKThINm++CX1CwmliMrE54J6nIYB5XTwL5f/CLFW9owfls+YSU8tVW15RQ2w+a3fSbPjC6HdQNtWZkiA== dependencies: - "@babel/helper-validator-identifier" "^7.10.4" + "@babel/helper-validator-identifier" "^7.12.11" lodash "^4.17.19" to-fast-properties "^2.0.0" @@ -1618,9 +1618,9 @@ integrity sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg== "@types/node@*", "@types/node@>= 8": - version "14.14.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.12.tgz#0b1d86f8c40141091285dea02e4940df73bba43f" - integrity sha512-ASH8OPHMNlkdjrEdmoILmzFfsJICvhBsFfAum4aKZ/9U4B6M6tTmTPh+f3ttWdD74CEGV5XvXWkbyfSdXaTd7g== + version "14.14.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.14.tgz#f7fd5f3cc8521301119f63910f0fb965c7d761ae" + integrity sha512-UHnOPWVWV1z+VV8k6L1HhG7UbGBgIdghqF3l9Ny9ApPghbjICXkUJSd/b9gOgQfjM1r+37cipdw/HJ3F6ICEnQ== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -1670,9 +1670,9 @@ "@types/yargs-parser" "*" "@types/yargs@^15.0.0": - version "15.0.11" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.11.tgz#361d7579ecdac1527687bcebf9946621c12ab78c" - integrity sha512-jfcNBxHFYJ4nPIacsi3woz1+kvUO6s1CyeEhtnDHBjHUMNj5UlW2GynmnSgiJJEdNg9yW5C8lfoNRZrHGv5EqA== + version "15.0.12" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.12.tgz#6234ce3e3e3fa32c5db301a170f96a599c960d74" + integrity sha512-f+fD/fQAo3BCbCDlrUpznF1A5Zp9rB0noS5vnoormHSIPFKL0Z2DcUJ3Gxp5ytH4uLRNxy7AwYUC9exZzqGMAw== dependencies: "@types/yargs-parser" "*" @@ -2271,9 +2271,9 @@ babel-plugin-transform-undefined-to-void@^6.9.4: integrity sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA= babel-preset-current-node-syntax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.0.tgz#cf5feef29551253471cfa82fc8e0f5063df07a77" - integrity sha512-mGkvkpocWJes1CmMKtgGUwCeeq0pOhALyymozzDWYomHTbDLwueDYG6p4TK1YOeYHCzBzYPsWkgTto10JubI1Q== + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" @@ -2753,9 +2753,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001165: - version "1.0.30001165" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001165.tgz" - integrity sha512-8cEsSMwXfx7lWSUMA2s08z9dIgsnR5NAqjXP23stdsU3AUWkCr/rr4s4OFtHXn5XXr6+7kam3QFVoYyXNPdJPA== + version "1.0.30001168" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001168.tgz" + integrity sha512-P2zmX7swIXKu+GMMR01TWa4csIKELTNnZKc+f1CjebmZJQtTAEXmpQSoKVJVVcvPGAA0TEYTOUp3VehavZSFPQ== capture-exit@^2.0.0: version "2.0.0" @@ -3130,9 +3130,9 @@ commander@^5.0.0: integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== commander@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.0.tgz#b990bfb8ac030aedc6d11bc04d1488ffef56db75" - integrity sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q== + version "6.2.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== commitizen@^4.0.3: version "4.2.2" @@ -4024,9 +4024,9 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.3.621: - version "1.3.622" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.622.tgz#9726bd2e67a5462154750ce9701ca6af07d07877" - integrity sha512-AJT0Fm1W0uZlMVVkkJrcCVvczDuF8tPm3bwzQf5WO8AaASB2hwTRP7B8pU5rqjireH+ib6am8+hH5/QkXzzYKw== + version "1.3.628" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.628.tgz#be5a14ddf3a455de876274c84de0926439a287a7" + integrity sha512-fmhO4YGo/kapy+xL9Eq/cZwDASaTHZu3psIFYo4yc+RY1LzbZr84xjKlDImDrlrmWhOxsrDi98nX097U/xK/cQ== elliptic@^6.5.3: version "6.5.3" @@ -4116,9 +4116,9 @@ err-code@^1.0.0: integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= errno@~0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== dependencies: prr "~1.0.1" @@ -5301,10 +5301,10 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -husky@^4.3.5: - version "4.3.5" - resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.5.tgz#ab8d2a0eb6b62fef2853ee3d442c927d89290902" - integrity sha512-E5S/1HMoDDaqsH8kDF5zeKEQbYqe3wL9zJDyqyYqc8I4vHBtAoxkDBGXox0lZ9RI+k5GyB728vZdmnM4bYap+g== +husky@^4.3.6: + version "4.3.6" + resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.6.tgz#ebd9dd8b9324aa851f1587318db4cccb7665a13c" + integrity sha512-o6UjVI8xtlWRL5395iWq9LKDyp/9TE7XMOTvIpEVzW638UcGxTmV5cfel6fsk/jbZSTlvfGVJf2svFtybcIZag== dependencies: chalk "^4.0.0" ci-info "^2.0.0" @@ -5443,9 +5443,9 @@ inherits@2.0.3: integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: - version "1.3.7" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" - integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== init-package-json@^1.10.3: version "1.10.3" @@ -7124,9 +7124,9 @@ marked-terminal@^4.0.0: supports-hyperlinks "^2.1.0" marked@^1.0.0, marked@^1.1.1: - version "1.2.6" - resolved "https://registry.yarnpkg.com/marked/-/marked-1.2.6.tgz#fa55cf38ab3585005c9fb3c1ebfb3d4590c29fdc" - integrity sha512-7vVuSEZ8g/HH3hK/BH/+7u/NJj7x9VY4EHzujLDcqAQLiOUeFJYAsfSAyoWtR17lKrx7b08qyIno4lffwrzTaA== + version "1.2.7" + resolved "https://registry.yarnpkg.com/marked/-/marked-1.2.7.tgz#6e14b595581d2319cdcf033a24caaf41455a01fb" + integrity sha512-No11hFYcXr/zkBvL6qFmAp1z6BKY3zqLMHny/JN/ey+al7qwCM2+CMBL9BOgqMxZU36fz4cCWfn2poWIf7QRXA== md5.js@^1.3.4: version "1.3.5" @@ -7251,9 +7251,9 @@ mime@1.6.0: integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.4.3: - version "2.4.6" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" - integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== + version "2.4.7" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.7.tgz#962aed9be0ed19c91fd7dc2ece5d7f4e89a90d74" + integrity sha512-dhNd1uA2u397uQk3Nv5LM4lm93WYDUXFn3Fu291FJerns4jyTudqhIWe4W04YLy7Uk1tm1Ore04NpjRvQp/NPA== mimic-fn@^1.0.0: version "1.2.0" @@ -7529,9 +7529,9 @@ node-modules-regexp@^1.0.0: integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= node-notifier@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.0.tgz#a7eee2d51da6d0f7ff5094bc7108c911240c1620" - integrity sha512-46z7DUmcjoYdaWyXouuFNNfUo6eFa94t23c53c+lG/9Cvauk4a98rAUp9672X5dxGdQmLpPzTxzu8f/OeEPaFA== + version "8.0.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.1.tgz#f86e89bbc925f2b068784b31f382afdc6ca56be1" + integrity sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA== dependencies: growly "^1.3.0" is-wsl "^2.2.0" @@ -10835,15 +10835,15 @@ typedoc@^0.19.2: shelljs "^0.8.4" typedoc-default-themes "^0.11.4" -typescript@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.2.tgz#6369ef22516fe5e10304aae5a5c4862db55380e9" - integrity sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ== +typescript@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7" + integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg== uglify-js@^3.1.4: - version "3.12.1" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.12.1.tgz#78307f539f7b9ca5557babb186ea78ad30cc0375" - integrity sha512-o8lHP20KjIiQe5b/67Rh68xEGRrc2SRsCuuoYclXXoC74AfSRGblU1HKzJWH3HxPZ+Ort85fWHpSX7KwBUC9CQ== + version "3.12.2" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.12.2.tgz#c7ae89da0ed1bb58999c7fce07190b347fdbdaba" + integrity sha512-rWYleAvfJPjduYCt+ELvzybNah/zIkRteGXIBO8X0lteRZPGladF61hFi8tU7qKTsF7u6DUQCtT9k00VlFOgkg== uid-number@0.0.6: version "0.0.6"