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

vap-visual

Package Overview
Dependencies
Maintainers
1
Versions
76
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vap-visual - npm Package Compare versions

Comparing version 0.2.2 to 0.2.3

2

_Common/Axises/XDateDrawer.js

@@ -107,7 +107,5 @@ "use strict";

x.tickFormat(function (v) {
// console.log(this.DATA)
if (v % 1 != 0 || v == 0 || v == (_this.DATA.length - 1)) {
return '';
}
// console.log(this.DATA, v)
return _this.format(_this.DATA[v][_this.labelField], _this.DATA[v]);

@@ -114,0 +112,0 @@ });

@@ -89,7 +89,3 @@ "use strict";

this.DATA = data;
// console.log(data)
// console.log(this.labelField);
// console.log(labelField);
var _a = __read(d3.extent(data, function (item) { return item[_this.labelField]; }), 2), min = _a[0], max = _a[1];
// console.log(min,max)
if (_.isEqual(this.layout, layout)) {

@@ -96,0 +92,0 @@ this.scale = d3.scaleLinear().domain([min, max]).range([0, this.layout.w - this.margin]);

@@ -107,3 +107,2 @@ "use strict";

x.tickFormat(function (v) {
// console.log(this.DATA)
if (v % 1 == 0)

@@ -110,0 +109,0 @@ return _this.format(_this.DATA[v][_this.labelField], _this.DATA[v]);

@@ -87,5 +87,3 @@ "use strict";

YPercentDrawer.prototype.data = function (layout, data, labelField) {
// console.log(this.layout, this.margin)
var top = this.layout.h - this.margin;
// console.log(top)
if (_.isEqual(this.layout, layout)) {

@@ -99,3 +97,2 @@ this.scale = d3.scaleLinear().domain([0, 1]).range([0, -top]);

}
// console.log(this.scale(1))
};

@@ -102,0 +99,0 @@ YPercentDrawer.prototype.draw = function () {

@@ -88,3 +88,2 @@ "use strict";

// this.rows = 2;
// console.log(this.data.length )
this.init();

@@ -145,3 +144,2 @@ }

var cidx = i % this.cols;
// console.log(this.config.postion)
switch (this.config.postion) {

@@ -169,4 +167,2 @@ case 'l':

LegendDrawer.prototype.getEnd = function (i) {
// console.log(i)
// console.log(this.cols)
//row - index

@@ -176,3 +172,2 @@ var ridx = Math.floor(i / this.cols);

var cidx = i % this.cols;
// console.log(ridx, cidx)
switch (this.config.postion) {

@@ -179,0 +174,0 @@ case 'l':

@@ -72,3 +72,2 @@ "use strict";

if (y === void 0) { y = 0; }
// console.log(width, height)
if (height == 0) {

@@ -75,0 +74,0 @@ return NONE;

2

_Common/Visual.d.ts

@@ -41,3 +41,3 @@ import * as d3 from 'd3';

protected onLegendSelected(checkFields: any, data: any): void;
protected _tip(data: any, idx: any): void;
protected _tip(data: any, hoverSeries: any): void;
protected tip(enter: d3.Selection<any, any, any, any>, path?: string): void;

@@ -44,0 +44,0 @@ protected click(enter: d3.Selection<any, any, any, any>, path?: string): void;

@@ -24,3 +24,2 @@ "use strict";

var Legends_1 = require("./Legends");
// alert(1);
var DEFAULT_FORMAT = function (v, o) { return v; };

@@ -91,7 +90,5 @@ var default_1 = /** @class */ (function () {

window.addEventListener('resize', function () {
// console.log('set PID REIZE');
window.clearTimeout(_this._resizePid);
_this._resizePid = window.setTimeout(function () {
if (_this._needResize()) {
// console.log('need resize')
_this.SVG.attr('width', _this.WIDTH).attr('height', _this.HEIGHT);

@@ -101,3 +98,2 @@ _this.setData(_this.ORGIN_DATA);

else {
// console.log('no need resie')
}

@@ -122,6 +118,6 @@ }, 600);

};
default_1.prototype._tip = function (data, idx) {
default_1.prototype._tip = function (data, hoverSeries) {
var _this = this;
if (_.isString(this.props.valueField)) {
ToolTip_1.default.show("<div class=\"_tip _tip-" + idx + "\">\n <h2><i></i><span>" + this.FormatLabel(data[this.props.labelField], data) + "</span></h2>\n <p class=\"_item\"><span class=\"_label\">" + (this.props.valueLabel || '') + " : </span><span class=\"_value\">" + this.FormatValue(data[this.props.valueField]) + "</span></p>\n </div>");
ToolTip_1.default.show("<div class=\"_tip _tip-" + hoverSeries + "\">\n <h2><i></i><span>" + this.FormatLabel(data[this.props.labelField], data) + "</span></h2>\n <p class=\"_item\"><span class=\"_label\">" + (this.props.valueLabel || '') + " : </span><span class=\"_value\">" + this.FormatValue(data[this.props.valueField]) + "</span></p>\n </div>");
}

@@ -132,3 +128,3 @@ else {

this.props.valueField.map(function (field, i) {
html_1.push("<p class=\"_item " + (idx == i ? 'current' : '') + "\"><span class=\"_label\">" + _this.props.valueLabel[i] + " : </span><span class=\"_number _value\">" + _this.FormatValue(data[field]) + "</span></p>");
html_1.push("<p class=\"_item _item_" + i + " " + (hoverSeries == i ? 'current' : '') + "\"><i></i><span class=\"_label\">" + _this.props.valueLabel[i] + " : </span><span class=\"_number _value\">" + _this.FormatValue(data[field]) + "</span></p>");
});

@@ -147,14 +143,13 @@ html_1.push("<p class=\"_item _item_sum\"><span class=\"_label\">\u5171\u8BA1 : </span><span class=\"_number _value\">" + this.FormatValue(data.__total) + "</span></p>");

enter.on('mouseover', function (d, i) {
// console.log('tip--start')
var data = path ? _.get(d, path) : d;
var index = i;
var hoverSeries = i;
if (_.isArray(self.props.valueField)) {
index = parseInt(d3.select(this.parentNode).attr('series'));
hoverSeries = d3.event.target.parentNode.getAttribute('series');
}
if (_.has(self.props, 'tip')) {
var result = self.props.tip(data, index);
var result = self.props.tip(data, hoverSeries);
ToolTip_1.default.show(result);
}
else {
self._tip(data, index);
self._tip(data, hoverSeries);
}

@@ -177,3 +172,2 @@ });

var clazz = isGroup ? '_group' : '_item';
// console.log(data)
if (isGroup) {

@@ -225,5 +219,3 @@ idx = data._idx;

_.has(this.props, 'valueFormat') ? this.FormatValue = util_1.default.buildFormat(this.props.valueFormat) : this.FormatValue = DEFAULT_FORMAT;
// console.log(this.props.labelFormat)
(_.has(this.props, 'labelFormat') && _.isFunction(this.props.labelFormat)) ? this.FormatLabel = this.props.labelFormat : this.FormatLabel = DEFAULT_FORMAT;
// console.log(this.FormatLabel)
this.SVG = this.CONTAINER.append('svg');

@@ -295,3 +287,3 @@ this.DEFS = this.SVG.append('defs');

this.ORGIN_DATA = _.concat([], data);
this.SORT_DATA = this.sort(this.ORGIN_DATA);
this.SORT_DATA = this.sort(_.concat([], this.ORGIN_DATA));
this.DATA = _.concat([], this.SORT_DATA);

@@ -298,0 +290,0 @@ this.draw();

@@ -57,2 +57,3 @@ "use strict";

.attr('class', function (d, i) { return _this.itemClass(d, i); })
.attr('series', function (d, i) { return i; })
.append('rect');

@@ -191,2 +192,3 @@ var rectUpdate = update.selectAll('g._bar_group').datum(function (d) {

.attr('class', function (d, i) { return _this.itemClass(d, i); })
.attr('series', function (d, i) { return i; })
.append('rect');

@@ -193,0 +195,0 @@ var rectUpdate = update.selectAll('g._bar_group').datum(function (d) {

@@ -82,2 +82,3 @@ "use strict";

.attr('class', function (d, i) { return '_group _group_' + i; })
.attr('series', function (d, i) { return i; })
.transition()

@@ -84,0 +85,0 @@ .duration(this.DURATION)

@@ -126,2 +126,3 @@ "use strict";

.attr('class', function (d, i) { return "_series _series_" + d.idx + " " + (_this.props.fillStyle ? ('_item_fill_style _item_fill_' + _this.props.fillStyle) : ''); })
.attr('series', function (d, i) { return d.idx; })
.attr('transform', function (d, i) {

@@ -128,0 +129,0 @@ if (_this.mode == 'stack') {

@@ -29,5 +29,3 @@ "use strict";

.y1(function (d, i) {
// console.log(d)
if (i == current || i == (current + 1)) {
// console.log(heightScale(d[0] + (d[1] - d[0])));
return heightScale(d[0] + (d[1] - d[0]));

@@ -56,3 +54,2 @@ }

.y1(function (d) {
// console.log(d)
return heightScale(d[0] + t * (d[1] - d[0]));

@@ -59,0 +56,0 @@ })

@@ -79,3 +79,2 @@ "use strict";

_a = __read(_Common_1.AxisUtil.getAxises(this.AXIX, this.LAYOUT, { type: 'X_FIX_NUMBER', axis: this.props.xAxis, field: this.props.valueField, format: this.FormatValue, }, { type: 'Y_NUMBER', axis: this.props.yAxis, default: { fixMax: false }, field: this.props.labelField, format: function (v) { return v + '%'; }, }), 2), this.xAxisDrawer = _a[0], this.yAxisDrawer = _a[1];
// console.log(this.EXT_TOP)
this.EXT_TOP.append('rect').attr('class', '_mark_coord');

@@ -176,6 +175,4 @@ this.EXT_TOP.append('line').attr('id', 'coord_h_' + this.id).attr('class', '_mark_coord_line');

html.push("<p class=\"_item\"><span class=\"_label\">\u5360\u6BD4 : </span><span class=\"vapfont _value\">" + Math.ceil((100 - item[start].data._total * 2)) + "%</span></p>");
// console.log(start, end);
}
// this.drawer.tip(group, this.props.valueField, this.xAxisDrawer.scale, this.yAxisDrawer.scale, idx, start, end, this.DATA[0]);
// console.log(idx, 9 - idx);
// html.push(`<h2><span>区间 : (${this.props.valueLabel}小于 ${this.FormatValue(data[this.props.valueField])})</span></h2>`);

@@ -242,3 +239,2 @@ // html.push(`<p class="_item"><span class="_label">占比 : </span><span class="vapfont _value">${data._total}%</span></p>`);

var data = d.data;
// console.log(d)
// let idx = parseInt(d3.select(d3.event.target.parentNode).attr('series'));

@@ -245,0 +241,0 @@ _this.props.onClick(data, _this.props.valueField[idx]);

{
"name": "vap-visual",
"version": "0.2.2",
"version": "0.2.3",
"description": "vap-visual - A Visual FrameWork base on d3 & lodash",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -22,5 +22,5 @@ import { Visual } from '../../_Common';

protected sort(arr: any[]): any[];
protected showText(list: any, idx: any): void;
protected showText(data: any): void;
protected itemClass(d: any, i: any): string;
protected update(arr: any[]): void;
}

@@ -31,2 +31,3 @@ "use strict";

var Draw_1 = require("./Draw");
var util_1 = require("../../util");
var format_1 = require("../../util/format");

@@ -75,9 +76,10 @@ ;

this.current = 0;
// console.log(arr)
this.total = 0;
// 一:无数据
if (arr.length == 0) {
this.DATA_MODE = 0 /* NONE */;
// console.log([{ [this.props.labelField]: '无数据', [this.props.valueField]: 0, _count: 1, _idx: 0 }]);
return [(_a = {}, _a[this.props.labelField] = '无数据', _a[this.props.valueField] = 0, _a._count = 1, _a._idx = 0, _a)];
}
var sum = _.sumBy(arr, this.props.valueField);
// 二:所有数据加总为0
if (sum == 0) {

@@ -89,21 +91,9 @@ this.DATA_MODE = 1 /* ZERO */;

// 过滤掉过等于 0 的 数据
var list = _.filter(arr, function (d) { return d[_this.props.valueField] > 0; });
if (list.length > this.MAXCOUNT) {
list.length = this.MAXCOUNT;
}
var sort = _.has(this.props, 'sort') ? this.props.sort : { order: this.props.valueField, by: 'desc' };
var list = util_1.default.sort(_.filter(arr, function (d) { return d[_this.props.valueField] > 0; }), sort, this.MAXCOUNT);
this.total = _.sumBy(list, this.props.valueField);
list.map(function (item, i) {
item._idx = i;
item._count = item[_this.props.valueField];
});
return list;
return list.map(function (item, _idx) { return (__assign(__assign({}, item), { _idx: _idx, _count: item[_this.props.valueField] })); });
};
default_1.prototype.showText = function (list, idx) {
var data = _.find(list, { _idx: idx });
this.EXT_BOTTOM.attr('class', '_ext_bottom _ext_bottom_' + idx);
if (data == null) {
this.EXT_BOTTOM.select('text._item_count').text('');
this.EXT_BOTTOM.select('text._item_percent').text('');
return;
}
default_1.prototype.showText = function (data) {
this.EXT_BOTTOM.attr('class', '_ext_bottom _ext_bottom_' + data._idx);
switch (this.DATA_MODE) {

@@ -149,3 +139,3 @@ case 0 /* NONE */:

if (_this.showCenter) {
_this.showText(arr, _this.current);
_this.showText(d.data);
}

@@ -182,3 +172,3 @@ if (!_this.showTip) {

if (this.showCenter) {
this.showText(arr, this.current);
this.showText(arr[0]);
}

@@ -185,0 +175,0 @@ };

@@ -81,4 +81,2 @@ "use strict";

GEOVisualReact.prototype.componentDidUpdate = function (old) {
// console.log('did update ')
// console.log(old)
};

@@ -107,3 +105,2 @@ /**

GEOVisualReact.prototype.render = function () {
// console.log('this.render')
return React.createElement("div", { id: this.id });

@@ -110,0 +107,0 @@ };

@@ -150,3 +150,2 @@ "use strict";

default_1.prototype.translate = function (name, id) {
// console.log(name,id)
return this.areaTranslate(name, id);

@@ -153,0 +152,0 @@ };

@@ -69,3 +69,2 @@ "use strict";

var _b = __read(util_1.default.extent(data, function (item) { return item[valueField]; }), 2), min = _b[0], max = _b[1];
// console.log(min, max)
var bars = this.SVG.selectAll('g.group-bars')

@@ -72,0 +71,0 @@ .data(data, function (item) { return item[labelField]; });

@@ -49,3 +49,2 @@ "use strict";

});
// console.log(data)
var lines = this.SVG.selectAll('g.group-lines')

@@ -55,11 +54,9 @@ .data(data, function (item) { return item[sourceField] + "-" + item[targetField]; });

var enter = lines.enter().append('g').attr('class', 'group-lines');
// console.log(arr)
enter.append('path').attr('d', function (d) {
var source = _this.GEO.getPoint(_this.labelFormat(d[sourceField]));
var target = _this.GEO.getPoint(_this.labelFormat(d[targetField]));
// console.log(d);
;
if (source && target) {
var from = _this.projection(source);
var to = _this.projection(target);
// console.log(from)
var data = [

@@ -66,0 +63,0 @@ from, [from[0] + (to[0] - from[0]) / 4, from[1] + (to[1] - from[1]) / 2],

@@ -208,3 +208,3 @@ "use strict";

}
if (this.CONTAINER.size() == 0) {
if (!this.CONTAINER || this.CONTAINER.size() == 0) {
return;

@@ -290,3 +290,2 @@ }

var isDiffData = false;
// console.log('Set Options')
_.keys(conf).map(function (key) {

@@ -293,0 +292,0 @@ // if (key == 'data') {

@@ -89,6 +89,4 @@ "use strict";

var _data = util_1.default.fillDayData(arr, this.props.labelField, this.props.valueField, '_day', this.dateFormat, this.props.start, this.props.end);
// console.log(_data)
var singleMax = 0;
var singleField = this.checkedField[0];
// console.log(this.checkedField)
var data = _data.map(function (item) {

@@ -107,7 +105,5 @@ var __total = 0;

this.scaleField = singleField;
// console.log(data)
return data;
};
default_1.prototype.layout = function (arr) {
// console.log(arr)
this.xAxisDrawer.data(this.LAYOUT, arr);

@@ -131,5 +127,3 @@ if (this.mode == 'stack') {

}
// console.log(arr)
var listArr = d3.stack().keys(this.checkedField).order(order)(arr);
// console.log(listArr)
listArr.map(function (arrGroup) {

@@ -145,2 +139,3 @@ var field = arrGroup.key;

.attr('class', function (d) { return "_series _series_" + d.idx + " " + (_this.props.fillStyle ? ('_item_fill_style _item_fill_' + _this.props.fillStyle) : ''); })
.attr('series', function (d) { return d.idx; })
.attr('transform', "translate(" + (this.LAYOUT.x + this.xAxisDrawer.margin) + "," + (this.LAYOUT.y + this.LAYOUT.h - this.yAxisDrawer.margin) + ")");

@@ -153,3 +148,3 @@ var symbols = this.drawer.draw(group, unit, heightScale, this.DURATION);

if (this.props.tip || this.props.tip === undefined) {
this.EXT_TOP.select('rect').on('mousemove', function () {
this.SVG.on('mousemove', function () {
var _a = __read([d3.event.layerX - LEFT, d3.event.layerY - TOP], 2), x = _a[0], y = _a[1];

@@ -160,16 +155,2 @@ var idx = Math.round(_this.xAxisDrawer.scale.invert(x));

_this.ROOT.selectAll('._symbol_' + idx).classed('_symbol_active', true);
if (_this.props.tip) {
_Common_1.ToolTip.show(_this.props.tip(data, idx));
}
else {
var html_1 = ["<div class=\"_tip\">"];
html_1.push("<h2><span>" + _this.FormatLabel(data[_this.props.labelField], data) + "</span></h2>");
_.map(_this.props.valueField, function (field, i) {
html_1.push("<p class=\"_item " + (idx == i ? 'current' : '') + "\"><span class=\"_label\">" + _this.props.valueLabel[i] + " : </span><span class=\"vapfont _value\">" + _this.FormatValue(data[field]) + "</span></p>");
});
if (_this.props.valueField.length > 1) {
html_1.push("<p class=\"_item _item_sum\"><span class=\"_label\">\u5171\u8BA1 : </span><span class=\"vapfont _value\">" + _this.FormatValue(data.__total) + "</span></p>");
}
_Common_1.ToolTip.show(html_1.join(''));
}
_this.EXT_TOP.select("line#coord_h_" + _this.id)

@@ -187,2 +168,16 @@ .attr('stroke-opacity', 1)

.attr('y2', y);
if (_this.props.tip) {
_Common_1.ToolTip.show(_this.props.tip(data, idx));
return;
}
var html = ["<div class=\"_tip\">"];
html.push("<h2><span>" + _this.FormatLabel(data[_this.props.labelField], data) + "</span></h2>");
var hoverSeries = d3.event.target.parentNode.getAttribute('series');
_.map(_this.props.valueField, function (field, i) {
html.push("<p class=\"_item _item_" + i + " " + (hoverSeries == i ? 'current' : '') + "\"><i></i><span class=\"_label\">" + _this.props.valueLabel[i] + " : </span><span class=\"vapfont _value\">" + _this.FormatValue(data[field]) + "</span></p>");
});
if (_this.props.valueField.length > 1) {
html.push("<p class=\"_item _item_sum\"><span class=\"_label\">\u5171\u8BA1 : </span><span class=\"vapfont _value\">" + _this.FormatValue(data.__total) + "</span></p>");
}
_Common_1.ToolTip.show(html.join(''));
}).on('mouseout', function (d) {

@@ -204,9 +199,9 @@ _this.EXT_TOP.select("line#coord_h_" + _this.id).attr('stroke-opacity', 0);

else {
var html_2 = ["<div class=\"_tip\">"];
html_2.push("<h2><span>" + _this.FormatLabel(data[_this.props.labelField], data) + "</span></h2>");
var html_1 = ["<div class=\"_tip\">"];
html_1.push("<h2><span>" + _this.FormatLabel(data[_this.props.labelField], data) + "</span></h2>");
_.map(_this.props.valueField, function (field, i) {
html_2.push("<p class=\"_item " + (idx == i ? 'current' : '') + "\"><span class=\"_label\">" + _this.props.valueLabel[i] + " : </span><span class=\"vapfont _value\">" + _this.FormatValue(data[field]) + "</span></p>");
html_1.push("<p class=\"_item " + (idx == i ? 'current' : '') + "\"><span class=\"_label\">" + _this.props.valueLabel[i] + " : </span><span class=\"vapfont _value\">" + _this.FormatValue(data[field]) + "</span></p>");
});
html_2.push("<p class=\"_item _item_sum\"><span class=\"_label\">\u5171\u8BA1 : </span><span class=\"vapfont _value\">" + _this.FormatValue(data.__total) + "</span></p>");
_Common_1.ToolTip.show(html_2.join(''));
html_1.push("<p class=\"_item _item_sum\"><span class=\"_label\">\u5171\u8BA1 : </span><span class=\"vapfont _value\">" + _this.FormatValue(data.__total) + "</span></p>");
_Common_1.ToolTip.show(html_1.join(''));
}

@@ -213,0 +208,0 @@ }).on('mouseout', function (d) {

@@ -95,6 +95,4 @@ "use strict";

});
// console.log(DATA)
if (this.barType == 'percent') {
DATA.map(function (row) { return row.map(function (item) {
// // console.log(item);
item['__p0'] = item[0] / (item.data.__total || 1);

@@ -117,3 +115,2 @@ item['__p1'] = item[1] / (item.data.__total || 1);

items.on('click', function (d) {
// console.log(d);
// let idx = d3.select(d3.event.target.parentNode).attr('series');

@@ -120,0 +117,0 @@ self.props.onClick(d['data'], d['pos'].field);

@@ -86,6 +86,4 @@ "use strict";

var _data = _.concat([], arr);
// console.log(_data)
var singleMax = 0;
var singleField = this.checkedField[0];
// console.log(this.checkedField)
var data = _data.map(function (item) {

@@ -104,7 +102,5 @@ var __total = 0;

this.scaleField = singleField;
// console.log(data)
return data;
};
default_1.prototype.layout = function (arr) {
// console.log(arr)
this.xAxisDrawer.data(this.LAYOUT, arr);

@@ -128,5 +124,3 @@ if (this.mode == 'stack') {

}
// console.log(arr)
var listArr = d3.stack().keys(this.checkedField).order(order)(arr);
// console.log(listArr)
listArr.map(function (arrGroup) {

@@ -133,0 +127,0 @@ var field = arrGroup.key;

@@ -220,3 +220,2 @@ "use strict";

// const formater = getDateFormat(format);
// console.log(data)
// 填充区间

@@ -223,0 +222,0 @@ var _a = __read(d3.extent(data, function (item) { return item[labelField]; }), 2), dataStart = _a[0], dataEnd = _a[1];

"use strict";
var _this = this;
Object.defineProperty(exports, "__esModule", { value: true });

@@ -31,22 +30,22 @@ exports.buildTransition = exports.buildFormat = exports.formatSize = exports.formatPercent = exports.formatChinese = exports.formatUSD = exports.formatInt = exports.formatDecimal = void 0;

if (byteSize < 1024) {
return _this.formatDecimal(byteSize) + 'b';
return exports.formatDecimal(byteSize) + 'b';
}
var kbSize = (byteSize / 1024);
if (kbSize < 1024) {
return _this.formatDecimal(kbSize) + 'KB';
return exports.formatDecimal(kbSize) + 'KB';
}
var mbSize = (kbSize / 1024);
if (mbSize < 1024) {
return _this.formatDecimal(mbSize) + 'MB';
return exports.formatDecimal(mbSize) + 'MB';
}
var gbSize = (mbSize / 1024);
if (gbSize < 1024) {
return _this.formatDecimal(gbSize) + 'GB';
return exports.formatDecimal(gbSize) + 'GB';
}
var tbSize = (gbSize / 1024);
if (tbSize < 1024) {
return _this.formatDecimal(tbSize) + 'TB';
return exports.formatDecimal(tbSize) + 'TB';
}
var pbSize = (tbSize / 1024);
return _this.formatDecimal(pbSize) + 'PB';
return exports.formatDecimal(pbSize) + 'PB';
};

@@ -53,0 +52,0 @@ var Formats = {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc