Socket
Socket
Sign inDemoInstall

parsimmon

Package Overview
Dependencies
Maintainers
3
Versions
49
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

parsimmon - npm Package Compare versions

Comparing version 1.4.0 to 1.5.0

50

build/parsimmon.browser.js

@@ -119,2 +119,9 @@ /* global module, define */

// TODO: Switch to Array.isArray eventually.
function assertArray(x) {
if ({}.toString.call(x) !== '[object Array]') {
throw new Error('not an array: ' + x);
}
}
function assertNumber(x) {

@@ -305,2 +312,17 @@ if (typeof x !== 'number') {

_.trim = function(parser) {
return this.wrap(parser, parser);
};
_.wrap = function(leftParser, rightParser) {
return seqMap(
leftParser,
this,
rightParser,
function(left, middle) {
return middle;
}
);
};
_.thru = function(wrapper) {

@@ -351,2 +373,14 @@ return wrapper(this);

_.tie = function() {
return this.map(function(args) {
assertArray(args);
var s = '';
for (var i = 0; i < args.length; i++) {
assertString(args[i]);
s += args[i];
}
return s;
});
};
// equivalent to:

@@ -462,2 +496,10 @@ // _.times = function(min, max) {

_.sepBy = function(separator) {
return sepBy(this, separator);
};
_.sepBy1 = function(separator) {
return sepBy1(this, separator);
};
_.lookahead = function(x) {

@@ -613,2 +655,9 @@ return this.skip(lookahead(x));

// TODO: Improve error message using JSON.stringify eventually.
function range(begin, end) {
return test(function(ch) {
return begin <= ch && ch <= end;
}).desc(begin + '-' + end);
}
function takeWhile(predicate) {

@@ -727,2 +776,3 @@ assertFunction(predicate);

Parsimmon.oneOf = oneOf;
Parsimmon.range = range;
Parsimmon.optWhitespace = optWhitespace;

@@ -729,0 +779,0 @@ Parsimmon.Parser = Parsimmon;

2

build/parsimmon.browser.min.js

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

(function(n,t){if(typeof define==="function"&&define.amd){define([],t)}else if(typeof module==="object"&&module.exports){module.exports=t()}else{n.Parsimmon=t()}})(this,function(){"use strict";function n(t){if(!(this instanceof n)){return new n(t)}this._=t}function t(t){return t instanceof n}var r=n.prototype;function e(n,t){return{status:true,index:n,value:t,furthest:-1,expected:[]}}function u(n,t){return{status:false,index:-1,value:null,furthest:n,expected:[t]}}function a(n,t){if(!t){return n}if(n.furthest>t.furthest){return n}var r=n.furthest===t.furthest?i(n.expected,t.expected):t.expected;return{status:n.status,index:n.index,value:n.value,furthest:t.furthest,expected:r}}function i(n,t){var r=n.length;var e=t.length;if(r===0){return t}else if(e===0){return n}var u={};for(var a=0;a<r;a++){u[n[a]]=true}for(var i=0;i<e;i++){u[t[i]]=true}var o=[];for(var f in u){if(u.hasOwnProperty(f)){o.push(f)}}o.sort();return o}function o(n){if(!t(n)){throw new Error("not a parser: "+n)}}function f(n){if(typeof n!=="number"){throw new Error("not a number: "+n)}}function s(n){if(!(n instanceof RegExp)){throw new Error("not a regexp: "+n)}var t=k(n);for(var r=0;r<t.length;r++){var e=t.charAt(r);if(e!="i"&&e!="m"&&e!="u"){throw new Error('unsupported regexp flag "'+e+'": '+n)}}}function c(n){if(typeof n!=="function"){throw new Error("not a function: "+n)}}function l(n){if(typeof n!=="string"){throw new Error("not a string: "+n)}}function h(n){if(n.length===1){return n[0]}return"one of "+n.join(", ")}function v(n,t){var r=t.index;var e=r.offset;if(e===n.length){return", got the end of the input"}var u=e>0?"'...":"'";var a=n.length-e>12?"...'":"'";return" at line "+r.line+" column "+r.column+", got "+u+n.slice(e,e+12)+a}function p(n,t){return"expected "+h(t.expected)+v(n,t)}r.parse=function(n){if(typeof n!=="string"){throw new Error(".parse must be called with a string as its argument")}var t=this.skip(M)._(n,0);return t.status?{status:true,value:t.value}:{status:false,index:S(n,t.furthest),expected:t.expected}};r.tryParse=function(n){var t=this.parse(n);if(t.status){return t.value}else{var r=p(n,t);var e=new Error(r);e.type="ParsimmonError";e.result=t;throw e}};function d(){var t=[].slice.call(arguments);var r=t.length;for(var u=0;u<r;u+=1){o(t[u])}return n(function(n,u){var i;var o=new Array(r);for(var f=0;f<r;f+=1){i=a(t[f]._(n,u),i);if(!i.status){return i}o[f]=i.value;u=i.index}return a(e(u,o),i)})}function g(){var n=[].slice.call(arguments);if(n.length===0){throw new Error("seqMap needs at least one argument")}var t=n.pop();c(t);return d.apply(null,n).map(function(n){return t.apply(null,n)})}function m(n){var t={};for(var r in n){if({}.hasOwnProperty.call(n,r)){(function(r){var e=function(){return n[r](t)};t[r]=I(e)})(r)}}return t}function y(t){return n(t(e,u))}function x(){var t=[].slice.call(arguments);var r=t.length;if(r===0){return A("zero alternates")}for(var e=0;e<r;e+=1){o(t[e])}return n(function(n,r){var e;for(var u=0;u<t.length;u+=1){e=a(t[u]._(n,r),e);if(e.status)return e}return e})}function w(n,t){return E(n,t).or(b([]))}function E(n,t){o(n);o(t);var r=t.then(n).many();return n.chain(function(n){return r.map(function(t){return[n].concat(t)})})}r.or=function(n){return x(this,n)};r.thru=function(n){return n(this)};r.then=function(n){if(typeof n==="function"){throw new Error("chaining features of .then are no longer supported, use .chain instead")}o(n);return d(this,n).map(function(n){return n[1]})};r.many=function(){var t=this;return n(function(n,r){var u=[];var i=undefined;for(;;){i=a(t._(n,r),i);if(i.status){r=i.index;u.push(i.value)}else{return a(e(r,u),i)}}})};r.times=function(t,r){var u=this;if(arguments.length<2){r=t}f(t);f(r);return n(function(n,i){var o=[];var f=undefined;var s=undefined;for(var c=0;c<t;c+=1){f=u._(n,i);s=a(f,s);if(f.status){i=f.index;o.push(f.value)}else{return s}}for(;c<r;c+=1){f=u._(n,i);s=a(f,s);if(f.status){i=f.index;o.push(f.value)}else{break}}return a(e(i,o),s)})};r.result=function(n){return this.map(function(){return n})};r.atMost=function(n){return this.times(0,n)};r.atLeast=function(n){return g(this.times(n),this.many(),function(n,t){return n.concat(t)})};r.map=function(t){c(t);var r=this;return n(function(n,u){var i=r._(n,u);if(!i.status){return i}return a(e(i.index,t(i.value)),i)})};r["fantasy-land/map"]=r.map;r.skip=function(n){return d(this,n).map(function(n){return n[0]})};r.mark=function(){return g(C,this,C,function(n,t,r){return{start:n,value:t,end:r}})};r.node=function(n){return g(C,this,C,function(t,r,e){return{name:n,value:r,start:t,end:e}})};r.lookahead=function(n){return this.skip(z(n))};r.notFollowedBy=function(n){return this.skip(B(n))};r.desc=function(t){var r=this;return n(function(n,e){var u=r._(n,e);if(!u.status){u.expected=[t]}return u})};r.fallback=function(n){return this.or(b(n))};function _(t){l(t);var r="'"+t+"'";return n(function(n,a){var i=a+t.length;var o=n.slice(a,i);if(o===t){return e(i,o)}else{return u(a,r)}})}function k(n){var t=""+n;return t.slice(t.lastIndexOf("/")+1)}function O(n){return RegExp("^(?:"+n.source+")",k(n))}function P(t,r){s(t);if(arguments.length>=2){f(r)}else{r=0}var a=O(t);var i=""+t;return n(function(n,t){var o=a.exec(n.slice(t));if(o){var f=o[0];var s=o[r];if(s!=null){return e(t+f.length,s)}}return u(t,i)})}function b(t){return n(function(n,r){return e(r,t)})}function A(t){return n(function(n,r){return u(r,t)})}function z(r){if(t(r)){return n(function(n,t){var e=r._(n,t);e.index=t;e.value="";return e})}else if(typeof r==="string"){return z(_(r))}else if(r instanceof RegExp){return z(P(r))}throw new Error("not a string, regexp, or parser: "+r)}function B(t){o(t);return n(function(n,r){var a=t._(n,r);var i=n.slice(r,a.index);return a.status?u(r,'not "'+i+'"'):e(r,null)})}var F=n(function(n,t){if(t>=n.length){return u(t,"any character")}return e(t+1,n.charAt(t))});var q=n(function(n,t){return e(n.length,n.slice(t))});var M=n(function(n,t){if(t<n.length){return u(t,"EOF")}return e(t,null)});function R(t){c(t);return n(function(n,r){var a=n.charAt(r);if(r<n.length&&t(a)){return e(r+1,a)}else{return u(r,"a character matching "+t)}})}function j(n){return R(function(t){return n.indexOf(t)>=0})}function L(n){return R(function(t){return n.indexOf(t)<0})}function W(t){c(t);return n(function(n,r){var u=r;while(u<n.length&&t(n.charAt(u))){u++}return e(u,n.slice(r,u))})}function I(t,r){if(arguments.length<2){r=t;t=undefined}var e=n(function(n,t){e._=r()._;return e._(n,t)});if(t){return e.desc(t)}else{return e}}function S(n,t){var r=n.slice(0,t).split("\n");var e=r.length;var u=r[r.length-1].length+1;return{offset:t,line:e,column:u}}var C=n(function(n,t){return e(t,S(n,t))});function D(){return A("fantasy-land/empty")}r.concat=r.or;r["fantasy-land/concat"]=r.concat;r.empty=D;r["fantasy-land/empty"]=r.empty;r.of=b;r["fantasy-land/of"]=r.of;r.ap=function(n){return g(n,this,function(n,t){return n(t)})};r["fantasy-land/ap"]=r.ap;r.chain=function(t){var r=this;return n(function(n,e){var u=r._(n,e);if(!u.status){return u}var i=t(u.value);return a(i._(n,u.index),u)})};r["fantasy-land/chain"]=r.chain;var G=P(/[0-9]/).desc("a digit");var H=P(/[0-9]*/).desc("optional digits");var J=P(/[a-z]/i).desc("a letter");var K=P(/[a-z]*/i).desc("optional letters");var N=P(/\s*/).desc("optional whitespace");var Q=P(/\s+/).desc("whitespace");n.createLanguage=m;n.all=q;n.alt=x;n.any=F;n.custom=y;n.digit=G;n.digits=H;n.eof=M;n.fail=A;n.formatError=p;n.index=C;n.isParser=t;n.lazy=I;n.letter=J;n.letters=K;n.lookahead=z;n.notFollowedBy=B;n.makeFailure=u;n.makeSuccess=e;n.noneOf=L;n.oneOf=j;n.optWhitespace=N;n.Parser=n;n.regex=P;n.regexp=P;n.sepBy=w;n.sepBy1=E;n.seq=d;n.seqMap=g;n.string=_;n.succeed=b;n.takeWhile=W;n.test=R;n.whitespace=Q;n.empty=D;n["fantasy-land/empty"]=D;n.of=b;n["fantasy-land/of"]=b;return n});
(function(n,t){if(typeof define==="function"&&define.amd){define([],t)}else if(typeof module==="object"&&module.exports){module.exports=t()}else{n.Parsimmon=t()}})(this,function(){"use strict";function n(t){if(!(this instanceof n)){return new n(t)}this._=t}function t(t){return t instanceof n}var r=n.prototype;function e(n,t){return{status:true,index:n,value:t,furthest:-1,expected:[]}}function u(n,t){return{status:false,index:-1,value:null,furthest:n,expected:[t]}}function i(n,t){if(!t){return n}if(n.furthest>t.furthest){return n}var r=n.furthest===t.furthest?a(n.expected,t.expected):t.expected;return{status:n.status,index:n.index,value:n.value,furthest:t.furthest,expected:r}}function a(n,t){var r=n.length;var e=t.length;if(r===0){return t}else if(e===0){return n}var u={};for(var i=0;i<r;i++){u[n[i]]=true}for(var a=0;a<e;a++){u[t[a]]=true}var o=[];for(var f in u){if(u.hasOwnProperty(f)){o.push(f)}}o.sort();return o}function o(n){if(!t(n)){throw new Error("not a parser: "+n)}}function f(n){if({}.toString.call(n)!=="[object Array]"){throw new Error("not an array: "+n)}}function s(n){if(typeof n!=="number"){throw new Error("not a number: "+n)}}function c(n){if(!(n instanceof RegExp)){throw new Error("not a regexp: "+n)}var t=O(n);for(var r=0;r<t.length;r++){var e=t.charAt(r);if(e!="i"&&e!="m"&&e!="u"){throw new Error('unsupported regexp flag "'+e+'": '+n)}}}function l(n){if(typeof n!=="function"){throw new Error("not a function: "+n)}}function h(n){if(typeof n!=="string"){throw new Error("not a string: "+n)}}function v(n){if(n.length===1){return n[0]}return"one of "+n.join(", ")}function p(n,t){var r=t.index;var e=r.offset;if(e===n.length){return", got the end of the input"}var u=e>0?"'...":"'";var i=n.length-e>12?"...'":"'";return" at line "+r.line+" column "+r.column+", got "+u+n.slice(e,e+12)+i}function d(n,t){return"expected "+v(t.expected)+p(n,t)}r.parse=function(n){if(typeof n!=="string"){throw new Error(".parse must be called with a string as its argument")}var t=this.skip(M)._(n,0);return t.status?{status:true,value:t.value}:{status:false,index:D(n,t.furthest),expected:t.expected}};r.tryParse=function(n){var t=this.parse(n);if(t.status){return t.value}else{var r=d(n,t);var e=new Error(r);e.type="ParsimmonError";e.result=t;throw e}};function g(){var t=[].slice.call(arguments);var r=t.length;for(var u=0;u<r;u+=1){o(t[u])}return n(function(n,u){var a;var o=new Array(r);for(var f=0;f<r;f+=1){a=i(t[f]._(n,u),a);if(!a.status){return a}o[f]=a.value;u=a.index}return i(e(u,o),a)})}function m(){var n=[].slice.call(arguments);if(n.length===0){throw new Error("seqMap needs at least one argument")}var t=n.pop();l(t);return g.apply(null,n).map(function(n){return t.apply(null,n)})}function y(n){var t={};for(var r in n){if({}.hasOwnProperty.call(n,r)){(function(r){var e=function(){return n[r](t)};t[r]=C(e)})(r)}}return t}function x(t){return n(t(e,u))}function w(){var t=[].slice.call(arguments);var r=t.length;if(r===0){return B("zero alternates")}for(var e=0;e<r;e+=1){o(t[e])}return n(function(n,r){var e;for(var u=0;u<t.length;u+=1){e=i(t[u]._(n,r),e);if(e.status)return e}return e})}function E(n,t){return _(n,t).or(A([]))}function _(n,t){o(n);o(t);var r=t.then(n).many();return n.chain(function(n){return r.map(function(t){return[n].concat(t)})})}r.or=function(n){return w(this,n)};r.trim=function(n){return this.wrap(n,n)};r.wrap=function(n,t){return m(n,this,t,function(n,t){return t})};r.thru=function(n){return n(this)};r.then=function(n){if(typeof n==="function"){throw new Error("chaining features of .then are no longer supported, use .chain instead")}o(n);return g(this,n).map(function(n){return n[1]})};r.many=function(){var t=this;return n(function(n,r){var u=[];var a=undefined;for(;;){a=i(t._(n,r),a);if(a.status){r=a.index;u.push(a.value)}else{return i(e(r,u),a)}}})};r.tie=function(){return this.map(function(n){f(n);var t="";for(var r=0;r<n.length;r++){h(n[r]);t+=n[r]}return t})};r.times=function(t,r){var u=this;if(arguments.length<2){r=t}s(t);s(r);return n(function(n,a){var o=[];var f=undefined;var s=undefined;for(var c=0;c<t;c+=1){f=u._(n,a);s=i(f,s);if(f.status){a=f.index;o.push(f.value)}else{return s}}for(;c<r;c+=1){f=u._(n,a);s=i(f,s);if(f.status){a=f.index;o.push(f.value)}else{break}}return i(e(a,o),s)})};r.result=function(n){return this.map(function(){return n})};r.atMost=function(n){return this.times(0,n)};r.atLeast=function(n){return m(this.times(n),this.many(),function(n,t){return n.concat(t)})};r.map=function(t){l(t);var r=this;return n(function(n,u){var a=r._(n,u);if(!a.status){return a}return i(e(a.index,t(a.value)),a)})};r["fantasy-land/map"]=r.map;r.skip=function(n){return g(this,n).map(function(n){return n[0]})};r.mark=function(){return m(G,this,G,function(n,t,r){return{start:n,value:t,end:r}})};r.node=function(n){return m(G,this,G,function(t,r,e){return{name:n,value:r,start:t,end:e}})};r.sepBy=function(n){return E(this,n)};r.sepBy1=function(n){return _(this,n)};r.lookahead=function(n){return this.skip(z(n))};r.notFollowedBy=function(n){return this.skip(F(n))};r.desc=function(t){var r=this;return n(function(n,e){var u=r._(n,e);if(!u.status){u.expected=[t]}return u})};r.fallback=function(n){return this.or(A(n))};function k(t){h(t);var r="'"+t+"'";return n(function(n,i){var a=i+t.length;var o=n.slice(i,a);if(o===t){return e(a,o)}else{return u(i,r)}})}function O(n){var t=""+n;return t.slice(t.lastIndexOf("/")+1)}function b(n){return RegExp("^(?:"+n.source+")",O(n))}function P(t,r){c(t);if(arguments.length>=2){s(r)}else{r=0}var i=b(t);var a=""+t;return n(function(n,t){var o=i.exec(n.slice(t));if(o){var f=o[0];var s=o[r];if(s!=null){return e(t+f.length,s)}}return u(t,a)})}function A(t){return n(function(n,r){return e(r,t)})}function B(t){return n(function(n,r){return u(r,t)})}function z(r){if(t(r)){return n(function(n,t){var e=r._(n,t);e.index=t;e.value="";return e})}else if(typeof r==="string"){return z(k(r))}else if(r instanceof RegExp){return z(P(r))}throw new Error("not a string, regexp, or parser: "+r)}function F(t){o(t);return n(function(n,r){var i=t._(n,r);var a=n.slice(r,i.index);return i.status?u(r,'not "'+a+'"'):e(r,null)})}var j=n(function(n,t){if(t>=n.length){return u(t,"any character")}return e(t+1,n.charAt(t))});var q=n(function(n,t){return e(n.length,n.slice(t))});var M=n(function(n,t){if(t<n.length){return u(t,"EOF")}return e(t,null)});function R(t){l(t);return n(function(n,r){var i=n.charAt(r);if(r<n.length&&t(i)){return e(r+1,i)}else{return u(r,"a character matching "+t)}})}function L(n){return R(function(t){return n.indexOf(t)>=0})}function S(n){return R(function(t){return n.indexOf(t)<0})}function W(n,t){return R(function(r){return n<=r&&r<=t}).desc(n+"-"+t)}function I(t){l(t);return n(function(n,r){var u=r;while(u<n.length&&t(n.charAt(u))){u++}return e(u,n.slice(r,u))})}function C(t,r){if(arguments.length<2){r=t;t=undefined}var e=n(function(n,t){e._=r()._;return e._(n,t)});if(t){return e.desc(t)}else{return e}}function D(n,t){var r=n.slice(0,t).split("\n");var e=r.length;var u=r[r.length-1].length+1;return{offset:t,line:e,column:u}}var G=n(function(n,t){return e(t,D(n,t))});function H(){return B("fantasy-land/empty")}r.concat=r.or;r["fantasy-land/concat"]=r.concat;r.empty=H;r["fantasy-land/empty"]=r.empty;r.of=A;r["fantasy-land/of"]=r.of;r.ap=function(n){return m(n,this,function(n,t){return n(t)})};r["fantasy-land/ap"]=r.ap;r.chain=function(t){var r=this;return n(function(n,e){var u=r._(n,e);if(!u.status){return u}var a=t(u.value);return i(a._(n,u.index),u)})};r["fantasy-land/chain"]=r.chain;var J=P(/[0-9]/).desc("a digit");var K=P(/[0-9]*/).desc("optional digits");var N=P(/[a-z]/i).desc("a letter");var Q=P(/[a-z]*/i).desc("optional letters");var T=P(/\s*/).desc("optional whitespace");var U=P(/\s+/).desc("whitespace");n.createLanguage=y;n.all=q;n.alt=w;n.any=j;n.custom=x;n.digit=J;n.digits=K;n.eof=M;n.fail=B;n.formatError=d;n.index=G;n.isParser=t;n.lazy=C;n.letter=N;n.letters=Q;n.lookahead=z;n.notFollowedBy=F;n.makeFailure=u;n.makeSuccess=e;n.noneOf=S;n.oneOf=L;n.range=W;n.optWhitespace=T;n.Parser=n;n.regex=P;n.regexp=P;n.sepBy=E;n.sepBy1=_;n.seq=g;n.seqMap=m;n.string=k;n.succeed=A;n.takeWhile=I;n.test=R;n.whitespace=U;n.empty=H;n["fantasy-land/empty"]=H;n.of=A;n["fantasy-land/of"]=A;return n});

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

## version 1.5.0 (2017-06-17)
* Adds `parser.sepBy(separator)` alias for `Parsimmon.sepBy(parser, separator)`
* Adds `parser.sepBy1(separator)` alias for `Parsimmon.sepBy1(parser, separator)`
* Adds `Parsimmon.range(begin, end)`
* Adds `parser.wrap(before, after)`
* Adds `parser.trim(anotherParser)`
* Adds `parser.tie()`
## version 1.4.0 (2017-06-05)
* Adds `Parsimmon.createLanguage(parsers)`

@@ -3,0 +13,0 @@ * Adds `parser.thru(wrapper)`

{
"name": "parsimmon",
"version": "1.4.0",
"version": "1.5.0",
"description": "A monadic LL(infinity) parser combinator library",

@@ -36,3 +36,3 @@ "keywords": [

"build:browser.min": "uglifyjs --mangle < src/parsimmon.js > build/parsimmon.browser.min.js",
"prepublish": "npm run test && npm run build",
"prepublishOnly": "npm run test && npm run build",
"lint": "eslint .",

@@ -39,0 +39,0 @@ "lint:fix": "eslint --fix .",

@@ -119,2 +119,9 @@ /* global module, define */

// TODO: Switch to Array.isArray eventually.
function assertArray(x) {
if ({}.toString.call(x) !== '[object Array]') {
throw new Error('not an array: ' + x);
}
}
function assertNumber(x) {

@@ -305,2 +312,17 @@ if (typeof x !== 'number') {

_.trim = function(parser) {
return this.wrap(parser, parser);
};
_.wrap = function(leftParser, rightParser) {
return seqMap(
leftParser,
this,
rightParser,
function(left, middle) {
return middle;
}
);
};
_.thru = function(wrapper) {

@@ -351,2 +373,14 @@ return wrapper(this);

_.tie = function() {
return this.map(function(args) {
assertArray(args);
var s = '';
for (var i = 0; i < args.length; i++) {
assertString(args[i]);
s += args[i];
}
return s;
});
};
// equivalent to:

@@ -462,2 +496,10 @@ // _.times = function(min, max) {

_.sepBy = function(separator) {
return sepBy(this, separator);
};
_.sepBy1 = function(separator) {
return sepBy1(this, separator);
};
_.lookahead = function(x) {

@@ -613,2 +655,9 @@ return this.skip(lookahead(x));

// TODO: Improve error message using JSON.stringify eventually.
function range(begin, end) {
return test(function(ch) {
return begin <= ch && ch <= end;
}).desc(begin + '-' + end);
}
function takeWhile(predicate) {

@@ -727,2 +776,3 @@ assertFunction(predicate);

Parsimmon.oneOf = oneOf;
Parsimmon.range = range;
Parsimmon.optWhitespace = optWhitespace;

@@ -729,0 +779,0 @@ Parsimmon.Parser = Parsimmon;

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