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.
Fantasy Land Compliant!
Indigenous Complaint!
A monadic wrapper around values that may or may not exist. Inspired by
Scala's Option
monad. Unlike Scala's implementation, we have a really
small interface and we purposefully don't implement Existence#get()
.
The problem with Existence#get()
is it lets you side step the contextual
bounds by unsafely detaching the value from the context. This results in
the same NPE try/catch soup that Option
is intended to avoid.
Monoid concatenation example:
var Some = require("existence/some");
var None = require("existence/none");
var list = [new Some([1, 2, 3]), new None(), new Some([4, 5, 6])];
var added = list.reduce(function(memo, item) {
return memo.concat(item);
});
console.log("value: " + JSON.stringify(filtered.getOrDefault([])));
// prints "value: [1, 2, 3, 4, 5, 6]"
Functor composition example:
var Some = require("existence/some");
var None = require("existence/none");
var some = new Some(21);
var answer = some.map(function(n) {
return n * 2;
});
console.log("value: " + answer.getOrDefault("None"));
// prints "value: 42"
var none = new None();
var nada = none.map(function(n) {
return n * 2;
});
console.log("exists = " + nada.exists());
// prints "exists = false"
Applicative composition example:
var Existence = require("existence");
var Some = require("existence/some");
var None = require("existence/none");
var curry = require("lodash").curry;
var someNumber = new Some(42);
var someString = new Some("beep");
var someBoolean = new Some(true);
var none = new None();
var lifted = Existence.of(curry(function(a, b, c) {
return a + " - " + b + " - " + c;
}));
var allThere = lifted.ap(someNumber).ap(someString).ap(someBoolean);
console.log("value: " + answer.getOrDefault("None"));
// prints "value: 42 - beep - true"
var missing = lifted.ap(someNumber).ap(none).ap(someBoolean);
console.log("value: " + answer.getOrDefault("None"));
// prints "value: None"
Monadic composition (flatMap / chain) example (flatMap is an alias for chain):
var Some = require("existence/some");
var None = require("existence/none");
var value = new Some(42);
var filtered = value.flatMap(function(n) {
return (n % 1 == 0) ? new Some(n)
: new None()
});
console.log("value: " + filtered.getOrDefault("value was not even"));
// prints "value: 42"
FAQs
A monadic wrapper for dealing with existence
We found that existence 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.