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 0.1.5 to 0.2.0

__tests__/index.test.js

245

dist/json-summary.js

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

// https://andrewtburks.dev/json-summary v0.1.5 Copyright 2019 Andrew Burks
// https://andrewtburks.dev/json-summary v0.2.0 Copyright 2019 Andrew Burks
(function (global, factory) {

@@ -9,3 +9,13 @@ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :

const summarizer = (function() {
let defaultOptions = {
arraySampleCount: 10,
indentation: " ", // or "\t"
indentCount: 2,
showExampleValue: true,
startExpanded: false
};
// summarizer utility class
return function({
arraySampleCount = 10,
indentation = " ", // or "\t"

@@ -15,10 +25,6 @@ indentCount = 2,

startExpanded = false
} = {
indentation: " ", // or "\t"
indentCount: 2,
showExampleValue: true,
startExpanded: false
}) {
} = defaultOptions) {
let options = {
arraySampleCount,
indentation,

@@ -43,12 +49,43 @@ indentCount,

Array: arr => {
let summarized = {};
let summarized = {
count: 1,
type: "Array",
length: arr.length
};
summarized.type = "Array";
summarized.length = arr.length;
// recurse to items in the array
if (arr.length) {
summarized.items = {
0: summarizeItem(arr[0])
};
if (arraySampleCount > 0) {
let numToSample = Math.min(arraySampleCount, arr.length);
let sampledItems = {};
// summarized.count = numToSample;
while (numToSample > 0) {
let sampleIndex = Math.floor(Math.random() * arr.length);
if (!sampledItems.hasOwnProperty(sampleIndex)) {
sampledItems[sampleIndex] = arr[sampleIndex];
numToSample--;
}
}
let summarizedSamples = [];
for (let [idx, item] of Object.entries(sampledItems)) {
summarizedSamples.push(summarizeItem(item));
}
let joinedSample = joinSampledArray(summarizedSamples);
summarized.items = {
0: joinedSample
};
} else {
// sumamrized.count = 1;
summarized.items = {
0: summarizeItem(arr[0])
};
}
}

@@ -59,9 +96,9 @@

Object: obj => {
let summarized = {};
summarized.type = "Object";
summarized.keys = Object.keys(obj);
summarized.items = {};
let summarized = {
count: 1,
type: "Object",
keys: Object.keys(obj),
items: {}
};
for (let key of summarized.keys) {

@@ -74,5 +111,15 @@ summarized.items[key] = summarizeItem(obj[key]);

Other: data => {
let range;
if (typeof data === "string") {
range = [data.length, data.length];
} else if (typeof data === "number") {
range = [data, data];
}
return {
type: typeof data,
example: data
example: data,
count: 1,
range
};

@@ -110,2 +157,118 @@ }

function joinSampledArray(itemset) {
// let type = itemset.map(d => d.type)
// .reduce((a, type) => {
// a[type] = [];
// return a;
// }, {});
// for (let item of itemset) {
// type[item.type].push(item);
// }
// let joins = {};
// for (let [t, itemset] of Object.entries(type)) {
// joins[t] = joinItems(itemset, t);
// }
// console.log(joins);
// return
// assume theyre all a matching type
let type = itemset[0].type;
return joinItems(itemset, type);
}
function joinItems(itemArr, type) {
// functions to join items by type
let joiner = {
string: function(items) {
// string length range
let min = items.reduce((acc, item) => {
return Math.min(acc, item.range[0]);
}, Infinity);
let max = items.reduce((acc, item) => {
return Math.max(acc, item.range[1]);
}, -Infinity);
let joinedString = {
type: "string",
example: items[0].example,
range: [min, max],
count: items.reduce((a, i) => a + i.count, 0)
};
return joinedString;
},
number: function(items) {
let min = items.reduce((acc, item) => {
return Math.min(acc, item.range[0]);
}, Infinity);
let max = items.reduce((acc, item) => {
return Math.max(acc, item.range[1]);
}, -Infinity);
let joinedNumber = {
type: "number",
example: items[0].example,
range: [min, max],
count: items.reduce((a, i) => a + i.count, 0)
};
return joinedNumber;
},
boolean: function(items) {
return {
type: "boolean",
example: items[0].example,
count: items.reduce((a, i) => a + i.count, 0)
};
},
Object: function(items) {
let masterKeys = {};
for (let obj of items) {
if (!obj.circular) {
for (let key of obj.keys) {
!masterKeys[key] && (masterKeys[key] = []);
masterKeys[key].push(obj.items[key]);
}
}
}
let joinedObject = { type: "Object", keys: [], items: {}, count: items.length };
for (let key of Object.keys(masterKeys)) {
joinedObject.keys.push(key);
joinedObject.items[key] = joinSampledArray(masterKeys[key]);
}
return joinedObject;
},
Array: function(items) {
let joinedValues = joinSampledArray(items.map(i => i.items[0]));
let joinedArray = {
count: items.length,
items: {
0: joinedValues
},
length: joinedValues.count / items.length,
type: "Array"
};
return joinedArray;
}
};
return joiner[type](itemArr);
}
function unmarkObject(obj) {

@@ -125,10 +288,10 @@ if (obj && obj["*snippets_mark*"]) {

}
// utility function to stringify the summary output from summarizeJSON
function printSummarizedJSON(summary) {
// start at 0 indentation
return printSummaryLevel(summary, 0);
return printSummaryLevel(summary, 0, 1);
}
function printSummaryLevel(data, l) {
function printSummaryLevel(data, l, prevCount) {
let string = "";

@@ -146,3 +309,3 @@

let childStrings = data.keys.map(key => {
return printSummaryLevel(data.items[key], l + 1);
return printSummaryLevel(data.items[key], l + 1, data.count);
});

@@ -159,2 +322,6 @@

childStringCombined += wrapInHTML(data.keys[i], "name") + ": ";
if (data.count > 1) {
childStringCombined += htmlPercentageBar(data.items[data.keys[i]].count / data.count * 100);
}

@@ -181,4 +348,4 @@ childStringCombined += childStrings[i];

// string += `[ ${data.length ? `(${data.length}×)` : "∅"} `;
string += wrapInHTML(`(${data.length})`, "length") + ` [`;
string += wrapInHTML(data.count > 1 ? "μ = " + data.length.toFixed(1) : data.length, "length") + ` [`;
if (data.length) {

@@ -192,3 +359,3 @@ let needsNewlines =

string += printSummaryLevel(data.items["0"], l + 1);
string += printSummaryLevel(data.items["0"], l + 1, data.count);

@@ -212,2 +379,3 @@ if (needsNewlines) {

string += wrapInHTML(data.example, "value", data.type);
data.count > 1 && data.range && (string += wrapInHTML(data.range, "range", data.type));
}

@@ -223,7 +391,12 @@ }

value: `<span class="json-summary json-summary-value json-summary-value-${type}">${value}</span>`,
range: `<span class="json-summary json-summary-range json-summary-range-${type}">[${value[0]}, ${value[1]}]</span>`,
name: `<span class="json-summary json-summary-name">${value}</span>`,
length: `<span class="json-summary json-summary-length">${value}</span>`,
length: `<span class="json-summary json-summary-length">(${value})</span>`,
circular: `<span class="json-summary json-summary-circular">${value}</span>`,
layer: `<span class="json-summary json-summary-checkbox ${options.startExpanded ? "checked" : ""}">
<input type="checkbox" ${options.startExpanded ? "checked" : ""}>
layer: `<span class="json-summary json-summary-checkbox ${
options.startExpanded ? "checked" : ""
}">
<input type="checkbox" ${
options.startExpanded ? "checked" : ""
}>
<span class="json-summary-checkboxmarker" onclick="(function(me){

@@ -239,2 +412,6 @@ me.parentNode.classList.toggle('checked');

}
function htmlPercentageBar(percentage) {
return `<div class="json-summary json-summary-bar"><div class="json-summary json-summary-percentage" style="width:${percentage}%;"></div></div>`
}

@@ -248,4 +425,6 @@ return {

return summarizer;
var jsonSummary = summarizer;
return jsonSummary;
}));

4

dist/json-summary.min.js

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

// https://andrewtburks.dev/json-summary v0.1.5 Copyright 2019 Andrew Burks
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e=e||self).jsonSummary=n()}(this,function(){"use strict";return function({indentation:e=" ",indentCount:n=2,showExampleValue:t=!0,startExpanded:s=!1}={indentation:" ",indentCount:2,showExampleValue:!0,startExpanded:!1}){let a={indentation:e,indentCount:n,showExampleValue:t,startExpanded:s};function r(e,n,t){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-${t}">${e}</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 ${a.startExpanded?"checked":""}">\n <input type="checkbox" ${a.startExpanded?"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>`}[n]}return{summarize:function(e){let n=function e(n){let t={Array:n=>{let t={type:"Array"};return t.length=n.length,n.length&&(t.items={0:e(n[0])}),t},Object:n=>{let t={type:"Object"};t.keys=Object.keys(n),t.items={};for(let s of t.keys)t.items[s]=e(n[s]);return t},Other:e=>({type:typeof e,example:e})},s="Other";return n instanceof Array?s="Array":n instanceof Object&&(s="Object"),n&&n["*snippets_mark*"]?{type:s,circular:!0}:("Other"!==s&&(Object.defineProperty(n,"*snippets_mark*",{enumerable:!1,writable:!0,configurable:!0}),n["*snippets_mark*"]=!0),t[s](n))}(e);return function e(n){if(n&&n["*snippets_mark*"])if(delete n["*snippets_mark*"],n instanceof Array&&n.length)e(n[0]);else if(n instanceof Object)for(let t of Object.keys(n))e(n[t])}(e),n},printSummary:function(e){return function e(n,t){let s="";if(n.circular)s+=r("(circular reference)","circular");else if("Object"===n.type){s+="{";let i=n.keys.map(e=>`'${e}'`).join(", ");s+=r(i,"keys");let l=n.keys.map(s=>e(n.items[s],t+1));if(l.length){let e="\n";for(let s=0;s<n.keys.length;s++)e+=a.indentation.repeat((t+1)*a.indentCount),e+=r(n.keys[s],"name")+": ",e+=l[s],s<n.keys.length-1&&(e+=","),e+="\n";e+=a.indentation.repeat(t*a.indentCount),s+=r(e,"child")}s=r(s+="}","layer")}else if("Array"===n.type){if(s+=r(`(${n.length})`,"length")+" [",n.length){let r="Object"===n.items[0].type||"Array"===n.items[0].type;r&&(s+="\n"+a.indentation.repeat((t+1)*a.indentCount)),s+=e(n.items[0],t+1),r&&(s+="\n"+a.indentation.repeat(t*a.indentCount))}s+="]"}else null==n.example||null==n.example?s+=r("?","type"):s+=r(n.type,"type"),a.showExampleValue&&(s+=r(n.example,"value",n.type));return s}(e,0)}}}});
// https://andrewtburks.dev/json-summary v0.2.0 Copyright 2019 Andrew Burks
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e=e||self).jsonSummary=n()}(this,function(){"use strict";return function(){let e={arraySampleCount:10,indentation:" ",indentCount:2,showExampleValue:!0,startExpanded:!1};return function({arraySampleCount:n=10,indentation:t=" ",indentCount:a=2,showExampleValue:r=!0,startExpanded:s=!1}=e){let o={arraySampleCount:n,indentation:t,indentCount:a,showExampleValue:r,startExpanded:s};function u(e){return function(e,n){return{string:function(e){let n=e.reduce((e,n)=>Math.min(e,n.range[0]),1/0),t=e.reduce((e,n)=>Math.max(e,n.range[1]),-1/0),a={type:"string",example:e[0].example,range:[n,t],count:e.reduce((e,n)=>e+n.count,0)};return a},number:function(e){let n=e.reduce((e,n)=>Math.min(e,n.range[0]),1/0),t=e.reduce((e,n)=>Math.max(e,n.range[1]),-1/0),a={type:"number",example:e[0].example,range:[n,t],count:e.reduce((e,n)=>e+n.count,0)};return a},boolean:function(e){return{type:"boolean",example:e[0].example,count:e.reduce((e,n)=>e+n.count,0)}},Object:function(e){let n={};for(let t of e)if(!t.circular)for(let e of t.keys)!n[e]&&(n[e]=[]),n[e].push(t.items[e]);let t={type:"Object",keys:[],items:{},count:e.length};for(let e of Object.keys(n))t.keys.push(e),t.items[e]=u(n[e]);return t},Array:function(e){let n=u(e.map(e=>e.items[0])),t={count:e.length,items:{0:n},length:n.count/e.length,type:"Array"};return t}}[n](e)}(e,e[0].type)}function l(e,n,t){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-${t}">${e}</span>`,range:`<span class="json-summary json-summary-range json-summary-range-${t}">[${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.startExpanded?"checked":""}">\n <input type="checkbox" ${o.startExpanded?"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>`}[n]}return{summarize:function(e){let t=function e(t){let a={Array:t=>{let a={count:1,type:"Array",length:t.length};if(t.length)if(n>0){let r=Math.min(n,t.length),s={};for(;r>0;){let e=Math.floor(Math.random()*t.length);s.hasOwnProperty(e)||(s[e]=t[e],r--)}let o=[];for(let[n,t]of Object.entries(s))o.push(e(t));let l=u(o);a.items={0:l}}else a.items={0:e(t[0])};return a},Object:n=>{let t={count:1,type:"Object",keys:Object.keys(n),items:{}};for(let a of t.keys)t.items[a]=e(n[a]);return t},Other:e=>{let n;return"string"==typeof e?n=[e.length,e.length]:"number"==typeof e&&(n=[e,e]),{type:typeof e,example:e,count:1,range:n}}},r="Other";return t instanceof Array?r="Array":t instanceof Object&&(r="Object"),t&&t["*snippets_mark*"]?{type:r,circular:!0}:("Other"!==r&&(Object.defineProperty(t,"*snippets_mark*",{enumerable:!1,writable:!0,configurable:!0}),t["*snippets_mark*"]=!0),a[r](t))}(e);return function e(n){if(n&&n["*snippets_mark*"])if(delete n["*snippets_mark*"],n instanceof Array&&n.length)e(n[0]);else if(n instanceof Object)for(let t of Object.keys(n))e(n[t])}(e),t},printSummary:function(e){return function e(n,t,a){let r="";if(n.circular)r+=l("(circular reference)","circular");else if("Object"===n.type){r+="{";let a=n.keys.map(e=>`'${e}'`).join(", ");r+=l(a,"keys");let s=n.keys.map(a=>e(n.items[a],t+1,n.count));if(s.length){let e="\n";for(let a=0;a<n.keys.length;a++)e+=o.indentation.repeat((t+1)*o.indentCount),e+=l(n.keys[a],"name")+": ",n.count>1&&(e+=`<div class="json-summary json-summary-bar"><div class="json-summary json-summary-percentage" style="width:${n.items[n.keys[a]].count/n.count*100}%;"></div></div>`),e+=s[a],a<n.keys.length-1&&(e+=","),e+="\n";e+=o.indentation.repeat(t*o.indentCount),r+=l(e,"child")}r=l(r+="}","layer")}else if("Array"===n.type){if(r+=l(n.count>1?"μ = "+n.length.toFixed(1):n.length,"length")+" [",n.length){let a="Object"===n.items[0].type||"Array"===n.items[0].type;a&&(r+="\n"+o.indentation.repeat((t+1)*o.indentCount)),r+=e(n.items[0],t+1,n.count),a&&(r+="\n"+o.indentation.repeat(t*o.indentCount))}r+="]"}else null==n.example||null==n.example?r+=l("?","type"):r+=l(n.type,"type"),o.showExampleValue&&(r+=l(n.example,"value",n.type),n.count>1&&n.range&&(r+=l(n.range,"range",n.type)));return r}(e,0)}}}}()});
let ex1 = {
"key1": "val1",
"key2": [
"a", "b", "c"
"name": "val1",
"data": [
{"a": 1}, {a: 6, "b": 2}, {"c": 3}
],
"key3": true,
"key4": {
"isOk": true,
"location": {
"x": 1,

@@ -52,3 +52,3 @@ "y": 2

let ex0 = {
a: [2],
a: [2, 8, 24],
b: { x: "y" }

@@ -55,0 +55,0 @@ };

const summarizer = (function() {
let defaultOptions = {
arraySampleCount: 10,
indentation: " ", // or "\t"
indentCount: 2,
showExampleValue: true,
startExpanded: false
};
// summarizer utility class
return function({
arraySampleCount = 10,
indentation = " ", // or "\t"

@@ -7,10 +17,6 @@ indentCount = 2,

startExpanded = false
} = {
indentation: " ", // or "\t"
indentCount: 2,
showExampleValue: true,
startExpanded: false
}) {
} = defaultOptions) {
let options = {
arraySampleCount,
indentation,

@@ -35,12 +41,43 @@ indentCount,

Array: arr => {
let summarized = {};
let summarized = {
count: 1,
type: "Array",
length: arr.length
};
summarized.type = "Array";
summarized.length = arr.length;
// recurse to items in the array
if (arr.length) {
summarized.items = {
0: summarizeItem(arr[0])
};
if (arraySampleCount > 0) {
let numToSample = Math.min(arraySampleCount, arr.length);
let sampledItems = {};
// summarized.count = numToSample;
while (numToSample > 0) {
let sampleIndex = Math.floor(Math.random() * arr.length);
if (!sampledItems.hasOwnProperty(sampleIndex)) {
sampledItems[sampleIndex] = arr[sampleIndex];
numToSample--;
}
}
let summarizedSamples = [];
for (let [idx, item] of Object.entries(sampledItems)) {
summarizedSamples.push(summarizeItem(item));
}
let joinedSample = joinSampledArray(summarizedSamples);
summarized.items = {
0: joinedSample
};
} else {
// sumamrized.count = 1;
summarized.items = {
0: summarizeItem(arr[0])
};
}
}

@@ -51,9 +88,9 @@

Object: obj => {
let summarized = {};
summarized.type = "Object";
summarized.keys = Object.keys(obj);
summarized.items = {};
let summarized = {
count: 1,
type: "Object",
keys: Object.keys(obj),
items: {}
};
for (let key of summarized.keys) {

@@ -66,5 +103,15 @@ summarized.items[key] = summarizeItem(obj[key]);

Other: data => {
let range;
if (typeof data === "string") {
range = [data.length, data.length];
} else if (typeof data === "number") {
range = [data, data];
}
return {
type: typeof data,
example: data
example: data,
count: 1,
range
};

@@ -102,2 +149,118 @@ }

function joinSampledArray(itemset) {
// let type = itemset.map(d => d.type)
// .reduce((a, type) => {
// a[type] = [];
// return a;
// }, {});
// for (let item of itemset) {
// type[item.type].push(item);
// }
// let joins = {};
// for (let [t, itemset] of Object.entries(type)) {
// joins[t] = joinItems(itemset, t);
// }
// console.log(joins);
// return
// assume theyre all a matching type
let type = itemset[0].type;
return joinItems(itemset, type);
}
function joinItems(itemArr, type) {
// functions to join items by type
let joiner = {
string: function(items) {
// string length range
let min = items.reduce((acc, item) => {
return Math.min(acc, item.range[0]);
}, Infinity);
let max = items.reduce((acc, item) => {
return Math.max(acc, item.range[1]);
}, -Infinity);
let joinedString = {
type: "string",
example: items[0].example,
range: [min, max],
count: items.reduce((a, i) => a + i.count, 0)
};
return joinedString;
},
number: function(items) {
let min = items.reduce((acc, item) => {
return Math.min(acc, item.range[0]);
}, Infinity);
let max = items.reduce((acc, item) => {
return Math.max(acc, item.range[1]);
}, -Infinity);
let joinedNumber = {
type: "number",
example: items[0].example,
range: [min, max],
count: items.reduce((a, i) => a + i.count, 0)
};
return joinedNumber;
},
boolean: function(items) {
return {
type: "boolean",
example: items[0].example,
count: items.reduce((a, i) => a + i.count, 0)
};
},
Object: function(items) {
let masterKeys = {};
for (let obj of items) {
if (!obj.circular) {
for (let key of obj.keys) {
!masterKeys[key] && (masterKeys[key] = []);
masterKeys[key].push(obj.items[key]);
}
}
}
let joinedObject = { type: "Object", keys: [], items: {}, count: items.length };
for (let key of Object.keys(masterKeys)) {
joinedObject.keys.push(key);
joinedObject.items[key] = joinSampledArray(masterKeys[key]);
}
return joinedObject;
},
Array: function(items) {
let joinedValues = joinSampledArray(items.map(i => i.items[0]));
let joinedArray = {
count: items.length,
items: {
0: joinedValues
},
length: joinedValues.count / items.length,
type: "Array"
};
return joinedArray;
}
};
return joiner[type](itemArr);
}
function unmarkObject(obj) {

@@ -117,10 +280,10 @@ if (obj && obj["*snippets_mark*"]) {

}
// utility function to stringify the summary output from summarizeJSON
function printSummarizedJSON(summary) {
// start at 0 indentation
return printSummaryLevel(summary, 0);
return printSummaryLevel(summary, 0, 1);
}
function printSummaryLevel(data, l) {
function printSummaryLevel(data, l, prevCount) {
let string = "";

@@ -138,3 +301,3 @@

let childStrings = data.keys.map(key => {
return printSummaryLevel(data.items[key], l + 1);
return printSummaryLevel(data.items[key], l + 1, data.count);
});

@@ -151,2 +314,6 @@

childStringCombined += wrapInHTML(data.keys[i], "name") + ": ";
if (data.count > 1) {
childStringCombined += htmlPercentageBar(data.items[data.keys[i]].count / data.count * 100);
}

@@ -173,4 +340,4 @@ childStringCombined += childStrings[i];

// string += `[ ${data.length ? `(${data.length}×)` : "∅"} `;
string += wrapInHTML(`(${data.length})`, "length") + ` [`;
string += wrapInHTML(data.count > 1 ? "μ = " + data.length.toFixed(1) : data.length, "length") + ` [`;
if (data.length) {

@@ -184,3 +351,3 @@ let needsNewlines =

string += printSummaryLevel(data.items["0"], l + 1);
string += printSummaryLevel(data.items["0"], l + 1, data.count);

@@ -204,2 +371,3 @@ if (needsNewlines) {

string += wrapInHTML(data.example, "value", data.type);
data.count > 1 && data.range && (string += wrapInHTML(data.range, "range", data.type));
}

@@ -215,7 +383,12 @@ }

value: `<span class="json-summary json-summary-value json-summary-value-${type}">${value}</span>`,
range: `<span class="json-summary json-summary-range json-summary-range-${type}">[${value[0]}, ${value[1]}]</span>`,
name: `<span class="json-summary json-summary-name">${value}</span>`,
length: `<span class="json-summary json-summary-length">${value}</span>`,
length: `<span class="json-summary json-summary-length">(${value})</span>`,
circular: `<span class="json-summary json-summary-circular">${value}</span>`,
layer: `<span class="json-summary json-summary-checkbox ${options.startExpanded ? "checked" : ""}">
<input type="checkbox" ${options.startExpanded ? "checked" : ""}>
layer: `<span class="json-summary json-summary-checkbox ${
options.startExpanded ? "checked" : ""
}">
<input type="checkbox" ${
options.startExpanded ? "checked" : ""
}>
<span class="json-summary-checkboxmarker" onclick="(function(me){

@@ -231,2 +404,6 @@ me.parentNode.classList.toggle('checked');

}
function htmlPercentageBar(percentage) {
return `<div class="json-summary json-summary-bar"><div class="json-summary json-summary-percentage" style="width:${percentage}%;"></div></div>`
}

@@ -240,2 +417,2 @@ return {

export default summarizer;
module.exports = summarizer;
{
"name": "json-summary",
"version": "0.1.5",
"version": "0.2.0",
"description": "A simple JSON summarizer to extract the structure from a JSON object",

@@ -11,10 +11,11 @@ "keywords": [

],
"main": "dist/json-summary-node.js",
"module": "index.js",
"main": "index.js",
"module": "dist/json-summary.esm.js",
"browser": "dist/json-summary.js",
"browserMin": "dist/json-summary.min.js",
"scripts": {
"test": "jest && codecov",
"jest": "jest",
"test": "jest --coverage --coverageReporters=text-lcov | coveralls",
"prepublish": "npm run build && npm test",
"build": "rollup -c && cp dist/json-summary.min.js docs/json-summary.min.js && cp summarizer.css docs/summarizer.css"
"build": "rollup -c && cp dist/json-summary.js docs/json-summary.js && cp summarizer.css docs/summarizer.css"
},

@@ -35,3 +36,3 @@ "repository": {

"devDependencies": {
"codecov": "^3.3.0",
"coveralls": "^3.0.3",
"jest": "^24.7.1",

@@ -41,9 +42,5 @@ "rollup": "^1.9.0",

"rollup-plugin-node-resolve": "^4.2.1",
"rollup-plugin-resolve": "0.0.1-predev.1",
"rollup-plugin-terser": "^4.0.4"
},
"jest": {
"coverageDirectory": "./coverage/",
"collectCoverage": true
}
"dependencies": {}
}
# json-summary
[![npm version](https://img.shields.io/npm/v/json-summary.svg)](https://www.npmjs.com/package/json-summary)
[![npm version](https://img.shields.io/travis/com/AndrewTBurks/json-summary.svg)](https://www.npmjs.com/package/json-summary)
[![npm downloads](https://img.shields.io/npm/v/json-summary.svg)](https://www.npmjs.com/package/json-summary)
[![npm downloads](https://img.shields.io/npm/dt/json-summary.svg)](https://www.npmjs.com/package/json-summary)
[![codecov](https://codecov.io/gh/AndrewTBurks/json-summary/branch/master/graph/badge.svg)](https://codecov.io/gh/AndrewTBurks/json-summary)
[![Coverage Status](https://coveralls.io/repos/github/AndrewTBurks/json-summary/badge.svg?branch=master)](https://coveralls.io/github/AndrewTBurks/json-summary?branch=master)

@@ -7,0 +8,0 @@

@@ -54,6 +54,6 @@ // https://github.com/AndrewTBurks/json-summary v0.1.3 Copyright 2019 Andrew Burks

output: [
{ file: pkg.main, format: "cjs" },
// { file: pkg.module, format: "es" }
// { file: pkg.main, format: "cjs" },
{ file: pkg.module, format: "esm", banner: copyright }
]
}
];

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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