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

akh

Package Overview
Dependencies
Maintainers
1
Versions
24
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

akh - npm Package Compare versions

Comparing version 2.0.0 to 2.0.1

CHANGELOG.md

27

dist_node/base.js

@@ -6,3 +6,13 @@ /*

"use strict";
var chain, map, ap, concat, liftM, liftM2, liftA, liftA2, next, sequencea, sequence;
var chain, map, ap, concat, liftM, liftM2, liftA, liftA2, compose, composer, next, sequencea, sequence, constant = (
function(x) {
return (function() {
return x;
});
}),
flip = (function(f) {
return (function(x, y) {
return f(y, x);
});
});
(chain = (function(m, f) {

@@ -41,2 +51,15 @@ return m.chain(f);

}));
(compose = (function(f, g) {
return (function(x) {
return f(x)
.chain(g);
});
}));
var f = compose;
(composer = (function(x, y) {
return (function(x0) {
return y(x0)
.chain(x);
});
}));
(next = (function(p, q) {

@@ -62,4 +85,6 @@ return p.chain((function() {

(exports["liftA2"] = liftA2);
(exports["compose"] = compose);
(exports["composer"] = composer);
(exports["next"] = next);
(exports["sequencea"] = sequencea);
(exports["sequence"] = sequence);

10

dist_node/cont.js

@@ -8,9 +8,8 @@ /*

ContT = require("./trans/cont"),
runContT = ContT["runContT"],
Cont;
Cont, runContT = ContT["runContT"];
(Cont = ContT(Identity));
var x = (function(m, k) {
var y;
return runContT(m, ((y = Identity.of), (function(x0) {
return y(k(x0));
return runContT(m, ((y = Identity.of), (function(z) {
return y(k(z));
})));

@@ -20,4 +19,5 @@ }),

(Cont.runCont = (function() {
return y(x.apply(null, arguments));
var args = arguments;
return y(x.apply(null, args));
}));
(module.exports = Cont);

@@ -8,10 +8,9 @@ /*

DContT = require("./trans/dcont"),
runDContT = DContT["runDContT"],
DCont;
DCont, runDContT = DContT["runDContT"];
(DCont = DContT(Identity));
var x = runDContT,
y = Identity.runIdentity;
var y = Identity.runIdentity;
(DCont.runDCont = (function() {
return y(x.apply(null, arguments));
var args = arguments;
return y(runDContT.apply(null, args));
}));
(module.exports = DCont);

@@ -8,11 +8,10 @@ /*

EitherT = require("./trans/either"),
eitherT = EitherT["eitherT"],
Either;
Either, eitherT = EitherT["eitherT"];
(Either = EitherT(Identity));
var x = (function(m, l, r) {
var y, y0;
return eitherT(m, ((y = Identity.of), (function(x0) {
return y(l(x0));
})), ((y0 = Identity.of), (function(x0) {
return y0(r(x0));
return eitherT(m, ((y = Identity.of), (function(z) {
return y(l(z));
})), ((y0 = Identity.of), (function(z) {
return y0(r(z));
})));

@@ -22,4 +21,5 @@ }),

(Either.either = (function() {
return y(x.apply(null, arguments));
var args = arguments;
return y(x.apply(null, args));
}));
(module.exports = Either);

@@ -8,5 +8,10 @@ /*

ErrorT = require("./trans/error"),
runErrorT = ErrorT["runErrorT"],
Error, id = (function(x) {
Error, runErrorT = ErrorT["runErrorT"],
id = (function(x) {
return x;
}),
constant = (function(x) {
return (function() {
return x;
});
});

@@ -16,6 +21,6 @@ (Error = ErrorT(Identity));

var y, y0;
return runErrorT(m, ((y = Identity.of), (function(x0) {
return y(ok(x0));
})), ((y0 = Identity.of), (function(x0) {
return y0(err(x0));
return runErrorT(m, ((y = Identity.of), (function(z) {
return y(ok(z));
})), ((y0 = Identity.of), (function(z) {
return y0(err(z));
})));

@@ -25,3 +30,4 @@ }),

(Error.runError = (function() {
return y(x.apply(null, arguments));
var args = arguments;
return y(x.apply(null, args));
}));

@@ -28,0 +34,0 @@ (Error.tryError = (function(m, e) {

@@ -7,5 +7,4 @@ /*

var __o = require("./structure"),
Functor = __o["Functor"],
Monad = __o["Monad"],
Identity;
Identity, Functor = __o["Functor"],
Monad = __o["Monad"];
(Identity = (function(x) {

@@ -12,0 +11,0 @@ var self = this;

@@ -8,10 +8,8 @@ /*

ListT = require("./trans/list"),
runListT = ListT["runListT"],
List;
List, runListT = ListT["runListT"];
(List = ListT(Identity));
var x = runListT,
y = Identity.runIdentity;
(List.runList = (function(x0) {
return y(x(x0));
var y = Identity.runIdentity;
(List.runList = (function(z) {
return y(runListT(z));
}));
(module.exports = List);

@@ -13,4 +13,4 @@ /*

(Instance.prototype.modify = (function(f) {
return get.chain((function(x) {
return put(f(x));
return get.chain((function(z) {
return put(f(z));
}));

@@ -23,6 +23,6 @@ }));

if ((m.get && m.put)) StateMonad(Instance, Instance.lift(m.get), ((x = Instance.lift), (y = m.put), (
function(x0) {
return x(y(x0));
function(z) {
return x(y(z));
})));
}));
(module.exports = StateMonad);

@@ -13,3 +13,4 @@ /*

(State.runState = (function() {
return y(x.apply(null, arguments));
var args = arguments;
return y(x.apply(null, args));
}));

@@ -19,3 +20,4 @@ var x0 = StateT.evalStateT,

(State.evalState = (function() {
return y0(x0.apply(null, arguments));
var args = arguments;
return y0(x0.apply(null, args));
}));

@@ -25,4 +27,5 @@ var x1 = StateT.execStateT,

(State.execState = (function() {
return y1(x1.apply(null, arguments));
var args = arguments;
return y1(x1.apply(null, args));
}));
(module.exports = State);

@@ -7,4 +7,4 @@ /*

var base = require("./base"),
liftA2 = base["liftA2"],
Applicative, Chain, Functor, Monad, Monoid, Semigroup, LiftInner, Transformer, __curry = (function(x, y) {
Applicative, Chain, Functor, Monad, Monoid, Semigroup, LiftInner, Transformer, liftA2 = base["liftA2"],
__curry = (function(x, y) {
return x.bind(null, y);

@@ -51,4 +51,4 @@ });

var y, m = this;
return m.chain(((y = m.of), (function(x) {
return y(f(x));
return m.chain(((y = m.of), (function(z) {
return y(f(z));
})));

@@ -72,4 +72,4 @@ })));

var y;
(outer.liftInner = liftInner(lift, ((y = inner.liftInner), (function(x) {
return lift(y(x));
(outer.liftInner = liftInner(lift, ((y = inner.liftInner), (function(z) {
return lift(y(z));
})), inner.liftInner));

@@ -82,4 +82,4 @@ }

var y;
(Instance.prototype.liftInner = liftInner(lift, ((y = m.lift), (function(x) {
return lift(y(x));
(Instance.prototype.liftInner = liftInner(lift, ((y = m.lift), (function(z) {
return lift(y(z));
})), m));

@@ -86,0 +86,0 @@ (Instance.liftInner = Instance.prototype.liftInner);

@@ -7,10 +7,10 @@ /*

var __o = require("../structure"),
Monad = __o["Monad"],
__o0 = require("../_tail"),
StateMonad = require("../spec/state"),
Codensity, Monad = __o["Monad"],
Monoid = __o["Monoid"],
Transformer = __o["Transformer"],
__o0 = require("../_tail"),
Tail = __o0["Tail"],
trampoline = __o0["trampoline"],
StateMonad = require("../spec/state"),
Codensity, runCodensity = (function(m, k) {
runCodensity = (function(m, k) {
return new(Tail)(m.run, k);

@@ -48,6 +48,5 @@ });

return new(Instance)((function(k) {
var y;
return c.chain(((y = trampoline), (function(x) {
return y(k(x));
})));
return c.chain((function(z) {
return trampoline(k(z));
}));
}));

@@ -58,6 +57,6 @@ }));

}));
var y = trampoline;
(Codensity.runCodensity = (function() {
return y(runCodensity.apply(null, arguments));
var args = arguments;
return trampoline(runCodensity.apply(null, args));
}));
(module.exports = Codensity);

@@ -7,16 +7,16 @@ /*

var __o = require("../_tail"),
Tail = __o["Tail"],
__o0 = require("../structure"),
ContMonad = require("../spec/cont"),
ContT, Tail = __o["Tail"],
trampoline = __o["trampoline"],
__o0 = require("../structure"),
Monad = __o0["Monad"],
Transformer = __o0["Transformer"],
ContMonad = require("../spec/cont"),
ContT, runContT = (function(m, k) {
runContT = (function(m, k) {
return new(Tail)(m.run, k);
});
(ContT = (function(m) {
var Instance = (function(run) {
var self = this;
(self.run = run);
});
var reify, Instance = (function(run) {
var self = this;
(self.run = run);
});
Monad(Instance, (function(x) {

@@ -38,9 +38,14 @@ return new(Instance)((function(k) {

return new(Instance)((function(k) {
var y;
return t.chain(((y = trampoline), (function(x) {
return y(k(x));
})));
return t.chain((function(z) {
return trampoline(k(z));
}));
}));
}));
ContMonad(Instance, (function(f) {
ContMonad(Instance, ((reify = (function(k) {
return (function(x) {
return new(Instance)((function(_) {
return k(x);
}));
});
})), (function(f) {
return new(Instance)((function(k) {

@@ -54,9 +59,9 @@ var m0 = f((function(x) {

}));
}));
})));
return Instance;
}));
var y = trampoline;
(ContT.runContT = (function() {
return y(runContT.apply(null, arguments));
var args = arguments;
return trampoline(runContT.apply(null, args));
}));
(module.exports = ContT);

@@ -7,3 +7,7 @@ /*

var __o = require("nu-stream")["stream"],
append = __o["append"],
UniqueT = require("./unique"),
__o0 = require("../structure"),
DContMonad = require("../spec/dcont"),
__o1 = require("../_tail"),
DContT, append = __o["append"],
cons = __o["cons"],

@@ -14,11 +18,7 @@ first = __o["first"],

NIL = __o["NIL"],
UniqueT = require("./unique"),
__o0 = require("../structure"),
Monad = __o0["Monad"],
Transformer = __o0["Transformer"],
DContMonad = require("../spec/dcont"),
__o1 = require("../_tail"),
Tail = __o1["Tail"],
trampoline = __o1["trampoline"],
DContT, x, y, Seg = (function(f) {
y, Seg = (function(f) {
var self = this;

@@ -31,14 +31,17 @@ (self.frame = f);

}),
empty = NIL,
push = cons,
pushSeq = append,
pushP = (function(t, k) {
return cons(new(P)(t), k);
}),
pushSeg = (function(f, k) {
return cons(new(Seg)(f), k);
}),
splitSeq = (function(t, k) {
if (isEmpty(k)) return [empty, empty];
if (isEmpty(k)) return [NIL, NIL];
var x = first(k),
xs = rest(k);
if (((x instanceof P) && (x.prompt === t))) return [empty, xs];
if (((x instanceof P) && (x.prompt === t))) return [NIL, xs];
var __o2 = splitSeq(t, xs),
a = __o2[0],
b = __o2[1];
return [push(x, a), b];
return [cons(x, a), b];
}),

@@ -48,5 +51,6 @@ unDContT = (function(m, k) {

}),
runDContT = ((x = trampoline), (y = UniqueT.runUniqueT), (function() {
var x0 = unDContT.apply(null, arguments);
return y(x(x0));
runDContT = ((y = UniqueT.runUniqueT), (function() {
var args = arguments,
z = unDContT.apply(null, args);
return y(trampoline(z));
}));

@@ -59,9 +63,9 @@ (DContT = (function(m) {

}),
appk = (function(k, x0) {
appk = (function(k, x) {
var c = k;
do {
if (((typeof c) === "function")) return M.of(c(x0));
if (((typeof c) === "function")) return M.of(c(x));
var top = first(c);
if ((top instanceof Seg)) {
var m0 = top.frame(x0),
var m0 = top.frame(x),
k0 = rest(c);

@@ -74,5 +78,5 @@ return new(Tail)(m0.run, k0);

});
Monad(Instance, (function(x0) {
Monad(Instance, (function(x) {
return new(Instance)((function(k) {
return appk(k, x0);
return appk(k, x);
}));

@@ -82,3 +86,3 @@ }), (function(f) {

return new(Instance)((function(k) {
var k0 = push(new(Seg)(f), k);
var k0 = cons(new(Seg)(f), k);
return new(Tail)(c.run, k0);

@@ -89,6 +93,6 @@ }));

return new(Instance)((function(k) {
var x0, y0;
var x;
return M.lift(t.map(trampoline))
.chain(((x0 = appk.bind(null, k)), (y0 = trampoline), (function(x1) {
return y0(x0(x1));
.chain(((x = appk.bind(null, k)), (function(z) {
return trampoline(x(z));
})));

@@ -98,9 +102,9 @@ }));

DContMonad(Instance, new(Instance)((function(k) {
var x0, y0;
return M.unique.chain(((x0 = appk.bind(null, k)), (y0 = trampoline), (function(x1) {
return y0(x0(x1));
var x;
return M.unique.chain(((x = appk.bind(null, k)), (function(z) {
return trampoline(x(z));
})));
})), (function(prompt, c) {
return new(Instance)((function(k) {
var k0 = push(new(P)(prompt), k);
var k0 = cons(new(P)(prompt), k);
return new(Tail)(c.run, k0);

@@ -111,5 +115,5 @@ }));

var __o2 = splitSeq(prompt, k),
x0 = __o2[0],
x = __o2[0],
xs = __o2[1],
m0 = f(x0);
m0 = f(x);
return new(Tail)(m0.run, xs);

@@ -119,3 +123,3 @@ }));

return new(Instance)((function(k) {
var k0 = pushSeq(subk, k);
var k0 = append(subk, k);
return new(Tail)(c.run, k0);

@@ -127,4 +131,4 @@ }));

(DContT.runDContT = (function(m, k) {
return runDContT(m, push(k, empty));
return runDContT(m, cons(k, NIL));
}));
(module.exports = DContT);

@@ -7,8 +7,22 @@ /*

var __o = require("../structure"),
Monad = __o["Monad"],
EitherMonad = require("../spec/either"),
StateMonad = require("../spec/state"),
EitherT, Monad = __o["Monad"],
Monoid = __o["Monoid"],
Transformer = __o["Transformer"],
EitherMonad = require("../spec/either"),
StateMonad = require("../spec/state"),
EitherT;
Right = (function(x) {
return ({
right: true,
x: x
});
}),
Left = (function(x) {
return ({
right: false,
x: x
});
}),
runEitherT = (function(x) {
return x.run;
});
(EitherT = (function(m) {

@@ -19,8 +33,8 @@ var x, x0, x1, Instance = (function(run) {

});
Monad(Instance, ((x = m.of), (function(x0) {
var x1 = ({
Monad(Instance, ((x = m.of), (function(z) {
var z0 = ({
right: true,
x: x0
x: z
}),
y = x(x1);
y = x(z0);
return new(Instance)(y);

@@ -30,4 +44,5 @@ })), (function(f) {

return new(Instance)(c.run.chain((function(__o0) {
var x1, right = __o0["right"],
x0 = __o0["x"];
var right = __o0["right"],
x0 = __o0["x"],
x1;
return (right ? ((x1 = f(x0)), x1.run) : m.of(({

@@ -61,8 +76,8 @@ right: false,

}));
EitherMonad(Instance, ((x1 = m.of), (function(x2) {
var x3 = ({
EitherMonad(Instance, ((x1 = m.of), (function(z) {
var z0 = ({
right: false,
x: x2
x: z
}),
y = x1(x3);
y = x1(z0);
return new(Instance)(y);

@@ -69,0 +84,0 @@ })), Instance.of);

@@ -7,9 +7,8 @@ /*

var __o = require("../structure"),
Monad = __o["Monad"],
Monoid = __o["Monoid"],
ErrorMonad = require("../spec/error"),
StateMonad = require("../spec/state"),
EitherT = require("./either"),
eitherT = EitherT["eitherT"],
ErrorT;
ErrorT, Monad = __o["Monad"],
Monoid = __o["Monoid"],
eitherT = EitherT["eitherT"];
(ErrorT = (function(m) {

@@ -16,0 +15,0 @@ var Instance = EitherT(m);

@@ -7,6 +7,6 @@ /*

var __o = require("../structure"),
Monad = __o["Monad"],
Identity, Monad = __o["Monad"],
Monoid = __o["Monoid"],
Transformer = __o["Transformer"],
Identity, runIdentityT = (function(x) {
runIdentityT = (function(x) {
return x.value;

@@ -19,10 +19,10 @@ });

});
Monad(Instance, ((y = m.of), (function(x) {
var y0 = y(x);
Monad(Instance, ((y = m.of), (function(z) {
var y0 = y(z);
return new(Instance)(y0);
})), (function(f) {
var c = this;
return new(Instance)(c.value.chain((function(x) {
var x0 = f(x);
return x0.value;
return new(Instance)(c.value.chain((function(z) {
var x = f(z);
return x.value;
})));

@@ -29,0 +29,0 @@ }));

@@ -7,5 +7,6 @@ /*

var __o = require("../base"),
liftM = __o["liftM"],
__o0 = require("../structure"),
StateMonad = require("../spec/state"),
ListT, liftM = __o["liftM"],
liftM2 = __o["liftM2"],
__o0 = require("../structure"),
Functor = __o0["Functor"],

@@ -15,4 +16,6 @@ Monoid = __o0["Monoid"],

Transformer = __o0["Transformer"],
StateMonad = require("../spec/state"),
ListT, map = (function(f, a) {
foldr = (function(f, z, a) {
return Array.prototype.reduceRight.call(a, f, z);
}),
map = (function(f, a) {
return Array.prototype.map.call(a, f);

@@ -22,2 +25,7 @@ }),

flatten = Function.prototype.apply.bind(Array.prototype.concat, []),
flip = (function(f) {
return (function(x, y) {
return f(y, x);
});
}),
flattenM = liftM.bind(null, flatten),

@@ -38,3 +46,4 @@ runListT = (function(x) {

mapM = (function() {
return sequence(map.apply(null, arguments));
var args = arguments;
return sequence(map.apply(null, args));
});

@@ -49,5 +58,5 @@ Monoid(Instance, new(Instance)(m.of([])), (function(b) {

var c = this;
return new(Instance)(flattenM(c.run.chain(mapM.bind(null, (function(x) {
var x0 = f0(x);
return x0.run;
return new(Instance)(flattenM(c.run.chain(mapM.bind(null, (function(z0) {
var x = f0(z0);
return x.run;
})))));

@@ -54,0 +63,0 @@ }));

@@ -7,13 +7,13 @@ /*

var __o = require("../structure"),
LiftInner = __o["LiftInner"],
__o0 = require("../base"),
map = __o0["map"],
Codensity = require("./codensity"),
StateI = require("./statei"),
StateT, CodensityProxy = (function(Instance, m) {
StateT, LiftInner = __o["LiftInner"],
map = __o0["map"],
CodensityProxy = (function(Instance, m) {
var X = Codensity(Instance),
x = X.lift,
y = Instance.lift;
(X.prototype.lift = (function(x0) {
return x(y(x0));
(X.prototype.lift = (function(z) {
return x(y(z));
}));

@@ -32,17 +32,17 @@ (X.lift = X.prototype.lift);

var x = StateT.runStateT,
y = map.bind(null, (function(__o1) {
var x0 = __o1["x"];
return x0;
y = map.bind(null, (function(x0) {
return x0.x;
}));
(StateT.evalStateT = (function() {
return y(x.apply(null, arguments));
var args = arguments;
return y(x.apply(null, args));
}));
var x0 = StateT.runStateT,
y0 = map.bind(null, (function(__o1) {
var s = __o1["s"];
return s;
y0 = map.bind(null, (function(x1) {
return x1.s;
}));
(StateT.execStateT = (function() {
return y0(x0.apply(null, arguments));
var args = arguments;
return y0(x0.apply(null, args));
}));
(module.exports = StateT);

@@ -7,9 +7,15 @@ /*

var __o = require("../structure"),
Monad = __o["Monad"],
__o0 = require("../base"),
StateMonad = require("../spec/state"),
StateT, Monad = __o["Monad"],
Monoid = __o["Monoid"],
Transformer = __o["Transformer"],
__o0 = require("../base"),
map = __o0["map"],
StateMonad = require("../spec/state"),
StateT, runStateT = (function(m, s) {
Pair = (function(x, s) {
return ({
x: x,
s: s
});
}),
runStateT = (function(m, s) {
return m.run(s);

@@ -77,17 +83,17 @@ });

var x = StateT.runStateT,
y = map.bind(null, (function(__o1) {
var x0 = __o1["x"];
return x0;
y = map.bind(null, (function(x0) {
return x0.x;
}));
(StateT.evalStateT = (function() {
return y(x.apply(null, arguments));
var args = arguments;
return y(x.apply(null, args));
}));
var x0 = StateT.runStateT,
y0 = map.bind(null, (function(__o1) {
var s = __o1["s"];
return s;
y0 = map.bind(null, (function(x1) {
return x1.s;
}));
(StateT.execStateT = (function() {
return y0(x0.apply(null, arguments));
var args = arguments;
return y0(x0.apply(null, args));
}));
(module.exports = StateT);

@@ -13,4 +13,5 @@ /*

(Unique.runUnique = (function() {
return y(x.apply(null, arguments));
var args = arguments;
return y(x.apply(null, args));
}));
(module.exports = Unique);
{
"name": "akh",
"version": "2.0.0",
"version": "2.0.1",
"description": "Monad and Monad Transformer Collection",

@@ -5,0 +5,0 @@ "author": "Matt Bierner",

@@ -18,34 +18,32 @@ # Akh

### Quick Example
Example is in [Khepri][khepri] but regular js works fine too.
```
with
import 'akh::list' List,
import 'akh::trans::state' StateT
in {
```js
const List = require('akh').list;
const StateT = require('akh').trans.state;
// Define a new monad using the state transformer on the list monad.
var M = StateT (List);
const M = StateT(List);
var run = StateT.runStateT \>> List.runList;
const run = (c, state) => List.runList(StateT.runStateT(c, state));
// Create a stateful computation
var c =
const c =
M.of(1) // simple value
// modify State
.chain(\x ->
M.modify \ s -> s + x + 'xyz')
// modify state
.chain(x =>
M.modify(s => s + x + 'xyz'))
// Branch states
.concat(
M.put('new_state').map(\ -> 3),
M.of 10,
M.put('new_state').map(_ => 3),
M.of(10),
M.get // get the current state)
// And operate on them
.map(_ +, 'aa');
.map(x => x + 'aa');
// Run the computation to get list of state value pairs
run(c, 'initial_state');
run(c, 'state');
[

@@ -66,3 +64,3 @@ {'x': '1aa', 's': 'state1xyz'},

```
```sh
$ npm install akh

@@ -75,3 +73,3 @@ ```

```
```js
requirejs.config({

@@ -108,3 +106,2 @@ paths: {

* ErrorT - `akh::error` - Error computation. (Monad, Functor, Applicative Functor)
* Trampoline - `akh::trampoline` Trampolined computation (Monad, Functor, Applicative Functor)
* Unique - `akh::unique` Get Unique int (Monad, Monoid, Functor, Applicative Functor)

@@ -125,3 +122,3 @@

```
```sh
# install khepri

@@ -128,0 +125,0 @@ $ npm install -g khepri

@@ -0,1 +1,2 @@

"use strict";
var Either = require('../index').either;

@@ -2,0 +3,0 @@

@@ -82,4 +82,2 @@ var State = require('../index').state;

exports.many_chain = function(test) {

@@ -86,0 +84,0 @@ var c = State.of(0);

@@ -77,1 +77,29 @@ var StateT = require('../index').trans.state;

exports.many_chain = function(test) {
var c = M.of(0);
for (var i = 0; i < 100000; ++i) {
c = c.map(function(x) {
return x + 1;
});
}
test.deepEqual(
runState(c, 's'),
[{'x': 100000, 's': 's'}]);
test.done();
};
exports.many_chain_inner = function(test) {
var f = function(x) {
if (x > 10000) return M.of(x);
return M.of(x + 1).chain(f);
}
test.deepEqual(
runState(f(0), 0),
[{'x': 10001, 's': 0}]);
test.done();
};
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