Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@hpcc-js/api

Package Overview
Dependencies
Maintainers
1
Versions
198
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@hpcc-js/api - npm Package Compare versions

Comparing version 0.0.44 to 0.0.45

build/api.js

35

lib/I1DChart.js

@@ -1,25 +0,12 @@

(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports", "@hpcc-js/common"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var common_1 = require("@hpcc-js/common");
function I1DChart() {
}
exports.I1DChart = I1DChart;
I1DChart.prototype._palette = common_1.Palette.rainbow("default");
// Events ---
I1DChart.prototype.click = function (row, column, selected) {
console.log("Click: " + JSON.stringify(row) + ", " + column + ", " + selected);
};
I1DChart.prototype.dblclick = function (row, column, selected) {
console.log("Double click: " + JSON.stringify(row) + ", " + column + ", " + selected);
};
});
import { Palette } from "@hpcc-js/common";
export function I1DChart() {
}
I1DChart.prototype._palette = Palette.rainbow("default");
// Events ---
I1DChart.prototype.click = function (row, column, selected) {
console.log("Click: " + JSON.stringify(row) + ", " + column + ", " + selected);
};
I1DChart.prototype.dblclick = function (row, column, selected) {
console.log("Double click: " + JSON.stringify(row) + ", " + column + ", " + selected);
};
//# sourceMappingURL=I1DChart.js.map

@@ -1,25 +0,12 @@

(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports", "@hpcc-js/common"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var common_1 = require("@hpcc-js/common");
function I2DChart() {
}
exports.I2DChart = I2DChart;
I2DChart.prototype._palette = common_1.Palette.ordinal("default");
// Events ---
I2DChart.prototype.click = function (row, column, selected) {
console.log("Click: " + JSON.stringify(row) + ", " + column + ", " + selected);
};
I2DChart.prototype.dblclick = function (row, column, selected) {
console.log("Double click: " + JSON.stringify(row) + ", " + column + ", " + selected);
};
});
import { Palette } from "@hpcc-js/common";
export function I2DChart() {
}
I2DChart.prototype._palette = Palette.ordinal("default");
// Events ---
I2DChart.prototype.click = function (row, column, selected) {
console.log("Click: " + JSON.stringify(row) + ", " + column + ", " + selected);
};
I2DChart.prototype.dblclick = function (row, column, selected) {
console.log("Double click: " + JSON.stringify(row) + ", " + column + ", " + selected);
};
//# sourceMappingURL=I2DChart.js.map

@@ -1,37 +0,24 @@

(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
export function IGraph() {
}
// Events ---
IGraph.prototype.vertex_click = function (_row, _col, _sel, more) {
if (more && more.vertex) {
console.log("Vertex click: " + more.vertex.id());
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports"], factory);
};
IGraph.prototype.vertex_dblclick = function (_row, _col, _sel, more) {
if (more && more.vertex) {
console.log("Vertex double click: " + more.vertex.id());
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function IGraph() {
};
IGraph.prototype.edge_click = function (_row, _col, _sel, more) {
if (more && more.edge) {
console.log("Edge click: " + more.edge.id());
}
exports.IGraph = IGraph;
// Events ---
IGraph.prototype.vertex_click = function (_row, _col, _sel, more) {
if (more && more.vertex) {
console.log("Vertex click: " + more.vertex.id());
}
};
IGraph.prototype.vertex_dblclick = function (_row, _col, _sel, more) {
if (more && more.vertex) {
console.log("Vertex double click: " + more.vertex.id());
}
};
IGraph.prototype.edge_click = function (_row, _col, _sel, more) {
if (more && more.edge) {
console.log("Edge click: " + more.edge.id());
}
};
IGraph.prototype.edge_dblclick = function (_row, _col, _sel, more) {
if (more && more.edge) {
console.log("Edge double click: " + more.edge.id());
}
};
});
};
IGraph.prototype.edge_dblclick = function (_row, _col, _sel, more) {
if (more && more.edge) {
console.log("Edge double click: " + more.edge.id());
}
};
//# sourceMappingURL=IGraph.js.map

@@ -1,79 +0,67 @@

(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
import * as tslib_1 from "tslib";
import { Widget } from "@hpcc-js/common";
var IInput = /** @class */ (function (_super) {
tslib_1.__extends(IInput, _super);
function IInput() {
return _super.call(this) || this;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports", "tslib", "@hpcc-js/common"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var common_1 = require("@hpcc-js/common");
var IInput = /** @class */ (function (_super) {
tslib_1.__extends(IInput, _super);
function IInput() {
return _super.call(this) || this;
}
// Implementation ---
IInput.prototype.isValid = function () {
if (this.validate()) {
var re = new RegExp(this.validate());
if (!re.test(this.value())) {
return false;
}
}
return true;
};
IInput.prototype.hasValue = function () {
if (typeof this.type === "function") {
switch (this.type()) {
case "radio":
/* falls through */
case "checkbox":
if (this.value() && this.value() !== "false") {
return true;
}
break;
default:
if (this.value()) {
return true;
}
break;
}
// Implementation ---
IInput.prototype.isValid = function () {
if (this.validate()) {
var re = new RegExp(this.validate());
if (!re.test(this.value())) {
return false;
}
return this.value() !== "";
};
// Events ---
IInput.prototype.blur = function (_w) {
};
IInput.prototype.click = function (_w) {
};
IInput.prototype.dblclick = function (_w) {
};
IInput.prototype.change = function (_w) {
};
IInput.prototype.resetValue = function (w) {
w.value(w._inputElement[0].node().value);
};
IInput.prototype.disable = function (disable) {
this._inputElement.forEach(function (e, idx) {
e.attr("disabled", disable ? "disabled" : null);
});
};
IInput.prototype.setFocus = function () {
if (this._inputElement.length) {
this._inputElement[0].node().focus();
}
return true;
};
IInput.prototype.hasValue = function () {
if (typeof this.type === "function") {
switch (this.type()) {
case "radio":
/* falls through */
case "checkbox":
if (this.value() && this.value() !== "false") {
return true;
}
break;
default:
if (this.value()) {
return true;
}
break;
}
};
return IInput;
}(common_1.Widget));
exports.IInput = IInput;
IInput.prototype.publish("name", "", "string", "HTML name for the input");
IInput.prototype.publish("label", "", "string", "Descriptive label");
IInput.prototype.publish("value", "", "string", "Input Current Value");
IInput.prototype.publish("validate", null, "string", "Input Validation");
});
return false;
}
return this.value() !== "";
};
// Events ---
IInput.prototype.blur = function (_w) {
};
IInput.prototype.click = function (_w) {
};
IInput.prototype.dblclick = function (_w) {
};
IInput.prototype.change = function (_w) {
};
IInput.prototype.resetValue = function (w) {
w.value(w._inputElement[0].node().value);
};
IInput.prototype.disable = function (disable) {
this._inputElement.forEach(function (e, idx) {
e.attr("disabled", disable ? "disabled" : null);
});
};
IInput.prototype.setFocus = function () {
if (this._inputElement.length) {
this._inputElement[0].node().focus();
}
};
return IInput;
}(Widget));
export { IInput };
IInput.prototype.publish("name", "", "string", "HTML name for the input");
IInput.prototype.publish("label", "", "string", "Descriptive label");
IInput.prototype.publish("value", "", "string", "Input Current Value");
IInput.prototype.publish("validate", null, "string", "Input Validation");
//# sourceMappingURL=IInput.js.map

@@ -1,25 +0,12 @@

(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports", "@hpcc-js/common"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var common_1 = require("@hpcc-js/common");
function INDChart() {
}
exports.INDChart = INDChart;
INDChart.prototype._palette = common_1.Palette.ordinal("default");
// Events ---
INDChart.prototype.click = function (row, column, selected) {
console.log("Click: " + JSON.stringify(row) + ", " + column + ", " + selected);
};
INDChart.prototype.dblclick = function (row, column, selected) {
console.log("Double click: " + JSON.stringify(row) + ", " + column + ", " + selected);
};
});
import { Palette } from "@hpcc-js/common";
export function INDChart() {
}
INDChart.prototype._palette = Palette.ordinal("default");
// Events ---
INDChart.prototype.click = function (row, column, selected) {
console.log("Click: " + JSON.stringify(row) + ", " + column + ", " + selected);
};
INDChart.prototype.dblclick = function (row, column, selected) {
console.log("Double click: " + JSON.stringify(row) + ", " + column + ", " + selected);
};
//# sourceMappingURL=INDChart.js.map

@@ -1,21 +0,8 @@

(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports", "tslib", "./I1DChart", "./I2DChart", "./IGraph", "./IInput", "./INDChart", "./ITooltip", "./ITree"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
tslib_1.__exportStar(require("./I1DChart"), exports);
tslib_1.__exportStar(require("./I2DChart"), exports);
tslib_1.__exportStar(require("./IGraph"), exports);
tslib_1.__exportStar(require("./IInput"), exports);
tslib_1.__exportStar(require("./INDChart"), exports);
tslib_1.__exportStar(require("./ITooltip"), exports);
tslib_1.__exportStar(require("./ITree"), exports);
});
export * from "./I1DChart";
export * from "./I2DChart";
export * from "./IGraph";
export * from "./IInput";
export * from "./INDChart";
export * from "./ITooltip";
export * from "./ITree";
//# sourceMappingURL=index.js.map

@@ -1,131 +0,119 @@

(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
import * as tslib_1 from "tslib";
import { Widget } from "@hpcc-js/common";
import { format as d3Format } from "d3-format";
import { tip } from "d3-tip";
// const tip = _tip.tip || _tip.default || _tip;
import "../src/ITooltip.css";
var ITooltip = /** @class */ (function (_super) {
tslib_1.__extends(ITooltip, _super);
function ITooltip() {
var _this = _super.call(this) || this;
_this._valueFormatter = d3Format(_this.tooltipValueFormat());
if (_this.layerEnter) {
var layerEnter_1 = _this.layerEnter;
_this.layerEnter = function (_base, svgElement, _domElement) {
this.tooltipEnter(svgElement);
layerEnter_1.apply(this, arguments);
};
var layerUpdate_1 = _this.layerUpdate;
_this.layerUpdate = function (_base) {
layerUpdate_1.apply(this, arguments);
this.tooltipUpdate();
};
var layerExit_1 = _this.layerExit;
_this.layerExit = function (_base) {
layerExit_1.apply(this, arguments);
this.tooltipExit();
};
}
else {
var enter_1 = _this.enter;
_this.enter = function (_domNode, element) {
this.tooltipEnter(element);
enter_1.apply(this, arguments);
};
var update_1 = _this.update;
_this.update = function (_domNode, _element) {
update_1.apply(this, arguments);
this.tooltipUpdate();
};
var exit_1 = _this.exit;
_this.exit = function (_domNode, _element) {
exit_1.apply(this, arguments);
this.tooltipExit();
};
}
return _this;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports", "tslib", "@hpcc-js/common", "d3-format", "d3-tip", "../src/ITooltip.css"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var common_1 = require("@hpcc-js/common");
var d3_format_1 = require("d3-format");
var _tip = require("d3-tip");
var tip = _tip.tip || _tip.default || _tip;
require("../src/ITooltip.css");
var ITooltip = /** @class */ (function (_super) {
tslib_1.__extends(ITooltip, _super);
function ITooltip() {
var _this = _super.call(this) || this;
_this._valueFormatter = d3_format_1.format(_this.tooltipValueFormat());
if (_this.layerEnter) {
var layerEnter_1 = _this.layerEnter;
_this.layerEnter = function (_base, svgElement, _domElement) {
this.tooltipEnter(svgElement);
layerEnter_1.apply(this, arguments);
};
var layerUpdate_1 = _this.layerUpdate;
_this.layerUpdate = function (_base) {
layerUpdate_1.apply(this, arguments);
this.tooltipUpdate();
};
var layerExit_1 = _this.layerExit;
_this.layerExit = function (_base) {
layerExit_1.apply(this, arguments);
this.tooltipExit();
};
ITooltip.prototype.tooltipEnter = function (element) {
var context = this;
this.tooltip = tip()
.attr("class", "d3-tip")
.offset(function () {
switch (context.tooltip.direction()()) {
case "e":
return [0, context.tooltipOffset()];
default:
return [-context.tooltipOffset(), 0];
}
else {
var enter_1 = _this.enter;
_this.enter = function (_domNode, element) {
this.tooltipEnter(element);
enter_1.apply(this, arguments);
};
var update_1 = _this.update;
_this.update = function (_domNode, _element) {
update_1.apply(this, arguments);
this.tooltipUpdate();
};
var exit_1 = _this.exit;
_this.exit = function (_domNode, _element) {
exit_1.apply(this, arguments);
this.tooltipExit();
};
}
return _this;
});
element.call(this.tooltip);
};
ITooltip.prototype.tooltipUpdate = function () {
var classed = this.tooltip.attr("class");
if (classed) {
classed = classed.split(" notick").join("") + (this.tooltipTick() ? "" : " notick") + (this.tooltipStyle() === "none" ? " hidden" : "");
this.tooltip
.attr("class", classed);
}
ITooltip.prototype.tooltipEnter = function (element) {
var context = this;
this.tooltip = tip()
.attr("class", "d3-tip")
.offset(function () {
switch (context.tooltip.direction()()) {
case "e":
return [0, context.tooltipOffset()];
default:
return [-context.tooltipOffset(), 0];
};
ITooltip.prototype.tooltipExit = function () {
if (this.tooltip) {
this.tooltip.destroy();
}
};
ITooltip.prototype._tooltipHTML = function (d) {
return d;
};
ITooltip.prototype.tooltipHTML = function (_) {
return this.tooltip.html(_);
};
ITooltip.prototype.tooltipFormat = function (opts) {
opts = opts || {};
opts.label = opts.label || "";
opts.series = opts.series || "";
if (opts.value instanceof Date) {
opts.value = opts.value || "";
}
else {
opts.value = this._valueFormatter(opts.value) || "";
}
switch (this.tooltipStyle()) {
case "none":
break;
default:
if (opts.series) {
return "<span style='color:" + this.tooltipSeriesColor() + "'>" + opts.series + "</span> / <span style='color:" + this.tooltipLabelColor() + "'>" + opts.label + "</span>: <span style='color:" + this.tooltipValueColor() + "'>" + opts.value + "</span>";
}
});
element.call(this.tooltip);
};
ITooltip.prototype.tooltipUpdate = function () {
var classed = this.tooltip.attr("class");
if (classed) {
classed = classed.split(" notick").join("") + (this.tooltipTick() ? "" : " notick") + (this.tooltipStyle() === "none" ? " hidden" : "");
this.tooltip
.attr("class", classed);
}
};
ITooltip.prototype.tooltipExit = function () {
if (this.tooltip) {
this.tooltip.destroy();
}
};
ITooltip.prototype._tooltipHTML = function (d) {
return d;
};
ITooltip.prototype.tooltipHTML = function (_) {
return this.tooltip.html(_);
};
ITooltip.prototype.tooltipFormat = function (opts) {
opts = opts || {};
opts.label = opts.label || "";
opts.series = opts.series || "";
if (opts.value instanceof Date) {
opts.value = opts.value || "";
}
else {
opts.value = this._valueFormatter(opts.value) || "";
}
switch (this.tooltipStyle()) {
case "none":
break;
default:
if (opts.series) {
return "<span style='color:" + this.tooltipSeriesColor() + "'>" + opts.series + "</span> / <span style='color:" + this.tooltipLabelColor() + "'>" + opts.label + "</span>: <span style='color:" + this.tooltipValueColor() + "'>" + opts.value + "</span>";
}
return "<span style='color:" + this.tooltipLabelColor() + "'>" + opts.label + "</span>: <span style='color:" + this.tooltipValueColor() + "'>" + opts.value + "</span>";
}
};
return ITooltip;
}(common_1.Widget));
exports.ITooltip = ITooltip;
ITooltip.prototype.publish("tooltipStyle", "default", "set", "Style", ["default", "none"], {});
ITooltip.prototype.publish("tooltipValueFormat", ",.2f", "string", "Value Format", null, {});
ITooltip.prototype.publish("tooltipSeriesColor", "#EAFFFF", "html-color", "Series Color", null, {});
ITooltip.prototype.publish("tooltipLabelColor", "#CCFFFF", "html-color", "Label Color", null, {});
ITooltip.prototype.publish("tooltipValueColor", "white", "html-color", "Value Color", null, {});
ITooltip.prototype.publish("tooltipTick", true, "boolean", "Show tooltip tick", null, {});
ITooltip.prototype.publish("tooltipOffset", 8, "number", "Offset from the cursor", null, {});
var tooltipValueFormat = ITooltip.prototype.tooltipValueFormat;
ITooltip.prototype.tooltipValueFormat = function (_) {
var retVal = tooltipValueFormat.apply(this, arguments);
if (arguments.length) {
this._valueFormatter = d3_format_1.format(_);
return "<span style='color:" + this.tooltipLabelColor() + "'>" + opts.label + "</span>: <span style='color:" + this.tooltipValueColor() + "'>" + opts.value + "</span>";
}
return retVal;
};
});
return ITooltip;
}(Widget));
export { ITooltip };
ITooltip.prototype.publish("tooltipStyle", "default", "set", "Style", ["default", "none"], {});
ITooltip.prototype.publish("tooltipValueFormat", ",.2f", "string", "Value Format", null, {});
ITooltip.prototype.publish("tooltipSeriesColor", "#EAFFFF", "html-color", "Series Color", null, {});
ITooltip.prototype.publish("tooltipLabelColor", "#CCFFFF", "html-color", "Label Color", null, {});
ITooltip.prototype.publish("tooltipValueColor", "white", "html-color", "Value Color", null, {});
ITooltip.prototype.publish("tooltipTick", true, "boolean", "Show tooltip tick", null, {});
ITooltip.prototype.publish("tooltipOffset", 8, "number", "Offset from the cursor", null, {});
var tooltipValueFormat = ITooltip.prototype.tooltipValueFormat;
ITooltip.prototype.tooltipValueFormat = function (_) {
var retVal = tooltipValueFormat.apply(this, arguments);
if (arguments.length) {
this._valueFormatter = d3Format(_);
}
return retVal;
};
//# sourceMappingURL=ITooltip.js.map

@@ -1,28 +0,16 @@

(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
import { Palette } from "@hpcc-js/common";
var ITree = /** @class */ (function () {
function ITree() {
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports", "@hpcc-js/common"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var common_1 = require("@hpcc-js/common");
var ITree = /** @class */ (function () {
function ITree() {
}
// Events ---
ITree.prototype.click = function (row, column, selected) {
console.log("Click: " + JSON.stringify(row) + ", " + column + ", " + selected);
};
ITree.prototype.dblclick = function (row, column, selected) {
console.log("Double click: " + JSON.stringify(row) + ", " + column + ", " + selected);
};
return ITree;
}());
exports.ITree = ITree;
ITree.prototype._palette = common_1.Palette.ordinal("default");
});
// Events ---
ITree.prototype.click = function (row, column, selected) {
console.log("Click: " + JSON.stringify(row) + ", " + column + ", " + selected);
};
ITree.prototype.dblclick = function (row, column, selected) {
console.log("Double click: " + JSON.stringify(row) + ", " + column + ", " + selected);
};
return ITree;
}());
export { ITree };
ITree.prototype._palette = Palette.ordinal("default");
//# sourceMappingURL=ITree.js.map
{
"name": "@hpcc-js/api",
"version": "0.0.44",
"version": "0.0.45",
"description": "hpcc-js - Viz api",
"main": "lib/index.js",
"module": "lib-es6/index.js",
"main": "build/api.js",
"module": "lib/index",
"unpkg": "build/api.min.js",
"types": "lib/index.d.ts",
"unpkg": "dist/api.min.js",
"files": [
"build/*",
"lib/*",
"lib-es6/*",
"src/*.css",
"dist/*"
"src/*.css"
],
"scripts": {
"clean": "rimraf lib* && rimraf dist*",
"build": "tsc",
"build-es6": "tsc --module esnext --outDir ./lib-es6",
"bundle": "node ./node_modules/@hpcc-js/bundle/lib/rollup",
"clean": "rimraf lib* && rimraf build",
"compile": "tsc --module esnext --outDir ./lib",
"compile-watch": "npm run compile -- -w",
"compile-umd": "tsc",
"bundle": "rollup -c",
"bundle-watch": "npm run bundle -- -w",
"minimize": "uglifyjs build/api.js -c -m -o build/api.min.js",
"build": "npm run compile && npm run bundle",
"watch": "concurrently --kill-others \"npm run compile-watch\" \"npm run bundle-watch\"",
"lint": "tslint --project . src/**/*.ts",
"docs": "typedoc --options tdoptions.json ."
},
"dependencies": {
"@hpcc-js/common": "^0.0.44",
"@hpcc-js/common": "^0.0.45"
},
"devDependencies": {
"@hpcc-js/bundle": "^0.0.16",
"concurrently": "3.5.0",
"d3-format": "1.2.0",
"d3-tip": "GordonSmith/d3-tip#vJSNEXT",
"tslib": "1.8.0"
},
"devDependencies": {
"@hpcc-js/bundle": "^0.0.15",
"rimraf": "2.6.1",
"rollup": "0.51.3",
"rollup-plugin-postcss": "0.5.5",
"tslib": "1.8.0",
"tslint": "5.8.0",
"typedoc": "0.7.1",
"typescript": "2.5.2"
"typescript": "2.6.1",
"uglify-js": "3.1.8"
},

@@ -34,0 +44,0 @@ "repository": {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc