From f3c7542b416b034242950ffb7d85fe38b2094432 Mon Sep 17 00:00:00 2001 From: Mark Wubben Date: Mon, 1 Feb 2021 16:23:24 +0100 Subject: [PATCH] Fix missing `range()` in `createWithTimers()` return value & require Node.js 10 (#55) --- .github/workflows/main.yml | 2 -- index.js | 13 +++++++------ package.json | 2 +- test.js | 16 +++++++++++----- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b85fc2a..c1870cf 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -13,8 +13,6 @@ jobs: - 14 - 12 - 10 - - 8 - - 6 steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 diff --git a/index.js b/index.js index b863595..7dd2309 100644 --- a/index.js +++ b/index.js @@ -57,15 +57,16 @@ const createDelay = ({clearTimeout: defaultClear, setTimeout: set, willResolve}) return delayPromise; }; -const delay = createDelay({willResolve: true}); -delay.reject = createDelay({willResolve: false}); -delay.range = (minimum, maximum, options) => delay(randomInteger(minimum, maximum), options); -delay.createWithTimers = ({clearTimeout, setTimeout}) => { - const delay = createDelay({clearTimeout, setTimeout, willResolve: true}); - delay.reject = createDelay({clearTimeout, setTimeout, willResolve: false}); +const createWithTimers = clearAndSet => { + const delay = createDelay({...clearAndSet, willResolve: true}); + delay.reject = createDelay({...clearAndSet, willResolve: false}); + delay.range = (minimum, maximum, options) => delay(randomInteger(minimum, maximum), options); return delay; }; +const delay = createWithTimers(); +delay.createWithTimers = createWithTimers; + module.exports = delay; // TODO: Remove this for the next major release module.exports.default = delay; diff --git a/package.json b/package.json index 9f5553f..039f7f5 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "url": "https://sindresorhus.com" }, "engines": { - "node": ">=6" + "node": ">=10" }, "scripts": { "test": "xo && ava && tsd" diff --git a/test.js b/test.js index 0660133..a8f28d6 100644 --- a/test.js +++ b/test.js @@ -125,6 +125,12 @@ test('rejects with AbortError if AbortSignal is already aborted', async t => { t.true(end() < 30); }); +test('returns a promise that is resolved in a random range of time', async t => { + const end = timeSpan(); + await delay.range(50, 150); + t.true(inRange(end(), 30, 170), 'is delayed'); +}); + test('can create a new instance with fixed timeout methods', async t => { const cleared = []; const callbacks = []; @@ -162,10 +168,10 @@ test('can create a new instance with fixed timeout methods', async t => { third.clear(); t.is(cleared.length, 1); t.is(cleared[0], callbacks[2].handle); -}); -test('returns a promise that is resolved in a random range of time', async t => { - const end = timeSpan(); - await delay.range(50, 150); - t.true(inRange(end(), 30, 170), 'is delayed'); + const fourth = custom.range(50, 150, {value: 'fourth'}); + t.is(callbacks.length, 4); + t.true(inRange(callbacks[2].ms, 50, 150)); + callbacks[3].callback(); + t.is(await fourth, 'fourth'); });