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

json-summary

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

json-summary - npm Package Compare versions

Comparing version 1.2.0 to 1.3.0

bin/cli.js

5

CHANGELOG.md

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

## 1.3.0 (May 19, 2020)
- Add a basic CLI to run on a JSON file or pipe text into ([@moos](https://github.com/moos) in [#9](https://github.com/AndrewTBurks/json-summary/pull/9))
- Add an asJson flag to print a summary in a JSON object format ([@moos](https://github.com/moos) in [#9](https://github.com/AndrewTBurks/json-summary/pull/11))
## 1.2.0 (May 17, 2020)

@@ -2,0 +7,0 @@

95

dist/json-summary-node.js

@@ -343,7 +343,14 @@ 'use strict';

asText = false,
asJson = false,
} = defaults
) {
const sep = asText ? "" : ", ";
let wasArray,
prevLevel = 0;
// start at 0 indentation
if (asText) {
return printSummaryLevel(summary, 0);
} else if (asJson) {
return JSON.parse(printSummaryLevel(summary, 0));
} else {

@@ -363,8 +370,9 @@ return (

} else if (data.type === "Object") {
string += "{";
if (!asText) string += "{";
let keys = data.keys.map((k) => `'${k}'`).join(", ");
let keys = data.keys.map((k) => `'${k}'`).join(sep);
string += wrap(keys, "keys");
if (l === prevLevel) wasArray = false;
let childStrings = data.keys.map((key) => {

@@ -383,11 +391,11 @@ return printSummaryLevel(data.items[key], l + 1);

if (data.count > 1) {
if (asText) {
childStringCombined +=
((data.items[data.keys[i]].count / data.count) * 100).toFixed(
2
) + "% ";
let pct = (
(data.items[data.keys[i]].count / data.count) *
100
).toFixed(2);
if (asJson) childStringCombined += '"';
if (asText || asJson) {
childStringCombined += pct + "% ";
} else {
childStringCombined += htmlPercentageBar(
(data.items[data.keys[i]].count / data.count) * 100
);
childStringCombined += htmlPercentageBar(pct);
}

@@ -399,3 +407,3 @@ }

if (i < data.keys.length - 1) {
childStringCombined += ",";
childStringCombined += sep;
}

@@ -411,3 +419,3 @@

string += "}";
if (!asText) string += "}";

@@ -418,14 +426,24 @@ string = wrap(string, "layer");

// string += `[ ${data.length ? `(${data.length}×)` : "∅"} `;
string +=
let needsNewlines =
data.length &&
(data.items["0"].type === "Object" || data.items["0"].type === "Array");
let lenStr =
wrap(
data.count > 1 ? "μ = " + data.length.toFixed(1) : data.length,
"length"
) + ` [`;
) + (!asJson ? ` [` : "");
if (data.count > 1) lenStr = lenStr.slice(1); // don't put leading quote on the 'mu' = expression
if (!needsNewlines || !asJson) string += lenStr;
if (data.length) {
let needsNewlines =
data.items["0"].type === "Object" || data.items["0"].type === "Array";
if (needsNewlines) {
string += "\n" + indentation$1.repeat((l + 1) * indentCount$1);
if (needsNewlines && asJson) {
data.items["0"].items["<summary>"] = {
type: "array",
example: lenStr.replace(/"/, ""),
keys: [],
items: {},
count: data.items["0"].count,
};
data.items["0"].keys.unshift("<summary>");
}

@@ -440,3 +458,3 @@

string += "]";
if (!asJson) string += "]";

@@ -452,3 +470,3 @@ // string = wrapInHTML(string, "layer");

if (showExampleValue$1) {
string += wrap(data.example, "value", data.type);
string += wrap(data.example, "example", data.type);
data.count > 1 &&

@@ -458,4 +476,6 @@ data.range &&

}
// if (l !== prevLevel) wasArray = false;
}
prevLevel = l;
return string;

@@ -467,2 +487,4 @@ }

return wrapAsText(value, role);
} else if (asJson) {
return wrapAsJson(value, role);
} else {

@@ -501,2 +523,3 @@ return wrapInHTML(value, role, type);

tags.example = tags.value;
return tags[role]();

@@ -513,3 +536,2 @@ }

return value;
// case "value":
// case "keys":

@@ -520,2 +542,4 @@ // case "range":

// }]`;
case "value":
case "example":
case "name":

@@ -530,6 +554,27 @@ case "child":

function wrapAsJson(value, role) {
const startSep = wasArray ? " " : '"';
const endSep = showExampleValue$1 ? " " : '"';
switch (role) {
case "example":
return `${value}"`;
case "type":
return `${startSep}<${value}>${endSep}`;
case "length":
wasArray = true;
return `"(${value})`;
case "layer":
case "value":
case "child":
return value;
case "name":
case "circular":
return ` "${value}"`;
default:
return "";
}
}
function htmlPercentageBar(percentage) {
return `<div class="json-summary json-summary-bar" title="${percentage.toFixed(
2
)}%"><div class="json-summary json-summary-percentage" style="width:${percentage}%;"></div></div>`;
return `<div class="json-summary json-summary-bar" title="${percentage}%"><div class="json-summary json-summary-percentage" style="width:${percentage}%;"></div></div>`;
}

@@ -536,0 +581,0 @@ }

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

// https://andrewtburks.dev/json-summary v1.2.0 Copyright 2020 Andrew Burks
// https://andrewtburks.dev/json-summary v1.3.0 Copyright 2020 Andrew Burks
(function (global, factory) {

@@ -348,7 +348,14 @@ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :

asText = false,
asJson = false,
} = defaults
) {
const sep = asText ? "" : ", ";
let wasArray,
prevLevel = 0;
// start at 0 indentation
if (asText) {
return printSummaryLevel(summary, 0);
} else if (asJson) {
return JSON.parse(printSummaryLevel(summary, 0));
} else {

@@ -368,8 +375,9 @@ return (

} else if (data.type === "Object") {
string += "{";
if (!asText) string += "{";
let keys = data.keys.map((k) => `'${k}'`).join(", ");
let keys = data.keys.map((k) => `'${k}'`).join(sep);
string += wrap(keys, "keys");
if (l === prevLevel) wasArray = false;
let childStrings = data.keys.map((key) => {

@@ -388,11 +396,11 @@ return printSummaryLevel(data.items[key], l + 1);

if (data.count > 1) {
if (asText) {
childStringCombined +=
((data.items[data.keys[i]].count / data.count) * 100).toFixed(
2
) + "% ";
let pct = (
(data.items[data.keys[i]].count / data.count) *
100
).toFixed(2);
if (asJson) childStringCombined += '"';
if (asText || asJson) {
childStringCombined += pct + "% ";
} else {
childStringCombined += htmlPercentageBar(
(data.items[data.keys[i]].count / data.count) * 100
);
childStringCombined += htmlPercentageBar(pct);
}

@@ -404,3 +412,3 @@ }

if (i < data.keys.length - 1) {
childStringCombined += ",";
childStringCombined += sep;
}

@@ -416,3 +424,3 @@

string += "}";
if (!asText) string += "}";

@@ -423,14 +431,24 @@ string = wrap(string, "layer");

// string += `[ ${data.length ? `(${data.length}×)` : "∅"} `;
string +=
let needsNewlines =
data.length &&
(data.items["0"].type === "Object" || data.items["0"].type === "Array");
let lenStr =
wrap(
data.count > 1 ? "μ = " + data.length.toFixed(1) : data.length,
"length"
) + ` [`;
) + (!asJson ? ` [` : "");
if (data.count > 1) lenStr = lenStr.slice(1); // don't put leading quote on the 'mu' = expression
if (!needsNewlines || !asJson) string += lenStr;
if (data.length) {
let needsNewlines =
data.items["0"].type === "Object" || data.items["0"].type === "Array";
if (needsNewlines) {
string += "\n" + indentation$1.repeat((l + 1) * indentCount$1);
if (needsNewlines && asJson) {
data.items["0"].items["<summary>"] = {
type: "array",
example: lenStr.replace(/"/, ""),
keys: [],
items: {},
count: data.items["0"].count,
};
data.items["0"].keys.unshift("<summary>");
}

@@ -445,3 +463,3 @@

string += "]";
if (!asJson) string += "]";

@@ -457,3 +475,3 @@ // string = wrapInHTML(string, "layer");

if (showExampleValue$1) {
string += wrap(data.example, "value", data.type);
string += wrap(data.example, "example", data.type);
data.count > 1 &&

@@ -463,4 +481,6 @@ data.range &&

}
// if (l !== prevLevel) wasArray = false;
}
prevLevel = l;
return string;

@@ -472,2 +492,4 @@ }

return wrapAsText(value, role);
} else if (asJson) {
return wrapAsJson(value, role);
} else {

@@ -506,2 +528,3 @@ return wrapInHTML(value, role, type);

tags.example = tags.value;
return tags[role]();

@@ -518,3 +541,2 @@ }

return value;
// case "value":
// case "keys":

@@ -525,2 +547,4 @@ // case "range":

// }]`;
case "value":
case "example":
case "name":

@@ -535,6 +559,27 @@ case "child":

function wrapAsJson(value, role) {
const startSep = wasArray ? " " : '"';
const endSep = showExampleValue$1 ? " " : '"';
switch (role) {
case "example":
return `${value}"`;
case "type":
return `${startSep}<${value}>${endSep}`;
case "length":
wasArray = true;
return `"(${value})`;
case "layer":
case "value":
case "child":
return value;
case "name":
case "circular":
return ` "${value}"`;
default:
return "";
}
}
function htmlPercentageBar(percentage) {
return `<div class="json-summary json-summary-bar" title="${percentage.toFixed(
2
)}%"><div class="json-summary json-summary-percentage" style="width:${percentage}%;"></div></div>`;
return `<div class="json-summary json-summary-bar" title="${percentage}%"><div class="json-summary json-summary-percentage" style="width:${percentage}%;"></div></div>`;
}

@@ -541,0 +586,0 @@ }

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

// https://andrewtburks.dev/json-summary v1.2.0 Copyright 2020 Andrew Burks
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).jsonSummary=t()}(this,function(){"use strict";let e=10,t=" ",n=2,r=!0,s=!1,a="dark";var l=Object.freeze({__proto__:null,arraySampleCount:e,indentation:t,indentCount:n,showExampleValue:r,startExpanded:s,theme:a});return{defaults:l,summarize:function(t,{arraySampleCount:n=e}=l){let r=function e(t){let r={Array:t=>{let r={count:1,type:"Array",length:t.length};if(t.length)if(n>0){let a="all"===n?t.length:Math.min(n,t.length),l={};for(;a>0;){let e=Math.floor(Math.random()*t.length);l.hasOwnProperty(e)||(l[e]=t[e],a--)}let u=[];for(let t of Object.entries(l)){let n=t[1];u.push(e(n))}let o=s(u);r.items={0:o}}else r.items={0:e(t[0])};else r.items={0:void 0};return r},Object:t=>{let n={count:1,type:"Object",keys:Object.keys(t),items:{}};for(let r of n.keys)n.items[r]=e(t[r]);return n},Other:e=>{let t;return"string"==typeof e?t=[e.length,e.length]:"number"==typeof e&&(t=[e,e]),{type:typeof e,example:e,count:1,range:t}}},a="Other";return t instanceof Array?a="Array":t instanceof Object&&(a="Object"),t&&t["*snippets_mark*"]?{type:a,circular:!0}:("Other"!==a&&(Object.defineProperty(t,"*snippets_mark*",{enumerable:!1,writable:!0,configurable:!0}),t["*snippets_mark*"]=!0),r[a](t))}(t);return function e(t){if(t&&t["*snippets_mark*"])if(delete t["*snippets_mark*"],t instanceof Array&&t.length)t.forEach(t=>e(t));else if(t instanceof Object)for(let n of Object.keys(t))e(t[n])}(t),r;function s(e){let t={Array:!0,Object:!0,boolean:!0,string:!0,number:!0},n=e.filter(e=>t[e.type]);if(n.length){let e=n[0].type;return function(e,t){return e=e.filter(e=>e.type===t),{string:function(e){let t=e.reduce((e,t)=>Math.min(e,t.range[0]),1/0),n=e.reduce((e,t)=>Math.max(e,t.range[1]),-1/0);return{type:"string",example:e[0].example,range:[t,n],count:e.reduce((e,t)=>e+t.count,0)}},number:function(e){let t=e.reduce((e,t)=>Math.min(e,t.range[0]),1/0),n=e.reduce((e,t)=>Math.max(e,t.range[1]),-1/0);return{type:"number",example:e[0].example,range:[t,n],count:e.reduce((e,t)=>e+t.count,0)}},boolean:function(e){return{type:"boolean",example:e[0].example,count:e.reduce((e,t)=>e+t.count,0)}},Object:function(e){let t={};for(let n of e)if(!n.circular)for(let e of n.keys)!t[e]&&(t[e]=[]),t[e].push(n.items[e]);let n={type:"Object",keys:[],items:{},count:e.length};for(let e of Object.keys(t))n.keys.push(e),n.items[e]=s(t[e]);return n},Array:function(e){let t=s(e.map(e=>e.items[0]).filter(e=>e));return{count:e.length,items:{0:t},length:t.count/e.length,type:"Array"}}}[t](e)}(n.filter(t=>t.type===e),e)}return{count:0}}},printSummary:function(e,{indentation:u=t,indentCount:o=n,showExampleValue:c=r,startExpanded:m=s,theme:i=a,asText:y=!1}=l){return y?p(e,0):`<div class="theme ${i}"><div class='json-summary-wrapper'>`+p(e,0)+"<div></div>";function p(e,t){let n="";if(e.circular)n+=f("(circular reference)","circular");else if("Object"===e.type){n+="{",n+=f(e.keys.map(e=>`'${e}'`).join(", "),"keys");let s=e.keys.map(n=>p(e.items[n],t+1));if(s.length){let a="\n";for(let n=0;n<e.keys.length;n++)a+=u.repeat((t+1)*o),a+=f(e.keys[n],"name")+": ",e.count>1&&(a+=y?(e.items[e.keys[n]].count/e.count*100).toFixed(2)+"% ":`<div class="json-summary json-summary-bar" title="${(r=e.items[e.keys[n]].count/e.count*100).toFixed(2)}%"><div class="json-summary json-summary-percentage" style="width:${r}%;"></div></div>`),a+=s[n],n<e.keys.length-1&&(a+=","),a+="\n";n+=f(a+=u.repeat(t*o),"child")}n=f(n+="}","layer")}else if("Array"===e.type){if(n+=f(e.count>1?"μ = "+e.length.toFixed(1):e.length,"length")+" [",e.length){let r="Object"===e.items[0].type||"Array"===e.items[0].type;r&&(n+="\n"+u.repeat((t+1)*o)),n+=p(e.items[0],t+1,e.count),r&&(n+="\n"+u.repeat(t*o))}n+="]"}else null==e.example||null==e.example?n+=f("?","type"):n+=f(e.type,"type"),c&&(n+=f(e.example,"value",e.type),e.count>1&&e.range&&(n+=f(e.range,"range",e.type)));var r;return n}function f(e,t,n){return y?function(e,t){switch(t){case"type":return`<${e}>`;case"length":return`(${e})`;case"layer":return e;case"name":case"child":case"circular":return` ${e}`;default:return""}}(e,t):function(e,t,n){return{type:()=>`<span class="json-summary json-summary-type json-summary-type-${e}">&lt;${e}&gt;</span>`,value:()=>`<span class="json-summary json-summary-value json-summary-value-${n}">${e}</span>`,range:()=>`<span class="json-summary json-summary-range json-summary-range-${n}">[${e[0]}, ${e[1]}]</span>`,name:()=>`<span class="json-summary json-summary-name">${e}</span>`,length:()=>`<span class="json-summary json-summary-length">(${e})</span>`,circular:()=>`<span class="json-summary json-summary-circular">${e}</span>`,layer:()=>`<span class="json-summary json-summary-checkbox ${m?"checked":""}">\n <input type="checkbox" ${m?"checked":""}>\n <span class="json-summary-checkboxmarker" onclick="(function(me){\n me.parentNode.classList.toggle('checked');\n })(this)"></span>\n </span><div class="json-summary json-summary-layer">${e}</div>`,child:()=>`<div class="json-summary json-summary-child">${e}</div>`,keys:()=>`<span class="json-summary json-summary-keys">${e}</span>`}[t]()}(e,t,n)}}}});
// https://andrewtburks.dev/json-summary v1.3.0 Copyright 2020 Andrew Burks
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).jsonSummary=t()}(this,function(){"use strict";let e=10,t=" ",n=2,r=!0,s=!1,a="dark";var l=Object.freeze({__proto__:null,arraySampleCount:e,indentation:t,indentCount:n,showExampleValue:r,startExpanded:s,theme:a});return{defaults:l,summarize:function(t,{arraySampleCount:n=e}=l){let r=function e(t){let r={Array:t=>{let r={count:1,type:"Array",length:t.length};if(t.length)if(n>0){let a="all"===n?t.length:Math.min(n,t.length),l={};for(;a>0;){let e=Math.floor(Math.random()*t.length);l.hasOwnProperty(e)||(l[e]=t[e],a--)}let u=[];for(let t of Object.entries(l)){let n=t[1];u.push(e(n))}let c=s(u);r.items={0:c}}else r.items={0:e(t[0])};else r.items={0:void 0};return r},Object:t=>{let n={count:1,type:"Object",keys:Object.keys(t),items:{}};for(let r of n.keys)n.items[r]=e(t[r]);return n},Other:e=>{let t;return"string"==typeof e?t=[e.length,e.length]:"number"==typeof e&&(t=[e,e]),{type:typeof e,example:e,count:1,range:t}}},a="Other";return t instanceof Array?a="Array":t instanceof Object&&(a="Object"),t&&t["*snippets_mark*"]?{type:a,circular:!0}:("Other"!==a&&(Object.defineProperty(t,"*snippets_mark*",{enumerable:!1,writable:!0,configurable:!0}),t["*snippets_mark*"]=!0),r[a](t))}(t);return function e(t){if(t&&t["*snippets_mark*"])if(delete t["*snippets_mark*"],t instanceof Array&&t.length)t.forEach(t=>e(t));else if(t instanceof Object)for(let n of Object.keys(t))e(t[n])}(t),r;function s(e){let t={Array:!0,Object:!0,boolean:!0,string:!0,number:!0},n=e.filter(e=>t[e.type]);if(n.length){let e=n[0].type;return function(e,t){return e=e.filter(e=>e.type===t),{string:function(e){let t=e.reduce((e,t)=>Math.min(e,t.range[0]),1/0),n=e.reduce((e,t)=>Math.max(e,t.range[1]),-1/0);return{type:"string",example:e[0].example,range:[t,n],count:e.reduce((e,t)=>e+t.count,0)}},number:function(e){let t=e.reduce((e,t)=>Math.min(e,t.range[0]),1/0),n=e.reduce((e,t)=>Math.max(e,t.range[1]),-1/0);return{type:"number",example:e[0].example,range:[t,n],count:e.reduce((e,t)=>e+t.count,0)}},boolean:function(e){return{type:"boolean",example:e[0].example,count:e.reduce((e,t)=>e+t.count,0)}},Object:function(e){let t={};for(let n of e)if(!n.circular)for(let e of n.keys)!t[e]&&(t[e]=[]),t[e].push(n.items[e]);let n={type:"Object",keys:[],items:{},count:e.length};for(let e of Object.keys(t))n.keys.push(e),n.items[e]=s(t[e]);return n},Array:function(e){let t=s(e.map(e=>e.items[0]).filter(e=>e));return{count:e.length,items:{0:t},length:t.count/e.length,type:"Array"}}}[t](e)}(n.filter(t=>t.type===e),e)}return{count:0}}},printSummary:function(e,{indentation:u=t,indentCount:c=n,showExampleValue:m=r,startExpanded:o=s,theme:i=a,asText:y=!1,asJson:p=!1}=l){const f=y?"":", ";let h,d=0;return y?g(e,0):p?JSON.parse(g(e,0)):`<div class="theme ${i}"><div class='json-summary-wrapper'>`+g(e,0)+"<div></div>";function g(e,t){let n="";if(e.circular)n+=j("(circular reference)","circular");else if("Object"===e.type){y||(n+="{"),n+=j(e.keys.map(e=>`'${e}'`).join(f),"keys"),t===d&&(h=!1);let s=e.keys.map(n=>g(e.items[n],t+1));if(s.length){let a="\n";for(let n=0;n<e.keys.length;n++){if(a+=u.repeat((t+1)*c),a+=j(e.keys[n],"name")+": ",e.count>1){let t=(e.items[e.keys[n]].count/e.count*100).toFixed(2);p&&(a+='"'),a+=y||p?t+"% ":`<div class="json-summary json-summary-bar" title="${r=t}%"><div class="json-summary json-summary-percentage" style="width:${r}%;"></div></div>`}a+=s[n],n<e.keys.length-1&&(a+=f),a+="\n"}n+=j(a+=u.repeat(t*c),"child")}y||(n+="}"),n=j(n,"layer")}else if("Array"===e.type){let r=e.length&&("Object"===e.items[0].type||"Array"===e.items[0].type),s=j(e.count>1?"μ = "+e.length.toFixed(1):e.length,"length")+(p?"":" [");e.count>1&&(s=s.slice(1)),r&&p||(n+=s),e.length&&(r&&p&&(e.items[0].items["<summary>"]={type:"array",example:s.replace(/"/,""),keys:[],items:{},count:e.items[0].count},e.items[0].keys.unshift("<summary>")),n+=g(e.items[0],t+1,e.count),r&&(n+="\n"+u.repeat(t*c))),p||(n+="]")}else null==e.example||null==e.example?n+=j("?","type"):n+=j(e.type,"type"),m&&(n+=j(e.example,"example",e.type),e.count>1&&e.range&&(n+=j(e.range,"range",e.type)));var r;return d=t,n}function j(e,t,n){return y?function(e,t){switch(t){case"type":return`<${e}>`;case"length":return`(${e})`;case"layer":return e;case"value":case"example":case"name":case"child":case"circular":return` ${e}`;default:return""}}(e,t):p?function(e,t){const n=h?" ":'"',r=m?" ":'"';switch(t){case"example":return`${e}"`;case"type":return`${n}<${e}>${r}`;case"length":return h=!0,`"(${e})`;case"layer":case"value":case"child":return e;case"name":case"circular":return` "${e}"`;default:return""}}(e,t):function(e,t,n){let r={type:()=>`<span class="json-summary json-summary-type json-summary-type-${e}">&lt;${e}&gt;</span>`,value:()=>`<span class="json-summary json-summary-value json-summary-value-${n}">${e}</span>`,range:()=>`<span class="json-summary json-summary-range json-summary-range-${n}">[${e[0]}, ${e[1]}]</span>`,name:()=>`<span class="json-summary json-summary-name">${e}</span>`,length:()=>`<span class="json-summary json-summary-length">(${e})</span>`,circular:()=>`<span class="json-summary json-summary-circular">${e}</span>`,layer:()=>`<span class="json-summary json-summary-checkbox ${o?"checked":""}">\n <input type="checkbox" ${o?"checked":""}>\n <span class="json-summary-checkboxmarker" onclick="(function(me){\n me.parentNode.classList.toggle('checked');\n })(this)"></span>\n </span><div class="json-summary json-summary-layer">${e}</div>`,child:()=>`<div class="json-summary json-summary-child">${e}</div>`,keys:()=>`<span class="json-summary json-summary-keys">${e}</span>`};return r.example=r.value,r[t]()}(e,t,n)}}}});
{
"name": "json-summary",
"version": "1.2.0",
"version": "1.3.0",
"description": "A simple JSON summarizer to extract the structure from a JSON object",

@@ -12,2 +12,3 @@ "keywords": [

"main": "dist/json-summary-node.js",
"bin": "bin/cli.js",
"module": "index.js",

@@ -18,8 +19,9 @@ "browser": "dist/json-summary.js",

"/dist",
"/bin",
"index.js"
],
"scripts": {
"lint": "eslint -c .eslintrc.json 'index.js' 'src/**'",
"lint": "eslint -c .eslintrc.json index.js src/**",
"jest": "jest",
"test": "npm run lint && jest --coverage --coverageReporters=text-lcov",
"test": "npm run lint && jest",
"prepublish": "npm run build && npm test",

@@ -26,0 +28,0 @@ "build": "rollup -c && cp dist/json-summary.js docs/json-summary.js && sass style/main.scss dist/summarizer.css && cp dist/summarizer.css docs/summarizer.css"

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