Socket
Socket
Sign inDemoInstall

react-addons-update

Package Overview
Dependencies
Maintainers
10
Versions
62
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-addons-update - npm Package Compare versions

Comparing version 15.5.2 to 15.6.0-rc.0

17

index.js

@@ -12,2 +12,3 @@ /**

var _assign = require('object-assign');
var invariant = require('fbjs/lib/invariant');

@@ -20,3 +21,3 @@ var hasOwnProperty = {}.hasOwnProperty;

} else if (x && typeof x === 'object') {
return Object.assign(new x.constructor(), x);
return _assign(new x.constructor(), x);
} else {

@@ -60,3 +61,3 @@ return x;

'update(): expected spec of %s to be an array; got %s. ' +
'Did you forget to wrap your parameter in an array?',
'Did you forget to wrap your parameter in an array?',
command,

@@ -75,3 +76,3 @@ specValue

'update(): You provided a key path to update() that did not contain one ' +
'of %s. Did you forget to include {%s: ...}?',
'of %s. Did you forget to include {%s: ...}?',
ALL_COMMANDS_LIST.join(', '),

@@ -97,3 +98,3 @@ COMMAND_SET

mergeObj && typeof mergeObj === 'object',
'update(): %s expects a spec of type \'object\'; got %s',
"update(): %s expects a spec of type 'object'; got %s",
COMMAND_MERGE,

@@ -104,7 +105,7 @@ mergeObj

nextValue && typeof nextValue === 'object',
'update(): %s expects a target of type \'object\'; got %s',
"update(): %s expects a target of type 'object'; got %s",
COMMAND_MERGE,
nextValue
);
Object.assign(nextValue, spec[COMMAND_MERGE]);
_assign(nextValue, spec[COMMAND_MERGE]);
}

@@ -136,3 +137,3 @@

'update(): expected spec of %s to be an array of arrays; got %s. ' +
'Did you forget to wrap your parameters in an array?',
'Did you forget to wrap your parameters in an array?',
COMMAND_SPLICE,

@@ -145,3 +146,3 @@ spec[COMMAND_SPLICE]

'update(): expected spec of %s to be an array of arrays; got %s. ' +
'Did you forget to wrap your parameters in an array?',
'Did you forget to wrap your parameters in an array?',
COMMAND_SPLICE,

@@ -148,0 +149,0 @@ spec[COMMAND_SPLICE]

{
"name": "react-addons-update",
"version": "15.5.2",
"version": "15.6.0-rc.0",
"main": "index.js",

@@ -16,6 +16,11 @@ "repository": "facebook/react",

"devDependencies": {
"jest": "^19.0.2"
"jest": "^19.0.2",
"webpack": "^2.6.1"
},
"scripts": {
"test": "jest"
"test": "TEST_ENTRY=./index.js jest",
"build:dev": "NODE_ENV=development webpack && TEST_ENTRY=./react-addons-update.js jest",
"build:prod": "NODE_ENV=production webpack && NODE_ENV=production TEST_ENTRY=./react-addons-update.min.js jest",
"build": "npm run build:dev && npm run build:prod && node ../postbuild.js",
"prepublish": "npm test && npm run build"
},

@@ -22,0 +27,0 @@ "files": [

@@ -1,33 +0,242 @@

(function(f) {
if (
typeof exports === "object" &&
typeof module !== "undefined"
) {
module.exports=f()
} else if (
typeof define === "function" &&
define.amd
) {
define([],f)
} else {
var g;
if (typeof window !== "undefined") {
g = window
} else if (typeof global !== "undefined") {
g = global
} else if (typeof self !== "undefined") {
g = self
} else {
g = this
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else if(typeof exports === 'object')
exports["update"] = factory();
else
(root.React?(root.React.addons=root.React.addons||{}):(function(){throw new Error("react-addons-update could not find the React object. If you are using script tags, make sure that React is being loaded before react-addons-update.")})()).update=factory();
})(this, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // identity function for calling harmony imports with the correct context
/******/ __webpack_require__.i = function(value) { return value; };
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 2);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/**
* Copyright (c) 2013-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
*/
/**
* Use invariant() to assert state which your program assumes to be true.
*
* Provide sprintf-style format (only %s is supported) and arguments
* to provide information about what broke and what you were
* expecting.
*
* The invariant message will be stripped in production, but the invariant
* will remain to ensure logic does not differ in production.
*/
var validateFormat = function validateFormat(format) {};
if (true) {
validateFormat = function validateFormat(format) {
if (format === undefined) {
throw new Error('invariant requires an error message argument');
}
};
}
if (typeof g.React === "undefined") {
throw Error('React module should be required before update');
} else if (typeof g.React.addons === "undefined") {
g.React.addons = {};
function invariant(condition, format, a, b, c, d, e, f) {
validateFormat(format);
if (!condition) {
var error;
if (format === undefined) {
error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');
} else {
var args = [a, b, c, d, e, f];
var argIndex = 0;
error = new Error(format.replace(/%s/g, function () {
return args[argIndex++];
}));
error.name = 'Invariant Violation';
}
g.React.addons.update = f()
error.framesToPop = 1; // we don't care about invariant's own frame
throw error;
}
})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
}
module.exports = invariant;
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/*
object-assign
(c) Sindre Sorhus
@license MIT
*/
/* eslint-disable no-unused-vars */
var getOwnPropertySymbols = Object.getOwnPropertySymbols;
var hasOwnProperty = Object.prototype.hasOwnProperty;
var propIsEnumerable = Object.prototype.propertyIsEnumerable;
function toObject(val) {
if (val === null || val === undefined) {
throw new TypeError('Object.assign cannot be called with null or undefined');
}
return Object(val);
}
function shouldUseNative() {
try {
if (!Object.assign) {
return false;
}
// Detect buggy property enumeration order in older V8 versions.
// https://bugs.chromium.org/p/v8/issues/detail?id=4118
var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
test1[5] = 'de';
if (Object.getOwnPropertyNames(test1)[0] === '5') {
return false;
}
// https://bugs.chromium.org/p/v8/issues/detail?id=3056
var test2 = {};
for (var i = 0; i < 10; i++) {
test2['_' + String.fromCharCode(i)] = i;
}
var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
return test2[n];
});
if (order2.join('') !== '0123456789') {
return false;
}
// https://bugs.chromium.org/p/v8/issues/detail?id=3056
var test3 = {};
'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
test3[letter] = letter;
});
if (Object.keys(Object.assign({}, test3)).join('') !==
'abcdefghijklmnopqrst') {
return false;
}
return true;
} catch (err) {
// We don't expect any of the above to throw, but better to be safe.
return false;
}
}
module.exports = shouldUseNative() ? Object.assign : function (target, source) {
var from;
var to = toObject(target);
var symbols;
for (var s = 1; s < arguments.length; s++) {
from = Object(arguments[s]);
for (var key in from) {
if (hasOwnProperty.call(from, key)) {
to[key] = from[key];
}
}
if (getOwnPropertySymbols) {
symbols = getOwnPropertySymbols(from);
for (var i = 0; i < symbols.length; i++) {
if (propIsEnumerable.call(from, symbols[i])) {
to[symbols[i]] = from[symbols[i]];
}
}
}
}
return to;
};
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/**

@@ -42,5 +251,6 @@ * Copyright 2013-present, Facebook, Inc.

'use strict';
var invariant = require('fbjs/lib/invariant');
var _assign = __webpack_require__(1);
var invariant = __webpack_require__(0);
var hasOwnProperty = {}.hasOwnProperty;

@@ -52,3 +262,3 @@

} else if (x && typeof x === 'object') {
return Object.assign(new x.constructor(), x);
return _assign(new x.constructor(), x);
} else {

@@ -92,3 +302,3 @@ return x;

'update(): expected spec of %s to be an array; got %s. ' +
'Did you forget to wrap your parameter in an array?',
'Did you forget to wrap your parameter in an array?',
command,

@@ -107,3 +317,3 @@ specValue

'update(): You provided a key path to update() that did not contain one ' +
'of %s. Did you forget to include {%s: ...}?',
'of %s. Did you forget to include {%s: ...}?',
ALL_COMMANDS_LIST.join(', '),

@@ -129,3 +339,3 @@ COMMAND_SET

mergeObj && typeof mergeObj === 'object',
'update(): %s expects a spec of type \'object\'; got %s',
"update(): %s expects a spec of type 'object'; got %s",
COMMAND_MERGE,

@@ -136,7 +346,7 @@ mergeObj

nextValue && typeof nextValue === 'object',
'update(): %s expects a target of type \'object\'; got %s',
"update(): %s expects a target of type 'object'; got %s",
COMMAND_MERGE,
nextValue
);
Object.assign(nextValue, spec[COMMAND_MERGE]);
_assign(nextValue, spec[COMMAND_MERGE]);
}

@@ -168,3 +378,3 @@

'update(): expected spec of %s to be an array of arrays; got %s. ' +
'Did you forget to wrap your parameters in an array?',
'Did you forget to wrap your parameters in an array?',
COMMAND_SPLICE,

@@ -177,3 +387,3 @@ spec[COMMAND_SPLICE]

'update(): expected spec of %s to be an array of arrays; got %s. ' +
'Did you forget to wrap your parameters in an array?',
'Did you forget to wrap your parameters in an array?',
COMMAND_SPLICE,

@@ -207,59 +417,5 @@ spec[COMMAND_SPLICE]

},{"fbjs/lib/invariant":2}],2:[function(require,module,exports){
/**
* Copyright (c) 2013-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
*/
'use strict';
/**
* Use invariant() to assert state which your program assumes to be true.
*
* Provide sprintf-style format (only %s is supported) and arguments
* to provide information about what broke and what you were
* expecting.
*
* The invariant message will be stripped in production, but the invariant
* will remain to ensure logic does not differ in production.
*/
var validateFormat = function validateFormat(format) {};
if ("development" !== 'production') {
validateFormat = function validateFormat(format) {
if (format === undefined) {
throw new Error('invariant requires an error message argument');
}
};
}
function invariant(condition, format, a, b, c, d, e, f) {
validateFormat(format);
if (!condition) {
var error;
if (format === undefined) {
error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');
} else {
var args = [a, b, c, d, e, f];
var argIndex = 0;
error = new Error(format.replace(/%s/g, function () {
return args[argIndex++];
}));
error.name = 'Invariant Violation';
}
error.framesToPop = 1; // we don't care about invariant's own frame
throw error;
}
}
module.exports = invariant;
},{}]},{},[1])(1)
/***/ })
/******/ ]);
});

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

!function(f){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=f();else if("function"==typeof define&&define.amd)define([],f);else{var g;if(g="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,void 0===g.React)throw Error("React module should be required before update");void 0===g.React.addons&&(g.React.addons={}),g.React.addons.update=f()}}(function(){return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n||e)},l,l.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){"use strict";function shallowCopy(x){return Array.isArray(x)?x.concat():x&&"object"==typeof x?Object.assign(new x.constructor,x):x}function invariantArrayCase(value,spec,command){invariant(Array.isArray(value),"update(): expected target of %s to be an array; got %s.",command,value);var specValue=spec[command];invariant(Array.isArray(specValue),"update(): expected spec of %s to be an array; got %s. Did you forget to wrap your parameter in an array?",command,specValue)}function update(value,spec){if(invariant("object"==typeof spec,"update(): You provided a key path to update() that did not contain one of %s. Did you forget to include {%s: ...}?",ALL_COMMANDS_LIST.join(", "),COMMAND_SET),hasOwnProperty.call(spec,COMMAND_SET))return invariant(1===Object.keys(spec).length,"Cannot have more than one key in an object with %s",COMMAND_SET),spec[COMMAND_SET];var nextValue=shallowCopy(value);if(hasOwnProperty.call(spec,COMMAND_MERGE)){var mergeObj=spec[COMMAND_MERGE];invariant(mergeObj&&"object"==typeof mergeObj,"update(): %s expects a spec of type 'object'; got %s",COMMAND_MERGE,mergeObj),invariant(nextValue&&"object"==typeof nextValue,"update(): %s expects a target of type 'object'; got %s",COMMAND_MERGE,nextValue),Object.assign(nextValue,spec[COMMAND_MERGE])}hasOwnProperty.call(spec,COMMAND_PUSH)&&(invariantArrayCase(value,spec,COMMAND_PUSH),spec[COMMAND_PUSH].forEach(function(item){nextValue.push(item)})),hasOwnProperty.call(spec,COMMAND_UNSHIFT)&&(invariantArrayCase(value,spec,COMMAND_UNSHIFT),spec[COMMAND_UNSHIFT].forEach(function(item){nextValue.unshift(item)})),hasOwnProperty.call(spec,COMMAND_SPLICE)&&(invariant(Array.isArray(value),"Expected %s target to be an array; got %s",COMMAND_SPLICE,value),invariant(Array.isArray(spec[COMMAND_SPLICE]),"update(): expected spec of %s to be an array of arrays; got %s. Did you forget to wrap your parameters in an array?",COMMAND_SPLICE,spec[COMMAND_SPLICE]),spec[COMMAND_SPLICE].forEach(function(args){invariant(Array.isArray(args),"update(): expected spec of %s to be an array of arrays; got %s. Did you forget to wrap your parameters in an array?",COMMAND_SPLICE,spec[COMMAND_SPLICE]),nextValue.splice.apply(nextValue,args)})),hasOwnProperty.call(spec,COMMAND_APPLY)&&(invariant("function"==typeof spec[COMMAND_APPLY],"update(): expected spec of %s to be a function; got %s.",COMMAND_APPLY,spec[COMMAND_APPLY]),nextValue=spec[COMMAND_APPLY](nextValue));for(var k in spec)ALL_COMMANDS_SET.hasOwnProperty(k)&&ALL_COMMANDS_SET[k]||(nextValue[k]=update(value[k],spec[k]));return nextValue}var invariant=require(2),hasOwnProperty={}.hasOwnProperty,COMMAND_PUSH="$push",COMMAND_UNSHIFT="$unshift",COMMAND_SPLICE="$splice",COMMAND_SET="$set",COMMAND_MERGE="$merge",COMMAND_APPLY="$apply",ALL_COMMANDS_LIST=[COMMAND_PUSH,COMMAND_UNSHIFT,COMMAND_SPLICE,COMMAND_SET,COMMAND_MERGE,COMMAND_APPLY],ALL_COMMANDS_SET={};ALL_COMMANDS_LIST.forEach(function(command){ALL_COMMANDS_SET[command]=!0}),module.exports=update},{2:2}],2:[function(require,module,exports){"use strict";function invariant(condition,format,a,b,c,d,e,f){if(validateFormat(format),!condition){var error;if(void 0===format)error=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var args=[a,b,c,d,e,f],argIndex=0;error=new Error(format.replace(/%s/g,function(){return args[argIndex++]})),error.name="Invariant Violation"}throw error.framesToPop=1,error}}var validateFormat=function(format){};module.exports=invariant},{}]},{},[1])(1)});
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.update=t():(e.React?(e.React.addons=e.React.addons||{}):(function(){throw new Error("react-addons-update could not find the React object. If you are using script tags, make sure that React is being loaded before react-addons-update.")})()).update=t()}(this,function(){return function(e){function t(o){if(r[o])return r[o].exports;var n=r[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var r={};return t.m=e,t.c=r,t.i=function(e){return e},t.d=function(e,r,o){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=2)}([function(e,t,r){"use strict";function o(e,t,r,o,a,c,i,u){if(n(t),!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var f=[r,o,a,c,i,u],p=0;s=new Error(t.replace(/%s/g,function(){return f[p++]})),s.name="Invariant Violation"}throw s.framesToPop=1,s}}var n=function(e){};e.exports=o},function(e,t,r){"use strict";function o(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}var n=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,c=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},r=0;r<10;r++)t["_"+String.fromCharCode(r)]=r;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var o={};return"abcdefghijklmnopqrst".split("").forEach(function(e){o[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},o)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var r,i,u=o(e),s=1;s<arguments.length;s++){r=Object(arguments[s]);for(var f in r)a.call(r,f)&&(u[f]=r[f]);if(n){i=n(r);for(var p=0;p<i.length;p++)c.call(r,i[p])&&(u[i[p]]=r[i[p]])}}return u}},function(e,t,r){"use strict";function o(e){return Array.isArray(e)?e.concat():e&&"object"==typeof e?c(new e.constructor,e):e}function n(e,t,r){i(Array.isArray(e),"update(): expected target of %s to be an array; got %s.",r,e);var o=t[r];i(Array.isArray(o),"update(): expected spec of %s to be an array; got %s. Did you forget to wrap your parameter in an array?",r,o)}function a(e,t){if(i("object"==typeof t,"update(): You provided a key path to update() that did not contain one of %s. Did you forget to include {%s: ...}?",b.join(", "),y),u.call(t,y))return i(1===Object.keys(t).length,"Cannot have more than one key in an object with %s",y),t[y];var r=o(e);if(u.call(t,l)){var h=t[l];i(h&&"object"==typeof h,"update(): %s expects a spec of type 'object'; got %s",l,h),i(r&&"object"==typeof r,"update(): %s expects a target of type 'object'; got %s",l,r),c(r,t[l])}u.call(t,s)&&(n(e,t,s),t[s].forEach(function(e){r.push(e)})),u.call(t,f)&&(n(e,t,f),t[f].forEach(function(e){r.unshift(e)})),u.call(t,p)&&(i(Array.isArray(e),"Expected %s target to be an array; got %s",p,e),i(Array.isArray(t[p]),"update(): expected spec of %s to be an array of arrays; got %s. Did you forget to wrap your parameters in an array?",p,t[p]),t[p].forEach(function(e){i(Array.isArray(e),"update(): expected spec of %s to be an array of arrays; got %s. Did you forget to wrap your parameters in an array?",p,t[p]),r.splice.apply(r,e)})),u.call(t,d)&&(i("function"==typeof t[d],"update(): expected spec of %s to be a function; got %s.",d,t[d]),r=t[d](r));for(var j in t)g.hasOwnProperty(j)&&g[j]||(r[j]=a(e[j],t[j]));return r}var c=r(1),i=r(0),u={}.hasOwnProperty,s="$push",f="$unshift",p="$splice",y="$set",l="$merge",d="$apply",b=[s,f,p,y,l,d],g={};b.forEach(function(e){g[e]=!0}),e.exports=a}])});
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