Socket
Socket
Sign inDemoInstall

@dnd-kit/sortable

Package Overview
Dependencies
Maintainers
1
Versions
103
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@dnd-kit/sortable - npm Package Compare versions

Comparing version 1.1.0 to 2.0.0

70

CHANGELOG.md
# @dnd-kit/sortable
## 2.0.0
### Major Changes
- [`8583825`](https://github.com/clauderic/dnd-kit/commit/8583825380bc4d7c36e076be30bb5ca3fd20a26b) [#140](https://github.com/clauderic/dnd-kit/pull/140) Thanks [@clauderic](https://github.com/clauderic)! - Auto-scrolling defaults have been updated, which should generally lead to improved user experience for most consumers.
The auto-scroller now bases its calculations based on the position of the pointer rather than the edges of the draggable element's rect by default. This change is aligned with how the native HTML 5 Drag & Drop auto-scrolling behaves.
This behaviour can be customized using the `activator` option of the `autoScroll` prop:
```tsx
import {AutoScrollActivator, DndContext} from '@dnd-kit/core';
<DndContext autoScroll={{activator: AutoScrollActivator.DraggableRect}} />;
```
The auto-scroller now also looks at scrollable ancestors in order of appearance in the DOM tree, meaning it will first attempt to scroll the window, and narrow its focus down rather than the old behaviour of looking at scrollable ancestors in order of closeness to the draggable element in the DOM tree (reversed tree order).
This generally leads to an improved user experience, but can be customized by passing a configuration object to the `autoScroll` prop that sets the `order` option to `TraversalOrder.ReversedTreeOrder` instead of the new default value of `TraversalOrder.TreeOrder`:
```tsx
import {DndContext, TraversalOrder} from '@dnd-kit/core';
<DndContext autoScroll={{order: TraversalOrder.ReversedTreeOrder}} />;
```
The autoscrolling `thresholds`, `acceleration` and `interval` can now also be customized using the `autoScroll` prop:
```tsx
import {DndContext} from '@dnd-kit/core';
<DndContext
autoScroll={{
thresholds: {
// Left and right 10% of the scroll container activate scrolling
x: 0.1,
// Top and bottom 25% of the scroll container activate scrolling
y: 0.25,
},
// Accelerate slower than the default value (10)
acceleration: 5,
// Auto-scroll every 10ms instead of the default value of 5ms
interval: 10,
}}
/>;
```
Finally, consumers can now conditionally opt out of scrolling certain scrollable ancestors using the `canScroll` option of the `autoScroll` prop:
```tsx
import {DndContext} from '@dnd-kit/core';
<DndContext
autoScroll={{
canScroll(element) {
if (element === document.scrollingElement) {
return false;
}
return true;
},
}}
/>;
```
### Patch Changes
- Updated dependencies [[`8583825`](https://github.com/clauderic/dnd-kit/commit/8583825380bc4d7c36e076be30bb5ca3fd20a26b)]:
- @dnd-kit/core@2.0.0
## 1.1.0

@@ -4,0 +74,0 @@

22

dist/sortable.cjs.development.js

@@ -534,4 +534,5 @@ 'use strict';

var _ref$context = _ref.context,
droppableContainers = _ref$context.droppableContainers,
translatedRect = _ref$context.translatedRect,
droppableContainers = _ref$context.droppableContainers;
scrollableAncestors = _ref$context.scrollableAncestors;

@@ -600,7 +601,18 @@ if (directions.includes(event.code)) {

if (newNode) {
var newScrollAncestors = core.getScrollableAncestors(newNode);
var hasDifferentScrollAncestors = newScrollAncestors.some(function (element, index) {
return scrollableAncestors[index] !== element;
});
var newRect = core.getViewRect(newNode);
var newCoordinates = utilities.subtract({
x: newRect.left - (translatedRect.width - newRect.width),
y: newRect.top - (translatedRect.height - newRect.height)
});
var offset = hasDifferentScrollAncestors ? {
x: 0,
y: 0
} : {
x: translatedRect.width - newRect.width,
y: translatedRect.height - newRect.height
};
var newCoordinates = {
x: newRect.left - offset.x,
y: newRect.top - offset.y
};
return newCoordinates;

@@ -607,0 +619,0 @@ }

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

"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("react"),r=(e=t)&&"object"==typeof e&&"default"in e?e.default:e,n=require("@dnd-kit/core"),o=require("@dnd-kit/utilities");function i(e,t,r){var n=e.slice();return n.splice(r<0?n.length+r:r,0,n.splice(t,1)[0]),n}function a(e){return null!==e&&e>=0}function s(){return(s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var f={scaleX:1,scaleY:1},u=function(e){var t=e.layoutRects,r=e.index,n=i(t,e.overIndex,e.activeIndex),o=t[r],a=n[r];return a&&o?{x:a.offsetLeft-o.offsetLeft,y:a.offsetTop-o.offsetTop,scaleX:a.width/o.width,scaleY:a.height/o.height}:null},d={scaleX:1,scaleY:1},c=r.createContext({activeIndex:-1,containerId:"Sortable",disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:u,wasSorting:!1}),l=function(e){return!(!e.transition||!e.isSorting&&e.newIndex===e.index)},v={duration:200,easing:"ease"},h=o.CSS.Transition.toString({property:"transform",duration:0,easing:"linear"}),g={roleDescription:"sortable"},p=[n.KeyboardCode.Down,n.KeyboardCode.Right,n.KeyboardCode.Up,n.KeyboardCode.Left];exports.SortableContext=function(e){var i,a=e.children,s=e.id,f=e.items,d=e.strategy,l=void 0===d?u:d,v=n.useDndContext(),h=v.active,g=v.overlayNode,p=v.droppableRects,x=v.over,y=v.recomputeLayouts,b=v.willRecomputeLayouts,w=o.useUniqueId("Sortable",s),R=Boolean(null!==g.rect),L=h?f.indexOf(h):-1,m=-1!==L,S=t.useRef(m),I=!m&&!0===S.current,T=x?f.indexOf(x.id):-1,C=t.useRef(f),D=function(e,t){return e.reduce((function(e,r,n){var o=t.get(r);return o&&(e[n]=o),e}),Array(e.length))}(f,p),O=(i=C.current,!(f.join()===i.join())),E=-1!==T&&-1===L||O;o.useIsomorphicLayoutEffect((function(){O&&m&&!b&&y()}),[O,m,y,b]),t.useEffect((function(){C.current=f}),[f]),t.useEffect((function(){m?S.current=m:requestAnimationFrame((function(){S.current=m}))}),[m]);var N=t.useMemo((function(){return{activeIndex:L,containerId:w,disableTransforms:E,items:f,overIndex:T,useDragOverlay:R,sortedRects:D,strategy:l,wasSorting:I}}),[L,w,E,f,T,D,R,l,I]);return r.createElement(c.Provider,{value:N},a)},exports.arrayMove=i,exports.defaultAnimateLayoutChanges=l,exports.horizontalListSortingStrategy=function(e){var t,r=e.layoutRects,n=e.activeIndex,o=e.overIndex,i=e.index,a=null!=(t=r[n])?t:e.activeNodeRect;if(!a)return null;var u=function(e,t,r){var n=e[t],o=e[t-1],i=e[t+1];return o||i?r<t?o?n.offsetLeft-(o.offsetLeft+o.width):i.offsetLeft-(n.offsetLeft+n.width):i?i.offsetLeft-(n.offsetLeft+n.width):n.offsetLeft-(o.offsetLeft+o.width):0}(r,i,n);if(i===n){var d=r[o];return d?s({x:n<o?d.offsetLeft+d.width-(a.offsetLeft+a.width):d.offsetLeft-a.offsetLeft,y:0},f):null}return s(i>n&&i<=o?{x:-a.width-u,y:0}:i<n&&i>=o?{x:a.width+u,y:0}:{x:0,y:0},f)},exports.rectSortingStrategy=u,exports.rectSwappingStrategy=function(e){var t,r,n=e.activeIndex,o=e.index,i=e.layoutRects,a=e.overIndex;return o===n&&(t=i[o],r=i[a]),o===a&&(t=i[o],r=i[n]),r&&t?{x:r.offsetLeft-t.offsetLeft,y:r.offsetTop-t.offsetTop,scaleX:r.width/t.width,scaleY:r.height/t.height}:null},exports.sortableKeyboardCoordinates=function(e,t){var r=t.context,i=r.translatedRect,a=r.droppableContainers;if(p.includes(e.code)){if(e.preventDefault(),!i)return;var s=[];Object.entries(a).forEach((function(t){var r=t[0],o=t[1];if(!(null==o?void 0:o.disabled)){var a=null==o?void 0:o.node.current;if(a){var f=n.getViewRect(a);switch(e.code){case n.KeyboardCode.Down:i.top+i.height<=f.top&&s.push([r,f]);break;case n.KeyboardCode.Up:i.top>=f.top+f.height&&s.push([r,f]);break;case n.KeyboardCode.Left:i.left>=f.left+f.width&&s.push([r,f]);break;case n.KeyboardCode.Right:i.left+i.width<=f.left&&s.push([r,f])}}}}));var f=n.closestCorners(s,i);if(f){var u,d=null==(u=a[f])?void 0:u.node.current;if(d){var c=n.getViewRect(d);return o.subtract({x:c.left-(i.width-c.width),y:c.top-(i.height-c.height)})}}}},exports.useSortable=function(e){var r=e.animateLayoutChanges,f=void 0===r?l:r,u=e.attributes,d=e.disabled,p=e.id,x=e.strategy,y=e.transition,b=void 0===y?v:y,w=t.useContext(c),R=w.items,L=w.containerId,m=w.activeIndex,S=w.disableTransforms,I=w.sortedRects,T=w.overIndex,C=w.useDragOverlay,D=w.strategy,O=w.wasSorting,E=n.useDraggable({id:p,attributes:s({},g,u),disabled:d}),N=E.active,K=E.activeNodeRect,j=E.activatorEvent,q=E.attributes,k=E.setNodeRef,X=E.listeners,Y=E.isDragging,A=E.over,M=E.transform,B=R.indexOf(p),P=t.useMemo((function(){return{containerId:L,index:B,items:R}}),[L,B,R]),U=n.useDroppable({id:p,data:P}),F=U.rect,V=U.node,_=U.setNodeRef,z=o.useCombinedRefs(_,k),G=Boolean(N),H=G&&!S&&a(m)&&a(T),J=!C&&Y,Q=J&&H?M:null,W=H?null!=Q?Q:(null!=x?x:D)({layoutRects:I,activeNodeRect:K,activeIndex:m,overIndex:T,index:B}):null,Z=a(m)&&a(T)?i(R,m,T).indexOf(p):B,$=t.useRef(Z),ee=f({active:N,isDragging:Y,isSorting:G,id:p,index:B,items:R,newIndex:$.current,transition:b,wasSorting:O}),te=function(e){var r=e.rect,o=e.disabled,i=e.index,a=e.node,s=t.useState(null),f=s[0],u=s[1],d=t.useRef(i);return t.useEffect((function(){if(!o&&i!==d.current&&a.current){var e=r.current;if(e){var t=n.getBoundingClientRect(a.current),s={x:e.offsetLeft-t.offsetLeft,y:e.offsetTop-t.offsetTop,scaleX:e.width/t.width,scaleY:e.height/t.height};(s.x||s.y)&&u(s)}}i!==d.current&&(d.current=i)}),[o,i,a,r]),t.useEffect((function(){f&&requestAnimationFrame((function(){u(null)}))}),[f]),f}({disabled:!ee,index:B,node:V,rect:F});return t.useEffect((function(){G&&($.current=Z)}),[G,Z]),{attributes:q,activatorEvent:j,rect:F,index:B,isSorting:G,isDragging:Y,listeners:X,node:V,overIndex:T,over:A,setNodeRef:z,setDroppableNodeRef:_,setDraggableNodeRef:k,transform:null!=te?te:W,transition:te?h:J||!b?null:G||ee?o.CSS.Transition.toString(s({},b,{property:"transform"})):null}},exports.verticalListSortingStrategy=function(e){var t,r=e.activeIndex,n=e.index,o=e.layoutRects,i=e.overIndex,a=null!=(t=o[r])?t:e.activeNodeRect;if(!a)return null;if(n===r){var f=o[i];return f?s({x:0,y:r<i?f.offsetTop+f.height-(a.offsetTop+a.height):f.offsetTop-a.offsetTop},d):null}var u=function(e,t,r){var n=e[t],o=e[t-1],i=e[t+1];return n?r<t?o?n.offsetTop-(o.offsetTop+o.height):i?i.offsetTop-(n.offsetTop+n.height):0:i?i.offsetTop-(n.offsetTop+n.height):o?n.offsetTop-(o.offsetTop+o.height):0:0}(o,n,r);return s(n>r&&n<=i?{x:0,y:-a.height-u}:n<r&&n>=i?{x:0,y:a.height+u}:{x:0,y:0},d)};
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("react"),r=(e=t)&&"object"==typeof e&&"default"in e?e.default:e,n=require("@dnd-kit/core"),o=require("@dnd-kit/utilities");function i(e,t,r){var n=e.slice();return n.splice(r<0?n.length+r:r,0,n.splice(t,1)[0]),n}function s(e){return null!==e&&e>=0}function a(){return(a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var f={scaleX:1,scaleY:1},u=function(e){var t=e.layoutRects,r=e.index,n=i(t,e.overIndex,e.activeIndex),o=t[r],s=n[r];return s&&o?{x:s.offsetLeft-o.offsetLeft,y:s.offsetTop-o.offsetTop,scaleX:s.width/o.width,scaleY:s.height/o.height}:null},d={scaleX:1,scaleY:1},c=r.createContext({activeIndex:-1,containerId:"Sortable",disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:u,wasSorting:!1}),l=function(e){return!(!e.transition||!e.isSorting&&e.newIndex===e.index)},v={duration:200,easing:"ease"},g=o.CSS.Transition.toString({property:"transform",duration:0,easing:"linear"}),h={roleDescription:"sortable"},p=[n.KeyboardCode.Down,n.KeyboardCode.Right,n.KeyboardCode.Up,n.KeyboardCode.Left];exports.SortableContext=function(e){var i,s=e.children,a=e.id,f=e.items,d=e.strategy,l=void 0===d?u:d,v=n.useDndContext(),g=v.active,h=v.overlayNode,p=v.droppableRects,x=v.over,y=v.recomputeLayouts,b=v.willRecomputeLayouts,w=o.useUniqueId("Sortable",a),R=Boolean(null!==h.rect),m=g?f.indexOf(g):-1,L=-1!==m,S=t.useRef(L),I=!L&&!0===S.current,T=x?f.indexOf(x.id):-1,C=t.useRef(f),D=function(e,t){return e.reduce((function(e,r,n){var o=t.get(r);return o&&(e[n]=o),e}),Array(e.length))}(f,p),O=(i=C.current,!(f.join()===i.join())),E=-1!==T&&-1===m||O;o.useIsomorphicLayoutEffect((function(){O&&L&&!b&&y()}),[O,L,y,b]),t.useEffect((function(){C.current=f}),[f]),t.useEffect((function(){L?S.current=L:requestAnimationFrame((function(){S.current=L}))}),[L]);var N=t.useMemo((function(){return{activeIndex:m,containerId:w,disableTransforms:E,items:f,overIndex:T,useDragOverlay:R,sortedRects:D,strategy:l,wasSorting:I}}),[m,w,E,f,T,D,R,l,I]);return r.createElement(c.Provider,{value:N},s)},exports.arrayMove=i,exports.defaultAnimateLayoutChanges=l,exports.horizontalListSortingStrategy=function(e){var t,r=e.layoutRects,n=e.activeIndex,o=e.overIndex,i=e.index,s=null!=(t=r[n])?t:e.activeNodeRect;if(!s)return null;var u=function(e,t,r){var n=e[t],o=e[t-1],i=e[t+1];return o||i?r<t?o?n.offsetLeft-(o.offsetLeft+o.width):i.offsetLeft-(n.offsetLeft+n.width):i?i.offsetLeft-(n.offsetLeft+n.width):n.offsetLeft-(o.offsetLeft+o.width):0}(r,i,n);if(i===n){var d=r[o];return d?a({x:n<o?d.offsetLeft+d.width-(s.offsetLeft+s.width):d.offsetLeft-s.offsetLeft,y:0},f):null}return a(i>n&&i<=o?{x:-s.width-u,y:0}:i<n&&i>=o?{x:s.width+u,y:0}:{x:0,y:0},f)},exports.rectSortingStrategy=u,exports.rectSwappingStrategy=function(e){var t,r,n=e.activeIndex,o=e.index,i=e.layoutRects,s=e.overIndex;return o===n&&(t=i[o],r=i[s]),o===s&&(t=i[o],r=i[n]),r&&t?{x:r.offsetLeft-t.offsetLeft,y:r.offsetTop-t.offsetTop,scaleX:r.width/t.width,scaleY:r.height/t.height}:null},exports.sortableKeyboardCoordinates=function(e,t){var r=t.context,o=r.droppableContainers,i=r.translatedRect,s=r.scrollableAncestors;if(p.includes(e.code)){if(e.preventDefault(),!i)return;var a=[];Object.entries(o).forEach((function(t){var r=t[0],o=t[1];if(!(null==o?void 0:o.disabled)){var s=null==o?void 0:o.node.current;if(s){var f=n.getViewRect(s);switch(e.code){case n.KeyboardCode.Down:i.top+i.height<=f.top&&a.push([r,f]);break;case n.KeyboardCode.Up:i.top>=f.top+f.height&&a.push([r,f]);break;case n.KeyboardCode.Left:i.left>=f.left+f.width&&a.push([r,f]);break;case n.KeyboardCode.Right:i.left+i.width<=f.left&&a.push([r,f])}}}}));var f=n.closestCorners(a,i);if(f){var u,d=null==(u=o[f])?void 0:u.node.current;if(d){var c=n.getScrollableAncestors(d).some((function(e,t){return s[t]!==e})),l=n.getViewRect(d),v=c?{x:0,y:0}:{x:i.width-l.width,y:i.height-l.height};return{x:l.left-v.x,y:l.top-v.y}}}}},exports.useSortable=function(e){var r=e.animateLayoutChanges,f=void 0===r?l:r,u=e.attributes,d=e.disabled,p=e.id,x=e.strategy,y=e.transition,b=void 0===y?v:y,w=t.useContext(c),R=w.items,m=w.containerId,L=w.activeIndex,S=w.disableTransforms,I=w.sortedRects,T=w.overIndex,C=w.useDragOverlay,D=w.strategy,O=w.wasSorting,E=n.useDraggable({id:p,attributes:a({},h,u),disabled:d}),N=E.active,K=E.activeNodeRect,j=E.activatorEvent,q=E.attributes,A=E.setNodeRef,k=E.listeners,X=E.isDragging,Y=E.over,M=E.transform,B=R.indexOf(p),P=t.useMemo((function(){return{containerId:m,index:B,items:R}}),[m,B,R]),U=n.useDroppable({id:p,data:P}),F=U.rect,V=U.node,_=U.setNodeRef,z=o.useCombinedRefs(_,A),G=Boolean(N),H=G&&!S&&s(L)&&s(T),J=!C&&X,Q=J&&H?M:null,W=H?null!=Q?Q:(null!=x?x:D)({layoutRects:I,activeNodeRect:K,activeIndex:L,overIndex:T,index:B}):null,Z=s(L)&&s(T)?i(R,L,T).indexOf(p):B,$=t.useRef(Z),ee=f({active:N,isDragging:X,isSorting:G,id:p,index:B,items:R,newIndex:$.current,transition:b,wasSorting:O}),te=function(e){var r=e.rect,o=e.disabled,i=e.index,s=e.node,a=t.useState(null),f=a[0],u=a[1],d=t.useRef(i);return t.useEffect((function(){if(!o&&i!==d.current&&s.current){var e=r.current;if(e){var t=n.getBoundingClientRect(s.current),a={x:e.offsetLeft-t.offsetLeft,y:e.offsetTop-t.offsetTop,scaleX:e.width/t.width,scaleY:e.height/t.height};(a.x||a.y)&&u(a)}}i!==d.current&&(d.current=i)}),[o,i,s,r]),t.useEffect((function(){f&&requestAnimationFrame((function(){u(null)}))}),[f]),f}({disabled:!ee,index:B,node:V,rect:F});return t.useEffect((function(){G&&($.current=Z)}),[G,Z]),{attributes:q,activatorEvent:j,rect:F,index:B,isSorting:G,isDragging:X,listeners:k,node:V,overIndex:T,over:Y,setNodeRef:z,setDroppableNodeRef:_,setDraggableNodeRef:A,transform:null!=te?te:W,transition:te?g:J||!b?null:G||ee?o.CSS.Transition.toString(a({},b,{property:"transform"})):null}},exports.verticalListSortingStrategy=function(e){var t,r=e.activeIndex,n=e.index,o=e.layoutRects,i=e.overIndex,s=null!=(t=o[r])?t:e.activeNodeRect;if(!s)return null;if(n===r){var f=o[i];return f?a({x:0,y:r<i?f.offsetTop+f.height-(s.offsetTop+s.height):f.offsetTop-s.offsetTop},d):null}var u=function(e,t,r){var n=e[t],o=e[t-1],i=e[t+1];return n?r<t?o?n.offsetTop-(o.offsetTop+o.height):i?i.offsetTop-(n.offsetTop+n.height):0:i?i.offsetTop-(n.offsetTop+n.height):o?n.offsetTop-(o.offsetTop+o.height):0:0}(o,n,r);return a(n>r&&n<=i?{x:0,y:-s.height-u}:n<r&&n>=i?{x:0,y:s.height+u}:{x:0,y:0},d)};
//# sourceMappingURL=sortable.cjs.production.min.js.map
import React, { useRef, useEffect, useMemo, useState, useContext } from 'react';
import { useDndContext, getBoundingClientRect, useDraggable, useDroppable, getViewRect, KeyboardCode, closestCorners } from '@dnd-kit/core';
import { useUniqueId, useIsomorphicLayoutEffect, CSS, useCombinedRefs, subtract } from '@dnd-kit/utilities';
import { useDndContext, getBoundingClientRect, useDraggable, useDroppable, getViewRect, KeyboardCode, closestCorners, getScrollableAncestors } from '@dnd-kit/core';
import { useUniqueId, useIsomorphicLayoutEffect, CSS, useCombinedRefs } from '@dnd-kit/utilities';

@@ -527,4 +527,5 @@ /**

var _ref$context = _ref.context,
droppableContainers = _ref$context.droppableContainers,
translatedRect = _ref$context.translatedRect,
droppableContainers = _ref$context.droppableContainers;
scrollableAncestors = _ref$context.scrollableAncestors;

@@ -593,7 +594,18 @@ if (directions.includes(event.code)) {

if (newNode) {
var newScrollAncestors = getScrollableAncestors(newNode);
var hasDifferentScrollAncestors = newScrollAncestors.some(function (element, index) {
return scrollableAncestors[index] !== element;
});
var newRect = getViewRect(newNode);
var newCoordinates = subtract({
x: newRect.left - (translatedRect.width - newRect.width),
y: newRect.top - (translatedRect.height - newRect.height)
});
var offset = hasDifferentScrollAncestors ? {
x: 0,
y: 0
} : {
x: translatedRect.width - newRect.width,
y: translatedRect.height - newRect.height
};
var newCoordinates = {
x: newRect.left - offset.x,
y: newRect.top - offset.y
};
return newCoordinates;

@@ -600,0 +612,0 @@ }

{
"name": "@dnd-kit/sortable",
"version": "1.1.0",
"version": "2.0.0",
"description": "Official sortable preset and sensors for dnd kit",

@@ -29,3 +29,3 @@ "author": "Claudéric Demers",

"dependencies": {
"@dnd-kit/core": "^1.2.0",
"@dnd-kit/core": "^2.0.0",
"@dnd-kit/utilities": "^1.0.2",

@@ -32,0 +32,0 @@ "tslib": "^2.0.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

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