json-summary
Advanced tools
Comparing version 1.2.0 to 1.3.0
@@ -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 @@ |
@@ -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}"><${e}></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}"><${e}></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" |
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
52416
11
1364
2