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

ipad-cursor

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ipad-cursor - npm Package Compare versions

Comparing version 0.2.0 to 0.3.0

4

index.d.ts

@@ -47,2 +47,6 @@ export type ICursorType = "normal" | "text" | "block";

enableAutoTextCursor?: boolean;
/**
* whether to enable lighting effect
*/
enableLighting?: boolean;
}

@@ -49,0 +53,0 @@ /**

2

index.min.js

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

let t=!1,e=null,r=!1,o=!1,n=null;const s={x:0,y:0},a="undefined"==typeof document,i=new Set,u=new Map,c={blockPadding:"auto",adsorptionStrength:10,className:"ipad-cursor",normalStyle:{width:"20px",height:"20px",radius:"50%",durationBase:"0.23s",durationPosition:"0s",durationBackdropFilter:"0s",background:"rgba(150, 150, 150, 0.2)",border:"1px solid rgba(100, 100, 100, 0.1)",zIndex:9999,scale:1,backdropBlur:"0px",backdropSaturate:"180%"},textStyle:{width:"4px",height:"1.2em",border:"0px solid rgba(100, 100, 100, 0)",background:"rgba(100, 100, 100, 0.3)",durationBackdropFilter:"1s",radius:"10px"},blockStyle:{background:"rgba(100, 100, 100, 0.1)",border:"1px solid rgba(100, 100, 100, 0.05)",backdropBlur:"0px",durationBase:"0.23s",durationBackdropFilter:"0.1s",backdropSaturate:"120%",radius:"10px"}};class d{static clamp(t,e,r){return Math.min(Math.max(t,e),r)}static isNum(t){return"number"==typeof t||/^\d+$/.test(t)}static getSize(t){return this.isNum(t)?`${t}px`:t}static getDuration(t){return this.isNum(t)?`${t}ms`:`${t}`}static getColor(t){return t}static objectKeys(t){return Object.keys(t)}static style2Vars(t){const e={backdropBlur:"--cursor-bg-blur",backdropSaturate:"--cursor-bg-saturate",background:"--cursor-bg",border:"--cursor-border",durationBackdropFilter:"--cursor-blur-duration",durationBase:"--cursor-duration",durationPosition:"--cursor-position-duration",height:"--cursor-height",radius:"--cursor-radius",scale:"--cursor-scale",width:"--cursor-width",zIndex:"--cursor-z-index"};return this.objectKeys(t).reduce(((r,o)=>{let n=t[o];if(void 0===n)return r;const s=["background","border"].includes(o),a=["width","height","radius","backdropBlur"].includes(o),i=o.startsWith("duration");s&&(n=this.getColor(n)),a&&(n=this.getSize(n)),i&&(n=this.getDuration(n));const u=e[o]||o;return{...r,[u]:n}}),{})}static isMergebleObject(t){return(e=t)&&"object"==typeof e&&!Array.isArray(e)&&Object.keys(t).length>0;var e}static mergeDeep(t,...e){if(!e.length)return t;const r=e.shift();return r?(this.isMergebleObject(t)&&this.isMergebleObject(r)&&d.objectKeys(r).forEach((e=>{this.isMergebleObject(r[e])?(t[e]||Object.assign(t,{[e]:{}}),this.mergeDeep(t[e],r[e])):Object.assign(t,{[e]:r[e]})})),this.mergeDeep(t,...e)):t}}function l(t,r){e&&("string"==typeof t?r&&e.style.setProperty(t,r):Object.entries(t).forEach((([t,r])=>{e&&e.style.setProperty(t,r)})))}function p(t){s.x=t.clientX,s.y=t.clientY,function(t){var e;if(r||o||!c.enableAutoTextCursor)return;if(t&&1===t.childNodes.length){const r=t.childNodes[0];if(3===r.nodeType&&""!==(null===(e=r.textContent)||void 0===e?void 0:e.trim()))return t.setAttribute("data-cursor","text"),void k(t)}x()}(t.target)}function h(r){a||t||(r&&b(r),t=!0,window.addEventListener("mousemove",p),function(){if(a)return;e=document.createElement("div"),e.classList.add(c.className),document.body.appendChild(e),x()}(),function(){if(n)return;n=document.createElement("style"),n.innerHTML=`\n body, * {\n cursor: none;\n }\n .${c.className.split(/\s+/).join(".")} {\n pointer-events: none;\n position: fixed;\n left: var(--cursor-x);\n top: var(--cursor-y);\n width: var(--cursor-width);\n height: var(--cursor-height);\n border-radius: var(--cursor-radius);\n background-color: var(--cursor-bg);\n border: var(--cursor-border);\n z-index: var(--cursor-z-index);\n font-size: var(--cursor-font-size);\n backdrop-filter: \n blur(var(--cursor-bg-blur)) \n saturate(var(--cursor-bg-saturate));\n transition:\n width var(--cursor-duration) ease,\n height var(--cursor-duration) ease,\n border-radius var(--cursor-duration) ease,\n border var(--cursor-duration) ease,\n background-color var(--cursor-duration) ease,\n left var(--cursor-position-duration) ease,\n top var(--cursor-position-duration) ease,\n backdrop-filter var(--cursor-blur-duration) ease;\n transform: \n translate(calc(-50% + var(--cursor-translateX)), calc(-50% + var(--cursor-translateY))) \n scale(var(--cursor-scale));\n }\n `,document.head.appendChild(n)}(),g(),m())}function v(){t&&(t=!1,window.removeEventListener("mousemove",p),e&&e.remove(),n&&n.remove(),n=null,e=null,i.forEach((t=>f(t))))}function b(t){return"adsorptionStrength"in t&&(c.adsorptionStrength=d.clamp(t.adsorptionStrength||10,0,30)),d.mergeDeep(c,t)}function g(){!a&&e&&(r||(l("--cursor-x",`${s.x}px`),l("--cursor-y",`${s.y}px`)),window.requestAnimationFrame(g))}function m(){if(a||!t)return;const n=new Map;(a||!t?[]:document.querySelectorAll("[data-cursor]")).forEach((t=>{n.set(t,!0),i.has(t)||function(t){let n=t.getAttribute("data-cursor");i.add(t),"text"===n&&function(t){let e;function r(t){e&&clearTimeout(e),o=!0,e=setTimeout((()=>o=!0)),k(t.target)}function n(){e&&clearTimeout(e),e=setTimeout((()=>o=!1)),x()}t.addEventListener("mouseover",r,{passive:!0}),t.addEventListener("mouseleave",n,{passive:!0}),u.set(t,[{event:"mouseover",handler:r},{event:"mouseleave",handler:x}])}(t);"block"===n?function(t){const o=t;let n;function a(){var t,s;const a=o.getBoundingClientRect();n&&clearTimeout(n),r=!0,n=setTimeout((()=>r=!0));let i=c.blockPadding||0;if("auto"===i){const t=Math.min(a.width,a.height);i=Math.max(2,Math.floor(t/25))}e.classList.add("focus"),l("--cursor-x",`${a.left+a.width/2}px`),l("--cursor-y",`${a.top+a.height/2}px`),l("--cursor-width",`${a.width+2*i}px`),l("--cursor-height",`${a.height+2*i}px`);const u={...c.blockStyle||{},...y(o)};void 0===u.durationPosition&&(u.durationPosition=null!==(t=u.durationBase)&&void 0!==t?t:null===(s=c.normalStyle)||void 0===s?void 0:s.durationBase),l(d.style2Vars(u)),h(!0),o.style.setProperty("transform","translate(var(--translateX), var(--translateY))")}function i(){const t=o.getBoundingClientRect(),e=t.height/2,r=(s.y-t.top-e)/e,n=t.width/2,a=(s.x-t.left-n)/n,i=c.adsorptionStrength||10;l("--cursor-translateX",a*(t.width/100*i)+"px"),l("--cursor-translateY",r*(t.height/100*i)+"px"),h(!1),o.style.setProperty("--translateX",a*(t.width/100*i)+"px"),o.style.setProperty("--translateY",r*(t.height/100*i)+"px")}function p(){n&&clearTimeout(n),n=setTimeout((()=>{r=!1,e&&e.classList.remove("focus")})),x(),h(!0),o.style.setProperty("transform","translate(0px, 0px)")}function h(t){var e,r,n,s,a,i;const u=t?d.getDuration(null!==(i=null!==(s=null!==(r=null===(e=null==c?void 0:c.blockStyle)||void 0===e?void 0:e.durationPosition)&&void 0!==r?r:null===(n=null==c?void 0:c.blockStyle)||void 0===n?void 0:n.durationBase)&&void 0!==s?s:null===(a=null==c?void 0:c.normalStyle)||void 0===a?void 0:a.durationBase)&&void 0!==i?i:"0.23s"):"";o.style.setProperty("transition",u?`all ${u} cubic-bezier(.58,.09,.46,1.46)`:"none")}o.addEventListener("mouseenter",a,{passive:!0}),o.addEventListener("mousemove",i,{passive:!0}),o.addEventListener("mouseleave",p,{passive:!0}),u.set(o,[{event:"mouseenter",handler:a},{event:"mousemove",handler:i},{event:"mouseleave",handler:p}])}(t):i.delete(t)}(t)})),i.forEach((t=>{n.has(t)||f(t)}))}function f(t){var e;i.delete(t),null===(e=u.get(t))||void 0===e||e.forEach((({event:e,handler:r})=>{t.removeEventListener(e,r)})),u.delete(t),t.style.setProperty("transform","none")}function y(t){const e=t.getAttribute("data-cursor-style"),r={};return e&&e.split(/(;)/).forEach((t=>{const[e,o]=t.split(":").map((t=>t.trim()));r[e]=o})),r}function x(){l(d.style2Vars(c.normalStyle||{}))}function k(t){l(d.style2Vars(c.textStyle||{}));l("--cursor-font-size",window.getComputedStyle(t).fontSize),l(d.style2Vars({...c.textStyle,...y(t)}))}function w(t){return Object.entries(t).map((([t,e])=>`${t}: ${e}`)).join("; ")}const S={TEXT:"text",BLOCK:"block"},B={CursorType:S,initCursor:h,updateCursor:m,disposeCursor:v,updateConfig:b,customCursorStyle:w};export{S as CursorType,w as customCursorStyle,B as default,v as disposeCursor,h as initCursor,b as updateConfig,m as updateCursor};
let t=!1,e=null,r=!1,n=!1,o=null;const i={x:0,y:0},s="undefined"==typeof document,a=new Set,u=new Map,l={blockPadding:"auto",adsorptionStrength:10,className:"ipad-cursor",normalStyle:{width:"20px",height:"20px",radius:"50%",durationBase:"0.23s",durationPosition:"0s",durationBackdropFilter:"0s",background:"rgba(150, 150, 150, 0.2)",border:"1px solid rgba(100, 100, 100, 0.1)",zIndex:9999,scale:1,backdropBlur:"0px",backdropSaturate:"180%"},textStyle:{width:"4px",height:"1.2em",border:"0px solid rgba(100, 100, 100, 0)",background:"rgba(100, 100, 100, 0.3)",durationBackdropFilter:"1s",radius:"10px"},blockStyle:{background:"rgba(100, 100, 100, 0.1)",border:"1px solid rgba(100, 100, 100, 0.05)",backdropBlur:"0px",durationBase:"0.23s",durationBackdropFilter:"0.1s",backdropSaturate:"120%",radius:"10px"}};class c{static clamp(t,e,r){return Math.min(Math.max(t,e),r)}static isNum(t){return"number"==typeof t||/^\d+$/.test(t)}static getSize(t){return this.isNum(t)?`${t}px`:t}static getDuration(t){return this.isNum(t)?`${t}ms`:`${t}`}static getColor(t){return t}static objectKeys(t){return Object.keys(t)}static style2Vars(t){const e={backdropBlur:"--cursor-bg-blur",backdropSaturate:"--cursor-bg-saturate",background:"--cursor-bg",border:"--cursor-border",durationBackdropFilter:"--cursor-blur-duration",durationBase:"--cursor-duration",durationPosition:"--cursor-position-duration",height:"--cursor-height",radius:"--cursor-radius",scale:"--cursor-scale",width:"--cursor-width",zIndex:"--cursor-z-index"};return this.objectKeys(t).reduce(((r,n)=>{let o=t[n];if(void 0===o)return r;const i=["background","border"].includes(n),s=["width","height","radius","backdropBlur"].includes(n),a=n.startsWith("duration");i&&(o=this.getColor(o)),s&&(o=this.getSize(o)),a&&(o=this.getDuration(o));const u=e[n]||n;return{...r,[u]:o}}),{})}static isMergebleObject(t){return(e=t)&&"object"==typeof e&&!Array.isArray(e)&&Object.keys(t).length>0;var e}static mergeDeep(t,...e){if(!e.length)return t;const r=e.shift();return r?(this.isMergebleObject(t)&&this.isMergebleObject(r)&&c.objectKeys(r).forEach((e=>{this.isMergebleObject(r[e])?(t[e]||Object.assign(t,{[e]:{}}),this.mergeDeep(t[e],r[e])):Object.assign(t,{[e]:r[e]})})),this.mergeDeep(t,...e)):t}}function d(t,r){e&&("string"==typeof t?r&&e.style.setProperty(t,r):Object.entries(t).forEach((([t,r])=>{e&&e.style.setProperty(t,r)})))}function h(t){i.x=t.clientX,i.y=t.clientY,function(t){var e;if(r||n||!l.enableAutoTextCursor)return;if(t&&1===t.childNodes.length){const r=t.childNodes[0];if(3===r.nodeType&&""!==(null===(e=r.textContent)||void 0===e?void 0:e.trim()))return t.setAttribute("data-cursor","text"),void S(t)}k()}(t.target)}let g=null;const v=()=>{const t=document.elementFromPoint(i.x,i.y),e=new MouseEvent("mouseleave",{bubbles:!0,cancelable:!0,view:window});t!==g&&g&&e&&g.dispatchEvent(e),g=t};function p(r){s||t||(r&&m(r),t=!0,window.addEventListener("mousemove",h),window.addEventListener("scroll",v),function(){if(s)return;e=document.createElement("div");const t=document.createElement("div");e.classList.add(l.className),t.classList.add("lighting"),e.appendChild(t),document.body.appendChild(e),k()}(),function(){if(o)return;const t=`.${l.className.split(/\s+/).join(".")}`;o=document.createElement("style"),o.innerHTML=`\n body, * {\n cursor: none;\n }\n ${t} {\n overflow: hidden;\n pointer-events: none;\n position: fixed;\n left: var(--cursor-x);\n top: var(--cursor-y);\n width: var(--cursor-width);\n height: var(--cursor-height);\n border-radius: var(--cursor-radius);\n background-color: var(--cursor-bg);\n border: var(--cursor-border);\n z-index: var(--cursor-z-index);\n font-size: var(--cursor-font-size);\n backdrop-filter: \n blur(var(--cursor-bg-blur)) \n saturate(var(--cursor-bg-saturate));\n transition:\n width var(--cursor-duration) ease,\n height var(--cursor-duration) ease,\n border-radius var(--cursor-duration) ease,\n border var(--cursor-duration) ease,\n background-color var(--cursor-duration) ease,\n left var(--cursor-position-duration) ease,\n top var(--cursor-position-duration) ease,\n backdrop-filter var(--cursor-blur-duration) ease;\n transform: \n translate(calc(-50% + var(--cursor-translateX)), calc(-50% + var(--cursor-translateY))) \n scale(var(--cursor-scale));\n }\n ${t} .lighting {\n display: none;\n }\n ${t}.lighting--on .lighting {\n display: block;\n width: 0;\n height: 0;\n position: absolute;\n left: calc(var(--lighting-size) / -2);\n top: calc(var(--lighting-size) / -2);\n transform: translateX(var(--lighting-offset-x, 0)) translateY(var(--lighting-offset-y, 0));\n background-image: radial-gradient(\n circle at center,\n rgba(255, 255, 255, 0.1) 0%,\n rgba(255, 255, 255, 0) 30%\n );\n border-radius: 50%;\n }\n ${t}.block-active .lighting {\n width: var(--lighting-size, 20px);\n height: var(--lighting-size, 20px);\n }\n `,document.head.appendChild(o)}(),f(),y())}function b(){t&&(t=!1,window.removeEventListener("mousemove",h),window.removeEventListener("scroll",v),e&&e.remove(),o&&o.remove(),o=null,e=null,a.forEach((t=>x(t))))}function m(t){return"adsorptionStrength"in t&&(l.adsorptionStrength=c.clamp(t.adsorptionStrength||10,0,30)),c.mergeDeep(l,t)}function f(){!s&&e&&(r||(d("--cursor-x",`${i.x}px`),d("--cursor-y",`${i.y}px`)),window.requestAnimationFrame(f))}function y(){if(s||!t)return;const o=new Map;(s||!t?[]:document.querySelectorAll("[data-cursor]")).forEach((t=>{o.set(t,!0),a.has(t)||function(t){let o=t.getAttribute("data-cursor");a.add(t),"text"===o&&function(t){let r;function o(t){n=!!t,e&&(t?e.classList.add("text-active"):e.classList.remove("text-active"))}function i(t){r&&clearTimeout(r),o(!0),r=setTimeout((()=>o(!0))),S(t.target)}function s(){r&&clearTimeout(r),r=setTimeout((()=>o(!1))),k()}t.addEventListener("mouseover",i,{passive:!0}),t.addEventListener("mouseleave",s,{passive:!0}),u.set(t,[{event:"mouseover",handler:i},{event:"mouseleave",handler:k}])}(t);"block"===o?function(t){const n=t;let o;function s(t){r=!!t,e&&(t?e.classList.add("block-active"):e.classList.remove("block-active"))}function a(){var t,r;e&&e.classList.toggle("lighting--on",!!l.enableLighting);const i=n.getBoundingClientRect();o&&clearTimeout(o),s(!0),o=setTimeout((()=>s(!0))),e&&e.classList.add("block-active");let a=l.blockPadding||0;if("auto"===a){const t=Math.min(i.width,i.height);a=Math.max(2,Math.floor(t/25))}d("--cursor-x",`${i.left+i.width/2}px`),d("--cursor-y",`${i.top+i.height/2}px`),d("--cursor-width",`${i.width+2*a}px`),d("--cursor-height",`${i.height+2*a}px`);const u={...l.blockStyle||{},...w(n)};void 0===u.durationPosition&&(u.durationPosition=null!==(t=u.durationBase)&&void 0!==t?t:null===(r=l.normalStyle)||void 0===r?void 0:r.durationBase),d(c.style2Vars(u)),v(!0),n.style.setProperty("transform","translate(var(--translateX), var(--translateY))")}function h(){r||a();const t=n.getBoundingClientRect(),e=t.height/2,o=(i.y-t.top-e)/e,s=t.width/2,u=(i.x-t.left-s)/s,c=l.adsorptionStrength||10;d("--cursor-translateX",u*(t.width/100*c)+"px"),d("--cursor-translateY",o*(t.height/100*c)+"px"),v(!1);const h=u*(t.width/100*c),g=o*(t.height/100*c);if(n.style.setProperty("--translateX",`${h}px`),n.style.setProperty("--translateY",`${g}px`),l.enableLighting){const e=3*Math.max(t.width,t.height)*1.2,r=i.x-t.left,n=i.y-t.top;d("--lighting-size",`${e}px`),d("--lighting-offset-x",`${r}px`),d("--lighting-offset-y",`${n}px`)}}function g(){o&&clearTimeout(o),o=setTimeout((()=>s(!1))),k(),v(!0),n.style.setProperty("transform","translate(0px, 0px)")}function v(t){var e,r,o,i,s,a;const u=t?c.getDuration(null!==(a=null!==(i=null!==(r=null===(e=null==l?void 0:l.blockStyle)||void 0===e?void 0:e.durationPosition)&&void 0!==r?r:null===(o=null==l?void 0:l.blockStyle)||void 0===o?void 0:o.durationBase)&&void 0!==i?i:null===(s=null==l?void 0:l.normalStyle)||void 0===s?void 0:s.durationBase)&&void 0!==a?a:"0.23s"):"";n.style.setProperty("transition",u?`all ${u} cubic-bezier(.58,.09,.46,1.46)`:"none")}n.addEventListener("mouseenter",a,{passive:!0}),n.addEventListener("mousemove",h,{passive:!0}),n.addEventListener("mouseleave",g,{passive:!0}),u.set(n,[{event:"mouseenter",handler:a},{event:"mousemove",handler:h},{event:"mouseleave",handler:g}])}(t):a.delete(t)}(t)})),a.forEach((t=>{o.has(t)||x(t)}))}function x(t){var e;a.delete(t),null===(e=u.get(t))||void 0===e||e.forEach((({event:e,handler:r})=>{t.removeEventListener(e,r)})),u.delete(t),t.style.setProperty("transform","none")}function w(t){const e=t.getAttribute("data-cursor-style"),r={};return e&&e.split(/(;)/).forEach((t=>{const[e,n]=t.split(":").map((t=>t.trim()));r[e]=n})),r}function k(){d(c.style2Vars(l.normalStyle||{}))}function S(t){d(c.style2Vars(l.textStyle||{}));d("--cursor-font-size",window.getComputedStyle(t).fontSize),d(c.style2Vars({...l.textStyle,...w(t)}))}function E(t){return Object.entries(t).map((([t,e])=>`${t}: ${e}`)).join("; ")}const $={TEXT:"text",BLOCK:"block"},L={CursorType:$,initCursor:p,updateCursor:y,disposeCursor:b,updateConfig:m,customCursorStyle:E};export{$ as CursorType,E as customCursorStyle,L as default,b as disposeCursor,p as initCursor,m as updateConfig,y as updateCursor};
{
"name": "ipad-cursor",
"version": "0.2.0",
"version": "0.3.0",
"description": "Mouse effect of iPad in browser that can be used in any framework",

@@ -5,0 +5,0 @@ "type": "module",

@@ -64,3 +64,3 @@ <!-- Logo -->

After your dom loaded, call `initCursor` to start the effect. You may need to call `initCursor` when dom updated.
After your dom loaded, call `initCursor` to start the effect. You may need to call `updateCursor()` when dom updated.

@@ -151,11 +151,12 @@ ```js

| Name | Type | Default | Description | required |
| --------------------------------- | ----------------- | ------------------- | ------------------------------------------------------------------------------------ | -------- |
| `adsorptionStrength` | `number` | `0.2` | The strength of adsorption effect, number between 0 and 30 | No |
| `className` | `string` | `'ipad-cursor'` | The class name of fake cursor | No |
| `blockPadding` | `number` | `auto` | The padding of cursor when hover on block, set to `auto` will calculate automatic | No |
| `enableAutoTextCursor`(`v0.2.0+`) | `boolean` | `false` | Auto detect text cursor, see [#12](https://github.com/CatsJuice/ipad-cursor/pull/12) | No |
| `normalStyle` | `IpadCursorStyle` | see [Style](#style) | The style of normal cursor, see [Style](#style) | No |
| `textStyle` | `IpadCursorStyle` | see [Style](#style) | The style of text cursor, see [Style](#style) | No |
| `blockStyle` | `IpadCursorStyle` | see [Style](#style) | The style of block cursor, see [Style](#style) | No |
| Name | Type | Default | Description | required |
| --------------------------------- | ----------------- | ------------------- | -------------------------------------------------------------------------------------- | -------- |
| `adsorptionStrength` | `number` | `0.2` | The strength of adsorption effect, number between 0 and 30 | No |
| `className` | `string` | `'ipad-cursor'` | The class name of fake cursor | No |
| `blockPadding` | `number` | `auto` | The padding of cursor when hover on block, set to `auto` will calculate automatic | No |
| `enableAutoTextCursor`(`v0.2.0+`) | `boolean` | `false` | Auto detect text cursor, see [#12](https://github.com/CatsJuice/ipad-cursor/pull/12) | No |
| `enableLighting`(`v0.3.0+`) | `boolean` | `false` | Add a lighting effect to block [#14](https://github.com/CatsJuice/ipad-cursor/pull/14) | No |
| `normalStyle` | `IpadCursorStyle` | see [Style](#style) | The style of normal cursor, see [Style](#style) | No |
| `textStyle` | `IpadCursorStyle` | see [Style](#style) | The style of text cursor, see [Style](#style) | No |
| `blockStyle` | `IpadCursorStyle` | see [Style](#style) | The style of block cursor, see [Style](#style) | No |

@@ -187,3 +188,3 @@ ## Style

- [x] Add Chinese document
- [ ] API Docs
- [x] API Docs
- [ ] More examples

@@ -190,0 +191,0 @@ - [ ] Auto detect dom update, and call `updateCursor` automatically

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