Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
promisechain
Advanced tools
Promise provides chain mechanism with then
function.
But its writing is a little annoying.
This library enable more lazy way.
var p = Promise(function(resolve, reject){
setTimeout(function(){
resolve([1,2,3,4,5]);
}, 10);
})
Promisechain.chainable(p)
.map(function(v){
return v*2;
})
.reduce(function(acc, v) {
return acc + v;
}, 0)
.filter(function(v) {
return v > 20;
})
.recovery(99)
.pipe(function(v) {
return {result :v};
})
.then(function(v){
console.log(v);
});
// => {result:30}
Use bower.
bower isntall promisechain
<script src="./bower_components/promisechain/dist/promisechain_bundle.js"></script>
Promisechain
will be installed to global.
Or use require
style with browserify.
Use npm.
npm isntall promisechain
var chainable = require("promisechain").chainable;
Promisechain.chainable(p Promise)
Add chain-able methods to p
.
All chain-able methods return chain-able promise.
filter(predicate Function)
Filter value with provided predicate.
If predicate is not function
, ===
operator will be used as predicate.
chainable(p)
.filter(function(v) {
return v > 20;
});
.then(
function(v){console.log("This block will be called when v > 20");},
function(){console.log("This block will be called when v <= 20");}
);
chainable(p)
.filter("HELLO");
.then(
function(v){console.log("This block will be called when v === 'HELLO'");},
function(){console.log("This block will be called when v !== 'HELLO'");}
);
Notice
Unlike underscore
's' or lodash
's filter
, this filter
method does not iterate value.
Just apply predicator to value itself.
If you want filter element of array, use pipe
instead.
chainable(Promise.resolve([1,2,3,4,5]))
.pipe(function(arr){
return _.filter(arr, function(v){return v > 2;});
})
.then(function(){
console.log(v); // => [3,4,5]
});
pipe(func Function)
Pipe values to next step.
function double(v){ return v*2;}
chainable(Promise.resolve(2))
.pipe(double);
.pipe(double);
.then(
function(v){console.log(v);} // => 8
);
recovery(value Any)
Recovery promise chain when before steps are rejected.
chainable(Promise.resolve(2))
.filter(function(){return v > 10;});
.recovery(100);
.then(
function(v){console.log(v);} // => 100,
function(){console.log("This block will never be called");}
);
These methods are alias to underscore
's basic collection utility.
Apply underscore
's method with arguments, then return chain-able promise.
What it is not listed here, You can use with pipe
method.
Noteice
If invalid parameter is passed to underscore
's method,
Unless it throw Error
, promise will not be rejected.
Generally it will return empty array []
. So promise chain will not be rejected but resolved with []
;
map
An alias of underscore
's' map
.
function double(v){ return v*2;}
chainable(Promise.resolve([1,2,3,4,5]))
.map(double);
.then(
function(v){console.log(v);} // => [2,4,6,8,10],
);
reduce
An alias of underscore
's' reduce
.
function sum(acc, v){ return v + acc;}
chainable(Promise.resolve([1,2,3,4,5]))
.reduce(sum, 0)
.then(
function(v){console.log(v);} // => 15,
);
first
, head
and take
An alias of underscore
's' first
.
chainable(Promise.resolve([1,2,3,4,5]))
.first()
.then(
function(v){console.log(v);} // => 1,
);
initial
An alias of underscore
's' initial
.
chainable(Promise.resolve([1,2,3,4,5]))
.initial()
.then(
function(v){console.log(v);} // => [1,2,3,4],
);
last
An alias of underscore
's' last
.
chainable(Promise.resolve([1,2,3,4,5]))
.last()
.then(
function(v){console.log(v);} // => 5,
);
rest
, tail
, drop
An alias of underscore
's' rest
.
chainable(Promise.resolve([1,2,3,4,5]))
.rest()
.then(
function(v){console.log(v);} // => [2,3,4,5]
);
keys
An alias of underscore
's' keys
.
chainable(Promise.resolve({
"key1": "val1",
"key2": "val2"
}))
.keys()
.then(
function(v){console.log(v);} // => ["key1", "key2"]
);
values
An alias of underscore
's' values
.
chainable(Promise.resolve({
"key1": "val1",
"key2": "val2"
}))
.values()
.then(
function(v){console.log(v);} // => ["val1", "val2"]
);
values
An alias of underscore
's' values
.
chainable(Promise.resolve({
"key1": "val1",
"key2": "val2"
}))
.pairs()
.then(
function(v){console.log(v);} // => [["key1","val1"], ["key2","val2"]
);
Install Node.js and NPM.
git clone git://github.com/georegeosddev/promisechain.git
cd promisechain
npm install
npm run-script build
MIT
FAQs
Chainable promise
The npm package promisechain receives a total of 0 weekly downloads. As such, promisechain popularity was classified as not popular.
We found that promisechain demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.