From eae98c0bc927acc98ad6015f023d0b7cdcac10e0 Mon Sep 17 00:00:00 2001 From: fatadel Date: Sun, 25 Sep 2022 17:10:46 +0200 Subject: [PATCH 01/13] add json-ld visualization --- packages/web/index.html | 13 ++ packages/web/jsonld-vis.css | 38 +++++ packages/web/jsonld-vis.js | 296 ++++++++++++++++++++++++++++++++++++ packages/web/script.js | 27 ++++ 4 files changed, 374 insertions(+) create mode 100644 packages/web/jsonld-vis.css create mode 100644 packages/web/jsonld-vis.js diff --git a/packages/web/index.html b/packages/web/index.html index c494dda54..c9aa7f4d3 100644 --- a/packages/web/index.html +++ b/packages/web/index.html @@ -6,6 +6,7 @@ + @@ -93,6 +94,8 @@

Thing Description Playground

+
@@ -184,6 +187,11 @@

Thing Description Playground

+ +
@@ -270,7 +278,12 @@

Thing Description Playground

+ + + + diff --git a/packages/web/jsonld-vis.css b/packages/web/jsonld-vis.css new file mode 100644 index 000000000..ce4accb9b --- /dev/null +++ b/packages/web/jsonld-vis.css @@ -0,0 +1,38 @@ +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,600"); + +svg { + border: none; +} + +.node { + cursor: pointer; +} + +.node text { + font-size: 12px; + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; + fill: #333333; +} + +.d3-tip { + font-size: 14px; + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; + color: #333333; + border: 1px solid #CCCCCC; + border-radius: 5px; + padding: 10px 20px; + max-width: 300px; + word-wrap: break-word; + background-color: rgba(255, 255, 255, 0.9); + text-align: left; +} + +.link { + fill: none; + stroke: #DADFE1; + stroke-width: 1px; +} + +#visualized { + overflow: auto; +} diff --git a/packages/web/jsonld-vis.js b/packages/web/jsonld-vis.js new file mode 100644 index 000000000..d19dcb8c7 --- /dev/null +++ b/packages/web/jsonld-vis.js @@ -0,0 +1,296 @@ +(function() { + 'use strict'; + + function jsonldVis(jsonld, selector, config) { + if (!arguments.length) return jsonldVis; + config = config || {}; + + var h = config.h || 600 + , w = config.w || 800 + , maxLabelWidth = config.maxLabelWidth || 250 + , transitionDuration = config.transitionDuration || 750 + , transitionEase = config.transitionEase || 'cubic-in-out' + , minRadius = config.minRadius || 5 + , scalingFactor = config.scalingFactor || 2; + + var i = 0; + + var tree = d3.layout.tree() + .size([h, w]); + + var diagonal = d3.svg.diagonal() + .projection(function(d) { return [d.y, d.x]; }); + + var svg = d3.select(selector).append('svg') + .attr('width', w) + .attr('height', h) + .append('g') + .attr('transform', 'translate(' + maxLabelWidth + ',0)'); + + var tip = d3.tip() + .direction(function(d) { + return d.children || d._children ? 'w' : 'e'; + }) + .offset(function(d) { + return d.children || d._children ? [0, -3] : [0, 3]; + }) + .attr('class', 'd3-tip') + .html(function(d) { + return '' + d.valueExtended + ''; + }); + + svg.call(tip); + + var treeData = { + name: jsonld['title'] || `_${Math.random().toString(10).slice(-7)}`, + isIdNode: true, + isBlankNode: true, + children: jsonldTree(jsonld) + }; + + var root = treeData; + root.x0 = h / 2; + root.y0 = 0; + root.children.forEach((child) => collapse(child)); + + function changeSVGWidth(newWidth) { + if (w !== newWidth) { + d3.select(selector + ' > svg').attr('width', newWidth); + } + } + + function jsonldTree(source) { + const children = []; + + Object.keys(source).forEach(key => { + if (key === '@id' || key === '@context' || source[key] === null) return; + + if (typeof source[key] === 'object' && !Array.isArray(source[key])) { + children.push( + { + name: key, + children: jsonldTree(source[key]) + } + ); + } else if (Array.isArray(source[key])) { + children.push( + { + name: key, + children: source[key].map((e, i) => { + if (typeof e === 'object') { + return { name: i, children: jsonldTree(e) }; + } else { + return { name: e }; + } + }) + } + ); + } else { + const d = (`${source[key]}`.length > maxLabelWidth / 9) ? { + name: key, + value: source[key].slice(0, Math.floor(maxLabelWidth / 9)) + '...', + valueExtended: source[key] + } : { + name: key, + value: source[key] + }; + + children.push(d); + } + }); + + return children; + } + + function update(source) { + var nodes = tree.nodes(root).reverse(); + var links = tree.links(nodes); + + nodes.forEach(function(d) { d.y = d.depth * maxLabelWidth; }); + + var node = svg.selectAll('g.node') + .data(nodes, function(d) { return d.id || (d.id = ++i); }); + + var nodeEnter = node.enter() + .append('g') + .attr('class', 'node') + .attr('transform', function(d) { return 'translate(' + source.y0 + ',' + source.x0 + ')'; }) + .on('click', click); + + nodeEnter.append('circle') + .attr('r', 0) + .style('stroke-width', function(d) { + return d.isIdNode ? '2px' : '1px'; + }) + .style('stroke', function(d) { + return d.isIdNode ? '#F7CA18' : '#4ECDC4'; + }) + .style('fill', function(d) { + if (d.isIdNode) { + return d._children ? '#F5D76E' : 'white'; + } else { + return d._children ? '#86E2D5' : 'white'; + } + }) + .on('mouseover', function(d) { if (d.valueExtended) tip.show(d); }) + .on('mouseout', tip.hide); + + nodeEnter.append('text') + .attr('x', function(d) { + var spacing = computeRadius(d) + 5; + return d.children || d._children ? -spacing : spacing; + }) + .attr('dy', '4') + .attr('text-anchor', function(d) { return d.children || d._children ? 'end' : 'start'; }) + .text(function(d) { return d.name + (d.value ? ': ' + d.value : ''); }) + .style('fill-opacity', 0); + + var maxSpan = Math.max.apply(Math, nodes.map(function(d) { return d.y + maxLabelWidth; })); + if (maxSpan + maxLabelWidth + 20 > w) { + changeSVGWidth(maxSpan + maxLabelWidth); + d3.select(selector).node().scrollLeft = source.y0; + } + + var nodeUpdate = node.transition() + .duration(transitionDuration) + .ease(transitionEase) + .attr('transform', function(d) { return 'translate(' + d.y + ',' + d.x + ')'; }); + + nodeUpdate.select('circle') + .attr('r', function(d) { return computeRadius(d); }) + .style('stroke-width', function(d) { + return d.isIdNode ? '2px' : '1px'; + }) + .style('stroke', function(d) { + return d.isIdNode ? '#F7CA18' : '#4ECDC4'; + }) + .style('fill', function(d) { + if (d.isIdNode) { + return d._children ? '#F5D76E' : 'white'; + } else { + return d._children ? '#86E2D5' : 'white'; + } + }); + + nodeUpdate.select('text').style('fill-opacity', 1); + + var nodeExit = node.exit().transition() + .duration(transitionDuration) + .ease(transitionEase) + .attr('transform', function(d) { return 'translate(' + source.y + ',' + source.x + ')'; }) + .remove(); + + nodeExit.select('circle').attr('r', 0); + nodeExit.select('text').style('fill-opacity', 0); + + var link = svg.selectAll('path.link') + .data(links, function(d) { return d.target.id; }); + + link.enter().insert('path', 'g') + .attr('class', 'link') + .attr('d', function(d) { + var o = { x: source.x0, y: source.y0 }; + return diagonal({ source: o, target: o }); + }); + + link.transition() + .duration(transitionDuration) + .ease(transitionEase) + .attr('d', diagonal); + + link.exit().transition() + .duration(transitionDuration) + .ease(transitionEase) + .attr('d', function(d) { + var o = { x: source.x, y: source.y }; + return diagonal({ source: o, target: o }); + }) + .remove(); + + nodes.forEach(function(d) { + d.x0 = d.x; + d.y0 = d.y; + }); + } + + function computeRadius(d) { + if (d.children || d._children) { + return minRadius + (numEndNodes(d) / scalingFactor); + } else { + return minRadius; + } + } + + function numEndNodes(n) { + var num = 0; + if (n.children) { + n.children.forEach(function(c) { + num += numEndNodes(c); + }); + } else if (n._children) { + n._children.forEach(function(c) { + num += numEndNodes(c); + }); + } else { + num++; + } + return num; + } + + function click(d) { + if (d.children) { + d._children = d.children; + d.children = null; + } else { + d.children = d._children; + d._children = null; + } + + update(d); + + // fast-forward blank nodes + if (d.children) { + d.children.forEach(function(child) { + if (child.isBlankNode && child._children) { + click(child); + } + }); + } + } + + function collapse(d, toUpdate = false) { + if (d.children) { + d._children = d.children; + d._children.forEach((child) => collapse(child)); + d.children = null; + + if (toUpdate) { + update(d); + } + } + } + + function expand(d, toUpdate = false) { + if (d._children) { + d.children = d._children; + d.children.forEach((child) => expand(child)); + d._children = null; + } else if (d.children) { + d.children.forEach((child) => expand(child)); + } + + if (toUpdate) update(d); + } + + update(root); + + document.getElementById('collapse-all').addEventListener('click', (_) => collapse(root, true)); + document.getElementById('expand-all').addEventListener('click', (_) => expand(root, true)); + } + + if (typeof module !== 'undefined' && module.exports) { + module.exports = jsonldVis; + } else { + d3.jsonldVis = jsonldVis; + } +})(); diff --git a/packages/web/script.js b/packages/web/script.js index ddd603611..d1458e73a 100644 --- a/packages/web/script.js +++ b/packages/web/script.js @@ -37,6 +37,7 @@ document.getElementById("box_auto_validate").addEventListener("change", () => { }) document.getElementById("doc_type").addEventListener("change", () => { + document.getElementById("visualized").style.display = "none" manualAssertionsLoaded = false manualAssertions = [] docType = document.getElementById("doc_type").value @@ -60,6 +61,32 @@ document.getElementById("doc_type").addEventListener("change", () => { } }) +document.getElementById("visualize-toggle").addEventListener("change", (e) => { + if (e.target.checked) { + document.getElementById("visualized").style.display = "block" + document.getElementById("td-editor").style.display = "none" + document.getElementById("tm-editor").style.display = "none" + + try { + document.getElementById('visualized').innerHTML = ''; + d3.jsonldVis( + JSON.parse(window.editor.getValue()), + '#visualized', + { + maxLabelWidth: 200, + scalingFactor: 5 + } + ); + } catch (_) { } + } else { + // Since visualization is only possible for td (not tm) + // We show td-editor when visualize is turned off + document.getElementById("visualized").style.display = "none" + document.getElementById("td-editor").style.display = "block" + document.getElementById("tm-editor").style.display = "none" + } +}) + document.getElementById("btn_gistify").addEventListener("click", () => { if (window.editor.getValue() === "") { alert("Please paste a TD before submission") From 58431bcde2dc8969181523b9ecc3662c303daa95 Mon Sep 17 00:00:00 2001 From: fatadel Date: Sun, 25 Sep 2022 17:34:07 +0200 Subject: [PATCH 02/13] add collapse/expand all buttons --- packages/web/index.html | 9 +++++++++ packages/web/script.js | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/web/index.html b/packages/web/index.html index c9aa7f4d3..753c5410d 100644 --- a/packages/web/index.html +++ b/packages/web/index.html @@ -95,6 +95,15 @@

Thing Description Playground

diff --git a/packages/web/script.js b/packages/web/script.js index d1458e73a..c17d4c80a 100644 --- a/packages/web/script.js +++ b/packages/web/script.js @@ -68,10 +68,10 @@ document.getElementById("visualize-toggle").addEventListener("change", (e) => { document.getElementById("tm-editor").style.display = "none" try { - document.getElementById('visualized').innerHTML = ''; + document.getElementById('jsonld-vis').innerHTML = ''; d3.jsonldVis( JSON.parse(window.editor.getValue()), - '#visualized', + '#jsonld-vis', { maxLabelWidth: 200, scalingFactor: 5 From 231c5268647d496f75d603f8a4d076079f8718e5 Mon Sep 17 00:00:00 2001 From: fatadel Date: Sun, 25 Sep 2022 23:59:11 +0200 Subject: [PATCH 03/13] refine styling --- packages/web/index.html | 2 +- packages/web/style.css | 40 +++++----------------------------------- 2 files changed, 6 insertions(+), 36 deletions(-) diff --git a/packages/web/index.html b/packages/web/index.html index 753c5410d..b1ce2cf0c 100644 --- a/packages/web/index.html +++ b/packages/web/index.html @@ -107,7 +107,7 @@

Thing Description Playground

-
+
diff --git a/packages/web/style.css b/packages/web/style.css index dcb1d4745..e0d56516f 100644 --- a/packages/web/style.css +++ b/packages/web/style.css @@ -11,8 +11,6 @@ body { background-color: white; font-family: 'Gill Sans', 'Gill Sans MT', 'Calibri', 'Trebuchet MS', sans-serif; width: 100%; - min-height: 100vh; - position: relative; } .loading-spinner { @@ -40,26 +38,16 @@ body { padding: 0; } -.wrap { - max-width: 90%; - margin: 0 auto; -} - .wrapper { - /*min-height: 100%; */ - height: auto !important; - height: 100%; - margin: 0 auto -200px auto; - /* the bottom margin is the negative value of the footer's height */ + height: calc(100vh - 250px); } -.wrapper>.row:first-child { - height: 800px; +#side-panel { + padding-bottom: 200px; } - #td-editor, #tm-editor { - height: 800px; + height: 100%; width: auto; } @@ -78,24 +66,6 @@ body { height: fit-content; } -@media(min-height: 1100px) { - .wrapper > .row:first-child { - height: calc(800px + calc(91vh - 1000px)); - } - #td-editor, #tm-editor { - height: calc(800px + calc(91vh - 1000px)); - } - .conrow { - max-height: calc(450px + calc(91vh - 1000px)); - } - #console { - max-height: calc(450px + calc(91vh - 1000px)); - } - .wrapper { - margin: 0 calc(4vw - 60px) -200px 6vw; - } -} - footer { position: fixed; bottom: 0; @@ -109,7 +79,7 @@ footer { .main { padding-top:0px; - padding-bottom: 200px; + padding-bottom: 130px; } .panel { From 9e92463583095b260963b19dd4d81ac0f0f3d583 Mon Sep 17 00:00:00 2001 From: fatadel Date: Mon, 26 Sep 2022 00:29:26 +0200 Subject: [PATCH 04/13] add foundations for another visualization --- packages/web/index.html | 19 +++++++++++++++---- packages/web/script.js | 36 +++++++++++++++++++++++++++--------- 2 files changed, 42 insertions(+), 13 deletions(-) diff --git a/packages/web/index.html b/packages/web/index.html index b1ce2cf0c..99774ebff 100644 --- a/packages/web/index.html +++ b/packages/web/index.html @@ -196,10 +196,21 @@

Thing Description Playground

- +

+
+ +
+ + +
+
+ + +
+

diff --git a/packages/web/script.js b/packages/web/script.js index c17d4c80a..1f4ba416c 100644 --- a/packages/web/script.js +++ b/packages/web/script.js @@ -13,6 +13,7 @@ let manualAssertionsLoaded = false const results = [] let autoValidate = false let docType = "td" +let visType = "graph" let urlAddrObject const jsonOptions = { validate: true, @@ -63,22 +64,33 @@ document.getElementById("doc_type").addEventListener("change", () => { document.getElementById("visualize-toggle").addEventListener("change", (e) => { if (e.target.checked) { + document.getElementById("graph-vis").disabled = false; + document.getElementById("tree-vis").disabled = false; + document.getElementById("visualized").style.display = "block" document.getElementById("td-editor").style.display = "none" document.getElementById("tm-editor").style.display = "none" try { - document.getElementById('jsonld-vis').innerHTML = ''; - d3.jsonldVis( - JSON.parse(window.editor.getValue()), - '#jsonld-vis', - { - maxLabelWidth: 200, - scalingFactor: 5 - } - ); + if (visType == 'graph') { + document.getElementById('jsonld-vis').innerHTML = ''; + d3.jsonldVis( + JSON.parse(window.editor.getValue()), + '#jsonld-vis', + { + maxLabelWidth: 200, + scalingFactor: 5 + } + ); + + } else { + + } } catch (_) { } } else { + document.getElementById("graph-vis").disabled = true; + document.getElementById("tree-vis").disabled = true; + // Since visualization is only possible for td (not tm) // We show td-editor when visualize is turned off document.getElementById("visualized").style.display = "none" @@ -87,6 +99,12 @@ document.getElementById("visualize-toggle").addEventListener("change", (e) => { } }) +document.querySelectorAll("#graph-vis, #tree-vis").forEach(el => { + el.addEventListener("change", (e) => { + visType = e.target.id.split('-')[0]; + }) +}) + document.getElementById("btn_gistify").addEventListener("click", () => { if (window.editor.getValue() === "") { alert("Please paste a TD before submission") From 3e3914005deaeef85c199c2dd00426cb11fc5560 Mon Sep 17 00:00:00 2001 From: fatadel Date: Tue, 27 Sep 2022 18:40:29 +0200 Subject: [PATCH 05/13] add vega visualization --- packages/web/index.html | 22 +- packages/web/jsonld-vis.js | 510 ++++++++++++++++++------------------- packages/web/script.js | 65 +++-- packages/web/vega-vis.js | 220 ++++++++++++++++ 4 files changed, 516 insertions(+), 301 deletions(-) create mode 100644 packages/web/vega-vis.js diff --git a/packages/web/index.html b/packages/web/index.html index 99774ebff..b99589078 100644 --- a/packages/web/index.html +++ b/packages/web/index.html @@ -90,21 +90,9 @@

Thing Description Playground

-
-
- - +
+ +
@@ -300,10 +288,12 @@

Thing Description Playground

+ + + - diff --git a/packages/web/jsonld-vis.js b/packages/web/jsonld-vis.js index d19dcb8c7..6e7eea126 100644 --- a/packages/web/jsonld-vis.js +++ b/packages/web/jsonld-vis.js @@ -1,296 +1,288 @@ -(function() { - 'use strict'; +'use strict'; + +export function jsonldVis(jsonld, selector, config) { + if (!arguments.length) return jsonldVis; + config = config || {}; + + var h = config.h || 600 + , w = config.w || 800 + , maxLabelWidth = config.maxLabelWidth || 250 + , transitionDuration = config.transitionDuration || 750 + , transitionEase = config.transitionEase || 'cubic-in-out' + , minRadius = config.minRadius || 5 + , scalingFactor = config.scalingFactor || 2; + + var i = 0; + + var tree = d3.layout.tree() + .size([h, w]); + + var diagonal = d3.svg.diagonal() + .projection(function (d) { return [d.y, d.x]; }); + + var svg = d3.select(selector).append('svg') + .attr('width', w) + .attr('height', h) + .append('g') + .attr('transform', 'translate(' + maxLabelWidth + ',0)'); + + var tip = d3.tip() + .direction(function (d) { + return d.children || d._children ? 'w' : 'e'; + }) + .offset(function (d) { + return d.children || d._children ? [0, -3] : [0, 3]; + }) + .attr('class', 'd3-tip') + .html(function (d) { + return '' + d.valueExtended + ''; + }); + + svg.call(tip); + + var treeData = { + name: jsonld['title'] || `_${Math.random().toString(10).slice(-7)}`, + isIdNode: true, + isBlankNode: true, + children: jsonldTree(jsonld) + }; + + var root = treeData; + root.x0 = h / 2; + root.y0 = 0; + root.children.forEach((child) => collapse(child)); + + function changeSVGWidth(newWidth) { + if (w !== newWidth) { + d3.select(selector + ' > svg').attr('width', newWidth); + } + } - function jsonldVis(jsonld, selector, config) { - if (!arguments.length) return jsonldVis; - config = config || {}; + function jsonldTree(source) { + const children = []; - var h = config.h || 600 - , w = config.w || 800 - , maxLabelWidth = config.maxLabelWidth || 250 - , transitionDuration = config.transitionDuration || 750 - , transitionEase = config.transitionEase || 'cubic-in-out' - , minRadius = config.minRadius || 5 - , scalingFactor = config.scalingFactor || 2; + Object.keys(source).forEach(key => { + if (key === '@id' || key === '@context' || source[key] === null) return; - var i = 0; + if (typeof source[key] === 'object' && !Array.isArray(source[key])) { + children.push( + { + name: key, + children: jsonldTree(source[key]) + } + ); + } else if (Array.isArray(source[key])) { + children.push( + { + name: key, + children: source[key].map((e, i) => { + if (typeof e === 'object') { + return { name: i, children: jsonldTree(e) }; + } else { + return { name: e }; + } + }) + } + ); + } else { + const d = (`${source[key]}`.length > maxLabelWidth / 9) ? { + name: key, + value: source[key].slice(0, Math.floor(maxLabelWidth / 9)) + '...', + valueExtended: source[key] + } : { + name: key, + value: source[key] + }; + + children.push(d); + } + }); - var tree = d3.layout.tree() - .size([h, w]); + return children; + } + + function update(source) { + var nodes = tree.nodes(root).reverse(); + var links = tree.links(nodes); - var diagonal = d3.svg.diagonal() - .projection(function(d) { return [d.y, d.x]; }); + nodes.forEach(function (d) { d.y = d.depth * maxLabelWidth; }); - var svg = d3.select(selector).append('svg') - .attr('width', w) - .attr('height', h) + var node = svg.selectAll('g.node') + .data(nodes, function (d) { return d.id || (d.id = ++i); }); + + var nodeEnter = node.enter() .append('g') - .attr('transform', 'translate(' + maxLabelWidth + ',0)'); + .attr('class', 'node') + .attr('transform', function (d) { return 'translate(' + source.y0 + ',' + source.x0 + ')'; }) + .on('click', click); + + nodeEnter.append('circle') + .attr('r', 0) + .style('stroke-width', function (d) { + return d.isIdNode ? '2px' : '1px'; + }) + .style('stroke', function (d) { + return d.isIdNode ? '#F7CA18' : '#4ECDC4'; + }) + .style('fill', function (d) { + if (d.isIdNode) { + return d._children ? '#F5D76E' : 'white'; + } else { + return d._children ? '#86E2D5' : 'white'; + } + }) + .on('mouseover', function (d) { if (d.valueExtended) tip.show(d); }) + .on('mouseout', tip.hide); + + nodeEnter.append('text') + .attr('x', function (d) { + var spacing = computeRadius(d) + 5; + return d.children || d._children ? -spacing : spacing; + }) + .attr('dy', '4') + .attr('text-anchor', function (d) { return d.children || d._children ? 'end' : 'start'; }) + .text(function (d) { return d.name + (d.value ? ': ' + d.value : ''); }) + .style('fill-opacity', 0); + + var maxSpan = Math.max.apply(Math, nodes.map(function (d) { return d.y + maxLabelWidth; })); + if (maxSpan + maxLabelWidth + 20 > w) { + changeSVGWidth(maxSpan + maxLabelWidth); + d3.select(selector).node().scrollLeft = source.y0; + } - var tip = d3.tip() - .direction(function(d) { - return d.children || d._children ? 'w' : 'e'; + var nodeUpdate = node.transition() + .duration(transitionDuration) + .ease(transitionEase) + .attr('transform', function (d) { return 'translate(' + d.y + ',' + d.x + ')'; }); + + nodeUpdate.select('circle') + .attr('r', function (d) { return computeRadius(d); }) + .style('stroke-width', function (d) { + return d.isIdNode ? '2px' : '1px'; }) - .offset(function(d) { - return d.children || d._children ? [0, -3] : [0, 3]; + .style('stroke', function (d) { + return d.isIdNode ? '#F7CA18' : '#4ECDC4'; }) - .attr('class', 'd3-tip') - .html(function(d) { - return '' + d.valueExtended + ''; + .style('fill', function (d) { + if (d.isIdNode) { + return d._children ? '#F5D76E' : 'white'; + } else { + return d._children ? '#86E2D5' : 'white'; + } }); - svg.call(tip); + nodeUpdate.select('text').style('fill-opacity', 1); - var treeData = { - name: jsonld['title'] || `_${Math.random().toString(10).slice(-7)}`, - isIdNode: true, - isBlankNode: true, - children: jsonldTree(jsonld) - }; + var nodeExit = node.exit().transition() + .duration(transitionDuration) + .ease(transitionEase) + .attr('transform', function (d) { return 'translate(' + source.y + ',' + source.x + ')'; }) + .remove(); - var root = treeData; - root.x0 = h / 2; - root.y0 = 0; - root.children.forEach((child) => collapse(child)); + nodeExit.select('circle').attr('r', 0); + nodeExit.select('text').style('fill-opacity', 0); - function changeSVGWidth(newWidth) { - if (w !== newWidth) { - d3.select(selector + ' > svg').attr('width', newWidth); - } - } + var link = svg.selectAll('path.link') + .data(links, function (d) { return d.target.id; }); - function jsonldTree(source) { - const children = []; - - Object.keys(source).forEach(key => { - if (key === '@id' || key === '@context' || source[key] === null) return; - - if (typeof source[key] === 'object' && !Array.isArray(source[key])) { - children.push( - { - name: key, - children: jsonldTree(source[key]) - } - ); - } else if (Array.isArray(source[key])) { - children.push( - { - name: key, - children: source[key].map((e, i) => { - if (typeof e === 'object') { - return { name: i, children: jsonldTree(e) }; - } else { - return { name: e }; - } - }) - } - ); - } else { - const d = (`${source[key]}`.length > maxLabelWidth / 9) ? { - name: key, - value: source[key].slice(0, Math.floor(maxLabelWidth / 9)) + '...', - valueExtended: source[key] - } : { - name: key, - value: source[key] - }; - - children.push(d); - } + link.enter().insert('path', 'g') + .attr('class', 'link') + .attr('d', function (d) { + var o = { x: source.x0, y: source.y0 }; + return diagonal({ source: o, target: o }); }); - return children; - } + link.transition() + .duration(transitionDuration) + .ease(transitionEase) + .attr('d', diagonal); + + link.exit().transition() + .duration(transitionDuration) + .ease(transitionEase) + .attr('d', function (d) { + var o = { x: source.x, y: source.y }; + return diagonal({ source: o, target: o }); + }) + .remove(); - function update(source) { - var nodes = tree.nodes(root).reverse(); - var links = tree.links(nodes); - - nodes.forEach(function(d) { d.y = d.depth * maxLabelWidth; }); - - var node = svg.selectAll('g.node') - .data(nodes, function(d) { return d.id || (d.id = ++i); }); - - var nodeEnter = node.enter() - .append('g') - .attr('class', 'node') - .attr('transform', function(d) { return 'translate(' + source.y0 + ',' + source.x0 + ')'; }) - .on('click', click); - - nodeEnter.append('circle') - .attr('r', 0) - .style('stroke-width', function(d) { - return d.isIdNode ? '2px' : '1px'; - }) - .style('stroke', function(d) { - return d.isIdNode ? '#F7CA18' : '#4ECDC4'; - }) - .style('fill', function(d) { - if (d.isIdNode) { - return d._children ? '#F5D76E' : 'white'; - } else { - return d._children ? '#86E2D5' : 'white'; - } - }) - .on('mouseover', function(d) { if (d.valueExtended) tip.show(d); }) - .on('mouseout', tip.hide); - - nodeEnter.append('text') - .attr('x', function(d) { - var spacing = computeRadius(d) + 5; - return d.children || d._children ? -spacing : spacing; - }) - .attr('dy', '4') - .attr('text-anchor', function(d) { return d.children || d._children ? 'end' : 'start'; }) - .text(function(d) { return d.name + (d.value ? ': ' + d.value : ''); }) - .style('fill-opacity', 0); - - var maxSpan = Math.max.apply(Math, nodes.map(function(d) { return d.y + maxLabelWidth; })); - if (maxSpan + maxLabelWidth + 20 > w) { - changeSVGWidth(maxSpan + maxLabelWidth); - d3.select(selector).node().scrollLeft = source.y0; - } + nodes.forEach(function (d) { + d.x0 = d.x; + d.y0 = d.y; + }); + } - var nodeUpdate = node.transition() - .duration(transitionDuration) - .ease(transitionEase) - .attr('transform', function(d) { return 'translate(' + d.y + ',' + d.x + ')'; }); - - nodeUpdate.select('circle') - .attr('r', function(d) { return computeRadius(d); }) - .style('stroke-width', function(d) { - return d.isIdNode ? '2px' : '1px'; - }) - .style('stroke', function(d) { - return d.isIdNode ? '#F7CA18' : '#4ECDC4'; - }) - .style('fill', function(d) { - if (d.isIdNode) { - return d._children ? '#F5D76E' : 'white'; - } else { - return d._children ? '#86E2D5' : 'white'; - } - }); - - nodeUpdate.select('text').style('fill-opacity', 1); - - var nodeExit = node.exit().transition() - .duration(transitionDuration) - .ease(transitionEase) - .attr('transform', function(d) { return 'translate(' + source.y + ',' + source.x + ')'; }) - .remove(); - - nodeExit.select('circle').attr('r', 0); - nodeExit.select('text').style('fill-opacity', 0); - - var link = svg.selectAll('path.link') - .data(links, function(d) { return d.target.id; }); - - link.enter().insert('path', 'g') - .attr('class', 'link') - .attr('d', function(d) { - var o = { x: source.x0, y: source.y0 }; - return diagonal({ source: o, target: o }); - }); - - link.transition() - .duration(transitionDuration) - .ease(transitionEase) - .attr('d', diagonal); - - link.exit().transition() - .duration(transitionDuration) - .ease(transitionEase) - .attr('d', function(d) { - var o = { x: source.x, y: source.y }; - return diagonal({ source: o, target: o }); - }) - .remove(); - - nodes.forEach(function(d) { - d.x0 = d.x; - d.y0 = d.y; - }); + function computeRadius(d) { + if (d.children || d._children) { + return minRadius + (numEndNodes(d) / scalingFactor); + } else { + return minRadius; } + } - function computeRadius(d) { - if (d.children || d._children) { - return minRadius + (numEndNodes(d) / scalingFactor); - } else { - return minRadius; - } + function numEndNodes(n) { + var num = 0; + if (n.children) { + n.children.forEach(function (c) { + num += numEndNodes(c); + }); + } else if (n._children) { + n._children.forEach(function (c) { + num += numEndNodes(c); + }); + } else { + num++; } + return num; + } - function numEndNodes(n) { - var num = 0; - if (n.children) { - n.children.forEach(function(c) { - num += numEndNodes(c); - }); - } else if (n._children) { - n._children.forEach(function(c) { - num += numEndNodes(c); - }); - } else { - num++; - } - return num; + function click(d) { + if (d.children) { + d._children = d.children; + d.children = null; + } else { + d.children = d._children; + d._children = null; } - function click(d) { - if (d.children) { - d._children = d.children; - d.children = null; - } else { - d.children = d._children; - d._children = null; - } - - update(d); + update(d); - // fast-forward blank nodes - if (d.children) { - d.children.forEach(function(child) { - if (child.isBlankNode && child._children) { - click(child); - } - }); - } + // fast-forward blank nodes + if (d.children) { + d.children.forEach(function (child) { + if (child.isBlankNode && child._children) { + click(child); + } + }); } + } - function collapse(d, toUpdate = false) { - if (d.children) { - d._children = d.children; - d._children.forEach((child) => collapse(child)); - d.children = null; + function collapse(d, toUpdate = false) { + if (d.children) { + d._children = d.children; + d._children.forEach((child) => collapse(child)); + d.children = null; - if (toUpdate) { - update(d); - } + if (toUpdate) { + update(d); } } + } - function expand(d, toUpdate = false) { - if (d._children) { - d.children = d._children; - d.children.forEach((child) => expand(child)); - d._children = null; - } else if (d.children) { - d.children.forEach((child) => expand(child)); - } - - if (toUpdate) update(d); + function expand(d, toUpdate = false) { + if (d._children) { + d.children = d._children; + d.children.forEach((child) => expand(child)); + d._children = null; + } else if (d.children) { + d.children.forEach((child) => expand(child)); } - update(root); - - document.getElementById('collapse-all').addEventListener('click', (_) => collapse(root, true)); - document.getElementById('expand-all').addEventListener('click', (_) => expand(root, true)); + if (toUpdate) update(d); } - if (typeof module !== 'undefined' && module.exports) { - module.exports = jsonldVis; - } else { - d3.jsonldVis = jsonldVis; - } -})(); + update(root); + + document.getElementById('jvis-collapse-all').addEventListener('click', (_) => collapse(root, true)); + document.getElementById('jvis-expand-all').addEventListener('click', (_) => expand(root, true)); +} diff --git a/packages/web/script.js b/packages/web/script.js index 1f4ba416c..4b4b998e2 100644 --- a/packages/web/script.js +++ b/packages/web/script.js @@ -7,6 +7,8 @@ import * as util from "./util.js" import * as config from "./config.js" +import * as jVis from "./jsonld-vis.js" +import * as vVis from "./vega-vis.js" let manualAssertions = [] let manualAssertionsLoaded = false @@ -62,46 +64,57 @@ document.getElementById("doc_type").addEventListener("change", () => { } }) -document.getElementById("visualize-toggle").addEventListener("change", (e) => { - if (e.target.checked) { - document.getElementById("graph-vis").disabled = false; - document.getElementById("tree-vis").disabled = false; - - document.getElementById("visualized").style.display = "block" - document.getElementById("td-editor").style.display = "none" - document.getElementById("tm-editor").style.display = "none" - - try { - if (visType == 'graph') { - document.getElementById('jsonld-vis').innerHTML = ''; - d3.jsonldVis( - JSON.parse(window.editor.getValue()), - '#jsonld-vis', - { - maxLabelWidth: 200, - scalingFactor: 5 - } - ); +function visualize() { + document.getElementById("graph-vis").disabled = false; + document.getElementById("tree-vis").disabled = false; + + document.getElementById("visualized").style.display = "block" + document.getElementById("td-editor").style.display = "none" + document.getElementById("tm-editor").style.display = "none" + + if (visType == 'graph') { + document.getElementById('visualized').innerHTML = ` +
+ + +
`; + jVis.jsonldVis( + JSON.parse(window.editor.getValue()), + '#visualized', + { + maxLabelWidth: 200, + scalingFactor: 5 + } + ); - } else { + } else { + vVis.vegaVis('#visualized', JSON.parse(window.editor.getValue())); + } +} - } - } catch (_) { } +document.getElementById("visualize-toggle").addEventListener("change", (e) => { + if (e.target.checked) { + visualize(); } else { document.getElementById("graph-vis").disabled = true; document.getElementById("tree-vis").disabled = true; // Since visualization is only possible for td (not tm) // We show td-editor when visualize is turned off - document.getElementById("visualized").style.display = "none" - document.getElementById("td-editor").style.display = "block" - document.getElementById("tm-editor").style.display = "none" + document.getElementById("visualized").style.display = "none"; + document.getElementById("td-editor").style.display = "block"; + document.getElementById("tm-editor").style.display = "none"; } }) document.querySelectorAll("#graph-vis, #tree-vis").forEach(el => { el.addEventListener("change", (e) => { visType = e.target.id.split('-')[0]; + visualize(); }) }) diff --git a/packages/web/vega-vis.js b/packages/web/vega-vis.js new file mode 100644 index 000000000..2e058781a --- /dev/null +++ b/packages/web/vega-vis.js @@ -0,0 +1,220 @@ +export function vegaVis($container, td) { + + const treeData = [ + { + id: '0', + name: td['title'], + parent: null, + } + ]; + const conf = { + "$schema": "https://vega.github.io/schema/vega/v5.json", + "description": "A radial tree visualization for a W3C Thing Description.", + "width": 800, + "height": 600, + "padding": 5, + "autosize": "none", + + "signals": [ + { + "name": "labels", "value": true, + "bind": {"input": "checkbox"} + }, + { + "name": "radius", "value": 280, + "bind": {"input": "range", "min": 20, "max": 600} + }, + { + "name": "extent", "value": 360, + "bind": {"input": "range", "min": 0, "max": 360, "step": 1} + }, + { + "name": "rotate", "value": 0, + "bind": {"input": "range", "min": 0, "max": 360, "step": 1} + }, + { + "name": "layout", "value": "tidy", + "bind": {"input": "radio", "options": ["tidy", "cluster"]} + }, + { + "name": "links", "value": "line", + "bind": { + "input": "select", + "options": ["line", "curve", "diagonal", "orthogonal"] + } + }, + { "name": "originX", "update": "width / 2" }, + { "name": "originY", "update": "height / 2" } + ], + + "data": [ + { + "name": "tree", + "values": treeData, + "transform": [ + { + "type": "stratify", + "key": "id", + "parentKey": "parent" + }, + { + "type": "tree", + "method": {"signal": "layout"}, + "size": [1, {"signal": "radius"}], + "as": ["alpha", "radius", "depth", "children"] + }, + { + "type": "formula", + "expr": "(rotate + extent * datum.alpha + 270) % 360", + "as": "angle" + }, + { + "type": "formula", + "expr": "PI * datum.angle / 180", + "as": "radians" + }, + { + "type": "formula", + "expr": "inrange(datum.angle, [90, 270])", + "as": "leftside" + }, + { + "type": "formula", + "expr": "originX + datum.radius * cos(datum.radians)", + "as": "x" + }, + { + "type": "formula", + "expr": "originY + datum.radius * sin(datum.radians)", + "as": "y" + } + ] + }, + { + "name": "links", + "source": "tree", + "transform": [ + { "type": "treelinks" }, + { + "type": "linkpath", + "shape": {"signal": "links"}, "orient": "radial", + "sourceX": "source.radians", "sourceY": "source.radius", + "targetX": "target.radians", "targetY": "target.radius" + } + ] + } + ], + + "scales": [ + { + "name": "color", + "type": "linear", + "range": {"scheme": "magma"}, + "domain": {"data": "tree", "field": "depth"}, + "zero": true + } + ], + + "marks": [ + { + "type": "path", + "from": {"data": "links"}, + "encode": { + "update": { + "x": {"signal": "originX"}, + "y": {"signal": "originY"}, + "path": {"field": "path"}, + "stroke": {"value": "#ccc"} + } + } + }, + { + "type": "symbol", + "from": {"data": "tree"}, + "encode": { + "enter": { + "size": {"value": 100}, + "stroke": {"value": "#fff"} + }, + "update": { + "x": {"field": "x"}, + "y": {"field": "y"}, + "fill": {"scale": "color", "field": "depth"} + } + } + }, + { + "type": "text", + "from": {"data": "tree"}, + "encode": { + "enter": { + "text": {"field": "name"}, + "fontSize": {"value": 9}, + "baseline": {"value": "middle"} + }, + "update": { + "x": {"field": "x"}, + "y": {"field": "y"}, + "dx": {"signal": "(datum.leftside ? -1 : 1) * 6"}, + "angle": {"signal": "datum.leftside ? datum.angle - 180 : datum.angle"}, + "align": {"signal": "datum.leftside ? 'right' : 'left'"}, + "opacity": {"signal": "labels ? 1 : 0"} + } + } + } + ] + }; + + function tdToVega(source, parent) { + Object.keys(source).forEach((key, index) => { + if (key === '@id' || key === '@context' || source[key] === null) return; + + if (typeof source[key] === 'object' && !Array.isArray(source[key])) { + treeData.push( + { + id: `${parent}_${index}`, + name: key, + parent: parent + } + ); + + tdToVega(source[key], `${parent}_${index}`); + + } else if (Array.isArray(source[key])) { + treeData.push( + { + id: `${parent}_${index}`, + name: key, + parent: parent + } + ); + + source[key].map((e, i) => { + if (typeof e === 'object') { + tdToVega(e, `${parent}_${index}`); + } else { + treeData.push({ + id: `${parent}_${index}_${i}`, + name: e, + parent: `${parent}_${index}`, + }); + } + }); + + } else { + treeData.push({ + id: `${parent}_${index}`, + name: key, + parent: parent + }); + } + }); + } + + tdToVega(td, treeData[0].id); + + vegaEmbed( + $container, + conf + ); +} \ No newline at end of file From 1b0d9152ba169d504e0e9b36328d209a376970c4 Mon Sep 17 00:00:00 2001 From: fatadel Date: Tue, 27 Sep 2022 20:36:10 +0200 Subject: [PATCH 06/13] refine vega visualization --- packages/web/script.js | 9 +++++++-- packages/web/style.css | 7 ++----- packages/web/util.js | 3 --- packages/web/vega-vis.js | 13 ++++++++++--- 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/packages/web/script.js b/packages/web/script.js index 4b4b998e2..cb24a9956 100644 --- a/packages/web/script.js +++ b/packages/web/script.js @@ -72,6 +72,11 @@ function visualize() { document.getElementById("td-editor").style.display = "none" document.getElementById("tm-editor").style.display = "none" + let td; + try { + td = JSON.parse(window.editor.getValue()); + } catch (_) { return; } + if (visType == 'graph') { document.getElementById('visualized').innerHTML = `
@@ -83,7 +88,7 @@ function visualize() {
`; jVis.jsonldVis( - JSON.parse(window.editor.getValue()), + td, '#visualized', { maxLabelWidth: 200, @@ -92,7 +97,7 @@ function visualize() { ); } else { - vVis.vegaVis('#visualized', JSON.parse(window.editor.getValue())); + vVis.vegaVis('#visualized', td); } } diff --git a/packages/web/style.css b/packages/web/style.css index e0d56516f..67f6cf75a 100644 --- a/packages/web/style.css +++ b/packages/web/style.css @@ -39,11 +39,8 @@ body { } .wrapper { - height: calc(100vh - 250px); -} - -#side-panel { - padding-bottom: 200px; + height: calc(100vh - 200px); + overflow-y: scroll; } #td-editor, #tm-editor { diff --git a/packages/web/util.js b/packages/web/util.js index 2871175ba..5c4f9baca 100644 --- a/packages/web/util.js +++ b/packages/web/util.js @@ -410,9 +410,6 @@ function realValidator(body, docType, source) { const checkJsonLd = document.getElementById("box_jsonld_validate").checked - console.log(Validators.tdValidator) - console.log(Validators.tmValidator) - const validator = (docType === "td") ? Validators.tdValidator : Validators.tmValidator validator(body, log, {checkDefaults: true, checkJsonLd}) diff --git a/packages/web/vega-vis.js b/packages/web/vega-vis.js index 2e058781a..666919999 100644 --- a/packages/web/vega-vis.js +++ b/packages/web/vega-vis.js @@ -13,8 +13,7 @@ export function vegaVis($container, td) { "width": 800, "height": 600, "padding": 5, - "autosize": "none", - + "signals": [ { "name": "labels", "value": true, @@ -191,7 +190,15 @@ export function vegaVis($container, td) { source[key].map((e, i) => { if (typeof e === 'object') { - tdToVega(e, `${parent}_${index}`); + treeData.push( + { + id: `${parent}_${index}_${i}`, + name: `${i}`, + parent: `${parent}_${index}` + } + ); + + tdToVega(e, `${parent}_${index}_${i}`); } else { treeData.push({ id: `${parent}_${index}_${i}`, From bd3c7fc15a78ad94515777341d68350621ba4a19 Mon Sep 17 00:00:00 2001 From: fatadel Date: Sun, 9 Oct 2022 22:35:41 +0300 Subject: [PATCH 07/13] add new style visualizations (preliminary) --- packages/web/index.html | 59 +++++++++++++++++++++++++++++------------ packages/web/script.js | 54 +++++++++++++------------------------ packages/web/style.css | 27 +++++++++++++++++++ 3 files changed, 87 insertions(+), 53 deletions(-) diff --git a/packages/web/index.html b/packages/web/index.html index 3d38376a1..f10433370 100644 --- a/packages/web/index.html +++ b/packages/web/index.html @@ -57,6 +57,47 @@
+ +
Loading Environment. Please wait....
Loading... @@ -92,7 +133,6 @@

Thing Description Playground

-
@@ -184,26 +224,11 @@

Thing Description Playground

-

-
- -
- - -
-
- - -
-
-
+

diff --git a/packages/web/script.js b/packages/web/script.js index cb24a9956..630ab34d1 100644 --- a/packages/web/script.js +++ b/packages/web/script.js @@ -40,7 +40,6 @@ document.getElementById("box_auto_validate").addEventListener("change", () => { }) document.getElementById("doc_type").addEventListener("change", () => { - document.getElementById("visualized").style.display = "none" manualAssertionsLoaded = false manualAssertions = [] docType = document.getElementById("doc_type").value @@ -65,28 +64,16 @@ document.getElementById("doc_type").addEventListener("change", () => { }) function visualize() { - document.getElementById("graph-vis").disabled = false; - document.getElementById("tree-vis").disabled = false; - - document.getElementById("visualized").style.display = "block" - document.getElementById("td-editor").style.display = "none" - document.getElementById("tm-editor").style.display = "none" - let td; try { td = JSON.parse(window.editor.getValue()); - } catch (_) { return; } + } catch (err) { + alert(`Incorrect JSON: ${err}`); + return false; + } if (visType == 'graph') { - document.getElementById('visualized').innerHTML = ` -
- - -
`; + document.getElementById('visualized').innerHTML = ''; jVis.jsonldVis( td, '#visualized', @@ -99,29 +86,24 @@ function visualize() { } else { vVis.vegaVis('#visualized', td); } -} -document.getElementById("visualize-toggle").addEventListener("change", (e) => { - if (e.target.checked) { - visualize(); - } else { - document.getElementById("graph-vis").disabled = true; - document.getElementById("tree-vis").disabled = true; - - // Since visualization is only possible for td (not tm) - // We show td-editor when visualize is turned off - document.getElementById("visualized").style.display = "none"; - document.getElementById("td-editor").style.display = "block"; - document.getElementById("tm-editor").style.display = "none"; - } -}) + return true; +} -document.querySelectorAll("#graph-vis, #tree-vis").forEach(el => { - el.addEventListener("change", (e) => { +document.querySelectorAll('#graph-vis, #tree-vis').forEach(el => { + el.addEventListener('change', (e) => { visType = e.target.id.split('-')[0]; visualize(); }) -}) +}); + +document.getElementById("btn_visualize").addEventListener('click', () => { + if (visualize()) document.getElementById('visualized-popup-wrapper').style.display = 'block'; +}); + +document.getElementById('close-visualized-popup').addEventListener('click', () => { + document.getElementById('visualized-popup-wrapper').style.display = 'none'; +}); document.getElementById("btn_gistify").addEventListener("click", () => { if (window.editor.getValue() === "") { diff --git a/packages/web/style.css b/packages/web/style.css index f89572c57..299693cfb 100644 --- a/packages/web/style.css +++ b/packages/web/style.css @@ -321,6 +321,33 @@ i { background-color: rgba(255, 255, 255, 1) ; } +#visualized-popup { + position: fixed; + border-radius: 10px; + z-index: 99; + left: 2.5%; + top: 2.5%; + width: 95%; + height: 95%; + background-color: rgba(255, 255, 255, 1) ; +} + +#visualized-popup .container-fluid > .row { + height: calc(100% - 30px); +} + +#visualized-popup .container-fluid > .row [class^="col-"] { + height: calc(100% - 30px); + overflow: scroll; +} + +#close-visualized-popup { + position: absolute; + top: 0; + right: 0; + z-index: 100; +} + .inner-gist-popup { padding: 25px; position: fixed; From aed55a9cee72587bc44eef026dc2d484f6eff41c Mon Sep 17 00:00:00 2001 From: fatadel Date: Fri, 14 Oct 2022 19:29:34 +0200 Subject: [PATCH 08/13] add visualization controls --- .gitignore | 3 +++ packages/web/index.html | 34 ++++++++++++++++++++++------------ packages/web/jsonld-vis.js | 4 ++-- packages/web/script.js | 21 ++++++++++++++++++++- packages/web/vega-vis.js | 31 ++++++++++++++++++------------- 5 files changed, 65 insertions(+), 28 deletions(-) diff --git a/.gitignore b/.gitignore index 071dce231..6aa9b2b55 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,6 @@ log.json # vscode .vscode + +# JetBrains IDEs +.idea diff --git a/packages/web/index.html b/packages/web/index.html index f10433370..c1bc36201 100644 --- a/packages/web/index.html +++ b/packages/web/index.html @@ -66,11 +66,10 @@
-
+
-
-
- Type:     +
+ Type:
@@ -81,14 +80,25 @@
-
-
- - +
+
+ + +
+
+ +
+ +
+ +
+ + + +
diff --git a/packages/web/jsonld-vis.js b/packages/web/jsonld-vis.js index 6e7eea126..a85306d76 100644 --- a/packages/web/jsonld-vis.js +++ b/packages/web/jsonld-vis.js @@ -283,6 +283,6 @@ export function jsonldVis(jsonld, selector, config) { update(root); - document.getElementById('jvis-collapse-all').addEventListener('click', (_) => collapse(root, true)); - document.getElementById('jvis-expand-all').addEventListener('click', (_) => expand(root, true)); + document.getElementById('vis-collapse-all').addEventListener('click', (_) => collapse(root, true)); + document.getElementById('vis-expand-all').addEventListener('click', (_) => expand(root, true)); } diff --git a/packages/web/script.js b/packages/web/script.js index 630ab34d1..ab046a3d8 100644 --- a/packages/web/script.js +++ b/packages/web/script.js @@ -85,8 +85,27 @@ function visualize() { } else { vVis.vegaVis('#visualized', td); + + // Move bindings to controls panel + // Needs to be run on the next iteration of the event loop + // Thus, wrapped with zero timeout + setTimeout(() => { + const $bindings = document.querySelector('form.vega-bindings'); + const $wrapper = document.getElementById('vega-bindings-wrapper'); + $wrapper.innerHTML = ''; + $wrapper.appendChild($bindings); + }, 0); } + // Alter visibility of related controls + document.querySelectorAll(`div[class*="controls-"]`).forEach(x => { + if (x.classList.contains(`controls-${visType}`) || x.classList.contains('controls-all')) { + x.style.display = 'block'; + } else { + x.style.display = 'none'; + } + }); + return true; } @@ -94,7 +113,7 @@ document.querySelectorAll('#graph-vis, #tree-vis').forEach(el => { el.addEventListener('change', (e) => { visType = e.target.id.split('-')[0]; visualize(); - }) + }); }); document.getElementById("btn_visualize").addEventListener('click', () => { diff --git a/packages/web/vega-vis.js b/packages/web/vega-vis.js index 666919999..728c25c67 100644 --- a/packages/web/vega-vis.js +++ b/packages/web/vega-vis.js @@ -1,4 +1,4 @@ -export function vegaVis($container, td) { +export async function vegaVis($container, td) { const treeData = [ { @@ -45,7 +45,7 @@ export function vegaVis($container, td) { { "name": "originX", "update": "width / 2" }, { "name": "originY", "update": "height / 2" } ], - + "data": [ { "name": "tree", @@ -103,7 +103,7 @@ export function vegaVis($container, td) { ] } ], - + "scales": [ { "name": "color", @@ -113,7 +113,7 @@ export function vegaVis($container, td) { "zero": true } ], - + "marks": [ { "type": "path", @@ -167,7 +167,7 @@ export function vegaVis($container, td) { function tdToVega(source, parent) { Object.keys(source).forEach((key, index) => { if (key === '@id' || key === '@context' || source[key] === null) return; - + if (typeof source[key] === 'object' && !Array.isArray(source[key])) { treeData.push( { @@ -176,9 +176,9 @@ export function vegaVis($container, td) { parent: parent } ); - + tdToVega(source[key], `${parent}_${index}`); - + } else if (Array.isArray(source[key])) { treeData.push( { @@ -187,7 +187,7 @@ export function vegaVis($container, td) { parent: parent } ); - + source[key].map((e, i) => { if (typeof e === 'object') { treeData.push( @@ -207,7 +207,7 @@ export function vegaVis($container, td) { }); } }); - + } else { treeData.push({ id: `${parent}_${index}`, @@ -217,11 +217,16 @@ export function vegaVis($container, td) { } }); } - + tdToVega(td, treeData[0].id); - vegaEmbed( + const vegaResult = await vegaEmbed( $container, - conf + conf, + { + actions: false + } ); -} \ No newline at end of file + + window.vegaResult = vegaResult; +} From 44b58dcb40d1b337c328c95caa45e29ad35aed47 Mon Sep 17 00:00:00 2001 From: fatadel Date: Mon, 17 Oct 2022 16:00:39 +0200 Subject: [PATCH 09/13] add save as image functionality for vega --- packages/web/index.html | 4 ++-- packages/web/script.js | 7 +++++++ packages/web/vega-vis.js | 4 +--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/web/index.html b/packages/web/index.html index c1bc36201..80076406e 100644 --- a/packages/web/index.html +++ b/packages/web/index.html @@ -96,8 +96,8 @@
- - + SVG + PNG
diff --git a/packages/web/script.js b/packages/web/script.js index ab046a3d8..177a2f1cb 100644 --- a/packages/web/script.js +++ b/packages/web/script.js @@ -124,6 +124,13 @@ document.getElementById('close-visualized-popup').addEventListener('click', () = document.getElementById('visualized-popup-wrapper').style.display = 'none'; }); +document.querySelectorAll('#vis-download-svg, #vis-download-png').forEach(el => { + el.addEventListener('click', async (e) => { + const idParts = e.target.id.split('-'); + e.target.href = await window.vegaObj.view.toImageURL(idParts[idParts.length - 1]); + }); +}); + document.getElementById("btn_gistify").addEventListener("click", () => { if (window.editor.getValue() === "") { alert("Please paste a TD before submission") diff --git a/packages/web/vega-vis.js b/packages/web/vega-vis.js index 728c25c67..3cee7c7c0 100644 --- a/packages/web/vega-vis.js +++ b/packages/web/vega-vis.js @@ -220,13 +220,11 @@ export async function vegaVis($container, td) { tdToVega(td, treeData[0].id); - const vegaResult = await vegaEmbed( + window.vegaObj = await vegaEmbed( $container, conf, { actions: false } ); - - window.vegaResult = vegaResult; } From 46f7c49277a784099201b74012ab8c0979309b62 Mon Sep 17 00:00:00 2001 From: fatadel Date: Mon, 17 Oct 2022 16:38:20 +0200 Subject: [PATCH 10/13] add save as image functionality for jsonld --- packages/web/index.html | 1 + packages/web/package-lock.json | 1770 +++++++++++++++++++++++++++++--- packages/web/package.json | 3 +- packages/web/script.js | 13 +- 4 files changed, 1626 insertions(+), 161 deletions(-) diff --git a/packages/web/index.html b/packages/web/index.html index 80076406e..94c7e58ef 100644 --- a/packages/web/index.html +++ b/packages/web/index.html @@ -326,6 +326,7 @@

Thing Description Playground

+ diff --git a/packages/web/package-lock.json b/packages/web/package-lock.json index 3c2675e52..cb7dc394a 100644 --- a/packages/web/package-lock.json +++ b/packages/web/package-lock.json @@ -9,9 +9,15 @@ "version": "1.4.1", "license": "MIT", "dependencies": { + "@thing-description-playground/assertions": "^1.3.1", + "@thing-description-playground/core": "^1.2.1", + "@thing-description-playground/defaults": "^1.2.1", + "@thing-description-playground/td_to_asyncapi": "^1.0.2", + "@thing-description-playground/td_to_openapi": "^1.2.2", "bootstrap-css-only": "^4.4.1", "monaco-editor": "^0.34.0", - "papaparse": "^5.3.2" + "papaparse": "^5.3.2", + "svg-crowbar": "^0.7.0" }, "devDependencies": { "browserify": "^17.0.0", @@ -109,6 +115,83 @@ "terser": "^4.7.0" } }, + "node_modules/@apidevtools/json-schema-ref-parser": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", + "integrity": "sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==", + "dependencies": { + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.6", + "call-me-maybe": "^1.0.1", + "js-yaml": "^4.1.0" + } + }, + "node_modules/@apidevtools/json-schema-ref-parser/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/@apidevtools/json-schema-ref-parser/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@apidevtools/openapi-schemas": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz", + "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@apidevtools/swagger-methods": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", + "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==" + }, + "node_modules/@apidevtools/swagger-parser": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.0.3.tgz", + "integrity": "sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==", + "dependencies": { + "@apidevtools/json-schema-ref-parser": "^9.0.6", + "@apidevtools/openapi-schemas": "^2.0.4", + "@apidevtools/swagger-methods": "^3.0.2", + "@jsdevtools/ono": "^7.1.3", + "call-me-maybe": "^1.0.1", + "z-schema": "^5.0.1" + }, + "peerDependencies": { + "openapi-types": ">=7" + } + }, + "node_modules/@asyncapi/parser": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-1.17.0.tgz", + "integrity": "sha512-xNXtGZ/hTf8a1C4X65ESKkBJgSx0o9RDyX3LYdQfdQWsDjjmltK4saa9Peu+0Nr2bHU+xaziRo4tOv8QmJ5qfA==", + "dependencies": { + "@apidevtools/json-schema-ref-parser": "^9.0.6", + "@asyncapi/specs": "^3.2.0", + "@fmvilas/pseudo-yaml-ast": "^0.3.1", + "ajv": "^6.10.1", + "js-yaml": "^3.13.1", + "json-to-ast": "^2.1.0", + "lodash.clonedeep": "^4.5.0", + "node-fetch": "^2.6.0", + "tiny-merge-patch": "^0.1.2" + } + }, + "node_modules/@asyncapi/specs": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-3.2.1.tgz", + "integrity": "sha512-FO+EteK+Gk3zwumrBw6frpp9cJ4oQL5++hBBpfM81w16e9KaiA4sKrzvQsvVjifoZZHNvVEX4D2zoz9i8CLccQ==" + }, "node_modules/@eslint/eslintrc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", @@ -147,6 +230,14 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/@fmvilas/pseudo-yaml-ast": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@fmvilas/pseudo-yaml-ast/-/pseudo-yaml-ast-0.3.1.tgz", + "integrity": "sha512-8OAB74W2a9M3k9bjYD8AjVXkX+qO8c0SqNT5HlgOqx7AxSw8xdksEcZp7gFtfi+4njSxT6+76ZR+1ubjAwQHOg==", + "dependencies": { + "yaml-ast-parser": "0.0.43" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", @@ -235,6 +326,11 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -270,6 +366,58 @@ "node": ">= 8" } }, + "node_modules/@thing-description-playground/assertions": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@thing-description-playground/assertions/-/assertions-1.3.1.tgz", + "integrity": "sha512-rNT071dHhAou1gQfzN2uTbRmTqZD4xbYAVh0ewgUm9oLJYaK2lzANJw0zs+Ze2VrCe0XXhZlVEv5dP8XJq8XGQ==", + "dependencies": { + "@thing-description-playground/core": "^1.2.1", + "ajv": "^6.12.2", + "csvjson": "^5.1.0", + "is-utf8": "^0.2.1", + "json2csv": "^5.0.1" + } + }, + "node_modules/@thing-description-playground/core": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@thing-description-playground/core/-/core-1.2.1.tgz", + "integrity": "sha512-mz/H6TsAugTXdiLYo7ux+7rtZ77YxQ6Aqx5+msDUq1X+UBN35zy6qcaZmBHKhnsigDxxhRu8K7q0amuFXHVdmA==", + "dependencies": { + "ajv": "^6.12.2", + "json-dup-key-validator": "^1.0.2", + "jsonld": "^3.2.0" + } + }, + "node_modules/@thing-description-playground/defaults": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@thing-description-playground/defaults/-/defaults-1.2.1.tgz", + "integrity": "sha512-3MYicWXOyvn6AEsBlgonX6qnGjBRac9MOHCLEZdz/i4glQFKIGApB+zTsZc73AziCinAN5aGL25KM8+YvMk3Ng==" + }, + "node_modules/@thing-description-playground/td_to_asyncapi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@thing-description-playground/td_to_asyncapi/-/td_to_asyncapi-1.0.2.tgz", + "integrity": "sha512-PWb0Uc5wqaa50Td3Z2SqtUr5nIGXn12XpZm8pjn2pixBPLqTCG71G/UT1qdVVrNhgTSQeUSLvQUv2H3iYdof6Q==", + "dependencies": { + "@asyncapi/parser": "^1.2.0", + "@thing-description-playground/defaults": "^1.2.1", + "json-to-pretty-yaml": "^1.2.2" + } + }, + "node_modules/@thing-description-playground/td_to_openapi": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@thing-description-playground/td_to_openapi/-/td_to_openapi-1.2.2.tgz", + "integrity": "sha512-CwwVlUXYXK2xyVkK+gPC7zzM7oyYR2g0M0GZhpMaFh5kiDFW1Os8q/pY4e6o1Tir7+4MJT0I2i6IMwgCqL0g4w==", + "dependencies": { + "json-schema-faker": "^0.5.0-rcv.29", + "json-to-pretty-yaml": "^1.2.2", + "swagger-parser": "^10.0.2" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, "node_modules/@zeit/schemas": { "version": "2.21.0", "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.21.0.tgz", @@ -289,27 +437,6 @@ "node": ">= 0.6" } }, - "node_modules/accepts/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/accepts/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/acorn": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", @@ -365,7 +492,6 @@ }, "node_modules/ajv": { "version": "6.12.6", - "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -457,6 +583,14 @@ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "dev": true }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -466,6 +600,14 @@ "node": ">=8" } }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, "node_modules/asn1.js": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", @@ -494,6 +636,14 @@ "util": "0.10.3" } }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/assert/node_modules/inherits": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", @@ -509,6 +659,11 @@ "inherits": "2.0.1" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "node_modules/available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", @@ -521,6 +676,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "node_modules/backslash": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/backslash/-/backslash-0.2.0.tgz", + "integrity": "sha512-Avs+8FUZ1HF/VFP4YWwHQZSGzRPm37ukU1JQYQWijuHhtXdOuAzcZ8PcAzfIw898a8PyBzdn+RtnKA6MzW0X2A==" + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -547,6 +720,14 @@ } ] }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, "node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", @@ -860,7 +1041,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -869,6 +1049,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==" + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -890,6 +1075,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/canonicalize": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.8.tgz", + "integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==" + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -960,6 +1155,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/code-error-fragment": { + "version": "0.0.230", + "resolved": "https://registry.npmjs.org/code-error-fragment/-/code-error-fragment-0.0.230.tgz", + "integrity": "sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw==", + "engines": { + "node": ">= 4" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -990,6 +1193,25 @@ "source-map": "~0.5.3" } }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "engines": { + "node": ">= 6" + } + }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -1091,7 +1313,6 @@ }, "node_modules/core-util-is": { "version": "1.0.2", - "dev": true, "license": "MIT" }, "node_modules/create-ecdh": { @@ -1173,12 +1394,28 @@ "node": "*" } }, + "node_modules/csvjson": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/csvjson/-/csvjson-5.1.0.tgz", + "integrity": "sha512-OqALQHA0k2rEGluOWikwFq5qtkRUDyoWP2u0UJy8uFjFx5FPMjPzx7D2Hn2KjBLpc8jkGrT9HDNgTUfopDlqVg==" + }, "node_modules/dash-ast": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", "dev": true }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -1215,7 +1452,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, "dependencies": { "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" @@ -1233,6 +1469,14 @@ "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==", "dev": true }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/deps-sort": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", @@ -1341,6 +1585,15 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, "node_modules/elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", @@ -1372,7 +1625,6 @@ "version": "1.20.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -1409,7 +1661,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -1574,6 +1825,18 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/esquery": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", @@ -1658,9 +1921,21 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ] + }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "dev": true, "license": "MIT" }, "node_modules/fast-glob": { @@ -1693,7 +1968,6 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "dev": true, "license": "MIT" }, "node_modules/fast-levenshtein": { @@ -1800,6 +2074,32 @@ "is-callable": "^1.1.3" } }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/format-util": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/format-util/-/format-util-1.0.5.tgz", + "integrity": "sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==" + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1808,14 +2108,12 @@ }, "node_modules/function-bind": { "version": "1.1.1", - "dev": true, "license": "MIT" }, "node_modules/function.prototype.name": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -1839,7 +2137,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1854,7 +2151,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -1880,7 +2176,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -1892,6 +2187,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -1962,12 +2265,31 @@ "node_modules/grapheme-splitter": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } }, "node_modules/has": { "version": "1.0.3", - "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.1" @@ -1980,7 +2302,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1998,7 +2319,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, "dependencies": { "get-intrinsic": "^1.1.1" }, @@ -2010,7 +2330,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -2022,7 +2341,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -2091,6 +2409,20 @@ "node": ">=0.10" } }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, "node_modules/https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", @@ -2216,7 +2548,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, "dependencies": { "get-intrinsic": "^1.1.0", "has": "^1.0.3", @@ -2246,7 +2577,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, "dependencies": { "has-bigints": "^1.0.1" }, @@ -2258,7 +2588,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -2280,7 +2609,6 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -2304,7 +2632,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -2379,7 +2706,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -2400,7 +2726,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -2427,7 +2752,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -2443,7 +2767,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2" }, @@ -2467,7 +2790,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -2482,7 +2804,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -2512,11 +2833,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, "dependencies": { "call-bind": "^1.0.2" }, @@ -2548,9 +2878,65 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "node_modules/json-dup-key-validator": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/json-dup-key-validator/-/json-dup-key-validator-1.0.3.tgz", + "integrity": "sha512-JvJcV01JSiO7LRz7DY1Fpzn4wX2rJ3dfNTiAfnlvLNdhhnm0Pgdvhi2SGpENrZn7eSg26Ps3TPhOcuD/a4STXQ==", + "dependencies": { + "backslash": "^0.2.0" + } + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "node_modules/json-schema-faker": { + "version": "0.5.0-rcv.46", + "resolved": "https://registry.npmjs.org/json-schema-faker/-/json-schema-faker-0.5.0-rcv.46.tgz", + "integrity": "sha512-Q+sGrxptZfezwm7M9W9VmHT9E8s5fWPCaRC4J2zUjb3CmDsxokiCBdHdS/psu91Tafc/ITv+GtIztGzUVT2zIg==", + "dependencies": { + "json-schema-ref-parser": "^6.1.0", + "jsonpath-plus": "^5.1.0" + }, + "bin": { + "jsf": "bin/gen.cjs" + } + }, + "node_modules/json-schema-ref-parser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-6.1.0.tgz", + "integrity": "sha512-pXe9H1m6IgIpXmE5JSb8epilNTGsmTb2iPohAXpOdhqGFbQjNeHHsZxU+C8w6T81GZxSPFLeUoqDJmzxx5IGuw==", + "dependencies": { + "call-me-maybe": "^1.0.1", + "js-yaml": "^3.12.1", + "ono": "^4.0.11" + } + }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { @@ -2559,14 +2945,84 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, - "node_modules/jsonparse": { - "version": "1.3.1", - "dev": true, - "engines": [ - "node >= 0.2.0" - ], + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "node_modules/json-to-ast": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json-to-ast/-/json-to-ast-2.1.0.tgz", + "integrity": "sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==", + "dependencies": { + "code-error-fragment": "0.0.230", + "grapheme-splitter": "^1.0.4" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/json-to-pretty-yaml": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/json-to-pretty-yaml/-/json-to-pretty-yaml-1.2.2.tgz", + "integrity": "sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A==", + "dependencies": { + "remedial": "^1.0.7", + "remove-trailing-spaces": "^1.0.6" + }, + "engines": { + "node": ">= 0.2.0" + } + }, + "node_modules/json2csv": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/json2csv/-/json2csv-5.0.7.tgz", + "integrity": "sha512-YRZbUnyaJZLZUJSRi2G/MqahCyRv9n/ds+4oIetjDF3jWQA7AG7iSeKTiZiCNqtMZM7HDyt0e/W6lEnoGEmMGA==", + "dependencies": { + "commander": "^6.1.0", + "jsonparse": "^1.3.1", + "lodash.get": "^4.4.2" + }, + "bin": { + "json2csv": "bin/json2csv.js" + }, + "engines": { + "node": ">= 10", + "npm": ">= 6.13.0" + } + }, + "node_modules/jsonld": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-3.3.2.tgz", + "integrity": "sha512-DXqG/fdiG7eJ8FzvSd58bW8DQsulQR/gjLYUz9PxBP/WTTpB2HzjjdxSAx5aBHewJ0RiFAV/QcqGCJjxHvuIzw==", + "dependencies": { + "canonicalize": "^1.0.1", + "lru-cache": "^5.1.1", + "object.fromentries": "^2.0.2", + "rdf-canonize": "^2.0.1", + "request": "^2.88.0", + "semver": "^6.3.0", + "xmldom": "0.1.19" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "engines": [ + "node >= 0.2.0" + ], "license": "MIT" }, + "node_modules/jsonpath-plus": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-5.1.0.tgz", + "integrity": "sha512-890w2Pjtj0iswAxalRlt2kHthi6HKrXEfZcn+ZNZptv7F3rUGIeDuZo+C+h4vXBHLEsVjJrHeCm35nYeZLzSBQ==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/JSONStream": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", @@ -2583,6 +3039,20 @@ "node": "*" } }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/labeled-stream-splicer": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", @@ -2621,6 +3091,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, "node_modules/lodash.memoize": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", @@ -2633,6 +3118,14 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, "node_modules/md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -2692,9 +3185,20 @@ "dev": true }, "node_modules/mime-db": { - "version": "1.44.0", - "dev": true, - "license": "MIT", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, "engines": { "node": ">= 0.6" } @@ -2799,6 +3303,25 @@ "node": ">= 0.6" } }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -2811,6 +3334,14 @@ "node": ">=8" } }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -2824,7 +3355,6 @@ "version": "1.12.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2833,7 +3363,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, "engines": { "node": ">= 0.4" } @@ -2842,7 +3371,6 @@ "version": "4.1.4", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -2856,6 +3384,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/on-headers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", @@ -2889,6 +3433,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ono": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/ono/-/ono-4.0.11.tgz", + "integrity": "sha512-jQ31cORBFE6td25deYeD80wxKBMj+zBmHTrVxnc6CKhx8gho6ipmWM5zj/oeoqioZ99yqBls9Z/9Nss7J26G2g==", + "dependencies": { + "format-util": "^1.0.3" + } + }, + "node_modules/openapi-types": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.0.2.tgz", + "integrity": "sha512-GuTo7FyZjOIWVhIhQSWJVaws6A82sWIGyQogxxYBYKZ0NBdyP2CYSIgOwFfSB+UVoPExk/YzFpyYitHS8KVZtA==", + "peer": true + }, "node_modules/optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -3072,6 +3630,11 @@ "node": ">=0.12" } }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -3136,6 +3699,11 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, "node_modules/public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", @@ -3158,12 +3726,19 @@ }, "node_modules/punycode": { "version": "2.1.1", - "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } + }, "node_modules/querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -3255,6 +3830,18 @@ "node": ">=0.10.0" } }, + "node_modules/rdf-canonize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/rdf-canonize/-/rdf-canonize-2.0.1.tgz", + "integrity": "sha512-/GVELjrfW8G/wS4QfDZ5Kq68cS1belVNJqZlcwiErerexeBUsgOINCROnP7UumWIBNdeCwTVLE9NVXMnRYK0lA==", + "dependencies": { + "semver": "^6.3.0", + "setimmediate": "^1.0.5" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/read-only-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", @@ -3298,7 +3885,6 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -3345,6 +3931,50 @@ "node": ">=0.10.0" } }, + "node_modules/remedial": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/remedial/-/remedial-1.0.8.tgz", + "integrity": "sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==", + "engines": { + "node": "*" + } + }, + "node_modules/remove-trailing-spaces": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/remove-trailing-spaces/-/remove-trailing-spaces-1.0.8.tgz", + "integrity": "sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA==" + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -3440,7 +4070,6 @@ }, "node_modules/safe-buffer": { "version": "5.2.1", - "dev": true, "funding": [ { "type": "github", @@ -3459,9 +4088,16 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "dev": true, "license": "MIT" }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/serve": { "version": "14.0.1", "resolved": "https://registry.npmjs.org/serve/-/serve-14.0.1.tgz", @@ -3570,6 +4206,11 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, "node_modules/sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", @@ -3623,7 +4264,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -3696,6 +4336,35 @@ "node": ">=0.10.0" } }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/stream-browserify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", @@ -3823,7 +4492,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -3837,7 +4505,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -3913,6 +4580,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svg-crowbar": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/svg-crowbar/-/svg-crowbar-0.7.0.tgz", + "integrity": "sha512-ZDiUjLsExz6GW7vSkW5B5yQzoST4Wy843jcaxChgFHBuj8ZcR4OLQFNU6JI8pwHeQ//NZ9Q/+QLGfRCKIiiJnw==" + }, + "node_modules/swagger-parser": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-10.0.3.tgz", + "integrity": "sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg==", + "dependencies": { + "@apidevtools/swagger-parser": "10.0.3" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/syntax-error": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", @@ -3980,6 +4663,11 @@ "node": ">=0.6.0" } }, + "node_modules/tiny-merge-patch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/tiny-merge-patch/-/tiny-merge-patch-0.1.2.tgz", + "integrity": "sha512-NLoA//tTMBPTr0oGdq+fxnvVR0tDa8tOcG9ZGbuovGzROadZ404qOV4g01jeWa5S8MC9nAOvu5bQgCW7s8tlWQ==" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -3992,12 +4680,45 @@ "node": ">=8.0" } }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, "node_modules/tty-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", "dev": true }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -4041,7 +4762,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -4080,7 +4800,6 @@ }, "node_modules/uri-js": { "version": "4.4.0", - "dev": true, "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" @@ -4122,12 +4841,29 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, + "node_modules/validator": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -4137,12 +4873,39 @@ "node": ">= 0.8" } }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, "node_modules/vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "dev": true }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -4162,7 +4925,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -4280,6 +5042,15 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "node_modules/xmldom": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.19.tgz", + "integrity": "sha512-pDyxjQSFQgNHkU+yjvoF+GXVGJU7e9EnOg/KcGMDihBIKjTsOeDYaECwC/O9bsUWKY+Sd9izfE43JXC46EOHKA==", + "deprecated": "Deprecated due to CVE-2021-21366 resolved in 0.5.0", + "engines": { + "node": ">=0.1" + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -4289,6 +5060,16 @@ "node": ">=0.4" } }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yaml-ast-parser": { + "version": "0.0.43", + "resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz", + "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==" + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -4300,9 +5081,104 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/z-schema": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.4.tgz", + "integrity": "sha512-gm/lx3hDzJNcLwseIeQVm1UcwhWIKpSB4NqH89pTBtFns4k/HDHudsICtvG05Bvw/Mv3jMyk700y5dadueLHdA==", + "dependencies": { + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + }, + "bin": { + "z-schema": "bin/z-schema" + }, + "engines": { + "node": ">=8.0.0" + }, + "optionalDependencies": { + "commander": "^2.20.3" + } + }, + "node_modules/z-schema/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "optional": true } }, "dependencies": { + "@apidevtools/json-schema-ref-parser": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", + "integrity": "sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==", + "requires": { + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.6", + "call-me-maybe": "^1.0.1", + "js-yaml": "^4.1.0" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + } + } + }, + "@apidevtools/openapi-schemas": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz", + "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==" + }, + "@apidevtools/swagger-methods": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", + "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==" + }, + "@apidevtools/swagger-parser": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.0.3.tgz", + "integrity": "sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==", + "requires": { + "@apidevtools/json-schema-ref-parser": "^9.0.6", + "@apidevtools/openapi-schemas": "^2.0.4", + "@apidevtools/swagger-methods": "^3.0.2", + "@jsdevtools/ono": "^7.1.3", + "call-me-maybe": "^1.0.1", + "z-schema": "^5.0.1" + } + }, + "@asyncapi/parser": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-1.17.0.tgz", + "integrity": "sha512-xNXtGZ/hTf8a1C4X65ESKkBJgSx0o9RDyX3LYdQfdQWsDjjmltK4saa9Peu+0Nr2bHU+xaziRo4tOv8QmJ5qfA==", + "requires": { + "@apidevtools/json-schema-ref-parser": "^9.0.6", + "@asyncapi/specs": "^3.2.0", + "@fmvilas/pseudo-yaml-ast": "^0.3.1", + "ajv": "^6.10.1", + "js-yaml": "^3.13.1", + "json-to-ast": "^2.1.0", + "lodash.clonedeep": "^4.5.0", + "node-fetch": "^2.6.0", + "tiny-merge-patch": "^0.1.2" + } + }, + "@asyncapi/specs": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-3.2.1.tgz", + "integrity": "sha512-FO+EteK+Gk3zwumrBw6frpp9cJ4oQL5++hBBpfM81w16e9KaiA4sKrzvQsvVjifoZZHNvVEX4D2zoz9i8CLccQ==" + }, "@eslint/eslintrc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", @@ -4337,6 +5213,14 @@ } } }, + "@fmvilas/pseudo-yaml-ast": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@fmvilas/pseudo-yaml-ast/-/pseudo-yaml-ast-0.3.1.tgz", + "integrity": "sha512-8OAB74W2a9M3k9bjYD8AjVXkX+qO8c0SqNT5HlgOqx7AxSw8xdksEcZp7gFtfi+4njSxT6+76ZR+1ubjAwQHOg==", + "requires": { + "yaml-ast-parser": "0.0.43" + } + }, "@humanwhocodes/config-array": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", @@ -4409,6 +5293,11 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==" + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -4435,6 +5324,58 @@ "fastq": "^1.6.0" } }, + "@thing-description-playground/assertions": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@thing-description-playground/assertions/-/assertions-1.3.1.tgz", + "integrity": "sha512-rNT071dHhAou1gQfzN2uTbRmTqZD4xbYAVh0ewgUm9oLJYaK2lzANJw0zs+Ze2VrCe0XXhZlVEv5dP8XJq8XGQ==", + "requires": { + "@thing-description-playground/core": "^1.2.1", + "ajv": "^6.12.2", + "csvjson": "^5.1.0", + "is-utf8": "^0.2.1", + "json2csv": "^5.0.1" + } + }, + "@thing-description-playground/core": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@thing-description-playground/core/-/core-1.2.1.tgz", + "integrity": "sha512-mz/H6TsAugTXdiLYo7ux+7rtZ77YxQ6Aqx5+msDUq1X+UBN35zy6qcaZmBHKhnsigDxxhRu8K7q0amuFXHVdmA==", + "requires": { + "ajv": "^6.12.2", + "json-dup-key-validator": "^1.0.2", + "jsonld": "^3.2.0" + } + }, + "@thing-description-playground/defaults": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@thing-description-playground/defaults/-/defaults-1.2.1.tgz", + "integrity": "sha512-3MYicWXOyvn6AEsBlgonX6qnGjBRac9MOHCLEZdz/i4glQFKIGApB+zTsZc73AziCinAN5aGL25KM8+YvMk3Ng==" + }, + "@thing-description-playground/td_to_asyncapi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@thing-description-playground/td_to_asyncapi/-/td_to_asyncapi-1.0.2.tgz", + "integrity": "sha512-PWb0Uc5wqaa50Td3Z2SqtUr5nIGXn12XpZm8pjn2pixBPLqTCG71G/UT1qdVVrNhgTSQeUSLvQUv2H3iYdof6Q==", + "requires": { + "@asyncapi/parser": "^1.2.0", + "@thing-description-playground/defaults": "^1.2.1", + "json-to-pretty-yaml": "^1.2.2" + } + }, + "@thing-description-playground/td_to_openapi": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@thing-description-playground/td_to_openapi/-/td_to_openapi-1.2.2.tgz", + "integrity": "sha512-CwwVlUXYXK2xyVkK+gPC7zzM7oyYR2g0M0GZhpMaFh5kiDFW1Os8q/pY4e6o1Tir7+4MJT0I2i6IMwgCqL0g4w==", + "requires": { + "json-schema-faker": "^0.5.0-rcv.29", + "json-to-pretty-yaml": "^1.2.2", + "swagger-parser": "^10.0.2" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, "@zeit/schemas": { "version": "2.21.0", "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.21.0.tgz", @@ -4449,23 +5390,6 @@ "requires": { "mime-types": "~2.1.34", "negotiator": "0.6.3" - }, - "dependencies": { - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - } } }, "acorn": { @@ -4508,7 +5432,6 @@ }, "ajv": { "version": "6.12.6", - "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -4571,12 +5494,28 @@ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "dev": true }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, "array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, "asn1.js": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", @@ -4624,12 +5563,37 @@ } } }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", "dev": true }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "backslash": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/backslash/-/backslash-0.2.0.tgz", + "integrity": "sha512-Avs+8FUZ1HF/VFP4YWwHQZSGzRPm37ukU1JQYQWijuHhtXdOuAzcZ8PcAzfIw898a8PyBzdn+RtnKA6MzW0X2A==" + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -4642,6 +5606,14 @@ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "requires": { + "tweetnacl": "^0.14.3" + } + }, "bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", @@ -4925,12 +5897,16 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" } }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==" + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -4943,6 +5919,16 @@ "integrity": "sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==", "dev": true }, + "canonicalize": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.8.tgz", + "integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -4989,6 +5975,11 @@ "is-wsl": "^2.2.0" } }, + "code-error-fragment": { + "version": "0.0.230", + "resolved": "https://registry.npmjs.org/code-error-fragment/-/code-error-fragment-0.0.230.tgz", + "integrity": "sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw==" + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -5016,6 +6007,19 @@ "source-map": "~0.5.3" } }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" + }, "compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -5106,8 +6110,7 @@ "dev": true }, "core-util-is": { - "version": "1.0.2", - "dev": true + "version": "1.0.2" }, "create-ecdh": { "version": "4.0.4", @@ -5184,12 +6187,25 @@ "randomfill": "^1.0.3" } }, + "csvjson": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/csvjson/-/csvjson-5.1.0.tgz", + "integrity": "sha512-OqALQHA0k2rEGluOWikwFq5qtkRUDyoWP2u0UJy8uFjFx5FPMjPzx7D2Hn2KjBLpc8jkGrT9HDNgTUfopDlqVg==" + }, "dash-ast": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", "dev": true }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "requires": { + "assert-plus": "^1.0.0" + } + }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -5215,7 +6231,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, "requires": { "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" @@ -5227,6 +6242,11 @@ "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==", "dev": true }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, "deps-sort": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", @@ -5318,6 +6338,15 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, "elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", @@ -5351,7 +6380,6 @@ "version": "1.20.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", - "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -5382,7 +6410,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -5503,6 +6530,11 @@ "eslint-visitor-keys": "^3.3.0" } }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, "esquery": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", @@ -5566,9 +6598,18 @@ "strip-final-newline": "^2.0.0" } }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" + }, "fast-deep-equal": { - "version": "3.1.3", - "dev": true + "version": "3.1.3" }, "fast-glob": { "version": "3.2.11", @@ -5595,8 +6636,7 @@ } }, "fast-json-stable-stringify": { - "version": "2.1.0", - "dev": true + "version": "2.1.0" }, "fast-levenshtein": { "version": "2.0.6", @@ -5689,6 +6729,26 @@ "is-callable": "^1.1.3" } }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "format-util": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/format-util/-/format-util-1.0.5.tgz", + "integrity": "sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==" + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -5696,14 +6756,12 @@ "dev": true }, "function-bind": { - "version": "1.1.1", - "dev": true + "version": "1.1.1" }, "function.prototype.name": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -5720,8 +6778,7 @@ "functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" }, "get-assigned-identifiers": { "version": "1.2.0", @@ -5733,7 +6790,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -5750,12 +6806,19 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" } }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "requires": { + "assert-plus": "^1.0.0" + } + }, "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -5805,12 +6868,24 @@ "grapheme-splitter": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } }, "has": { "version": "1.0.3", - "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -5818,8 +6893,7 @@ "has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" }, "has-flag": { "version": "4.0.0", @@ -5831,7 +6905,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, "requires": { "get-intrinsic": "^1.1.1" } @@ -5839,14 +6912,12 @@ "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "has-tostringtag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -5902,6 +6973,16 @@ "integrity": "sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==", "dev": true }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", @@ -5995,7 +7076,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, "requires": { "get-intrinsic": "^1.1.0", "has": "^1.0.3", @@ -6016,7 +7096,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, "requires": { "has-bigints": "^1.0.1" } @@ -6025,7 +7104,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -6040,8 +7118,7 @@ "is-callable": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" }, "is-core-module": { "version": "2.10.0", @@ -6056,7 +7133,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -6100,8 +7176,7 @@ "is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" }, "is-number": { "version": "7.0.0", @@ -6113,7 +7188,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -6128,7 +7202,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -6138,7 +7211,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, "requires": { "call-bind": "^1.0.2" } @@ -6153,7 +7225,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -6162,7 +7233,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -6180,11 +7250,20 @@ "has-tostringtag": "^1.0.0" } }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" + }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, "requires": { "call-bind": "^1.0.2" } @@ -6210,9 +7289,59 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "json-dup-key-validator": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/json-dup-key-validator/-/json-dup-key-validator-1.0.3.tgz", + "integrity": "sha512-JvJcV01JSiO7LRz7DY1Fpzn4wX2rJ3dfNTiAfnlvLNdhhnm0Pgdvhi2SGpENrZn7eSg26Ps3TPhOcuD/a4STXQ==", + "requires": { + "backslash": "^0.2.0" + } + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "json-schema-faker": { + "version": "0.5.0-rcv.46", + "resolved": "https://registry.npmjs.org/json-schema-faker/-/json-schema-faker-0.5.0-rcv.46.tgz", + "integrity": "sha512-Q+sGrxptZfezwm7M9W9VmHT9E8s5fWPCaRC4J2zUjb3CmDsxokiCBdHdS/psu91Tafc/ITv+GtIztGzUVT2zIg==", + "requires": { + "json-schema-ref-parser": "^6.1.0", + "jsonpath-plus": "^5.1.0" + } + }, + "json-schema-ref-parser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-6.1.0.tgz", + "integrity": "sha512-pXe9H1m6IgIpXmE5JSb8epilNTGsmTb2iPohAXpOdhqGFbQjNeHHsZxU+C8w6T81GZxSPFLeUoqDJmzxx5IGuw==", + "requires": { + "call-me-maybe": "^1.0.1", + "js-yaml": "^3.12.1", + "ono": "^4.0.11" + } + }, "json-schema-traverse": { - "version": "0.4.1", - "dev": true + "version": "0.4.1" }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -6220,9 +7349,60 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "json-to-ast": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json-to-ast/-/json-to-ast-2.1.0.tgz", + "integrity": "sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==", + "requires": { + "code-error-fragment": "0.0.230", + "grapheme-splitter": "^1.0.4" + } + }, + "json-to-pretty-yaml": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/json-to-pretty-yaml/-/json-to-pretty-yaml-1.2.2.tgz", + "integrity": "sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A==", + "requires": { + "remedial": "^1.0.7", + "remove-trailing-spaces": "^1.0.6" + } + }, + "json2csv": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/json2csv/-/json2csv-5.0.7.tgz", + "integrity": "sha512-YRZbUnyaJZLZUJSRi2G/MqahCyRv9n/ds+4oIetjDF3jWQA7AG7iSeKTiZiCNqtMZM7HDyt0e/W6lEnoGEmMGA==", + "requires": { + "commander": "^6.1.0", + "jsonparse": "^1.3.1", + "lodash.get": "^4.4.2" + } + }, + "jsonld": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-3.3.2.tgz", + "integrity": "sha512-DXqG/fdiG7eJ8FzvSd58bW8DQsulQR/gjLYUz9PxBP/WTTpB2HzjjdxSAx5aBHewJ0RiFAV/QcqGCJjxHvuIzw==", + "requires": { + "canonicalize": "^1.0.1", + "lru-cache": "^5.1.1", + "object.fromentries": "^2.0.2", + "rdf-canonize": "^2.0.1", + "request": "^2.88.0", + "semver": "^6.3.0", + "xmldom": "0.1.19" + } + }, "jsonparse": { - "version": "1.3.1", - "dev": true + "version": "1.3.1" + }, + "jsonpath-plus": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-5.1.0.tgz", + "integrity": "sha512-890w2Pjtj0iswAxalRlt2kHthi6HKrXEfZcn+ZNZptv7F3rUGIeDuZo+C+h4vXBHLEsVjJrHeCm35nYeZLzSBQ==" }, "JSONStream": { "version": "1.3.5", @@ -6234,6 +7414,17 @@ "through": ">=2.2.7 <3" } }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, "labeled-stream-splicer": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", @@ -6263,6 +7454,21 @@ "p-locate": "^5.0.0" } }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, "lodash.memoize": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", @@ -6275,6 +7481,14 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -6327,8 +7541,17 @@ } }, "mime-db": { - "version": "1.44.0", - "dev": true + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } }, "mimic-fn": { "version": "2.1.0", @@ -6415,6 +7638,14 @@ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, "npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -6424,6 +7655,11 @@ "path-key": "^3.0.0" } }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -6433,20 +7669,17 @@ "object-inspect": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, "object.assign": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -6454,6 +7687,16 @@ "object-keys": "^1.1.1" } }, + "object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, "on-headers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", @@ -6478,6 +7721,20 @@ "mimic-fn": "^2.1.0" } }, + "ono": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/ono/-/ono-4.0.11.tgz", + "integrity": "sha512-jQ31cORBFE6td25deYeD80wxKBMj+zBmHTrVxnc6CKhx8gho6ipmWM5zj/oeoqioZ99yqBls9Z/9Nss7J26G2g==", + "requires": { + "format-util": "^1.0.3" + } + }, + "openapi-types": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.0.2.tgz", + "integrity": "sha512-GuTo7FyZjOIWVhIhQSWJVaws6A82sWIGyQogxxYBYKZ0NBdyP2CYSIgOwFfSB+UVoPExk/YzFpyYitHS8KVZtA==", + "peer": true + }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -6625,6 +7882,11 @@ "sha.js": "^2.4.8" } }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -6664,6 +7926,11 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, "public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", @@ -6687,8 +7954,12 @@ } }, "punycode": { - "version": "2.1.1", - "dev": true + "version": "2.1.1" + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" }, "querystring": { "version": "0.2.0", @@ -6753,6 +8024,15 @@ } } }, + "rdf-canonize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/rdf-canonize/-/rdf-canonize-2.0.1.tgz", + "integrity": "sha512-/GVELjrfW8G/wS4QfDZ5Kq68cS1belVNJqZlcwiErerexeBUsgOINCROnP7UumWIBNdeCwTVLE9NVXMnRYK0lA==", + "requires": { + "semver": "^6.3.0", + "setimmediate": "^1.0.5" + } + }, "read-only-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", @@ -6798,7 +8078,6 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -6830,6 +8109,43 @@ "rc": "^1.0.1" } }, + "remedial": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/remedial/-/remedial-1.0.8.tgz", + "integrity": "sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==" + }, + "remove-trailing-spaces": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/remove-trailing-spaces/-/remove-trailing-spaces-1.0.8.tgz", + "integrity": "sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA==" + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -6888,12 +8204,15 @@ } }, "safe-buffer": { - "version": "5.2.1", - "dev": true + "version": "5.2.1" }, "safer-buffer": { - "version": "2.1.2", - "dev": true + "version": "2.1.2" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, "serve": { "version": "14.0.1", @@ -6982,6 +8301,11 @@ } } }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, "sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", @@ -7026,7 +8350,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, "requires": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -7075,6 +8398,27 @@ } } }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, "stream-browserify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", @@ -7184,7 +8528,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", - "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -7195,7 +8538,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -7247,6 +8589,19 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "svg-crowbar": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/svg-crowbar/-/svg-crowbar-0.7.0.tgz", + "integrity": "sha512-ZDiUjLsExz6GW7vSkW5B5yQzoST4Wy843jcaxChgFHBuj8ZcR4OLQFNU6JI8pwHeQ//NZ9Q/+QLGfRCKIiiJnw==" + }, + "swagger-parser": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-10.0.3.tgz", + "integrity": "sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg==", + "requires": { + "@apidevtools/swagger-parser": "10.0.3" + } + }, "syntax-error": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", @@ -7307,6 +8662,11 @@ "process": "~0.11.0" } }, + "tiny-merge-patch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/tiny-merge-patch/-/tiny-merge-patch-0.1.2.tgz", + "integrity": "sha512-NLoA//tTMBPTr0oGdq+fxnvVR0tDa8tOcG9ZGbuovGzROadZ404qOV4g01jeWa5S8MC9nAOvu5bQgCW7s8tlWQ==" + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -7316,12 +8676,39 @@ "is-number": "^7.0.0" } }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, "tty-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", "dev": true }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -7353,7 +8740,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, "requires": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -7386,7 +8772,6 @@ }, "uri-js": { "version": "4.4.0", - "dev": true, "requires": { "punycode": "^2.1.0" } @@ -7429,24 +8814,58 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, "v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, + "validator": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, "vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "dev": true }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -7460,7 +8879,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, "requires": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -7538,17 +8956,51 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "xmldom": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.19.tgz", + "integrity": "sha512-pDyxjQSFQgNHkU+yjvoF+GXVGJU7e9EnOg/KcGMDihBIKjTsOeDYaECwC/O9bsUWKY+Sd9izfE43JXC46EOHKA==" + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yaml-ast-parser": { + "version": "0.0.43", + "resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz", + "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==" + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true + }, + "z-schema": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.4.tgz", + "integrity": "sha512-gm/lx3hDzJNcLwseIeQVm1UcwhWIKpSB4NqH89pTBtFns4k/HDHudsICtvG05Bvw/Mv3jMyk700y5dadueLHdA==", + "requires": { + "commander": "^2.20.3", + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "optional": true + } + } } } } diff --git a/packages/web/package.json b/packages/web/package.json index 3743d2774..2bb139647 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -27,7 +27,8 @@ "@thing-description-playground/td_to_openapi": "^1.2.2", "bootstrap-css-only": "^4.4.1", "monaco-editor": "^0.34.0", - "papaparse": "^5.3.2" + "papaparse": "^5.3.2", + "svg-crowbar": "^0.7.0" }, "devDependencies": { "browserify": "^17.0.0", diff --git a/packages/web/script.js b/packages/web/script.js index 177a2f1cb..b3c4c26f5 100644 --- a/packages/web/script.js +++ b/packages/web/script.js @@ -127,7 +127,18 @@ document.getElementById('close-visualized-popup').addEventListener('click', () = document.querySelectorAll('#vis-download-svg, #vis-download-png').forEach(el => { el.addEventListener('click', async (e) => { const idParts = e.target.id.split('-'); - e.target.href = await window.vegaObj.view.toImageURL(idParts[idParts.length - 1]); + const format = idParts[idParts.length - 1]; + + if (visType === 'graph') { + e.preventDefault(); + if (format === 'svg') { + downloadSvg(document.querySelector('#visualized svg'), 'td'); + } else { + downloadPng(document.querySelector('#visualized svg'), 'td'); + } + } else { + e.target.href = await window.vegaObj.view.toImageURL(format); + } }); }); From 992649df27fe0cab7ff2cb508c4270c816548d4e Mon Sep 17 00:00:00 2001 From: fatadel Date: Thu, 20 Oct 2022 12:36:39 +0200 Subject: [PATCH 11/13] fix issue #356 --- packages/web/script.js | 90 +++++++++++++++++------------------------- 1 file changed, 37 insertions(+), 53 deletions(-) diff --git a/packages/web/script.js b/packages/web/script.js index c90b911a8..7da340922 100644 --- a/packages/web/script.js +++ b/packages/web/script.js @@ -14,10 +14,6 @@ const results = [] let autoValidate = false let docType = "td" let urlAddrObject -const jsonOptions = { - validate: true, - schemas: [] -} const tdRelated = []; [].forEach.call(document.querySelectorAll('.td-related'), el => { @@ -205,65 +201,53 @@ document.getElementById("btn_defaults_remove").addEventListener("click", util.re //* *************************Monaco editor code*********************************//// // Load monaco editor ACM require.config({ paths: { 'vs': './node_modules/monaco-editor/min/vs' }}); -require(['vs/editor/editor.main'], window.tdEditor=function() { - - const jsonCode = [].join('\n'); // Temporary initial Json - const modelUri = monaco.Uri.parse("a://b/foo.json"); // a made up unique URI for our model - const model = monaco.editor.createModel(jsonCode, "json", modelUri); - - model.onDidChangeContent(() => { - markTypos(model) - }); - - fetch("./node_modules/@thing-description-playground/core/td-schema.json") - .then(res => res.json()) - .then( json => { - const tdSchema=json; - jsonOptions['schemas'].push({ - fileMatch: [modelUri.toString()], // associate with our model - schema: tdSchema - }) - - // configure the JSON language support with schemas and schema associations - monaco.languages.json.jsonDefaults.setDiagnosticsOptions(jsonOptions); - - window.tdEditor=monaco.editor.create(document.getElementById("td-editor"), { - model, - contextmenu: false, - theme:"vs" - }) - - document.getElementById("curtain").style.display = "none" - - model.onDidChangeContent(event => { // When text in the Editor changes - util.validate("auto", autoValidate, docType) - }) - - window.editor = window.tdEditor - }, err => { - console.error("loading TD schema for editor failed" + err) - }) -}) - require(['vs/editor/editor.main'], async function () { + // Create globally available TD editor + window.tdEditor = monaco.editor.create(document.getElementById('td-editor'), { + language: 'json' + }); + + // Create globally available TM editor window.tmEditor = monaco.editor.create(document.getElementById('tm-editor'), { language: 'json', // Without automaticLayout editor will not be built inside hidden div automaticLayout: true }); - window.tmEditor.getModel().onDidChangeContent(_ => { - util.validate("auto", autoValidate, docType) - }); + window.editor = window.tdEditor; + document.getElementById('curtain').style.display = 'none'; + + const models = [ + window.tdEditor.getModel(), + window.tmEditor.getModel() + ]; - const schema = await fetch("./node_modules/@thing-description-playground/core/tm-schema.json"); - const schemaJson = await schema.json(); - jsonOptions['schemas'].push({ - fileMatch: [window.tmEditor.getModel().uri.toString()], - schema: schemaJson + models.forEach(model => { + model.onDidChangeContent(_ => { + markTypos(model); + util.validate('auto', autoValidate, docType); + }); }); - monaco.languages.json.jsonDefaults.setDiagnosticsOptions(jsonOptions); + const tdSchema = await (await fetch('./node_modules/@thing-description-playground/core/td-schema.json')).json(); + const tmSchema = await (await fetch('./node_modules/@thing-description-playground/core/tm-schema.json')).json(); + + // Configure JSON language support with schemas and schema associations + monaco.languages.json.jsonDefaults.setDiagnosticsOptions({ + validate: true, + schemas: [ + { + fileMatch: [models[0].uri.toString()], + schema: tdSchema, + uri: 'file:///td-schema.json' + }, + { + fileMatch: [models[1].uri.toString()], + schema: tmSchema, + uri: 'file:///tm-schema.json' + } + ] + }); }); /** From 519114363d5ca443a142182bb4389457e809e2a9 Mon Sep 17 00:00:00 2001 From: fatadel Date: Fri, 21 Oct 2022 01:28:01 +0200 Subject: [PATCH 12/13] add integrity checks to d3 and d3-tip cdn loads --- packages/web/index.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/web/index.html b/packages/web/index.html index 94c7e58ef..9aa1c4fb3 100644 --- a/packages/web/index.html +++ b/packages/web/index.html @@ -323,9 +323,9 @@

Thing Description Playground

- - - + + + From f1182fc639e7208068e67f3c5b73ab30a153073c Mon Sep 17 00:00:00 2001 From: fatadel Date: Fri, 21 Oct 2022 14:43:09 +0200 Subject: [PATCH 13/13] add integrity checks to vega and vega-embed cdn loads --- packages/web/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/web/index.html b/packages/web/index.html index 9aa1c4fb3..678bfe851 100644 --- a/packages/web/index.html +++ b/packages/web/index.html @@ -326,9 +326,9 @@

Thing Description Playground

+ + - -