Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Socket
Sign inDemoInstall

promiscuous

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

promiscuous - npm Package Compare versions

Comparing version 0.2.0 to 0.3.0

5

build/build.js

@@ -5,5 +5,4 @@ #!/usr/bin/env node

var minified = UglifyJS.minify("promiscuous.js", {
output: { comments: true }
}).code;
var copyright = fs.readFileSync("promiscuous.js", "utf8").match(/.*\n/)[0];
var minified = copyright + UglifyJS.minify("promiscuous.js").code;

@@ -10,0 +9,0 @@ var path = "dist/";

2

package.json
{
"name": "promiscuous",
"version": "0.2.0",
"version": "0.3.0",
"description": "A minimal and fast promise/deferred implementation",

@@ -5,0 +5,0 @@ "author": "Ruben Verborgh <ruben.verborgh@gmail.com>",

@@ -1,9 +0,36 @@

/** @license MIT - ©2013 Ruben Verborgh */
/** @license MIT - promiscuous library - ©2013 Ruben Verborgh */
(function () {
var func = "function",
noop = function () {};
var func = "function";
// Creates a deferred: an object with a promise and corresponding resolve/reject methods
function createDeferred() {
var handler,
changeState,
// The `handler` variable points to the function that will
// 1) handle a .then(onFulfilled, onRejected) call
// 2) handle a .resolve or .reject call (if not fulfilled)
// Before 2), `handler` holds a queue of callbacks.
// After 2), `handler` is a simple .then handler.
// We use only one function to save memory and complexity.
var handler = function (onFulfilled, onRejected, value) {
// Case 1) handle a .then(onFulfilled, onRejected) call
if (onFulfilled !== handler) {
var d = createDeferred();
handler.c.push({ d: d, resolve: onFulfilled, reject: onRejected });
return d.promise;
}
// Case 2) handle a .resolve or .reject call
// (`onFulfilled` acts as a sentinel)
// The actual function signature is
// .re[ject|solve](sentinel, success, value)
var action = onRejected ? 'resolve' : 'reject';
for (var i = 0, l = handler.c.length; i < l; i++) {
var c = handler.c[i], deferred = c.d, callback = c[action];
if (typeof callback !== func)
deferred[action](value);
else
execute(callback, value, deferred);
};
// Replace this handler with a simple resolved or rejected handler
handler = createHandler(promise, value, onRejected);
},
promise = {

@@ -14,30 +41,14 @@ then: function (onFulfilled, onRejected) {

};
// The queue of deferreds
handler.c = [];
(function () {
var pending = [];
handler = function (onFulfilled, onRejected) {
var d = createDeferred();
pending.push({ d: d, resolve: onFulfilled, reject: onRejected });
return d.promise;
};
changeState = function (action, value, success) {
for (var i = 0, l = pending.length; i < l; i++) {
var p = pending[i], deferred = p.d, callback = p[action];
if (typeof callback !== func)
deferred[action](value);
else
execute(callback, value, deferred);
}
handler = createHandler(promise, value, success);
changeState = noop;
};
})();
return {
resolve: function (value) { changeState('resolve', value, true); },
reject : function (reason) { changeState('reject', reason, false); },
promise: promise
promise: promise,
// Only resolve / reject when there is a deferreds queue
resolve: function (value) { handler.c && handler(handler, true, value); },
reject : function (reason) { handler.c && handler(handler, false, reason); }
};
}
// Creates a fulfilled or rejected .then function
function createHandler(promise, value, success) {

@@ -48,3 +59,3 @@ return function (onFulfilled, onRejected) {

return promise;
process.nextTick(execute.bind(promise, callback, value, result = createDeferred()));
execute(callback, value, result = createDeferred());
return result.promise;

@@ -54,16 +65,21 @@ };

// Executes the callback with the specified value,
// resolving or rejecting the deferred
function execute(callback, value, deferred) {
try {
var result = callback(value);
if (result && typeof result.then === func)
result.then(deferred.resolve, deferred.reject);
else
deferred.resolve(result);
}
catch (error) {
deferred.reject(error);
}
process.nextTick(function () {
try {
var result = callback(value);
if (result && typeof result.then === func)
result.then(deferred.resolve, deferred.reject);
else
deferred.resolve(result);
}
catch (error) {
deferred.reject(error);
}
});
}
module.exports = {
// Returns a resolved promise
resolve: function (value) {

@@ -74,2 +90,3 @@ var promise = {};

},
// Returns a rejected promise
reject: function (reason) {

@@ -80,4 +97,5 @@ var promise = {};

},
// Returns a deferred
deferred: createDeferred
};
})();
# promiscuous
<a href="http://promises-aplus.github.com/promises-spec">
<img src="http://promises-aplus.github.com/promises-spec/assets/logo-small.png"
alt="Promises/A+ logo" title="Promises/A+ 1.0 compliant" align="right" />
</a>
promiscuous is a JavaScript promise/deferred implementation, implementing the [Promises/A+ spec](http://promises-aplus.github.com/promises-spec/).

@@ -3,0 +8,0 @@

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