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

@contentful/f36-tooltip

Package Overview
Dependencies
Maintainers
171
Versions
342
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@contentful/f36-tooltip - npm Package Compare versions

Comparing version 4.51.0 to 4.52.0

2

dist/esm/index.js

@@ -8,3 +8,3 @@ import a, { useState, useRef, useEffect } from 'react';

var se=Object.defineProperty;var d=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,K=Object.prototype.propertyIsEnumerable;var L=(t,o,e)=>o in t?se(t,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[o]=e,y=(t,o)=>{for(var e in o||(o={}))H.call(o,e)&&L(t,e,o[e]);if(d)for(var e of d(o))K.call(o,e)&&L(t,e,o[e]);return t};var V=(t,o)=>{var e={};for(var n in t)H.call(t,n)&&o.indexOf(n)<0&&(e[n]=t[n]);if(t!=null&&d)for(var n of d(t))o.indexOf(n)<0&&K.call(t,n)&&(e[n]=t[n]);return e};var j=(t,o,e)=>new Promise((n,u)=>{var b=s=>{try{l(e.next(s));}catch(p){u(p);}},h=s=>{try{l(e.throw(s));}catch(p){u(p);}},l=s=>s.done?n(s.value):Promise.resolve(s.value).then(b,h);l((e=e.apply(t,o)).next());});var g=`calc(-1 * ((1rem * (10 / ${i.fontBaseDefault})) / 2))`,X=`calc(1rem * (10 / ${i.fontBaseDefault}))`;function q(){return {tooltipTargetWrapper:css({display:"inline-block",position:"relative"}),tooltip:css({background:i.gray900,fontFamily:i.fontStackPrimary,fontSize:i.fontSizeS,fontWeight:i.fontWeightNormal,fontStyle:"normal",textDecoration:"none",color:i.colorWhite,textAlign:"center",lineHeight:i.lineHeightM,padding:`${i.spacingXs} calc(1rem * (10 / ${i.fontBaseDefault}))`,borderRadius:i.borderRadiusMedium,whiteSpace:"normal",textTransform:"initial",letterSpacing:"initial"}),tooltipHidden:css({visibility:"hidden",pointerEvents:"none",zIndex:i.zIndexNegative}),tooltipContainer:css({"& > button[disabled]":{pointerEvents:"none"}}),tooltipArrow:css({position:"absolute",'&[data-placement*="top"]':{bottom:0,left:0,marginBottom:g},'&[data-placement*="right"]':{left:0,marginLeft:g},'&[data-placement*="bottom"]':{left:0,top:0,marginTop:g},'&[data-placement*="left"]':{right:0,marginRight:g},"&::before":{content:'""',display:"block",height:X,width:X,backgroundColor:i.gray900,transform:"rotate3d(0, 0, 1, 45deg)",zIndex:i.zIndexNegative}})}}var ce=ue=>{var N=ue,{children:t,className:o,as:e="span",content:n,label:u,id:b,isVisible:h=!1,hideDelay:l=0,onBlur:s,onFocus:p,onMouseLeave:M,onMouseOver:C,onKeyDown:R,showDelay:U=0,targetWrapperClassName:I,maxWidth:E=360,testId:Y="cf-ui-tooltip",placement:Z="auto",usePortal:_=!1,isDisabled:ee=!1}=N,te=V(N,["children","className","as","content","label","id","isVisible","hideDelay","onBlur","onFocus","onMouseLeave","onMouseOver","onKeyDown","showDelay","targetWrapperClassName","maxWidth","testId","placement","usePortal","isDisabled"]);let T=q(),[oe,f]=useState(h),z=useId(b,"tooltip"),B=useRef(null),W=useRef(null),[ne,re]=useState(null),{styles:k,attributes:x,update:P}=usePopper(B.current,W.current,{placement:Z,modifiers:[{name:"arrow",options:{element:ne,padding:parseFloat(i.borderRadiusSmall)}},{name:"offset",options:{offset:[0,10]}}]});useEffect(()=>{(()=>j(void 0,null,function*(){P!==null&&(yield P());}))();},[n,P]);let D=useRef(),F=useRef(),m=()=>{clearTimeout(D.current),clearTimeout(F.current);};useEffect(()=>m,[]);let $=()=>{m(),D.current=setTimeout(()=>f(!0),U);},S=()=>{m(),F.current=setTimeout(()=>f(!1),l);},ie=typeof E=="string"?E:`${E}px`,ae=y({zIndex:i.zIndexTooltip,maxWidth:ie},k.popper);if(!n||ee)return a.createElement(Box,{as:e,className:I},t);let A=a.createElement(Box,y({as:"span",id:z,ref:W,role:"tooltip",style:ae,className:cx(T.tooltip,o),testId:Y,onMouseEnter:()=>{m(),f(!0);},onMouseLeave:()=>{m(),f(!1);}},x.popper),a.createElement("span",{"aria-label":u},n),a.createElement("span",{className:T.tooltipArrow,"data-placement":x.popper&&x.popper["data-popper-placement"],ref:re,style:k.arrow}));return a.createElement(a.Fragment,null,oe?a.createElement(a.Fragment,null,_?a.createElement(Portal,null,A):A):null,a.createElement(Box,y({as:e,ref:B,className:cx(T.tooltipContainer,I),onMouseEnter:r=>{$(),C&&C(r);},onMouseLeave:r=>{S(),M&&M(r);},onFocus:r=>{$(),p&&p(r);},onBlur:r=>{S(),s&&s(r);},onKeyDown:r=>{r.key==="Escape"&&S(),R&&R(r);}},te),a.Children.map(t,r=>{if(a.isValidElement(r))return a.cloneElement(r,{"aria-describedby":z})})))};
var se=Object.defineProperty;var d=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,K=Object.prototype.propertyIsEnumerable;var L=(t,o,e)=>o in t?se(t,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[o]=e,y=(t,o)=>{for(var e in o||(o={}))H.call(o,e)&&L(t,e,o[e]);if(d)for(var e of d(o))K.call(o,e)&&L(t,e,o[e]);return t};var V=(t,o)=>{var e={};for(var n in t)H.call(t,n)&&o.indexOf(n)<0&&(e[n]=t[n]);if(t!=null&&d)for(var n of d(t))o.indexOf(n)<0&&K.call(t,n)&&(e[n]=t[n]);return e};var j=(t,o,e)=>new Promise((n,u)=>{var h=s=>{try{l(e.next(s));}catch(p){u(p);}},b=s=>{try{l(e.throw(s));}catch(p){u(p);}},l=s=>s.done?n(s.value):Promise.resolve(s.value).then(h,b);l((e=e.apply(t,o)).next());});var g=`calc(-1 * ((1rem * (10 / ${i.fontBaseDefault})) / 2))`,X=`calc(1rem * (10 / ${i.fontBaseDefault}))`;function q(){return {tooltipTargetWrapper:css({display:"inline-block",position:"relative"}),tooltip:css({background:i.gray900,fontFamily:i.fontStackPrimary,fontSize:i.fontSizeS,fontWeight:i.fontWeightNormal,fontStyle:"normal",textDecoration:"none",color:i.colorWhite,textAlign:"center",lineHeight:i.lineHeightM,padding:`${i.spacingXs} calc(1rem * (10 / ${i.fontBaseDefault}))`,borderRadius:i.borderRadiusMedium,whiteSpace:"normal",textTransform:"initial",letterSpacing:"initial"}),tooltipHidden:css({visibility:"hidden",pointerEvents:"none",zIndex:i.zIndexNegative}),tooltipContainer:css({"& > button[disabled]":{pointerEvents:"none"}}),tooltipArrow:css({position:"absolute",'&[data-placement*="top"]':{bottom:0,left:0,marginBottom:g},'&[data-placement*="right"]':{left:0,marginLeft:g},'&[data-placement*="bottom"]':{left:0,top:0,marginTop:g},'&[data-placement*="left"]':{right:0,marginRight:g},"&::before":{content:'""',display:"block",height:X,width:X,backgroundColor:i.gray900,transform:"rotate3d(0, 0, 1, 45deg)",zIndex:i.zIndexNegative}})}}var ce=ue=>{var N=ue,{children:t,className:o,as:e="span",content:n,label:u,id:h,isVisible:b=!1,hideDelay:l=0,onBlur:s,onFocus:p,onMouseLeave:M,onMouseOver:C,onKeyDown:R,showDelay:U=0,targetWrapperClassName:I,maxWidth:E=360,testId:Y="cf-ui-tooltip",placement:Z="auto",usePortal:_=!1,isDisabled:ee=!1}=N,te=V(N,["children","className","as","content","label","id","isVisible","hideDelay","onBlur","onFocus","onMouseLeave","onMouseOver","onKeyDown","showDelay","targetWrapperClassName","maxWidth","testId","placement","usePortal","isDisabled"]);let T=q(),[oe,f]=useState(b),z=useId(h,"tooltip"),B=useRef(null),W=useRef(null),[ne,re]=useState(null),{styles:k,attributes:x,update:P}=usePopper(B.current,W.current,{placement:Z,modifiers:[{name:"arrow",options:{element:ne,padding:parseFloat(i.borderRadiusSmall)}},{name:"offset",options:{offset:[0,10]}}]});useEffect(()=>{(()=>j(void 0,null,function*(){P!==null&&(yield P());}))();},[n,P]);let D=useRef(),F=useRef(),m=()=>{clearTimeout(D.current),clearTimeout(F.current);};useEffect(()=>m,[]);let $=()=>{m(),D.current=setTimeout(()=>f(!0),U);},S=()=>{m(),F.current=setTimeout(()=>f(!1),l);},ie=typeof E=="string"?E:`${E}px`,ae=y({zIndex:i.zIndexTooltip,maxWidth:ie},k.popper);if(!n||ee)return a.createElement(Box,{as:e,className:I},t);let A=a.createElement(Box,y({as:"span",id:z,ref:W,role:"tooltip",style:ae,className:cx(T.tooltip,o),testId:Y,onMouseEnter:()=>{m(),f(!0);},onMouseLeave:()=>{m(),f(!1);}},x.popper),a.createElement("span",{"aria-label":u},n),a.createElement("span",{className:T.tooltipArrow,"data-placement":x.popper&&x.popper["data-popper-placement"],ref:re,style:k.arrow}));return a.createElement(a.Fragment,null,oe?a.createElement(a.Fragment,null,_?a.createElement(Portal,null,A):A):null,a.createElement(Box,y({as:e,ref:B,className:cx(T.tooltipContainer,I),onMouseEnter:r=>{$(),C&&C(r);},onMouseLeave:r=>{S(),M&&M(r);},onFocus:r=>{$(),p&&p(r);},onBlur:r=>{S(),s&&s(r);},onKeyDown:r=>{r.key==="Escape"&&S(),R&&R(r);}},te),a.Children.map(t,r=>{if(a.isValidElement(r))return a.cloneElement(r,{"aria-describedby":z})})))};

@@ -11,0 +11,0 @@ export { ce as Tooltip };

@@ -11,15 +11,6 @@ import React, { ReactElement, FocusEvent, MouseEvent } from 'react';

*/
content: ReactElement;
content?: ReactElement | string;
/**
* Accesible label property, only required when using ReactElement as content
*/
label: string;
} | {
/**
* Content of the tooltip
*/
content: string;
/**
* Accesible label property, only required when using ReactElement as content
*/
label?: string;

@@ -99,5 +90,6 @@ };

};
declare type TooltipProps = CommonProps & TooltipInternalProps & WithEnhancedContent;
interface TooltipProps extends CommonProps, TooltipInternalProps, WithEnhancedContent {
}
declare const Tooltip: ({ children, className, as: HtmlTag, content, label, id, isVisible, hideDelay, onBlur, onFocus, onMouseLeave, onMouseOver, onKeyDown, showDelay, targetWrapperClassName, maxWidth, testId, placement, usePortal, isDisabled, ...otherProps }: TooltipProps) => JSX.Element;
export { Tooltip, TooltipInternalProps, TooltipProps, WithEnhancedContent };

@@ -15,3 +15,3 @@ 'use strict';

var se=Object.defineProperty;var d=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,K=Object.prototype.propertyIsEnumerable;var L=(t,o,e)=>o in t?se(t,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[o]=e,y=(t,o)=>{for(var e in o||(o={}))H.call(o,e)&&L(t,e,o[e]);if(d)for(var e of d(o))K.call(o,e)&&L(t,e,o[e]);return t};var V=(t,o)=>{var e={};for(var n in t)H.call(t,n)&&o.indexOf(n)<0&&(e[n]=t[n]);if(t!=null&&d)for(var n of d(t))o.indexOf(n)<0&&K.call(t,n)&&(e[n]=t[n]);return e};var j=(t,o,e)=>new Promise((n,u)=>{var b=s=>{try{l(e.next(s));}catch(p){u(p);}},h=s=>{try{l(e.throw(s));}catch(p){u(p);}},l=s=>s.done?n(s.value):Promise.resolve(s.value).then(b,h);l((e=e.apply(t,o)).next());});var g=`calc(-1 * ((1rem * (10 / ${i__default.default.fontBaseDefault})) / 2))`,X=`calc(1rem * (10 / ${i__default.default.fontBaseDefault}))`;function q(){return {tooltipTargetWrapper:emotion.css({display:"inline-block",position:"relative"}),tooltip:emotion.css({background:i__default.default.gray900,fontFamily:i__default.default.fontStackPrimary,fontSize:i__default.default.fontSizeS,fontWeight:i__default.default.fontWeightNormal,fontStyle:"normal",textDecoration:"none",color:i__default.default.colorWhite,textAlign:"center",lineHeight:i__default.default.lineHeightM,padding:`${i__default.default.spacingXs} calc(1rem * (10 / ${i__default.default.fontBaseDefault}))`,borderRadius:i__default.default.borderRadiusMedium,whiteSpace:"normal",textTransform:"initial",letterSpacing:"initial"}),tooltipHidden:emotion.css({visibility:"hidden",pointerEvents:"none",zIndex:i__default.default.zIndexNegative}),tooltipContainer:emotion.css({"& > button[disabled]":{pointerEvents:"none"}}),tooltipArrow:emotion.css({position:"absolute",'&[data-placement*="top"]':{bottom:0,left:0,marginBottom:g},'&[data-placement*="right"]':{left:0,marginLeft:g},'&[data-placement*="bottom"]':{left:0,top:0,marginTop:g},'&[data-placement*="left"]':{right:0,marginRight:g},"&::before":{content:'""',display:"block",height:X,width:X,backgroundColor:i__default.default.gray900,transform:"rotate3d(0, 0, 1, 45deg)",zIndex:i__default.default.zIndexNegative}})}}var ce=ue=>{var N=ue,{children:t,className:o,as:e="span",content:n,label:u,id:b,isVisible:h=!1,hideDelay:l=0,onBlur:s,onFocus:p,onMouseLeave:M,onMouseOver:C,onKeyDown:R,showDelay:U=0,targetWrapperClassName:I,maxWidth:E=360,testId:Y="cf-ui-tooltip",placement:Z="auto",usePortal:_=!1,isDisabled:ee=!1}=N,te=V(N,["children","className","as","content","label","id","isVisible","hideDelay","onBlur","onFocus","onMouseLeave","onMouseOver","onKeyDown","showDelay","targetWrapperClassName","maxWidth","testId","placement","usePortal","isDisabled"]);let T=q(),[oe,f]=a.useState(h),z=f36Core.useId(b,"tooltip"),B=a.useRef(null),W=a.useRef(null),[ne,re]=a.useState(null),{styles:k,attributes:x,update:P}=reactPopper.usePopper(B.current,W.current,{placement:Z,modifiers:[{name:"arrow",options:{element:ne,padding:parseFloat(i__default.default.borderRadiusSmall)}},{name:"offset",options:{offset:[0,10]}}]});a.useEffect(()=>{(()=>j(void 0,null,function*(){P!==null&&(yield P());}))();},[n,P]);let D=a.useRef(),F=a.useRef(),m=()=>{clearTimeout(D.current),clearTimeout(F.current);};a.useEffect(()=>m,[]);let $=()=>{m(),D.current=setTimeout(()=>f(!0),U);},S=()=>{m(),F.current=setTimeout(()=>f(!1),l);},ie=typeof E=="string"?E:`${E}px`,ae=y({zIndex:i__default.default.zIndexTooltip,maxWidth:ie},k.popper);if(!n||ee)return a__default.default.createElement(f36Core.Box,{as:e,className:I},t);let A=a__default.default.createElement(f36Core.Box,y({as:"span",id:z,ref:W,role:"tooltip",style:ae,className:emotion.cx(T.tooltip,o),testId:Y,onMouseEnter:()=>{m(),f(!0);},onMouseLeave:()=>{m(),f(!1);}},x.popper),a__default.default.createElement("span",{"aria-label":u},n),a__default.default.createElement("span",{className:T.tooltipArrow,"data-placement":x.popper&&x.popper["data-popper-placement"],ref:re,style:k.arrow}));return a__default.default.createElement(a__default.default.Fragment,null,oe?a__default.default.createElement(a__default.default.Fragment,null,_?a__default.default.createElement(f36Utils.Portal,null,A):A):null,a__default.default.createElement(f36Core.Box,y({as:e,ref:B,className:emotion.cx(T.tooltipContainer,I),onMouseEnter:r=>{$(),C&&C(r);},onMouseLeave:r=>{S(),M&&M(r);},onFocus:r=>{$(),p&&p(r);},onBlur:r=>{S(),s&&s(r);},onKeyDown:r=>{r.key==="Escape"&&S(),R&&R(r);}},te),a__default.default.Children.map(t,r=>{if(a__default.default.isValidElement(r))return a__default.default.cloneElement(r,{"aria-describedby":z})})))};
var se=Object.defineProperty;var d=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,K=Object.prototype.propertyIsEnumerable;var L=(t,o,e)=>o in t?se(t,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[o]=e,y=(t,o)=>{for(var e in o||(o={}))H.call(o,e)&&L(t,e,o[e]);if(d)for(var e of d(o))K.call(o,e)&&L(t,e,o[e]);return t};var V=(t,o)=>{var e={};for(var n in t)H.call(t,n)&&o.indexOf(n)<0&&(e[n]=t[n]);if(t!=null&&d)for(var n of d(t))o.indexOf(n)<0&&K.call(t,n)&&(e[n]=t[n]);return e};var j=(t,o,e)=>new Promise((n,u)=>{var h=s=>{try{l(e.next(s));}catch(p){u(p);}},b=s=>{try{l(e.throw(s));}catch(p){u(p);}},l=s=>s.done?n(s.value):Promise.resolve(s.value).then(h,b);l((e=e.apply(t,o)).next());});var g=`calc(-1 * ((1rem * (10 / ${i__default.default.fontBaseDefault})) / 2))`,X=`calc(1rem * (10 / ${i__default.default.fontBaseDefault}))`;function q(){return {tooltipTargetWrapper:emotion.css({display:"inline-block",position:"relative"}),tooltip:emotion.css({background:i__default.default.gray900,fontFamily:i__default.default.fontStackPrimary,fontSize:i__default.default.fontSizeS,fontWeight:i__default.default.fontWeightNormal,fontStyle:"normal",textDecoration:"none",color:i__default.default.colorWhite,textAlign:"center",lineHeight:i__default.default.lineHeightM,padding:`${i__default.default.spacingXs} calc(1rem * (10 / ${i__default.default.fontBaseDefault}))`,borderRadius:i__default.default.borderRadiusMedium,whiteSpace:"normal",textTransform:"initial",letterSpacing:"initial"}),tooltipHidden:emotion.css({visibility:"hidden",pointerEvents:"none",zIndex:i__default.default.zIndexNegative}),tooltipContainer:emotion.css({"& > button[disabled]":{pointerEvents:"none"}}),tooltipArrow:emotion.css({position:"absolute",'&[data-placement*="top"]':{bottom:0,left:0,marginBottom:g},'&[data-placement*="right"]':{left:0,marginLeft:g},'&[data-placement*="bottom"]':{left:0,top:0,marginTop:g},'&[data-placement*="left"]':{right:0,marginRight:g},"&::before":{content:'""',display:"block",height:X,width:X,backgroundColor:i__default.default.gray900,transform:"rotate3d(0, 0, 1, 45deg)",zIndex:i__default.default.zIndexNegative}})}}var ce=ue=>{var N=ue,{children:t,className:o,as:e="span",content:n,label:u,id:h,isVisible:b=!1,hideDelay:l=0,onBlur:s,onFocus:p,onMouseLeave:M,onMouseOver:C,onKeyDown:R,showDelay:U=0,targetWrapperClassName:I,maxWidth:E=360,testId:Y="cf-ui-tooltip",placement:Z="auto",usePortal:_=!1,isDisabled:ee=!1}=N,te=V(N,["children","className","as","content","label","id","isVisible","hideDelay","onBlur","onFocus","onMouseLeave","onMouseOver","onKeyDown","showDelay","targetWrapperClassName","maxWidth","testId","placement","usePortal","isDisabled"]);let T=q(),[oe,f]=a.useState(b),z=f36Core.useId(h,"tooltip"),B=a.useRef(null),W=a.useRef(null),[ne,re]=a.useState(null),{styles:k,attributes:x,update:P}=reactPopper.usePopper(B.current,W.current,{placement:Z,modifiers:[{name:"arrow",options:{element:ne,padding:parseFloat(i__default.default.borderRadiusSmall)}},{name:"offset",options:{offset:[0,10]}}]});a.useEffect(()=>{(()=>j(void 0,null,function*(){P!==null&&(yield P());}))();},[n,P]);let D=a.useRef(),F=a.useRef(),m=()=>{clearTimeout(D.current),clearTimeout(F.current);};a.useEffect(()=>m,[]);let $=()=>{m(),D.current=setTimeout(()=>f(!0),U);},S=()=>{m(),F.current=setTimeout(()=>f(!1),l);},ie=typeof E=="string"?E:`${E}px`,ae=y({zIndex:i__default.default.zIndexTooltip,maxWidth:ie},k.popper);if(!n||ee)return a__default.default.createElement(f36Core.Box,{as:e,className:I},t);let A=a__default.default.createElement(f36Core.Box,y({as:"span",id:z,ref:W,role:"tooltip",style:ae,className:emotion.cx(T.tooltip,o),testId:Y,onMouseEnter:()=>{m(),f(!0);},onMouseLeave:()=>{m(),f(!1);}},x.popper),a__default.default.createElement("span",{"aria-label":u},n),a__default.default.createElement("span",{className:T.tooltipArrow,"data-placement":x.popper&&x.popper["data-popper-placement"],ref:re,style:k.arrow}));return a__default.default.createElement(a__default.default.Fragment,null,oe?a__default.default.createElement(a__default.default.Fragment,null,_?a__default.default.createElement(f36Utils.Portal,null,A):A):null,a__default.default.createElement(f36Core.Box,y({as:e,ref:B,className:emotion.cx(T.tooltipContainer,I),onMouseEnter:r=>{$(),C&&C(r);},onMouseLeave:r=>{S(),M&&M(r);},onFocus:r=>{$(),p&&p(r);},onBlur:r=>{S(),s&&s(r);},onKeyDown:r=>{r.key==="Escape"&&S(),R&&R(r);}},te),a__default.default.Children.map(t,r=>{if(a__default.default.isValidElement(r))return a__default.default.cloneElement(r,{"aria-describedby":z})})))};

@@ -18,0 +18,0 @@ exports.Tooltip = ce;

{
"name": "@contentful/f36-tooltip",
"version": "4.51.0",
"version": "4.52.0",
"description": "Forma 36: Tooltip component",

@@ -9,3 +9,3 @@ "scripts": {

"dependencies": {
"@contentful/f36-core": "^4.51.0",
"@contentful/f36-core": "^4.52.0",
"@contentful/f36-tokens": "^4.0.2",

@@ -12,0 +12,0 @@ "@contentful/f36-utils": "^4.23.2",

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