Socket
Socket
Sign inDemoInstall

react-immutable-proptypes

Package Overview
Dependencies
Maintainers
1
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-immutable-proptypes - npm Package Compare versions

Comparing version 0.1.7 to 0.1.8

2

coverage/coverage.json

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

{"/Users/jtburnett/Sites/react-immutable-proptypes/babel.js":{"path":"/Users/jtburnett/Sites/react-immutable-proptypes/babel.js","s":{"1":1},"b":{},"f":{},"fnMap":{},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":4,"column":3}}},"branchMap":{}},"/Users/jtburnett/Sites/react-immutable-proptypes/src/ImmutablePropTypes.js":{"path":"/Users/jtburnett/Sites/react-immutable-proptypes/src/ImmutablePropTypes.js","s":{"1":1,"2":1,"3":1,"4":1,"5":18,"6":18,"7":2,"8":16,"9":0,"10":16,"11":1,"12":1,"13":38,"14":38,"15":10,"16":10,"17":4,"18":28,"19":39,"20":39,"21":39,"22":1,"23":1,"24":14,"25":14,"26":4,"27":4,"28":4,"29":10,"30":10,"31":19,"32":19,"33":2,"34":18,"35":1,"36":1,"37":14,"38":14,"39":14,"40":3,"41":3,"42":11,"43":10,"44":10,"45":1,"46":9,"47":9,"48":9,"49":3,"50":21,"51":1},"b":{"1":[2,16],"2":[0,16],"3":[38,0],"4":[10,28],"5":[4,6],"6":[4,10],"7":[2,17],"8":[3,11],"9":[1,9],"10":[3,6]},"f":{"1":18,"2":39,"3":38,"4":18,"5":14,"6":21,"7":14},"fnMap":{"1":{"name":"getPropType","line":18,"loc":{"start":{"line":18,"column":0},"end":{"line":18,"column":32}}},"2":{"name":"createChainableTypeChecker","line":32,"loc":{"start":{"line":32,"column":0},"end":{"line":32,"column":46}}},"3":{"name":"checkType","line":33,"loc":{"start":{"line":33,"column":2},"end":{"line":33,"column":75}}},"4":{"name":"createListOfTypeChecker","line":51,"loc":{"start":{"line":51,"column":0},"end":{"line":51,"column":46}}},"5":{"name":"validate","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":52,"column":62}}},"6":{"name":"createShapeTypeChecker","line":71,"loc":{"start":{"line":71,"column":0},"end":{"line":71,"column":44}}},"7":{"name":"validate","line":72,"loc":{"start":{"line":72,"column":2},"end":{"line":72,"column":62}}}},"statementMap":{"1":{"start":{"line":9,"column":0},"end":{"line":9,"column":37}},"2":{"start":{"line":11,"column":0},"end":{"line":11,"column":32}},"3":{"start":{"line":13,"column":0},"end":{"line":16,"column":2}},"4":{"start":{"line":18,"column":0},"end":{"line":30,"column":1}},"5":{"start":{"line":19,"column":2},"end":{"line":19,"column":34}},"6":{"start":{"line":20,"column":2},"end":{"line":22,"column":3}},"7":{"start":{"line":21,"column":4},"end":{"line":21,"column":19}},"8":{"start":{"line":23,"column":2},"end":{"line":28,"column":3}},"9":{"start":{"line":27,"column":4},"end":{"line":27,"column":20}},"10":{"start":{"line":29,"column":2},"end":{"line":29,"column":18}},"11":{"start":{"line":32,"column":0},"end":{"line":49,"column":1}},"12":{"start":{"line":33,"column":2},"end":{"line":43,"column":3}},"13":{"start":{"line":34,"column":4},"end":{"line":34,"column":47}},"14":{"start":{"line":35,"column":4},"end":{"line":42,"column":5}},"15":{"start":{"line":36,"column":6},"end":{"line":36,"column":34}},"16":{"start":{"line":37,"column":6},"end":{"line":39,"column":7}},"17":{"start":{"line":38,"column":8},"end":{"line":38,"column":130}},"18":{"start":{"line":41,"column":6},"end":{"line":41,"column":64}},"19":{"start":{"line":45,"column":2},"end":{"line":45,"column":53}},"20":{"start":{"line":46,"column":2},"end":{"line":46,"column":59}},"21":{"start":{"line":48,"column":2},"end":{"line":48,"column":26}},"22":{"start":{"line":51,"column":0},"end":{"line":68,"column":1}},"23":{"start":{"line":52,"column":2},"end":{"line":66,"column":3}},"24":{"start":{"line":53,"column":4},"end":{"line":53,"column":36}},"25":{"start":{"line":54,"column":4},"end":{"line":58,"column":5}},"26":{"start":{"line":55,"column":6},"end":{"line":55,"column":34}},"27":{"start":{"line":56,"column":6},"end":{"line":56,"column":44}},"28":{"start":{"line":57,"column":6},"end":{"line":57,"column":176}},"29":{"start":{"line":59,"column":4},"end":{"line":59,"column":41}},"30":{"start":{"line":60,"column":4},"end":{"line":65,"column":5}},"31":{"start":{"line":61,"column":6},"end":{"line":61,"column":70}},"32":{"start":{"line":62,"column":6},"end":{"line":64,"column":7}},"33":{"start":{"line":63,"column":8},"end":{"line":63,"column":21}},"34":{"start":{"line":67,"column":2},"end":{"line":67,"column":46}},"35":{"start":{"line":71,"column":0},"end":{"line":92,"column":1}},"36":{"start":{"line":72,"column":2},"end":{"line":90,"column":3}},"37":{"start":{"line":73,"column":4},"end":{"line":73,"column":36}},"38":{"start":{"line":74,"column":4},"end":{"line":74,"column":42}},"39":{"start":{"line":75,"column":4},"end":{"line":78,"column":5}},"40":{"start":{"line":76,"column":6},"end":{"line":76,"column":34}},"41":{"start":{"line":77,"column":6},"end":{"line":77,"column":180}},"42":{"start":{"line":79,"column":4},"end":{"line":89,"column":5}},"43":{"start":{"line":80,"column":6},"end":{"line":80,"column":36}},"44":{"start":{"line":81,"column":6},"end":{"line":83,"column":7}},"45":{"start":{"line":82,"column":8},"end":{"line":82,"column":17}},"46":{"start":{"line":84,"column":6},"end":{"line":84,"column":50}},"47":{"start":{"line":85,"column":6},"end":{"line":85,"column":74}},"48":{"start":{"line":86,"column":6},"end":{"line":88,"column":7}},"49":{"start":{"line":87,"column":8},"end":{"line":87,"column":21}},"50":{"start":{"line":91,"column":2},"end":{"line":91,"column":46}},"51":{"start":{"line":94,"column":0},"end":{"line":94,"column":36}}},"branchMap":{"1":{"line":20,"type":"if","locations":[{"start":{"line":20,"column":2},"end":{"line":20,"column":2}},{"start":{"line":20,"column":2},"end":{"line":20,"column":2}}]},"2":{"line":23,"type":"if","locations":[{"start":{"line":23,"column":2},"end":{"line":23,"column":2}},{"start":{"line":23,"column":2},"end":{"line":23,"column":2}}]},"3":{"line":34,"type":"binary-expr","locations":[{"start":{"line":34,"column":20},"end":{"line":34,"column":33}},{"start":{"line":34,"column":37},"end":{"line":34,"column":46}}]},"4":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"5":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":6},"end":{"line":37,"column":6}},{"start":{"line":37,"column":6},"end":{"line":37,"column":6}}]},"6":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]},"7":{"line":62,"type":"if","locations":[{"start":{"line":62,"column":6},"end":{"line":62,"column":6}},{"start":{"line":62,"column":6},"end":{"line":62,"column":6}}]},"8":{"line":75,"type":"if","locations":[{"start":{"line":75,"column":4},"end":{"line":75,"column":4}},{"start":{"line":75,"column":4},"end":{"line":75,"column":4}}]},"9":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":6},"end":{"line":81,"column":6}},{"start":{"line":81,"column":6},"end":{"line":81,"column":6}}]},"10":{"line":86,"type":"if","locations":[{"start":{"line":86,"column":6},"end":{"line":86,"column":6}},{"start":{"line":86,"column":6},"end":{"line":86,"column":6}}]}}}}
{"/Users/jtburnett/Sites/react-immutable-proptypes/src/ImmutablePropTypes.js":{"path":"/Users/jtburnett/Sites/react-immutable-proptypes/src/ImmutablePropTypes.js","s":{"1":1,"2":1,"3":1,"4":1,"5":46,"6":46,"7":6,"8":40,"9":0,"10":40,"11":1,"12":1,"13":124,"14":124,"15":22,"16":22,"17":10,"18":102,"19":95,"20":95,"21":95,"22":1,"23":1,"24":31,"25":31,"26":14,"27":14,"28":17,"29":8,"30":1,"31":1,"32":51,"33":51,"34":12,"35":12,"36":12,"37":39,"38":39,"39":76,"40":76,"41":8,"42":63,"43":1,"44":18,"45":1,"46":18,"47":1,"48":27,"49":1,"50":1,"51":20,"52":20,"53":20,"54":3,"55":3,"56":17,"57":16,"58":16,"59":1,"60":15,"61":15,"62":15,"63":3,"64":24,"65":1},"b":{"1":[6,40],"2":[0,40],"3":[124,0],"4":[22,102],"5":[10,12],"6":[14,17],"7":[12,39],"8":[8,68],"9":[3,17],"10":[1,15],"11":[3,12]},"f":{"1":46,"2":95,"3":124,"4":8,"5":31,"6":63,"7":51,"8":18,"9":18,"10":27,"11":24,"12":20},"fnMap":{"1":{"name":"getPropType","line":29,"loc":{"start":{"line":29,"column":0},"end":{"line":29,"column":32}}},"2":{"name":"createChainableTypeChecker","line":43,"loc":{"start":{"line":43,"column":0},"end":{"line":43,"column":46}}},"3":{"name":"checkType","line":44,"loc":{"start":{"line":44,"column":2},"end":{"line":44,"column":75}}},"4":{"name":"createImmutableTypeChecker","line":62,"loc":{"start":{"line":62,"column":0},"end":{"line":62,"column":85}}},"5":{"name":"validate","line":63,"loc":{"start":{"line":63,"column":2},"end":{"line":63,"column":62}}},"6":{"name":"createIterableTypeChecker","line":74,"loc":{"start":{"line":74,"column":0},"end":{"line":74,"column":97}}},"7":{"name":"validate","line":75,"loc":{"start":{"line":75,"column":2},"end":{"line":75,"column":62}}},"8":{"name":"createListOfTypeChecker","line":93,"loc":{"start":{"line":93,"column":0},"end":{"line":93,"column":46}}},"9":{"name":"createMapOfTypeChecker","line":97,"loc":{"start":{"line":97,"column":0},"end":{"line":97,"column":45}}},"10":{"name":"createIterableOfTypeChecker","line":101,"loc":{"start":{"line":101,"column":0},"end":{"line":101,"column":50}}},"11":{"name":"createShapeTypeChecker","line":106,"loc":{"start":{"line":106,"column":0},"end":{"line":106,"column":44}}},"12":{"name":"validate","line":107,"loc":{"start":{"line":107,"column":2},"end":{"line":107,"column":62}}}},"statementMap":{"1":{"start":{"line":9,"column":0},"end":{"line":9,"column":37}},"2":{"start":{"line":11,"column":0},"end":{"line":11,"column":32}},"3":{"start":{"line":13,"column":0},"end":{"line":27,"column":2}},"4":{"start":{"line":29,"column":0},"end":{"line":41,"column":1}},"5":{"start":{"line":30,"column":2},"end":{"line":30,"column":34}},"6":{"start":{"line":31,"column":2},"end":{"line":33,"column":3}},"7":{"start":{"line":32,"column":4},"end":{"line":32,"column":19}},"8":{"start":{"line":34,"column":2},"end":{"line":39,"column":3}},"9":{"start":{"line":38,"column":4},"end":{"line":38,"column":20}},"10":{"start":{"line":40,"column":2},"end":{"line":40,"column":18}},"11":{"start":{"line":43,"column":0},"end":{"line":60,"column":1}},"12":{"start":{"line":44,"column":2},"end":{"line":54,"column":3}},"13":{"start":{"line":45,"column":4},"end":{"line":45,"column":47}},"14":{"start":{"line":46,"column":4},"end":{"line":53,"column":5}},"15":{"start":{"line":47,"column":6},"end":{"line":47,"column":34}},"16":{"start":{"line":48,"column":6},"end":{"line":50,"column":7}},"17":{"start":{"line":49,"column":8},"end":{"line":49,"column":130}},"18":{"start":{"line":52,"column":6},"end":{"line":52,"column":64}},"19":{"start":{"line":56,"column":2},"end":{"line":56,"column":53}},"20":{"start":{"line":57,"column":2},"end":{"line":57,"column":59}},"21":{"start":{"line":59,"column":2},"end":{"line":59,"column":26}},"22":{"start":{"line":62,"column":0},"end":{"line":72,"column":1}},"23":{"start":{"line":63,"column":2},"end":{"line":70,"column":3}},"24":{"start":{"line":64,"column":4},"end":{"line":64,"column":36}},"25":{"start":{"line":65,"column":4},"end":{"line":68,"column":5}},"26":{"start":{"line":66,"column":6},"end":{"line":66,"column":44}},"27":{"start":{"line":67,"column":6},"end":{"line":67,"column":180}},"28":{"start":{"line":69,"column":4},"end":{"line":69,"column":16}},"29":{"start":{"line":71,"column":2},"end":{"line":71,"column":46}},"30":{"start":{"line":74,"column":0},"end":{"line":91,"column":1}},"31":{"start":{"line":75,"column":2},"end":{"line":89,"column":3}},"32":{"start":{"line":76,"column":4},"end":{"line":76,"column":36}},"33":{"start":{"line":77,"column":4},"end":{"line":81,"column":5}},"34":{"start":{"line":78,"column":6},"end":{"line":78,"column":34}},"35":{"start":{"line":79,"column":6},"end":{"line":79,"column":44}},"36":{"start":{"line":80,"column":6},"end":{"line":80,"column":198}},"37":{"start":{"line":82,"column":4},"end":{"line":82,"column":41}},"38":{"start":{"line":83,"column":4},"end":{"line":88,"column":5}},"39":{"start":{"line":84,"column":6},"end":{"line":84,"column":70}},"40":{"start":{"line":85,"column":6},"end":{"line":87,"column":7}},"41":{"start":{"line":86,"column":8},"end":{"line":86,"column":21}},"42":{"start":{"line":90,"column":2},"end":{"line":90,"column":46}},"43":{"start":{"line":93,"column":0},"end":{"line":95,"column":1}},"44":{"start":{"line":94,"column":2},"end":{"line":94,"column":79}},"45":{"start":{"line":97,"column":0},"end":{"line":99,"column":1}},"46":{"start":{"line":98,"column":2},"end":{"line":98,"column":76}},"47":{"start":{"line":101,"column":0},"end":{"line":103,"column":1}},"48":{"start":{"line":102,"column":2},"end":{"line":102,"column":91}},"49":{"start":{"line":106,"column":0},"end":{"line":127,"column":1}},"50":{"start":{"line":107,"column":2},"end":{"line":125,"column":3}},"51":{"start":{"line":108,"column":4},"end":{"line":108,"column":36}},"52":{"start":{"line":109,"column":4},"end":{"line":109,"column":42}},"53":{"start":{"line":110,"column":4},"end":{"line":113,"column":5}},"54":{"start":{"line":111,"column":6},"end":{"line":111,"column":34}},"55":{"start":{"line":112,"column":6},"end":{"line":112,"column":180}},"56":{"start":{"line":114,"column":4},"end":{"line":124,"column":5}},"57":{"start":{"line":115,"column":6},"end":{"line":115,"column":36}},"58":{"start":{"line":116,"column":6},"end":{"line":118,"column":7}},"59":{"start":{"line":117,"column":8},"end":{"line":117,"column":17}},"60":{"start":{"line":119,"column":6},"end":{"line":119,"column":50}},"61":{"start":{"line":120,"column":6},"end":{"line":120,"column":74}},"62":{"start":{"line":121,"column":6},"end":{"line":123,"column":7}},"63":{"start":{"line":122,"column":8},"end":{"line":122,"column":21}},"64":{"start":{"line":126,"column":2},"end":{"line":126,"column":46}},"65":{"start":{"line":129,"column":0},"end":{"line":129,"column":36}}},"branchMap":{"1":{"line":31,"type":"if","locations":[{"start":{"line":31,"column":2},"end":{"line":31,"column":2}},{"start":{"line":31,"column":2},"end":{"line":31,"column":2}}]},"2":{"line":34,"type":"if","locations":[{"start":{"line":34,"column":2},"end":{"line":34,"column":2}},{"start":{"line":34,"column":2},"end":{"line":34,"column":2}}]},"3":{"line":45,"type":"binary-expr","locations":[{"start":{"line":45,"column":20},"end":{"line":45,"column":33}},{"start":{"line":45,"column":37},"end":{"line":45,"column":46}}]},"4":{"line":46,"type":"if","locations":[{"start":{"line":46,"column":4},"end":{"line":46,"column":4}},{"start":{"line":46,"column":4},"end":{"line":46,"column":4}}]},"5":{"line":48,"type":"if","locations":[{"start":{"line":48,"column":6},"end":{"line":48,"column":6}},{"start":{"line":48,"column":6},"end":{"line":48,"column":6}}]},"6":{"line":65,"type":"if","locations":[{"start":{"line":65,"column":4},"end":{"line":65,"column":4}},{"start":{"line":65,"column":4},"end":{"line":65,"column":4}}]},"7":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]},"8":{"line":85,"type":"if","locations":[{"start":{"line":85,"column":6},"end":{"line":85,"column":6}},{"start":{"line":85,"column":6},"end":{"line":85,"column":6}}]},"9":{"line":110,"type":"if","locations":[{"start":{"line":110,"column":4},"end":{"line":110,"column":4}},{"start":{"line":110,"column":4},"end":{"line":110,"column":4}}]},"10":{"line":116,"type":"if","locations":[{"start":{"line":116,"column":6},"end":{"line":116,"column":6}},{"start":{"line":116,"column":6},"end":{"line":116,"column":6}}]},"11":{"line":121,"type":"if","locations":[{"start":{"line":121,"column":6},"end":{"line":121,"column":6}},{"start":{"line":121,"column":6},"end":{"line":121,"column":6}}]}}}}

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

it("should warn with invalid items in the map list", function () {
it("should warn with invalid items in the map", function () {
typeCheckFail(PropTypes.mapOf(React.PropTypes.number), new Immutable.Map({ 1: 1, 2: 2, 3: "b" }), "Invalid prop `2` of type `string` supplied to `testComponent`, " + "expected `number`.");

@@ -182,2 +182,50 @@ });

describe("SetOf Type", function () {
it("should support the setOf propTypes", function () {
typeCheckPass(PropTypes.setOf(React.PropTypes.number), new Immutable.Set([1, 2, 3]));
typeCheckPass(PropTypes.setOf(React.PropTypes.string), new Immutable.Set(["a", "b", "c"]));
typeCheckPass(PropTypes.setOf(React.PropTypes.oneOf(["a", "b"])), new Immutable.Set(["a", "b"]));
});
it("should support setOf with complex types", function () {
typeCheckPass(PropTypes.setOf(React.PropTypes.shape({ a: React.PropTypes.number.isRequired })), new Immutable.Set([{ a: 1 }, { a: 2 }]));
function Thing() {}
typeCheckPass(PropTypes.setOf(React.PropTypes.instanceOf(Thing)), new Immutable.Set([new Thing(), new Thing()]));
});
it("should warn with invalid items in the set", function () {
typeCheckFail(PropTypes.setOf(React.PropTypes.number), new Immutable.Set([1, 2, "b"]), "Invalid prop `2` of type `string` supplied to `testComponent`, " + "expected `number`.");
});
it("should warn with invalid complex types", function () {
function Thing() {}
var name = Thing.name || "<<anonymous>>";
typeCheckFail(PropTypes.setOf(React.PropTypes.instanceOf(Thing)), new Immutable.Set([new Thing(), "xyz"]), "Invalid prop `1` supplied to `testComponent`, expected instance of `" + name + "`.");
});
it("should warn when passed something other than an Immutable.Set", function () {
typeCheckFail(PropTypes.setOf(React.PropTypes.number), { "0": "maybe-array", length: 1 }, "Invalid prop `testProp` of type `object` supplied to " + "`testComponent`, expected an Immutable.js Set.");
typeCheckFail(PropTypes.setOf(PropTypes.number), 123, "Invalid prop `testProp` of type `number` supplied to " + "`testComponent`, expected an Immutable.js Set.");
typeCheckFail(PropTypes.setOf(PropTypes.number), "string", "Invalid prop `testProp` of type `string` supplied to " + "`testComponent`, expected an Immutable.js Set.");
typeCheckFail(PropTypes.setOf(PropTypes.number), [1, 2, 3], "Invalid prop `testProp` of type `array` supplied to " + "`testComponent`, expected an Immutable.js Set.");
});
it("should not warn when passing an empty object", function () {
typeCheckPass(PropTypes.setOf(PropTypes.number), new Immutable.Set());
typeCheckPass(PropTypes.setOf(PropTypes.number), new Immutable.Set([]));
});
it("should be implicitly optional and not warn without values", function () {
typeCheckPass(PropTypes.setOf(PropTypes.number), null);
typeCheckPass(PropTypes.setOf(PropTypes.number), undefined);
});
it("should warn for missing required values", function () {
typeCheckFail(PropTypes.setOf(PropTypes.number).isRequired, null, requiredMessage);
typeCheckFail(PropTypes.setOf(PropTypes.number).isRequired, undefined, requiredMessage);
});
});
describe("IterableOf Type", function () {

@@ -184,0 +232,0 @@ it("should support the iterableOf propTypes", function () {

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

mapOf: createMapOfTypeChecker,
setOf: createSetOfTypeChecker,
iterableOf: createIterableOfTypeChecker,

@@ -102,2 +103,6 @@ shape: createShapeTypeChecker,

function createSetOfTypeChecker(typeChecker) {
return createIterableTypeChecker(typeChecker, "Set", Immutable.Set.isSet);
}
function createIterableOfTypeChecker(typeChecker) {

@@ -104,0 +109,0 @@ return createIterableTypeChecker(typeChecker, "Iterable", Immutable.Iterable.isIterable);

{
"name": "react-immutable-proptypes",
"version": "0.1.7",
"version": "0.1.8",
"description": "PropType validators that work with Immutable.js.",

@@ -5,0 +5,0 @@ "main": "dist/ImmutablePropTypes.js",

@@ -8,2 +8,3 @@ # react-immutable-proptypes

## Version Updates
- 0.1.8 added `setOf` checker. Thanks to [Don Abrams](https://github.com/donabrams)!
- 0.1.7 added convencience checkers for "primitive" immutable types (map, list, etc...)

@@ -72,2 +73,4 @@ - 0.1.6 added `iterableOf`

* `ImmutablePropTypes.setOf` is basically the same as `listOf`, but it is specific to `Immutable.Set`.
* `ImmutbalePropTypes.iterableOf` is the generic form of listOf/mapOf. It is useful when there is no need to validate anything other than Immutable.js compatible (ie. `Immutable.Iterable`). Continue to use `listOf` and/or `mapOf` when you know the type.

@@ -74,0 +77,0 @@

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