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

@vkontakte/superappkit

Package Overview
Dependencies
Maintainers
3
Versions
408
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@vkontakte/superappkit - npm Package Compare versions

Comparing version 1.1.0 to 1.1.1

CHANGELOG.md

2

dist/index.js

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

function e(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}function n(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function t(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}let o=(e=21)=>{let n="",t=e;for(;t--;)n+="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"[64*Math.random()|0];return n};function i(e){return Object.keys(e).map((function(n){var t=e[n];return n=encodeURIComponent(n),t=encodeURIComponent(t),"".concat(n,"=").concat(t)})).join("&")}function r(e){return e=e||Object.create(null),{on:function(n,t){(e[n]||(e[n]=[])).push(t)},off:function(n,t){e[n]&&e[n].splice(e[n].indexOf(t)>>>0,1)},emit:function(n,t){(e[n]||[]).slice().map((function(e){e(t)})),(e["*"]||[]).slice().map((function(e){e(n,t)}))}}}var a,s,p={appId:0,superAppToken:"",loginDomain:"login.vk.com",oauthDomain:"oauth.vk.com",connectDomain:"connect.vk.com",_debug:!1},c={},d={events:r(),init:function(e){if(!e.appId)throw new Error("appId required");p.appId=e.appId,p.superAppToken=e.superAppToken||"",p.loginDomain=e.loginDomain||"login.vk.com",p.oauthDomain=e.oauthDomain||"oauth.vk.com",p.connectDomain=e.connectDomain||"connect.vk.com",p._debug=!!e._debug},get:function(){return p},setSuperAppToken:function(e){p.superAppToken=e,d.events.emit("superAppToken",e)},onRequestSuperAppToken:function(e){c.superAppToken=e},_requestSuperAppToken:function(){var e;c.superAppToken&&(e=c.superAppToken()),e&&e.then((function(e){return d.setSuperAppToken(e)})).catch(console.error)},onAuth:function(e){c.auth=e},_requestAuth:function(){var e;c.auth&&(e=c.auth()),e&&e.then((function(e){return d.setSuperAppToken(e)})).catch(console.error)},onOpenApp:function(e){c.openApp=e},_openApp:function(e){c.openApp&&c.openApp(e.app)}},u=new function t(){var r=this;e(this,t),n(this,"flags",null),n(this,"silentAuth",(function(){var e=d.get(),n=e.loginDomain,t=e.appId,i=o(),r="https://".concat(n,"/?act=connect&app_id=").concat(t,"&response_type=").concat("silent_token","&uuid=").concat(i,"&v=").concat("0.0.2"),a=new XMLHttpRequest;return a.open("GET",r,!0),a.responseType="json",a.withCredentials=!0,new Promise((function(e,n){a.onload=function(){a.response?e({provider:"vk",payload:a.response}):n()},a.onerror=function(){n()},a.send()}))})),n(this,"userVisibleAuth",(function(){var e=d.get(),n=e.appId,t=e.connectDomain,a=o(),s=i({app_id:n,response_type:"silent_token",uuid:a,origin:location.protocol+"//"+location.host,v:"0.0.2"}),p="https://".concat(t,"/auth?").concat(s);r.flags&&(p="".concat(p,"#").concat(i(r.flags)));var c=screen.height/2-280,u=screen.width/2-410,f=window.open(p,"_blank","top=".concat(c,",left=").concat(u,",width=").concat(820,",height=").concat(560,",location"));return new Promise((function(e,n){var t=setInterval((function(){f||(window.removeEventListener("message",o),clearInterval(t),n())}),1e3);function o(i){if(i.source===f&&f){if(window.removeEventListener("message",o),clearInterval(t),".vk.com"!==i.origin.slice(i.origin.length-".vk.com".length))return f.close(),void n();if(i.data.action!=="vk_connect_response"+a)return f.close(),void n();var r=i.data.payload;f.close(),e({provider:"vk",payload:r})}}window.addEventListener("message",o)}))}))};!function(e){e.APP_HIDE="VKSDKMiniAppHide",e.APP_READY="VKSDKMiniAppReady",e.RESIZE="VKSDKMiniAppResize",e.APP_INIT_CONFIG="VKSDKMiniAppInitConfig"}(a||(a={})),function(e){e.SUPERAPP_TOKEN="VKSDKGeneralSuperAppToken",e.AUTH_NEEDED="VKSDKGeneralAuthNeeded",e.OPEN_APP="VKSDKGeneralOpenApp"}(s||(s={}));var f,l=function o(i){var r=this;e(this,o),n(this,"handler",(function(){return{}})),n(this,"config",void 0),n(this,"destroy",(function(){delete r.config,window.removeEventListener("message",r.handleMessage)})),n(this,"onMessage",(function(e){r.handler=e})),n(this,"sendMessage",(function(e){r.config.iframe.contentWindow.postMessage(function(e){for(var o=1;o<arguments.length;o++){var i=null!=arguments[o]?arguments[o]:{};o%2?t(Object(i),!0).forEach((function(t){n(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):t(Object(i)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))}))}return e}({type:"vk-sak-sdk"},e),r.config.origin)})),n(this,"handleMessage",(function(e){r.config.origin&&e.origin===r.config.origin&&e.source===r.config.iframe.contentWindow&&e.data&&"vk-sak-sdk"===e.data.type&&(console.info("[received from ui]",e.data),r.handler(e.data))})),this.config=i,window.addEventListener("message",this.handleMessage)},h=function t(o){var p=this;e(this,t),n(this,"iframe",void 0),n(this,"bridge",void 0),n(this,"loading",void 0),n(this,"events",void 0),n(this,"params",void 0),n(this,"open",(function(){p.loading||p.preload().catch(console.error),p.iframe.style.display="block",p.loading.then((function(){p.handleResize()})).catch(console.error)})),n(this,"hide",(function(){p.events.emit("hide"),p.iframe.style.display="none"})),n(this,"close",(function(){d.events.off("superAppToken",p.onSuperAppToken),p.iframe.remove(),p.bridge.destroy(),delete p.iframe,delete p.bridge,window.removeEventListener("resize",p.handleResize)})),n(this,"preload",(function(){var e=document.createElement("iframe"),n=window.innerHeight,t=isFinite(p.params.zIndex)?p.params.zIndex:999999;return e.src=p.getMiniAppUrl(),e.style.cssText="\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: ".concat(n,"px;\n min-height: ").concat(n,"px;\n border: none;\n z-index: ").concat(t,";\n "),p.iframe=e,document.body.appendChild(p.iframe),d.events.on("superAppToken",p.onSuperAppToken),p.bridge=new l({iframe:p.iframe,origin:"https://"+d.get().connectDomain}),p.bridge.onMessage(p.handleMessage),window.addEventListener("resize",p.handleResize),p.loading=new Promise((function(n){e.onload=function(){e.onload=null,n()}})),p.loading})),n(this,"onSuperAppToken",(function(e){p.bridge.sendMessage({handler:s.SUPERAPP_TOKEN,params:{result:e}})})),n(this,"handleMessage",(function(e){switch(e.handler){case a.APP_HIDE:p.hide();break;case a.APP_READY:p.handleUpdateConfig();break;case s.SUPERAPP_TOKEN:d._requestSuperAppToken();break;case s.AUTH_NEEDED:d._requestAuth()}})),n(this,"handleResize",(function(){if(p.iframe){var e=innerWidth,n=innerHeight;p.iframe.style.height="".concat(n,"px"),p.iframe.style.minHeight="".concat(n,"px"),p.bridge.sendMessage({handler:a.RESIZE,params:{viewport_width:e,viewport_height:n}})}})),n(this,"handleUpdateConfig",(function(){p.bridge.sendMessage({handler:a.APP_INIT_CONFIG,params:{fullMode:p.params.fullMode}})})),n(this,"getMiniAppUrl",(function(){var e=d.get(),n=e.connectDomain,t=e.appId,o=e.superAppToken,r=e._debug,a=i({app:p.params.app,host_app_id:t,debug:r?"1":"",localhost:r?"1":"",superapp_token:o});return"https://".concat(n,"/mini_app?").concat(a)})),this.events=r(),this.params=o};!function(e){e[e.UNKNOWN=1]="UNKNOWN",e[e.MISSING_PARAM=2]="MISSING_PARAM",e[e.CONNECTION_LOST=3]="CONNECTION_LOST",e[e.USER_DENIED=4]="USER_DENIED",e[e.INVALID_PARAMS=5]="INVALID_PARAMS",e[e.CUSTOM=6]="CUSTOM",e[e.OLD_MISSING_PARAM=100]="OLD_MISSING_PARAM"}(f||(f={}));var g,m=function(){return"No params passed for load app!"};!function(e){e.INIT="ConnectProfileInit"}(g||(g={}));var v=function t(){var o=this;e(this,t),n(this,"iframe",void 0),n(this,"config",void 0),n(this,"bridge",void 0),n(this,"iframeLoadPromise",void 0),n(this,"load",(function(e){if(!e.container)throw new Error("container is null");if(!e)throw new Error(m());return o.iframe||o.preload(e),o.iframeLoadPromise})),n(this,"remove",(function(){o.iframe&&o.iframe.parentNode&&o.iframe.parentNode.removeChild(o.iframe),o.destroy()})),n(this,"preload",(function(e){o.config=e;var n=document.createElement("iframe");n.style.border="none",n.style.width="100%",n.style.height="100%",n.style.minHeight="100%",e.container.appendChild(n),o.setup(n)})),n(this,"setup",(function(e){d.events.on("superAppToken",o.onSuperAppToken),e.src=o.getProfileUrl(),o.iframe=e,o.iframeLoadPromise=new Promise((function(n){e.onload=function(){return n(e)}})),o.bridge=new l({iframe:o.iframe,origin:"https://"+d.get().connectDomain}),o.bridge.onMessage(o.handleMessage)})),n(this,"destroy",(function(){d.events.off("superAppToken",o.onSuperAppToken),o.bridge.destroy(),delete o.iframe,delete o.iframeLoadPromise,delete o.bridge})),n(this,"onSuperAppToken",(function(e){if(e&&o.iframe){var n=o.iframe;o.destroy(),o.setup(n)}})),n(this,"handleMessage",(function(e){switch(e.handler){case g.INIT:o.handleInitApp().catch(console.error);break;case s.SUPERAPP_TOKEN:d._requestSuperAppToken();break;case s.AUTH_NEEDED:d._requestAuth();break;case s.OPEN_APP:d._openApp(e.params)}})),n(this,"handleInitApp",(function(){return Promise.resolve()})),n(this,"getProfileUrl",(function(){var e=d.get(),n=e.connectDomain,t=e.appId,r=e.superAppToken,a=e._debug,s=o.config.widgets,p=i({host_app_id:t,debug:a?"1":"",localhost:a?"1":"",superapp_token:r,widgets:s?s.join(","):""});return"https://".concat(n,"/super_profile?").concat(p)}))};export{d as Config,u as Connect,h as MiniApp,v as Profile};
function e(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}function n(e,n,o){return n in e?Object.defineProperty(e,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[n]=o,e}function o(e,n){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),o.push.apply(o,t)}return o}let t=(e=21)=>{let n="",o=e;for(;o--;)n+="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"[64*Math.random()|0];return n};function i(e){return Object.keys(e).map((function(n){var o=e[n];return n=encodeURIComponent(n),o=encodeURIComponent(o),"".concat(n,"=").concat(o)})).join("&")}function r(e){return e=e||Object.create(null),{on:function(n,o){(e[n]||(e[n]=[])).push(o)},off:function(n,o){e[n]&&e[n].splice(e[n].indexOf(o)>>>0,1)},emit:function(n,o){(e[n]||[]).slice().map((function(e){e(o)})),(e["*"]||[]).slice().map((function(e){e(n,o)}))}}}var a,s,c={appId:0,superAppToken:"",loginDomain:"login.vk.com",oauthDomain:"oauth.vk.com",connectDomain:"connect.vk.com",_debug:!1},p={},d={events:r(),init:function(e){if(!e.appId)throw new Error("appId required");c.appId=e.appId,c.superAppToken=e.superAppToken||"",c.loginDomain=e.loginDomain||"login.vk.com",c.oauthDomain=e.oauthDomain||"oauth.vk.com",c.connectDomain=e.connectDomain||"connect.vk.com",c._debug=!!e._debug},get:function(){return c},setSuperAppToken:function(e){c.superAppToken=e,d.events.emit("superAppToken",e)},onRequestSuperAppToken:function(e){p.superAppToken=e},_requestSuperAppToken:function(){var e;p.superAppToken&&(e=p.superAppToken()),e&&e.then((function(e){return d.setSuperAppToken(e)})).catch(console.error)},onAuth:function(e){p.auth=e},_requestAuth:function(){var e;p.auth&&(e=p.auth()),e&&e.then((function(e){return d.setSuperAppToken(e)})).catch(console.error)},onOpenApp:function(e){p.openApp=e},_openApp:function(e){p.openApp&&p.openApp(e.app)}},u=new function o(){var r=this;e(this,o),n(this,"flags",null),n(this,"silentAuth",(function(){var e=d.get(),n=e.loginDomain,o=e.appId,i=t(),r="https://".concat(n,"/?act=connect&app_id=").concat(o,"&response_type=").concat("silent_token","&uuid=").concat(i,"&v=").concat("0.0.2"),a=new XMLHttpRequest;return a.open("GET",r,!0),a.responseType="json",a.withCredentials=!0,new Promise((function(e,n){a.onload=function(){a.response?e({provider:"vk",payload:a.response}):n()},a.onerror=function(){n()},a.send()}))})),n(this,"userVisibleAuth",(function(){var e=d.get(),n=e.appId,o=e.connectDomain,a=t(),s=i({app_id:n,response_type:"silent_token",uuid:a,origin:location.protocol+"//"+location.host,v:"0.0.2"}),c="https://".concat(o,"/auth?").concat(s);r.flags&&(c="".concat(c,"#").concat(i(r.flags)));var p=screen.height/2-280,u=screen.width/2-410,l=window.open(c,"_blank","top=".concat(p,",left=").concat(u,",width=").concat(820,",height=").concat(560,",location"));return l?new Promise((function(e,n){var o=setInterval((function(){l&&!l.closed||(window.removeEventListener("message",t),clearInterval(o),n())}),1e3);function t(i){if(i.source===l&&l){if(window.removeEventListener("message",t),clearInterval(o),".vk.com"!==i.origin.slice(i.origin.length-".vk.com".length))return l.close(),void n();if(i.data.action!=="vk_connect_response"+a)return l.close(),void n();var r=i.data.payload;l.close(),e({provider:"vk",payload:r})}}window.addEventListener("message",t)})):Promise.reject()}))};!function(e){e.APP_HIDE="VKSDKMiniAppHide",e.APP_READY="VKSDKMiniAppReady",e.RESIZE="VKSDKMiniAppResize",e.APP_INIT_CONFIG="VKSDKMiniAppInitConfig"}(a||(a={})),function(e){e.SUPERAPP_TOKEN="VKSDKGeneralSuperAppToken",e.AUTH_NEEDED="VKSDKGeneralAuthNeeded",e.OPEN_APP="VKSDKGeneralOpenApp"}(s||(s={}));var l,f=function t(i){var r=this;e(this,t),n(this,"handler",(function(){return{}})),n(this,"config",void 0),n(this,"destroy",(function(){delete r.config,window.removeEventListener("message",r.handleMessage)})),n(this,"onMessage",(function(e){r.handler=e})),n(this,"sendMessage",(function(e){r.config.iframe.contentWindow.postMessage(function(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?o(Object(i),!0).forEach((function(o){n(e,o,i[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):o(Object(i)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))}))}return e}({type:"vk-sak-sdk"},e),r.config.origin)})),n(this,"handleMessage",(function(e){r.config.origin&&e.origin===r.config.origin&&e.source===r.config.iframe.contentWindow&&e.data&&"vk-sak-sdk"===e.data.type&&(console.info("[received from ui]",e.data),r.handler(e.data))})),this.config=i,window.addEventListener("message",this.handleMessage)},h=function o(t){var c=this;e(this,o),n(this,"iframe",void 0),n(this,"bridge",void 0),n(this,"loading",void 0),n(this,"readyPromiseResolve",null),n(this,"readyPromise",null),n(this,"params",void 0),n(this,"events",void 0),n(this,"open",(function(){return c.loading||c.preload().catch(console.error),c.iframe.style.display="block",window.document.body.style.overflowX="hidden",c.loading.then(c.handleResize).catch(console.error),c.readyPromise})),n(this,"hide",(function(){c.events.emit("hide"),c.iframe.style.display="none",window.document.body.style.overflowX=""})),n(this,"close",(function(){window.document.body.style.overflowX="",d.events.off("superAppToken",c.onSuperAppToken),c.iframe.remove(),c.bridge.destroy(),delete c.iframe,delete c.bridge,window.removeEventListener("resize",c.handleResize)})),n(this,"preload",(function(){var e=document.createElement("iframe"),n=window.innerHeight,o=isFinite(c.params.zIndex)?c.params.zIndex:999999;return e.src=c.getMiniAppUrl(),e.style.cssText="\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: ".concat(n,"px;\n min-height: ").concat(n,"px;\n border: none;\n z-index: ").concat(o,";\n "),c.iframe=e,document.body.appendChild(c.iframe),d.events.on("superAppToken",c.onSuperAppToken),c.bridge=new f({iframe:c.iframe,origin:"https://"+d.get().connectDomain}),c.bridge.onMessage(c.handleMessage),window.addEventListener("resize",c.handleResize),c.loading=new Promise((function(n){e.onload=function(){e.onload=null,n()}})),c.readyPromise=new Promise((function(e){return c.readyPromiseResolve=e})),c.loading})),n(this,"onSuperAppToken",(function(e){c.bridge.sendMessage({handler:s.SUPERAPP_TOKEN,params:{result:e}})})),n(this,"handleMessage",(function(e){switch(e.handler){case a.APP_HIDE:c.hide();break;case a.APP_READY:c.resolveReadyPromise(),c.handleUpdateConfig();break;case s.SUPERAPP_TOKEN:d._requestSuperAppToken();break;case s.AUTH_NEEDED:d._requestAuth()}})),n(this,"handleResize",(function(){if(c.iframe){var e=innerWidth,n=innerHeight;c.iframe.style.height="".concat(n,"px"),c.iframe.style.minHeight="".concat(n,"px"),c.bridge.sendMessage({handler:a.RESIZE,params:{viewport_width:e,viewport_height:n}})}})),n(this,"handleUpdateConfig",(function(){c.bridge.sendMessage({handler:a.APP_INIT_CONFIG,params:{fullMode:c.params.fullMode}})})),n(this,"getMiniAppUrl",(function(){var e=d.get(),n=e.connectDomain,o=e.appId,t=e.superAppToken,r=e._debug,a=i({app:c.params.app,host_app_id:o,debug:r?"1":"",localhost:r?"1":"",superapp_token:t});return"https://".concat(n,"/mini_app?").concat(a)})),n(this,"resolveReadyPromise",(function(){c.readyPromise&&c.readyPromiseResolve&&(c.readyPromiseResolve(),c.readyPromise=null,c.readyPromiseResolve=null)})),this.params=t,this.events=r()};!function(e){e[e.UNKNOWN=1]="UNKNOWN",e[e.MISSING_PARAM=2]="MISSING_PARAM",e[e.CONNECTION_LOST=3]="CONNECTION_LOST",e[e.USER_DENIED=4]="USER_DENIED",e[e.INVALID_PARAMS=5]="INVALID_PARAMS",e[e.CUSTOM=6]="CUSTOM",e[e.OLD_MISSING_PARAM=100]="OLD_MISSING_PARAM"}(l||(l={}));var m,g=function(){return"No params passed for load app!"};!function(e){e.INIT="ConnectProfileInit"}(m||(m={}));var v=function o(){var t=this;e(this,o),n(this,"iframe",void 0),n(this,"config",void 0),n(this,"bridge",void 0),n(this,"iframeLoadPromise",void 0),n(this,"load",(function(e){if(!e.container)throw new Error("container is null");if(!e)throw new Error(g());return t.iframe||t.preload(e),t.iframeLoadPromise})),n(this,"remove",(function(){t.iframe&&t.iframe.parentNode&&t.iframe.parentNode.removeChild(t.iframe),t.destroy()})),n(this,"preload",(function(e){t.config=e;var n=document.createElement("iframe");n.style.border="none",n.style.width="100%",n.style.height="100%",n.style.minHeight="100%",e.container.appendChild(n),t.setup(n)})),n(this,"setup",(function(e){d.events.on("superAppToken",t.onSuperAppToken),e.src=t.getProfileUrl(),t.iframe=e,t.iframeLoadPromise=new Promise((function(n){e.onload=function(){return n(e)}})),t.bridge=new f({iframe:t.iframe,origin:"https://"+d.get().connectDomain}),t.bridge.onMessage(t.handleMessage)})),n(this,"destroy",(function(){d.events.off("superAppToken",t.onSuperAppToken),t.bridge.destroy(),delete t.iframe,delete t.iframeLoadPromise,delete t.bridge})),n(this,"onSuperAppToken",(function(e){if(e&&t.iframe){var n=t.iframe;t.destroy(),t.setup(n)}})),n(this,"handleMessage",(function(e){switch(e.handler){case m.INIT:t.handleInitApp().catch(console.error);break;case s.SUPERAPP_TOKEN:d._requestSuperAppToken();break;case s.AUTH_NEEDED:d._requestAuth();break;case s.OPEN_APP:d._openApp(e.params)}})),n(this,"handleInitApp",(function(){return Promise.resolve()})),n(this,"getProfileUrl",(function(){var e=d.get(),n=e.connectDomain,o=e.appId,r=e.superAppToken,a=e._debug,s=t.config.widgets,c=i({host_app_id:o,debug:a?"1":"",localhost:a?"1":"",superapp_token:r,widgets:s?s.join(","):""});return"https://".concat(n,"/super_profile?").concat(c)}))};export{d as Config,u as Connect,h as MiniApp,v as Profile};

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

import { Emitter } from 'mitt';
export declare type MiniAppLoadParams = {

@@ -10,6 +11,8 @@ app: string;

private loading;
private readonly events;
private readyPromiseResolve;
private readyPromise;
private readonly params;
readonly events: Emitter;
constructor(params: MiniAppLoadParams);
readonly open: () => void;
readonly open: () => Promise<void>;
readonly hide: () => void;

@@ -23,2 +26,3 @@ readonly close: () => void;

private readonly getMiniAppUrl;
private readonly resolveReadyPromise;
}
{
"name": "@vkontakte/superappkit",
"version": "1.1.0",
"version": "1.1.1",
"description": "VK SuperAppKit",

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

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