Socket
Socket
Sign inDemoInstall

workbox-core

Package Overview
Dependencies
Maintainers
4
Versions
84
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

workbox-core - npm Package Compare versions

Comparing version 3.5.0 to 3.6.0

95

build/workbox-core.dev.js

@@ -43,3 +43,3 @@ /* eslint-disable */

try {
self.workbox.v['workbox:core:3.5.0'] = 1;
self.workbox.v['workbox:core:3.6.0'] = 1;
} catch (e) {} // eslint-disable-line

@@ -1089,6 +1089,8 @@

*
* @param {string} cacheName
* @param {Request} request
* @param {Response} response
* @param {Array<Object>} [plugins]
* @param {Object} options
* @param {string} options.cacheName
* @param {Request} options.request
* @param {Response} options.response
* @param {Event} [options.event]
* @param {Array<Object>} [options.plugins=[]]
*

@@ -1099,3 +1101,9 @@ * @private

const putWrapper = (() => {
var _ref = babelHelpers.asyncToGenerator(function* (cacheName, request, response, plugins = []) {
var _ref = babelHelpers.asyncToGenerator(function* ({
cacheName,
request,
response,
event,
plugins = []
} = {}) {
if (!response) {

@@ -1111,3 +1119,3 @@ {

let responseToCache = yield _isResponseSafeToCache(request, response, plugins);
let responseToCache = yield _isResponseSafeToCache({ request, response, event, plugins });

@@ -1134,3 +1142,3 @@ if (!responseToCache) {

let oldResponse = updatePlugins.length > 0 ? yield matchWrapper(cacheName, request) : null;
let oldResponse = updatePlugins.length > 0 ? yield matchWrapper({ cacheName, request }) : null;

@@ -1155,2 +1163,3 @@ {

request,
event,
oldResponse,

@@ -1162,3 +1171,3 @@ newResponse: responseToCache

return function putWrapper(_x, _x2, _x3) {
return function putWrapper() {
return _ref.apply(this, arguments);

@@ -1171,7 +1180,9 @@ };

*
* @param {string} cacheName Name of the cache to match against.
* @param {Request} request The Request that will be used to look up cache
* entries.
* @param {Object} matchOptions Options passed to cache.match().
* @param {Array<Object>} [plugins] Array of plugins.
* @param {Object} options
* @param {string} options.cacheName Name of the cache to match against.
* @param {Request} options.request The Request that will be used to look up
*. cache entries.
* @param {Event} [options.event] The event that propted the action.
* @param {Object} [options.matchOptions] Options passed to cache.match().
* @param {Array<Object>} [options.plugins=[]] Array of plugins.
* @return {Response} A cached response if available.

@@ -1183,3 +1194,8 @@ *

const matchWrapper = (() => {
var _ref2 = babelHelpers.asyncToGenerator(function* (cacheName, request, matchOptions, plugins = []) {
var _ref2 = babelHelpers.asyncToGenerator(function* ({
cacheName,
request,
event,
matchOptions,
plugins = [] }) {
const cache = yield caches.open(cacheName);

@@ -1199,2 +1215,3 @@ let cachedResponse = yield cache.match(request, matchOptions);

request,
event,
matchOptions,

@@ -1217,3 +1234,3 @@ cachedResponse

return function matchWrapper(_x4, _x5, _x6) {
return function matchWrapper(_x) {
return _ref2.apply(this, arguments);

@@ -1227,5 +1244,7 @@ };

*
* @param {Request} request
* @param {Response} response
* @param {Array<Object>} plugins
* @param {Object} options
* @param {Request} options.request
* @param {Response} options.response
* @param {Event} [options.event]
* @param {Array<Object>} [options.plugins=[]]
* @return {Promise<Response>}

@@ -1237,3 +1256,3 @@ *

const _isResponseSafeToCache = (() => {
var _ref3 = babelHelpers.asyncToGenerator(function* (request, response, plugins) {
var _ref3 = babelHelpers.asyncToGenerator(function* ({ request, response, event, plugins }) {
let responseToCache = response;

@@ -1246,3 +1265,4 @@ let pluginsUsed = false;

request,
response: responseToCache
response: responseToCache,
event
});

@@ -1282,3 +1302,3 @@

return function _isResponseSafeToCache(_x7, _x8, _x9) {
return function _isResponseSafeToCache(_x2) {
return _ref3.apply(this, arguments);

@@ -1314,6 +1334,7 @@ };

*
* @param {Request|string} request
* @param {Object} fetchOptions
* @param {Array<Object>} [plugins]
* @param {Promise<Response>} [preloadResponse]
* @param {Object} options
* @param {Request|string} options.request
* @param {Object} [options.fetchOptions]
* @param {Event} [options.event]
* @param {Array<Object>} [options.plugins=[]]
* @return {Promise<Response>}

@@ -1325,8 +1346,12 @@ *

const wrappedFetch = (() => {
var _ref = babelHelpers.asyncToGenerator(function* (request, fetchOptions, plugins = [], preloadResponse) {
// We *should* be able to call `await preloadResponse` even if it's undefined,
// but for some reason, doing so leads to errors in our Node unit tests.
// To work around that, explicitly check preloadResponse's value first.
if (preloadResponse) {
const possiblePreloadResponse = yield preloadResponse;
var _ref = babelHelpers.asyncToGenerator(function* ({
request,
fetchOptions,
event,
plugins = [] }) {
// We *should* be able to call `await event.preloadResponse` even if it's
// undefined, but for some reason, doing so leads to errors in our Node unit
// tests. To work around that, explicitly check preloadResponse's value first.
if (event && event.preloadResponse) {
const possiblePreloadResponse = yield event.preloadResponse;
if (possiblePreloadResponse) {

@@ -1365,3 +1390,4 @@ {

request = yield plugin[pluginEvents.REQUEST_WILL_FETCH].call(plugin, {
request: request.clone()
request: request.clone(),
event
});

@@ -1405,2 +1431,3 @@

error,
event,
originalRequest: originalRequest.clone(),

@@ -1415,3 +1442,3 @@ request: pluginFilteredRequest.clone()

return function wrappedFetch(_x, _x2) {
return function wrappedFetch(_x) {
return _ref.apply(this, arguments);

@@ -1418,0 +1445,0 @@ };

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

self.babelHelpers={asyncToGenerator:function(e){return function(){var r=e.apply(this,arguments);return new Promise(function(e,t){return function n(o,i){try{var c=r[o](i),l=c.value}catch(e){return void t(e)}if(!c.done)return Promise.resolve(l).then(function(e){n("next",e)},function(e){n("throw",e)});e(l)}("next")})}}},this.workbox=this.workbox||{},this.workbox.core=function(){"use strict";try{self.workbox.v["workbox:core:3.5.0"]=1}catch(e){}var e={debug:0,log:1,warn:2,error:3,silent:4};const r=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);let t=(()=>e.warn)();const n=e=>t<=e,o=e=>t=e,i=()=>t,c=e.error,l=function(t,o,i){const l=0===t.indexOf("group")?c:e[t];if(!n(l))return;if(!i||"groupCollapsed"===t&&r)return void console[t](...o);const u=["%cworkbox",`background: ${i}; color: white; padding: 2px 0.5em; `+"border-radius: 0.5em;"];console[t](...u,...o)},u=()=>{n(c)&&console.groupEnd()},s={groupEnd:u,unprefixed:{groupEnd:u}},a={debug:"#7f8c8d",log:"#2ecc71",warn:"#f39c12",error:"#c0392b",groupCollapsed:"#3498db"};var f,d;Object.keys(a).forEach(e=>(e=e,d=a[e],s[e]=((...r)=>l(e,r,d)),void(s.unprefixed[e]=((...r)=>l(e,r)))));const h=(e,...r)=>{let t=e;return r.length>0&&(t+=` :: ${JSON.stringify(r)}`),t};class p extends Error{constructor(e,r){super(h(e,r)),this.name=e,this.details=r}}let b=(y=babelHelpers.asyncToGenerator(function*(){for(const e of g)yield e()}),function(){return y.apply(this,arguments)});var y;const g=new Set;class v{constructor(e,r,{onupgradeneeded:t,onversionchange:n=this.e}={}){this.r=e,this.t=r,this.n=t,this.e=n,this.o=null}open(){var e=this;return babelHelpers.asyncToGenerator(function*(){if(!e.o)return e.o=yield new Promise(function(r,t){let n=!1;setTimeout(function(){n=!0,t(new Error("The open request was blocked and timed out"))},e.OPEN_TIMEOUT);const o=indexedDB.open(e.r,e.t);o.onerror=function(e){return t(o.error)},o.onupgradeneeded=function(r){n?(o.transaction.abort(),r.target.result.close()):e.n&&e.n(r)},o.onsuccess=function(t){const o=t.target.result;n?o.close():(o.onversionchange=e.e,r(o))}}),e})()}get(e,...r){var t=this;return babelHelpers.asyncToGenerator(function*(){return yield t.i("get",e,"readonly",...r)})()}add(e,...r){var t=this;return babelHelpers.asyncToGenerator(function*(){return yield t.i("add",e,"readwrite",...r)})()}put(e,...r){var t=this;return babelHelpers.asyncToGenerator(function*(){return yield t.i("put",e,"readwrite",...r)})()}delete(e,...r){var t=this;return babelHelpers.asyncToGenerator(function*(){yield t.i("delete",e,"readwrite",...r)})()}deleteDatabase(){var e=this;return babelHelpers.asyncToGenerator(function*(){e.close(),e.o=null,yield new Promise(function(r,t){const n=indexedDB.deleteDatabase(e.r);n.onerror=function(e){return t(e.target.error)},n.onblocked=function(){return t(new Error("Deletion was blocked."))},n.onsuccess=function(){return r()}})})()}getAll(e,r,t){var n=this;return babelHelpers.asyncToGenerator(function*(){return"getAll"in IDBObjectStore.prototype?yield n.i("getAll",e,"readonly",r,t):yield n.getAllMatching(e,{query:r,count:t})})()}getAllMatching(e,r={}){var t=this;return babelHelpers.asyncToGenerator(function*(){return yield t.transaction([e],"readonly",function(t,n){const o=t[e],i=r.index?o.index(r.index):o,c=[],l=r.query||null,u=r.direction||"next";i.openCursor(l,u).onsuccess=function(e){const t=e.target.result;if(t){const{primaryKey:e,key:o,value:i}=t;c.push(r.includeKeys?{primaryKey:e,key:o,value:i}:i),r.count&&c.length>=r.count?n(c):t.continue()}else n(c)}})})()}transaction(e,r,t){var n=this;return babelHelpers.asyncToGenerator(function*(){return yield n.open(),yield new Promise(function(o,i){const c=n.o.transaction(e,r);c.onerror=function(e){return i(e.target.error)},c.onabort=function(e){return i(e.target.error)},c.oncomplete=function(){return o()};const l={};for(const r of e)l[r]=c.objectStore(r);t(l,function(e){return o(e)},function(){i(new Error("The transaction was manually aborted")),c.abort()})})})()}i(e,r,t,...n){var o=this;return babelHelpers.asyncToGenerator(function*(){yield o.open();return yield o.transaction([r],t,function(t,o){t[r][e](...n).onsuccess=function(e){o(e.target.result)}})})()}e(e){this.close()}close(){this.o&&this.o.close()}}v.prototype.OPEN_TIMEOUT=2e3;const w={prefix:"workbox",suffix:self.registration.scope,googleAnalytics:"googleAnalytics",precache:"precache",runtime:"runtime"},m=e=>[w.prefix,e,w.suffix].filter(e=>e.length>0).join("-"),E={updateDetails:e=>{Object.keys(w).forEach(r=>{void 0!==e[r]&&(w[r]=e[r])})},getGoogleAnalyticsName:e=>e||m(w.googleAnalytics),getPrecacheName:e=>e||m(w.precache),getRuntimeName:e=>e||m(w.runtime)};var L="cacheDidUpdate",x="cacheWillUpdate",H="cachedResponseWillBeUsed",k="fetchDidFail",q="requestWillFetch",D=(e,r)=>e.filter(e=>r in e);const N=e=>{const r=new URL(e,location);return r.origin===location.origin?r.pathname:r.href},O=(()=>{var e=babelHelpers.asyncToGenerator(function*(e,r,t,n=[]){if(!t)throw new p("cache-put-with-no-response",{url:N(r.url)});let o=yield P(r,t,n);if(!o)return;const i=yield caches.open(e),c=D(n,L);let l=c.length>0?yield R(e,r):null;try{yield i.put(r,o)}catch(e){throw"QuotaExceededError"===e.name&&(yield b()),e}for(let t of c)yield t[L].call(t,{cacheName:e,request:r,oldResponse:l,newResponse:o})});return function(r,t,n){return e.apply(this,arguments)}})(),R=(A=babelHelpers.asyncToGenerator(function*(e,r,t,n=[]){let o=yield(yield caches.open(e)).match(r,t);for(let i of n)H in i&&(o=yield i[H].call(i,{cacheName:e,request:r,matchOptions:t,cachedResponse:o}));return o}),function(e,r,t){return A.apply(this,arguments)});var A;const P=(W=babelHelpers.asyncToGenerator(function*(e,r,t){let n=r,o=!1;for(let r of t)if(x in r&&(o=!0,!(n=yield r[x].call(r,{request:e,response:n}))))break;return o||(n=n.ok?n:null),n||null}),function(e,r,t){return W.apply(this,arguments)});var W;const S={put:O,match:R},_={fetch:(()=>{var e=babelHelpers.asyncToGenerator(function*(e,r,t=[],n){if(n){const e=yield n;if(e)return e}"string"==typeof e&&(e=new Request(e));const o=D(t,k),i=o.length>0?e.clone():null;try{for(let r of t)q in r&&(e=yield r[q].call(r,{request:e.clone()}))}catch(e){throw new p("plugin-error-request-will-fetch",{thrownError:e})}const c=e.clone();try{return yield fetch(e,r)}catch(e){for(let r of o)yield r[k].call(r,{error:e,originalRequest:i.clone(),request:c.clone()});throw e}});return function(r,t){return e.apply(this,arguments)}})()};var j=Object.freeze({DBWrapper:v,WorkboxError:p,assert:null,cacheNames:E,cacheWrapper:S,fetchWrapper:_,getFriendlyURL:N,logger:s});var B=new class{constructor(){try{self.workbox.v=self.workbox.v||{}}catch(e){}}get cacheNames(){return{googleAnalytics:E.getGoogleAnalyticsName(),precache:E.getPrecacheName(),runtime:E.getRuntimeName()}}setCacheNameDetails(e){E.updateDetails(e)}get logLevel(){return i()}setLogLevel(r){if(r>e.silent||r<e.debug)throw new p("invalid-value",{paramName:"logLevel",validValueDescription:"Please use a value from LOG_LEVELS, i.e 'logLevel = workbox.core.LOG_LEVELS.debug'.",value:r});o(r)}};return Object.assign(B,{_private:j,LOG_LEVELS:e,registerQuotaErrorCallback:function(e){g.add(e)}})}();
self.babelHelpers={asyncToGenerator:function(e){return function(){var t=e.apply(this,arguments);return new Promise(function(e,r){return function n(o,i){try{var c=t[o](i),l=c.value}catch(e){return void r(e)}if(!c.done)return Promise.resolve(l).then(function(e){n("next",e)},function(e){n("throw",e)});e(l)}("next")})}}},this.workbox=this.workbox||{},this.workbox.core=function(){"use strict";try{self.workbox.v["workbox:core:3.6.0"]=1}catch(e){}var e={debug:0,log:1,warn:2,error:3,silent:4};const t=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);let r=(()=>e.warn)();const n=e=>r<=e,o=e=>r=e,i=()=>r,c=e.error,l=function(r,o,i){const l=0===r.indexOf("group")?c:e[r];if(!n(l))return;if(!i||"groupCollapsed"===r&&t)return void console[r](...o);const s=["%cworkbox",`background: ${i}; color: white; padding: 2px 0.5em; `+"border-radius: 0.5em;"];console[r](...s,...o)},s=()=>{n(c)&&console.groupEnd()},u={groupEnd:s,unprefixed:{groupEnd:s}},a={debug:"#7f8c8d",log:"#2ecc71",warn:"#f39c12",error:"#c0392b",groupCollapsed:"#3498db"};var f,d;Object.keys(a).forEach(e=>(e=e,d=a[e],u[e]=((...t)=>l(e,t,d)),void(u.unprefixed[e]=((...t)=>l(e,t)))));const h=(e,...t)=>{let r=e;return t.length>0&&(r+=` :: ${JSON.stringify(t)}`),r};class p extends Error{constructor(e,t){super(h(e,t)),this.name=e,this.details=t}}let b=(y=babelHelpers.asyncToGenerator(function*(){for(const e of g)yield e()}),function(){return y.apply(this,arguments)});var y;const g=new Set;class v{constructor(e,t,{onupgradeneeded:r,onversionchange:n=this.e}={}){this.t=e,this.r=t,this.n=r,this.e=n,this.o=null}open(){var e=this;return babelHelpers.asyncToGenerator(function*(){if(!e.o)return e.o=yield new Promise(function(t,r){let n=!1;setTimeout(function(){n=!0,r(new Error("The open request was blocked and timed out"))},e.OPEN_TIMEOUT);const o=indexedDB.open(e.t,e.r);o.onerror=function(e){return r(o.error)},o.onupgradeneeded=function(t){n?(o.transaction.abort(),t.target.result.close()):e.n&&e.n(t)},o.onsuccess=function(r){const o=r.target.result;n?o.close():(o.onversionchange=e.e,t(o))}}),e})()}get(e,...t){var r=this;return babelHelpers.asyncToGenerator(function*(){return yield r.i("get",e,"readonly",...t)})()}add(e,...t){var r=this;return babelHelpers.asyncToGenerator(function*(){return yield r.i("add",e,"readwrite",...t)})()}put(e,...t){var r=this;return babelHelpers.asyncToGenerator(function*(){return yield r.i("put",e,"readwrite",...t)})()}delete(e,...t){var r=this;return babelHelpers.asyncToGenerator(function*(){yield r.i("delete",e,"readwrite",...t)})()}deleteDatabase(){var e=this;return babelHelpers.asyncToGenerator(function*(){e.close(),e.o=null,yield new Promise(function(t,r){const n=indexedDB.deleteDatabase(e.t);n.onerror=function(e){return r(e.target.error)},n.onblocked=function(){return r(new Error("Deletion was blocked."))},n.onsuccess=function(){return t()}})})()}getAll(e,t,r){var n=this;return babelHelpers.asyncToGenerator(function*(){return"getAll"in IDBObjectStore.prototype?yield n.i("getAll",e,"readonly",t,r):yield n.getAllMatching(e,{query:t,count:r})})()}getAllMatching(e,t={}){var r=this;return babelHelpers.asyncToGenerator(function*(){return yield r.transaction([e],"readonly",function(r,n){const o=r[e],i=t.index?o.index(t.index):o,c=[],l=t.query||null,s=t.direction||"next";i.openCursor(l,s).onsuccess=function(e){const r=e.target.result;if(r){const{primaryKey:e,key:o,value:i}=r;c.push(t.includeKeys?{primaryKey:e,key:o,value:i}:i),t.count&&c.length>=t.count?n(c):r.continue()}else n(c)}})})()}transaction(e,t,r){var n=this;return babelHelpers.asyncToGenerator(function*(){return yield n.open(),yield new Promise(function(o,i){const c=n.o.transaction(e,t);c.onerror=function(e){return i(e.target.error)},c.onabort=function(e){return i(e.target.error)},c.oncomplete=function(){return o()};const l={};for(const t of e)l[t]=c.objectStore(t);r(l,function(e){return o(e)},function(){i(new Error("The transaction was manually aborted")),c.abort()})})})()}i(e,t,r,...n){var o=this;return babelHelpers.asyncToGenerator(function*(){yield o.open();return yield o.transaction([t],r,function(r,o){r[t][e](...n).onsuccess=function(e){o(e.target.result)}})})()}e(e){this.close()}close(){this.o&&this.o.close()}}v.prototype.OPEN_TIMEOUT=2e3;const w={prefix:"workbox",suffix:self.registration.scope,googleAnalytics:"googleAnalytics",precache:"precache",runtime:"runtime"},m=e=>[w.prefix,e,w.suffix].filter(e=>e.length>0).join("-"),q={updateDetails:e=>{Object.keys(w).forEach(t=>{void 0!==e[t]&&(w[t]=e[t])})},getGoogleAnalyticsName:e=>e||m(w.googleAnalytics),getPrecacheName:e=>e||m(w.precache),getRuntimeName:e=>e||m(w.runtime)};var E="cacheDidUpdate",L="cacheWillUpdate",x="cachedResponseWillBeUsed",H="fetchDidFail",N="requestWillFetch",O=(e,t)=>e.filter(e=>t in e);const k=e=>{const t=new URL(e,location);return t.origin===location.origin?t.pathname:t.href},D=(()=>{var e=babelHelpers.asyncToGenerator(function*({cacheName:e,request:t,response:r,event:n,plugins:o=[]}={}){if(!r)throw new p("cache-put-with-no-response",{url:k(t.url)});let i=yield P({request:t,response:r,event:n,plugins:o});if(!i)return;const c=yield caches.open(e),l=O(o,E);let s=l.length>0?yield R({cacheName:e,request:t}):null;try{yield c.put(t,i)}catch(e){throw"QuotaExceededError"===e.name&&(yield b()),e}for(let r of l)yield r[E].call(r,{cacheName:e,request:t,event:n,oldResponse:s,newResponse:i})});return function(){return e.apply(this,arguments)}})(),R=(A=babelHelpers.asyncToGenerator(function*({cacheName:e,request:t,event:r,matchOptions:n,plugins:o=[]}){let i=yield(yield caches.open(e)).match(t,n);for(let c of o)x in c&&(i=yield c[x].call(c,{cacheName:e,request:t,event:r,matchOptions:n,cachedResponse:i}));return i}),function(e){return A.apply(this,arguments)});var A;const P=(W=babelHelpers.asyncToGenerator(function*({request:e,response:t,event:r,plugins:n}){let o=t,i=!1;for(let t of n)if(L in t&&(i=!0,!(o=yield t[L].call(t,{request:e,response:o,event:r}))))break;return i||(o=o.ok?o:null),o||null}),function(e){return W.apply(this,arguments)});var W;const S={put:D,match:R},_={fetch:(()=>{var e=babelHelpers.asyncToGenerator(function*({request:e,fetchOptions:t,event:r,plugins:n=[]}){if(r&&r.preloadResponse){const e=yield r.preloadResponse;if(e)return e}"string"==typeof e&&(e=new Request(e));const o=O(n,H),i=o.length>0?e.clone():null;try{for(let t of n)N in t&&(e=yield t[N].call(t,{request:e.clone(),event:r}))}catch(e){throw new p("plugin-error-request-will-fetch",{thrownError:e})}const c=e.clone();try{return yield fetch(e,t)}catch(e){for(let t of o)yield t[H].call(t,{error:e,event:r,originalRequest:i.clone(),request:c.clone()});throw e}});return function(t){return e.apply(this,arguments)}})()};var j=Object.freeze({DBWrapper:v,WorkboxError:p,assert:null,cacheNames:q,cacheWrapper:S,fetchWrapper:_,getFriendlyURL:k,logger:u});var B=new class{constructor(){try{self.workbox.v=self.workbox.v||{}}catch(e){}}get cacheNames(){return{googleAnalytics:q.getGoogleAnalyticsName(),precache:q.getPrecacheName(),runtime:q.getRuntimeName()}}setCacheNameDetails(e){q.updateDetails(e)}get logLevel(){return i()}setLogLevel(t){if(t>e.silent||t<e.debug)throw new p("invalid-value",{paramName:"logLevel",validValueDescription:"Please use a value from LOG_LEVELS, i.e 'logLevel = workbox.core.LOG_LEVELS.debug'.",value:t});o(t)}};return Object.assign(B,{_private:j,LOG_LEVELS:e,registerQuotaErrorCallback:function(e){g.add(e)}})}();
//# sourceMappingURL=workbox-core.prod.js.map
{
"name": "workbox-core",
"version": "3.5.0",
"version": "3.6.0",
"license": "Apache-2.0",

@@ -5,0 +5,0 @@ "author": "Google's Web DevRel Team",

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

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