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

@hig/avatar-bundle

Package Overview
Dependencies
Maintainers
6
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@hig/avatar-bundle - npm Package Compare versions

Comparing version 1.0.1 to 1.0.2

139

build/index.es.js

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

import React from 'react';
import React, { Component } from 'react';
import Avatar, { SizeMapping, StyleItems, stylesheet, sizes, AVAILABLE_SIZES } from '@hig/avatar';

@@ -179,71 +179,93 @@ import PropTypes from 'prop-types';

var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
var AvatarBundle = function AvatarBundle(props) {
var size = props.size,
spacing = props.spacing,
borderColor = props.borderColor,
showOverflowCount = props.showOverflowCount,
avatars = props.avatars,
customStylesheet = props.stylesheet,
otherProps = _objectWithoutProperties(props, ["size", "spacing", "borderColor", "showOverflowCount", "avatars", "stylesheet"]);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var className = otherProps.className;
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var overflow = 0;
if (showOverflowCount && avatars.length > 3) {
var overflowAmt = avatars.length - 2;
if (overflowAmt <= 99) {
overflow = overflowAmt;
} else {
overflow = 99;
}
var AvatarBundle = function (_Component) {
_inherits(AvatarBundle, _Component);
function AvatarBundle() {
_classCallCheck(this, AvatarBundle);
return _possibleConstructorReturn(this, (AvatarBundle.__proto__ || Object.getPrototypeOf(AvatarBundle)).apply(this, arguments));
}
return React.createElement(
ThemeContext.Consumer,
null,
function (_ref) {
var resolvedRoles = _ref.resolvedRoles;
_createClass(AvatarBundle, [{
key: "render",
value: function render() {
var _props = this.props,
size = _props.size,
spacing = _props.spacing,
borderColor = _props.borderColor,
showOverflowCount = _props.showOverflowCount,
avatars = _props.avatars,
customStylesheet = _props.stylesheet,
otherProps = _objectWithoutProperties(_props, ["size", "spacing", "borderColor", "showOverflowCount", "avatars", "stylesheet"]);
var styles = stylesheet$1({ size: size, spacing: spacing, borderColor: borderColor, stylesheet: customStylesheet }, resolvedRoles);
var className = otherProps.className;
var overflow = 0;
if (showOverflowCount && avatars.length > 3) {
var overflowAmt = avatars.length - 2;
if (overflowAmt <= 99) {
overflow = overflowAmt;
} else {
overflow = 99;
}
}
return React.createElement(
"span",
{ className: cx(css(styles.avatarBundleContainer), className) },
React.createElement(
"span",
{
className: cx(css(styles.avatarWrapper), css(styles.avatarWrapperFirstItem))
},
React.createElement(Avatar, _extends$1({ size: size }, avatars[0]))
),
avatars.length > 1 && React.createElement(
"span",
{
className: cx(css(styles.avatarWrapper), css(styles.avatarWrapperSecondItem))
},
React.createElement(Avatar, _extends$1({ size: size }, avatars[1]))
),
avatars.length > 2 && overflow === 0 && React.createElement(
"span",
{
className: cx(css(styles.avatarWrapper), css(styles.avatarWrapperThirdItem))
},
React.createElement(Avatar, _extends$1({ size: size }, avatars[2]))
),
overflow > 0 && React.createElement(
"span",
{
className: cx(css(styles.avatarWrapper), css(styles.avatarOverflowCount))
},
"+" + overflow
),
React.createElement(ClipPaths, null)
ThemeContext.Consumer,
null,
function (_ref) {
var resolvedRoles = _ref.resolvedRoles;
var styles = stylesheet$1({ size: size, spacing: spacing, borderColor: borderColor, stylesheet: customStylesheet }, resolvedRoles);
return React.createElement(
"span",
{ className: cx(css(styles.avatarBundleContainer), className) },
React.createElement(
"span",
{
className: cx(css(styles.avatarWrapper), css(styles.avatarWrapperFirstItem))
},
React.createElement(Avatar, _extends$1({ size: size }, avatars[0]))
),
avatars.length > 1 && React.createElement(
"span",
{
className: cx(css(styles.avatarWrapper), css(styles.avatarWrapperSecondItem))
},
React.createElement(Avatar, _extends$1({ size: size }, avatars[1]))
),
avatars.length > 2 && overflow === 0 && React.createElement(
"span",
{
className: cx(css(styles.avatarWrapper), css(styles.avatarWrapperThirdItem))
},
React.createElement(Avatar, _extends$1({ size: size }, avatars[2]))
),
overflow > 0 && React.createElement(
"span",
{
className: cx(css(styles.avatarWrapper), css(styles.avatarOverflowCount))
},
"+" + overflow
),
React.createElement(ClipPaths, null)
);
}
);
}
);
};
}]);
AvatarBundle.displayName = "AvatarBundle";
return AvatarBundle;
}(Component);

@@ -279,3 +301,2 @@ AvatarBundle.propTypes = {

};
AvatarBundle.defaultProps = {

@@ -282,0 +303,0 @@ size: sizes.MEDIUM_32,

@@ -7,3 +7,4 @@ 'use strict';

var React = _interopDefault(require('react'));
var React = require('react');
var React__default = _interopDefault(React);
var Avatar = require('@hig/avatar');

@@ -16,82 +17,82 @@ var Avatar__default = _interopDefault(Avatar);

function ClipPaths() {
return React.createElement(
return React__default.createElement(
"svg",
{ width: "0", height: "0" },
React.createElement(
React__default.createElement(
"defs",
null,
React.createElement(
React__default.createElement(
"clipPath",
{ id: "avatar-bundle-clip-extraSmall-default" },
React.createElement("path", { d: "M8,0A7.99573,7.99573,0,0,0,.53192,5.15033,8.97416,8.97416,0,0,1,1,8a8.97444,8.97444,0,0,1-.46808,2.84967A7.99708,7.99708,0,1,0,8,0Z" })
React__default.createElement("path", { d: "M8,0A7.99573,7.99573,0,0,0,.53192,5.15033,8.97416,8.97416,0,0,1,1,8a8.97444,8.97444,0,0,1-.46808,2.84967A7.99708,7.99708,0,1,0,8,0Z" })
),
React.createElement(
React__default.createElement(
"clipPath",
{ id: "avatar-bundle-clip-small-default" },
React.createElement("path", { d: "M12,0A11.96993,11.96993,0,0,0,2.62366,4.52277,12.92789,12.92789,0,0,1,5,12a12.92789,12.92789,0,0,1-2.37634,7.47723A11.997,11.997,0,1,0,12,0Z" })
React__default.createElement("path", { d: "M12,0A11.96993,11.96993,0,0,0,2.62366,4.52277,12.92789,12.92789,0,0,1,5,12a12.92789,12.92789,0,0,1-2.37634,7.47723A11.997,11.997,0,1,0,12,0Z" })
),
React.createElement(
React__default.createElement(
"clipPath",
{ id: "avatar-bundle-clip-medium-default" },
React.createElement("path", { d: "M16,0A15.95822,15.95822,0,0,0,3.21405,6.41034,17.89223,17.89223,0,0,1,6,16a17.89223,17.89223,0,0,1-2.78595,9.58966A15.99273,15.99273,0,1,0,16,0Z" })
React__default.createElement("path", { d: "M16,0A15.95822,15.95822,0,0,0,3.21405,6.41034,17.89223,17.89223,0,0,1,6,16a17.89223,17.89223,0,0,1-2.78595,9.58966A15.99273,15.99273,0,1,0,16,0Z" })
),
React.createElement(
React__default.createElement(
"clipPath",
{ id: "avatar-bundle-clip-large-default" },
React.createElement("path", { d: "M24,0A23.9858,23.9858,0,0,0,3.13654,12.143,25.87787,25.87787,0,0,1,6,24,25.87787,25.87787,0,0,1,3.13654,35.857,23.99887,23.99887,0,1,0,24,0Z" })
React__default.createElement("path", { d: "M24,0A23.9858,23.9858,0,0,0,3.13654,12.143,25.87787,25.87787,0,0,1,6,24,25.87787,25.87787,0,0,1,3.13654,35.857,23.99887,23.99887,0,1,0,24,0Z" })
),
React.createElement(
React__default.createElement(
"clipPath",
{ id: "avatar-bundle-clip-extraLarge-default" },
React.createElement("path", { d: "M32,0A31.97919,31.97919,0,0,0,4.2691,16.03931,35.8408,35.8408,0,0,1,8,32,35.84061,35.84061,0,0,1,4.2691,47.96069,31.99833,31.99833,0,1,0,32,0Z" })
React__default.createElement("path", { d: "M32,0A31.97919,31.97919,0,0,0,4.2691,16.03931,35.8408,35.8408,0,0,1,8,32,35.84061,35.84061,0,0,1,4.2691,47.96069,31.99833,31.99833,0,1,0,32,0Z" })
),
React.createElement(
React__default.createElement(
"clipPath",
{ id: "avatar-bundle-clip-extraSmall-condensed" },
React.createElement("path", { d: "M8,0A7.96023,7.96023,0,0,0,2.70648,2.01288,8.95524,8.95524,0,0,1,5,8a8.9552,8.9552,0,0,1-2.29352,5.98706A7.99653,7.99653,0,1,0,8,0Z" })
React__default.createElement("path", { d: "M8,0A7.96023,7.96023,0,0,0,2.70648,2.01288,8.95524,8.95524,0,0,1,5,8a8.9552,8.9552,0,0,1-2.29352,5.98706A7.99653,7.99653,0,1,0,8,0Z" })
),
React.createElement(
React__default.createElement(
"clipPath",
{ id: "avatar-bundle-clip-small-condensed" },
React.createElement("path", { d: "M12,0A11.93118,11.93118,0,0,0,4.77905,2.432,12.95059,12.95059,0,0,1,9,12a12.95073,12.95073,0,0,1-4.22089,9.568A11.99458,11.99458,0,1,0,12,0Z" })
React__default.createElement("path", { d: "M12,0A11.93118,11.93118,0,0,0,4.77905,2.432,12.95059,12.95059,0,0,1,9,12a12.95073,12.95073,0,0,1-4.22089,9.568A11.99458,11.99458,0,1,0,12,0Z" })
),
React.createElement(
React__default.createElement(
"clipPath",
{ id: "avatar-bundle-clip-medium-condensed" },
React.createElement("path", { d: "M16,0A15.89989,15.89989,0,0,0,7.7016,2.33929,17.947,17.947,0,0,1,14,16,17.947,17.947,0,0,1,7.70154,29.66071,15.99314,15.99314,0,1,0,16,0Z" })
React__default.createElement("path", { d: "M16,0A15.89989,15.89989,0,0,0,7.7016,2.33929,17.947,17.947,0,0,1,14,16,17.947,17.947,0,0,1,7.70154,29.66071,15.99314,15.99314,0,1,0,16,0Z" })
),
React.createElement(
React__default.createElement(
"clipPath",
{ id: "avatar-bundle-clip-large-condensed" },
React.createElement("path", { d: "M24,0A23.882,23.882,0,0,0,11.783,3.34351,25.95309,25.95309,0,0,1,22,24,25.95318,25.95318,0,0,1,11.783,44.65649,23.99952,23.99952,0,1,0,24,0Z" })
React__default.createElement("path", { d: "M24,0A23.882,23.882,0,0,0,11.783,3.34351,25.95309,25.95309,0,0,1,22,24,25.95318,25.95318,0,0,1,11.783,44.65649,23.99952,23.99952,0,1,0,24,0Z" })
),
React.createElement(
React__default.createElement(
"clipPath",
{ id: "avatar-bundle-clip-extraLarge-condensed" },
React.createElement("path", { d: "M32,0A31.84991,31.84991,0,0,0,15.38861,4.64447,35.91,35.91,0,0,1,28,32,35.91,35.91,0,0,1,15.38861,59.35553,32.00173,32.00173,0,1,0,32,0Z" })
React__default.createElement("path", { d: "M32,0A31.84991,31.84991,0,0,0,15.38861,4.64447,35.91,35.91,0,0,1,28,32,35.91,35.91,0,0,1,15.38861,59.35553,32.00173,32.00173,0,1,0,32,0Z" })
),
React.createElement(
React__default.createElement(
"clipPath",
{ id: "avatar-bundle-clip-extraSmall-superCondensed" },
React.createElement("path", { d: "M8.1239.00629a8.99036,8.99036,0,0,1,0,15.98742,7.99459,7.99459,0,0,0,0-15.98742Z" })
React__default.createElement("path", { d: "M8.1239.00629a8.99036,8.99036,0,0,1,0,15.98742,7.99459,7.99459,0,0,0,0-15.98742Z" })
),
React.createElement(
React__default.createElement(
"clipPath",
{ id: "avatar-bundle-clip-small-superCondensed" },
React.createElement("path", { d: "M12,0A12.04272,12.04272,0,0,0,9.54236.25385a12.9792,12.9792,0,0,1,0,23.4923A12.00023,12.00023,0,1,0,12,0Z" })
React__default.createElement("path", { d: "M12,0A12.04272,12.04272,0,0,0,9.54236.25385a12.9792,12.9792,0,0,1,0,23.4923A12.00023,12.00023,0,1,0,12,0Z" })
),
React.createElement(
React__default.createElement(
"clipPath",
{ id: "avatar-bundle-clip-medium-superCondensed" },
React.createElement("path", { d: "M16,0a16.06977,16.06977,0,0,0-3.18018.3183,17.98393,17.98393,0,0,1,0,31.3634A16.00042,16.00042,0,1,0,16,0Z" })
React__default.createElement("path", { d: "M16,0a16.06977,16.06977,0,0,0-3.18018.3183,17.98393,17.98393,0,0,1,0,31.3634A16.00042,16.00042,0,1,0,16,0Z" })
),
React.createElement(
React__default.createElement(
"clipPath",
{ id: "avatar-bundle-clip-large-superCondensed" },
React.createElement("path", { d: "M24,0a24.10312,24.10312,0,0,0-4.87646.49677,26.00454,26.00454,0,0,1,0,47.00646A24.00173,24.00173,0,1,0,24,0Z" })
React__default.createElement("path", { d: "M24,0a24.10312,24.10312,0,0,0-4.87646.49677,26.00454,26.00454,0,0,1,0,47.00646A24.00173,24.00173,0,1,0,24,0Z" })
),
React.createElement(
React__default.createElement(
"clipPath",
{ id: "avatar-bundle-clip-extraLarge-superCondensed" },
React.createElement("path", { d: "M32,0a32.14147,32.14147,0,0,0-6.34265.63116,35.99417,35.99417,0,0,1,0,62.73768A32.00167,32.00167,0,1,0,32,0Z" })
React__default.createElement("path", { d: "M32,0a32.14147,32.14147,0,0,0-6.34265.63116,35.99417,35.99417,0,0,1,0,62.73768A32.00167,32.00167,0,1,0,32,0Z" })
)

@@ -188,71 +189,93 @@ )

var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
var AvatarBundle = function AvatarBundle(props) {
var size = props.size,
spacing = props.spacing,
borderColor = props.borderColor,
showOverflowCount = props.showOverflowCount,
avatars = props.avatars,
customStylesheet = props.stylesheet,
otherProps = _objectWithoutProperties(props, ["size", "spacing", "borderColor", "showOverflowCount", "avatars", "stylesheet"]);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var className = otherProps.className;
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var overflow = 0;
if (showOverflowCount && avatars.length > 3) {
var overflowAmt = avatars.length - 2;
if (overflowAmt <= 99) {
overflow = overflowAmt;
} else {
overflow = 99;
}
var AvatarBundle = function (_Component) {
_inherits(AvatarBundle, _Component);
function AvatarBundle() {
_classCallCheck(this, AvatarBundle);
return _possibleConstructorReturn(this, (AvatarBundle.__proto__ || Object.getPrototypeOf(AvatarBundle)).apply(this, arguments));
}
return React.createElement(
themeContext.ThemeContext.Consumer,
null,
function (_ref) {
var resolvedRoles = _ref.resolvedRoles;
_createClass(AvatarBundle, [{
key: "render",
value: function render() {
var _props = this.props,
size = _props.size,
spacing = _props.spacing,
borderColor = _props.borderColor,
showOverflowCount = _props.showOverflowCount,
avatars = _props.avatars,
customStylesheet = _props.stylesheet,
otherProps = _objectWithoutProperties(_props, ["size", "spacing", "borderColor", "showOverflowCount", "avatars", "stylesheet"]);
var styles = stylesheet({ size: size, spacing: spacing, borderColor: borderColor, stylesheet: customStylesheet }, resolvedRoles);
return React.createElement(
"span",
{ className: emotion.cx(emotion.css(styles.avatarBundleContainer), className) },
React.createElement(
"span",
{
className: emotion.cx(emotion.css(styles.avatarWrapper), emotion.css(styles.avatarWrapperFirstItem))
},
React.createElement(Avatar__default, _extends$1({ size: size }, avatars[0]))
),
avatars.length > 1 && React.createElement(
"span",
{
className: emotion.cx(emotion.css(styles.avatarWrapper), emotion.css(styles.avatarWrapperSecondItem))
},
React.createElement(Avatar__default, _extends$1({ size: size }, avatars[1]))
),
avatars.length > 2 && overflow === 0 && React.createElement(
"span",
{
className: emotion.cx(emotion.css(styles.avatarWrapper), emotion.css(styles.avatarWrapperThirdItem))
},
React.createElement(Avatar__default, _extends$1({ size: size }, avatars[2]))
),
overflow > 0 && React.createElement(
"span",
{
className: emotion.cx(emotion.css(styles.avatarWrapper), emotion.css(styles.avatarOverflowCount))
},
"+" + overflow
),
React.createElement(ClipPaths, null)
var className = otherProps.className;
var overflow = 0;
if (showOverflowCount && avatars.length > 3) {
var overflowAmt = avatars.length - 2;
if (overflowAmt <= 99) {
overflow = overflowAmt;
} else {
overflow = 99;
}
}
return React__default.createElement(
themeContext.ThemeContext.Consumer,
null,
function (_ref) {
var resolvedRoles = _ref.resolvedRoles;
var styles = stylesheet({ size: size, spacing: spacing, borderColor: borderColor, stylesheet: customStylesheet }, resolvedRoles);
return React__default.createElement(
"span",
{ className: emotion.cx(emotion.css(styles.avatarBundleContainer), className) },
React__default.createElement(
"span",
{
className: emotion.cx(emotion.css(styles.avatarWrapper), emotion.css(styles.avatarWrapperFirstItem))
},
React__default.createElement(Avatar__default, _extends$1({ size: size }, avatars[0]))
),
avatars.length > 1 && React__default.createElement(
"span",
{
className: emotion.cx(emotion.css(styles.avatarWrapper), emotion.css(styles.avatarWrapperSecondItem))
},
React__default.createElement(Avatar__default, _extends$1({ size: size }, avatars[1]))
),
avatars.length > 2 && overflow === 0 && React__default.createElement(
"span",
{
className: emotion.cx(emotion.css(styles.avatarWrapper), emotion.css(styles.avatarWrapperThirdItem))
},
React__default.createElement(Avatar__default, _extends$1({ size: size }, avatars[2]))
),
overflow > 0 && React__default.createElement(
"span",
{
className: emotion.cx(emotion.css(styles.avatarWrapper), emotion.css(styles.avatarOverflowCount))
},
"+" + overflow
),
React__default.createElement(ClipPaths, null)
);
}
);
}
);
};
}]);
AvatarBundle.displayName = "AvatarBundle";
return AvatarBundle;
}(React.Component);

@@ -288,3 +311,2 @@ AvatarBundle.propTypes = {

};
AvatarBundle.defaultProps = {

@@ -291,0 +313,0 @@ size: Avatar.sizes.MEDIUM_32,

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

# [@hig/avatar-bundle-v1.0.2](https://github.com/Autodesk/hig/compare/@hig/avatar-bundle@1.0.1...@hig/avatar-bundle@1.0.2) (2022-01-12)
### Bug Fixes
* Forcing semantic release by editing readmes ([d39b61f](https://github.com/Autodesk/hig/commit/d39b61f))
### Reverts
* "Revert "Revert "feat : Migrate all repository to React v17.0 """ ([bf78986](https://github.com/Autodesk/hig/commit/bf78986))
# [@hig/avatar-bundle-v1.0.1](https://github.com/Autodesk/hig/compare/@hig/avatar-bundle@1.0.0...@hig/avatar-bundle@1.0.1) (2022-01-12)

@@ -2,0 +14,0 @@

{
"name": "@hig/avatar-bundle",
"version": "1.0.1",
"version": "1.0.2",
"description": "HIG Avatar Bundle",

@@ -20,4 +20,4 @@ "author": "Autodesk Inc.",

"dependencies": {
"@hig/avatar": "^1.4.1",
"@hig/utils": "^0.4.0",
"@hig/avatar": "^1.4.2",
"@hig/utils": "^0.4.1",
"emotion": "^10.0.0",

@@ -27,5 +27,5 @@ "prop-types": "^15.7.1"

"peerDependencies": {
"@hig/theme-context": "^3.0.2",
"@hig/theme-data": "^2.22.0",
"react": "^17.0.0"
"@hig/theme-context": "^3.0.3",
"@hig/theme-data": "^2.22.1",
"react": "^15.4.1 || ^16.3.2"
},

@@ -32,0 +32,0 @@ "devDependencies": {

@@ -7,2 +7,3 @@ # Avatar Bundle

## Getting started

@@ -9,0 +10,0 @@

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