New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

areq

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

areq - npm Package Compare versions

Comparing version 0.0.2 to 0.0.3

122

index.js
var EventEmitter = require('events');
var AREQ_TIMEOUT = 30, // seconds
function Areq(emitter, areqTimeout) {
if (!emitter instanceof EventEmitter)
throw new TypeError('Input emitter should be an EventEmitter.');
var _pendings = {}; // { evtName: { deferred, listener, timeout, pending }, ... }
this._emitter = emitter;
this._areqTimeout = areqTimeout || 30000;
this._pendings = {}; // { evtName: { deferred, listener }, ... }
}
var areq = {
emitter: null
Areq.prototype.resolve = function (evt, value) {
var rec = this.getRecord(evt),
deferred = rec ? rec.deferred : null;
if (deferred && deferred.promise.isPending())
deferred.resolve(value);
this.deregister(evt);
};
areq.register = function (evt, deferred, listener) {
Areq.prototype.reject = function (evt, err) {
var rec = this.getRecord(evt),
deferred = rec ? rec.deferred : null;
if (deferred && deferred.promise.isPending())
deferred.reject(err);
this.deregister(evt);
};
Areq.prototype.register = function (evt, deferred, listener, time) {
var registered = false,
areqTimeout = time || this._areqTimeout,
alarm; // timeout controller

@@ -18,17 +40,17 @@

if (typeof deferred === 'function') {
listener = deferred;
deferred = null;
}
if (typeof listener !== 'function')
throw new TypeError('listener should be a function.');
if (areq.getRecord(evt)) { // someone waiting same event
if (this.getRecord(evt)) { // someone waiting same event
registered = false;
} else {
alarm = createAlarm(evt);
areq.emitter.once(evt, listener);
deferred.promise.timeout(areqTimeout).fail(function(err) {
deferred.reject(err);
}).done();
_pendings[evt] = {
this._emitter.once(evt, listener);
this._pendings[evt] = {
listener: listener,
deferred: deferred,
timeout: alarm
deferred: deferred
}

@@ -42,22 +64,12 @@

areq.deregister = function (evt) {
Areq.prototype.deregister = function (evt) {
if (typeof evt !== 'string')
throw new TypeError('evt should be a string.');
var rec = areq.getRecord(evt),
emitter = areq.emitter;
var rec = this.getRecord(evt),
emitter = this._emitter;
if (rec) {
if (rec.timeout) {
clearTimeout(rec.timeout);
rec.timeout = null;
}
if (rec.deferred) {
if (rec.deferred.isPending()) {
rec.deferred.reject(new Error('Areq been cancelled. If this is not what you expect, please settle '
+ 'the promise state then do the deregister.'));
}
if (rec.deferred)
rec.deferred = null;
}

@@ -69,56 +81,18 @@ if (rec.listener) {

areq.removeRecord(evt);
this._pendings[evt] = null;
delete this._pendings[evt];
}
};
areq.getRecord = function (evt) {
return _pendings[evt];
Areq.prototype.getRecord = function (evt) {
return this._pendings[evt];
};
areq.removeRecord = function (evt) {
_pendings[evt] = null;
delete _pendings[evt];
Areq.prototype.isEventPending = function (evt) {
return !!this._pendings[evt];
};
areq.isEventPending = function (evt) {
return !!_pendings[evt];
};
areq.setAreqTimeout = function (time) {
AREQ_TIMEOUT = time;
};
/*************************************************************************************************/
/*** Private Functions ***/
/*************************************************************************************************/
function createAlarm(evt) {
var alarm;
alarm = setTimeout(function () {
var rec = areq.getRecord(evt),
deferred = rec ? rec.deferred : null;
if (rec) {
// state should be settled
if (deferred)
deferred.reject(new Error('Request timeout.'));
else if (typeof rec.listener === 'function')
rec.listener(new Error('Request timeout.'));
areq.deregister(evt);
}
}, AREQ_TIMEOUT);
return alarm;
}
/*************************************************************************************************/
/*** Module Exports ***/
/*************************************************************************************************/
module.exports = function (emitter) {
if (!emitter instanceof EventEmitter)
throw new TypeError('Input emitter should be an EventEmitter.');
areq.emitter = emitter;
return areq;
};
module.exports = Areq;
{
"name": "areq",
"version": "0.0.2",
"version": "0.0.3",
"description": "An asynchronous request controller",

@@ -5,0 +5,0 @@ "main": "index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc