await-timeout
Advanced tools
Comparing version 0.4.0 to 0.5.0
@@ -1,2 +0,2 @@ | ||
// await-timeout v0.4.0 by Vitaliy Potapov | ||
// await-timeout v0.5.0 by Vitaliy Potapov | ||
(function (global, factory) { | ||
@@ -37,2 +37,3 @@ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : | ||
this._id = null; | ||
this._delay = null; | ||
} | ||
@@ -44,13 +45,18 @@ | ||
set(ms, error = '') { | ||
get delay() { | ||
return this._delay; | ||
} | ||
set(delay, rejectReason = '') { | ||
return new Promise((resolve, reject) => { | ||
this.clear(); | ||
const fn = error ? () => reject(toError(error)) : resolve; | ||
this._id = setTimeout(fn, ms); | ||
const fn = rejectReason ? () => reject(toError(rejectReason)) : resolve; | ||
this._id = setTimeout(fn, delay); | ||
this._delay = delay; | ||
}); | ||
} | ||
wrap(promise, ms, error = '') { | ||
wrap(promise, delay, rejectReason = '') { | ||
const wrappedPromise = promiseFinally(promise, () => this.clear()); | ||
const timer = this.set(ms, error); | ||
const timer = this.set(delay, rejectReason); | ||
return Promise.race([wrappedPromise, timer]); | ||
@@ -66,8 +72,8 @@ } | ||
Timeout.set = function (ms, error) { | ||
return new Timeout().set(ms, error); | ||
Timeout.set = function (delay, rejectReason) { | ||
return new Timeout().set(delay, rejectReason); | ||
}; | ||
Timeout.wrap = function (promise, ms, error) { | ||
return new Timeout().wrap(promise, ms, error); | ||
Timeout.wrap = function (promise, delay, rejectReason) { | ||
return new Timeout().wrap(promise, delay, rejectReason); | ||
}; | ||
@@ -74,0 +80,0 @@ |
{ | ||
"name": "await-timeout", | ||
"version": "0.4.0", | ||
"version": "0.5.0", | ||
"description": "A Promise-based API for setTimeout / clearTimeout", | ||
@@ -5,0 +5,0 @@ "author": { |
@@ -20,2 +20,4 @@ <div align="center"> | ||
* [.clear()](#clear) | ||
* [.id](#id--numbertimeout) | ||
* [.delay](#delay--number) | ||
* [Motivation](#motivation) | ||
@@ -66,4 +68,4 @@ * [Related resources](#related-resources) | ||
### .set(ms, [message]) ⇒ `Promise` | ||
Starts new timer like `setTimeout()` and returns promise. The promise will be resolved after `ms` milliseconds: | ||
### .set(delay, [rejectReason]) ⇒ `Promise` | ||
Starts new timer like `setTimeout()` and returns promise. The promise will be resolved after `delay` milliseconds: | ||
```js | ||
@@ -98,3 +100,3 @@ const timer = new Timeout(); | ||
### .wrap(promise, ms, [message]) ⇒ `Promise` | ||
### .wrap(promise, delay, [rejectReason]) ⇒ `Promise` | ||
Wraps existing promise with timeout: | ||
@@ -144,2 +146,14 @@ * promise automatically rejected after timeout | ||
### .id ⇒ `?Number|?Timeout` | ||
Returns result of `setTimeout` call. That is `Number` timeout id in browser | ||
and [Timeout](https://nodejs.org/api/timers.html#timers_class_timeout) instance in Node.js. | ||
### .delay ⇒ `?Number` | ||
Returns last delay value used. Delay is useful for generating reject reason: | ||
```js | ||
const timer = new Timeout(); | ||
timer.set(1000, () => new Error(`Timeout: ${timer.delay}`)); | ||
``` | ||
## Motivation | ||
@@ -146,0 +160,0 @@ Before making this library I've researched [many similar packages on Npm](https://www.npmjs.com/search?q=promise%20timeout). |
@@ -10,2 +10,3 @@ /** | ||
this._id = null; | ||
this._delay = null; | ||
} | ||
@@ -17,13 +18,18 @@ | ||
set(ms, error = '') { | ||
get delay() { | ||
return this._delay; | ||
} | ||
set(delay, rejectReason = '') { | ||
return new Promise((resolve, reject) => { | ||
this.clear(); | ||
const fn = error ? () => reject(toError(error)) : resolve; | ||
this._id = setTimeout(fn, ms); | ||
const fn = rejectReason ? () => reject(toError(rejectReason)) : resolve; | ||
this._id = setTimeout(fn, delay); | ||
this._delay = delay; | ||
}); | ||
} | ||
wrap(promise, ms, error = '') { | ||
wrap(promise, delay, rejectReason = '') { | ||
const wrappedPromise = promiseFinally(promise, () => this.clear()); | ||
const timer = this.set(ms, error); | ||
const timer = this.set(delay, rejectReason); | ||
return Promise.race([wrappedPromise, timer]); | ||
@@ -39,10 +45,10 @@ } | ||
Timeout.set = function (ms, error) { | ||
return new Timeout().set(ms, error); | ||
Timeout.set = function (delay, rejectReason) { | ||
return new Timeout().set(delay, rejectReason); | ||
}; | ||
Timeout.wrap = function (promise, ms, error) { | ||
return new Timeout().wrap(promise, ms, error); | ||
Timeout.wrap = function (promise, delay, rejectReason) { | ||
return new Timeout().wrap(promise, delay, rejectReason); | ||
}; | ||
export default Timeout; |
@@ -12,2 +12,8 @@ describe('clear', function () { | ||
}); | ||
it('should keep delay property', async function () { | ||
this.timeout.set(10); | ||
this.timeout.clear(); | ||
assert.equal(this.timeout.delay, 10); | ||
}); | ||
}); |
@@ -47,2 +47,10 @@ describe('set', function () { | ||
}); | ||
it('should return delay property', async function () { | ||
assert.equal(this.timeout.delay, null); | ||
const promise = this.timeout.set(10); | ||
assert.equal(this.timeout.delay, 10); | ||
await promise; | ||
assert.equal(this.timeout.delay, 10); | ||
}); | ||
}); | ||
@@ -49,0 +57,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
15835
274
178
0