@xmpp/events
Advanced tools
Comparing version 0.11.0 to 0.12.0
26
index.js
@@ -1,15 +0,15 @@ | ||
'use strict' | ||
"use strict"; | ||
const timeout = require('./lib/timeout') | ||
const delay = require('./lib/delay') | ||
const TimeoutError = require('./lib/TimeoutError') | ||
const promise = require('./lib/promise') | ||
const EventEmitter = require('events') | ||
const Deferred = require('./lib/Deferred') | ||
const timeout = require("./lib/timeout"); | ||
const delay = require("./lib/delay"); | ||
const TimeoutError = require("./lib/TimeoutError"); | ||
const promise = require("./lib/promise"); | ||
const EventEmitter = require("events"); | ||
const Deferred = require("./lib/Deferred"); | ||
exports.EventEmitter = EventEmitter | ||
exports.timeout = timeout | ||
exports.delay = delay | ||
exports.TimeoutError = TimeoutError | ||
exports.promise = promise | ||
exports.Deferred = Deferred | ||
exports.EventEmitter = EventEmitter; | ||
exports.timeout = timeout; | ||
exports.delay = delay; | ||
exports.TimeoutError = TimeoutError; | ||
exports.promise = promise; | ||
exports.Deferred = Deferred; |
@@ -1,8 +0,8 @@ | ||
'use strict' | ||
"use strict"; | ||
module.exports = function Deferred() { | ||
this.promise = new Promise((resolve, reject) => { | ||
this.resolve = resolve | ||
this.reject = reject | ||
}) | ||
} | ||
this.resolve = resolve; | ||
this.reject = reject; | ||
}); | ||
}; |
@@ -1,10 +0,10 @@ | ||
'use strict' | ||
"use strict"; | ||
module.exports = function delay(ms) { | ||
let timeout | ||
const promise = new Promise(resolve => { | ||
timeout = setTimeout(resolve, ms) | ||
}) | ||
promise.timeout = timeout | ||
return promise | ||
} | ||
let timeout; | ||
const promise = new Promise((resolve) => { | ||
timeout = setTimeout(resolve, ms); | ||
}); | ||
promise.timeout = timeout; | ||
return promise; | ||
}; |
@@ -1,29 +0,28 @@ | ||
'use strict' | ||
"use strict"; | ||
const TimeoutError = require('./TimeoutError') | ||
const TimeoutError = require("./TimeoutError"); | ||
// eslint-disable-next-line default-param-last | ||
module.exports = function promise(EE, event, rejectEvent = 'error', timeout) { | ||
module.exports = function promise(EE, event, rejectEvent = "error", timeout) { | ||
return new Promise((resolve, reject) => { | ||
let timeoutId | ||
let timeoutId; | ||
const cleanup = () => { | ||
clearTimeout(timeoutId) | ||
EE.removeListener(event, onEvent) | ||
EE.removeListener(rejectEvent, onError) | ||
} | ||
clearTimeout(timeoutId); | ||
EE.removeListener(event, onEvent); | ||
EE.removeListener(rejectEvent, onError); | ||
}; | ||
function onError(reason) { | ||
reject(reason) | ||
cleanup() | ||
reject(reason); | ||
cleanup(); | ||
} | ||
function onEvent(value) { | ||
resolve(value) | ||
cleanup() | ||
resolve(value); | ||
cleanup(); | ||
} | ||
EE.once(event, onEvent) | ||
EE.once(event, onEvent); | ||
if (rejectEvent) { | ||
EE.once(rejectEvent, onError) | ||
EE.once(rejectEvent, onError); | ||
} | ||
@@ -33,7 +32,7 @@ | ||
timeoutId = setTimeout(() => { | ||
cleanup() | ||
reject(new TimeoutError()) | ||
}, timeout) | ||
cleanup(); | ||
reject(new TimeoutError()); | ||
}, timeout); | ||
} | ||
}) | ||
} | ||
}); | ||
}; |
@@ -1,12 +0,11 @@ | ||
'use strict' | ||
"use strict"; | ||
const TimeoutError = require('./TimeoutError') | ||
const delay = require('./delay') | ||
const TimeoutError = require("./TimeoutError"); | ||
const delay = require("./delay"); | ||
module.exports = function timeout(promise, ms) { | ||
const promiseDelay = delay(ms) | ||
const promiseDelay = delay(ms); | ||
// eslint-disable-next-line unicorn/consistent-function-scoping | ||
function cancelDelay() { | ||
clearTimeout(promiseDelay.timeout) | ||
clearTimeout(promiseDelay.timeout); | ||
} | ||
@@ -17,5 +16,5 @@ | ||
promiseDelay.then(() => { | ||
throw new TimeoutError() | ||
throw new TimeoutError(); | ||
}), | ||
]) | ||
} | ||
]); | ||
}; |
@@ -1,8 +0,8 @@ | ||
'use strict' | ||
"use strict"; | ||
module.exports = class TimeoutError extends Error { | ||
constructor(message) { | ||
super(message) | ||
this.name = 'TimeoutError' | ||
super(message); | ||
this.name = "TimeoutError"; | ||
} | ||
} | ||
}; |
@@ -7,3 +7,3 @@ { | ||
"bugs": "http://github.com/xmppjs/xmpp.js/issues", | ||
"version": "0.11.0", | ||
"version": "0.12.0", | ||
"license": "ISC", | ||
@@ -17,3 +17,3 @@ "keywords": [ | ||
"engines": { | ||
"node": ">= 10.0.0", | ||
"node": ">= 12.4.0", | ||
"yarn": ">= 1.0.0" | ||
@@ -25,5 +25,5 @@ }, | ||
"dependencies": { | ||
"events": "^3.1.0" | ||
"events": "^3.2.0" | ||
}, | ||
"gitHead": "c0548a598826ae55cf195f296058b344064af7fd" | ||
"gitHead": "75f7bdf7805dced03f616b66dc16e2a067b46480" | ||
} |
@@ -1,53 +0,55 @@ | ||
'use strict' | ||
"use strict"; | ||
const test = require('ava') | ||
const {promise} = require('..') | ||
const EventEmitter = require('events') | ||
const test = require("ava"); | ||
const { promise } = require(".."); | ||
const EventEmitter = require("events"); | ||
class Socket extends EventEmitter { | ||
constructor(fn) { | ||
super() | ||
this.fn = fn | ||
super(); | ||
this.fn = fn; | ||
} | ||
async connect() { | ||
if (!this.fn) return | ||
await Promise.resolve() | ||
this.fn() | ||
if (!this.fn) return; | ||
await Promise.resolve(); | ||
this.fn(); | ||
} | ||
} | ||
test('resolves if "event" is emitted', async t => { | ||
const value = {} | ||
const socket = new Socket(function() { | ||
this.emit('connect', value) | ||
}) | ||
t.is(socket.listenerCount('error'), 0) | ||
t.is(socket.listenerCount('connect'), 0) | ||
socket.connect() | ||
const p = promise(socket, 'connect') | ||
t.is(socket.listenerCount('error'), 1) | ||
t.is(socket.listenerCount('connect'), 1) | ||
const result = await p | ||
t.is(result, value) | ||
t.is(socket.listenerCount('error'), 0) | ||
t.is(socket.listenerCount('connect'), 0) | ||
}) | ||
test('resolves if "event" is emitted', async (t) => { | ||
const value = {}; | ||
// eslint-disable-next-line func-names | ||
const socket = new Socket(function () { | ||
this.emit("connect", value); | ||
}); | ||
t.is(socket.listenerCount("error"), 0); | ||
t.is(socket.listenerCount("connect"), 0); | ||
socket.connect(); | ||
const p = promise(socket, "connect"); | ||
t.is(socket.listenerCount("error"), 1); | ||
t.is(socket.listenerCount("connect"), 1); | ||
const result = await p; | ||
t.is(result, value); | ||
t.is(socket.listenerCount("error"), 0); | ||
t.is(socket.listenerCount("connect"), 0); | ||
}); | ||
test('rejects if "errorEvent" is emitted', t => { | ||
const error = new Error('foobar') | ||
const socket = new Socket(function() { | ||
this.emit('error', error) | ||
}) | ||
t.is(socket.listenerCount('error'), 0) | ||
t.is(socket.listenerCount('connect'), 0) | ||
socket.connect() | ||
const p = promise(socket, 'connect', 'error') | ||
t.is(socket.listenerCount('error'), 1) | ||
t.is(socket.listenerCount('connect'), 1) | ||
return p.catch(err => { | ||
t.is(err, error) | ||
t.is(socket.listenerCount('error'), 0) | ||
t.is(socket.listenerCount('connect'), 0) | ||
}) | ||
}) | ||
test('rejects if "errorEvent" is emitted', (t) => { | ||
const error = new Error("foobar"); | ||
// eslint-disable-next-line func-names | ||
const socket = new Socket(function () { | ||
this.emit("error", error); | ||
}); | ||
t.is(socket.listenerCount("error"), 0); | ||
t.is(socket.listenerCount("connect"), 0); | ||
socket.connect(); | ||
const p = promise(socket, "connect", "error"); | ||
t.is(socket.listenerCount("error"), 1); | ||
t.is(socket.listenerCount("connect"), 1); | ||
return p.catch((err) => { | ||
t.is(err, error); | ||
t.is(socket.listenerCount("error"), 0); | ||
t.is(socket.listenerCount("connect"), 0); | ||
}); | ||
}); |
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
4937
1
Updatedevents@^3.2.0