Socket
Socket
Sign inDemoInstall

swagger-stats

Package Overview
Dependencies
58
Maintainers
1
Versions
39
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.95.2 to 0.95.5

.npmignore

19

examples/authtest/authtest.js

@@ -67,6 +67,7 @@ 'use strict';

name: 'swagger-stats-authtest',
version: '0.95.0',
version: '0.95.5',
hostname: "hostname",
ip: "127.0.0.1",
swaggerSpec:swaggerSpec,
swaggerOnly: true,
uriPath: '/swagger-stats',

@@ -84,3 +85,12 @@ durationBuckets: [10, 25, 50, 100, 200],

// simple check for username and password
return((username==='swagger-stats') && (password==='swagger-stats') );
if(username==='swagger-stats') {
return ((username === 'swagger-stats') && (password === 'swagger-stats'));
} else if(username==='swagger-promise'){
return new Promise(function(resolve) {
setTimeout(function(){
resolve((username === 'swagger-promise') && (password === 'swagger-promise'));
}, 1000);
});
}
return false;
}

@@ -148,2 +158,7 @@ }));

process.on('unhandledRejection', function(error) {
debug('unhandledRejection', error.message, error.stack);
});
module.exports.app = app;

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

name: 'swagger-stats-spectest',
version: '0.95.0',
version: '0.95.5',
hostname: "hostname",

@@ -89,3 +89,28 @@ ip: "127.0.0.1",

responseSizeBuckets: [10, 25, 50, 100, 200],
apdexThreshold: 25
apdexThreshold: 25,
onResponseFinish: function(req,res,rrr){
// Example of extending RRR with custom attributes
// All custom properties under attrs will be casted to string and indexed in ElasticSearch as keyword
rrr.attrs = {
test1: "test1",
test2: "test2",
test3: 10,
test4: true,
test5: {prop:"value"}
};
// All custom properties under attrsint will be casted to numeric and indexed in ElasticSearch as long
rrr.attrsint = {
numvalue1: 100,
numvalue2: "100",
numvalue3: false,
numvalue4: "",
numvalue5: {prop:"value"}
};
debug('onResponseFinish: %s', JSON.stringify(rrr));
}
};

@@ -92,0 +117,0 @@

2

examples/testapp/testapp.js

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

name: 'swagger-stats-testapp',
version: '0.95.0',
version: '0.95.5',
timelineBucketDuration: tlBucket,

@@ -115,0 +115,0 @@ uriPath: '/swagger-stats',

@@ -21,2 +21,3 @@ 'use strict';

/*
api.get('/mockapi/v1/success')

@@ -34,3 +35,17 @@ .set('x-sws-res','{"code":"200","message":"TEST","delay":"0","payloadsize":"0"}')

.expect(500).end(function (err, res) {if (err) debug('Req error: ' + err); });
*/
api.get('/v2/pet/findByTags')
.set('x-sws-res','{"code":"200","message":"TEST","delay":"0","payloadsize":"0"}')
.expect(200).end(function (err, res) {if (err) debug('Req error: ' + err); });
api.get('/v2/pet/findByTags')
.set('x-sws-res','{"code":"302","message":"TEST","delay":"0","payloadsize":"0"}')
.expect(302).end(function (err, res) {if (err) debug('Req error: ' + err); });
api.get('/v2/pet/findByTags')
.set('x-sws-res','{"code":"404","message":"TEST","delay":"0","payloadsize":"0"}')
.expect(404).end(function (err, res) {if (err) debug('Req error: ' + err); });
api.get('/v2/pet/findByTags')
.set('x-sws-res','{"code":"500","message":"TEST","delay":"0","payloadsize":"0"}')
.expect(500).end(function (err, res) {if (err) debug('Req error: ' + err); });
/*

@@ -37,0 +52,0 @@ api.get('/api/v1/redirect').expect(302).end(function (err, res) {if (err) debug('Req error: ' + err); });

@@ -121,2 +121,24 @@ /**

// Pre-process RRR
swsElasticEmitter.prototype.preProcessRecord = function(rrr){
// handle custom attributes
if('attrs' in rrr){
var attrs = rrr.attrs;
for(var attrname in attrs){
attrs[attrname] = swsUtil.swsStringValue(attrs[attrname]);
}
}
if('attrsint' in rrr){
var intattrs = rrr.attrsint;
for(var intattrname in intattrs){
intattrs[intattrname] = swsUtil.swsNumValue(intattrs[intattrname]);
}
}
};
// Index Request Response Record

@@ -129,4 +151,6 @@ swsElasticEmitter.prototype.processRecord = function(rrr){

this.preProcessRecord(rrr);
// Create metadata
var indexName = 'api-'+moment(rrr['@timestamp']).format('YYYY.MM.DD');
var indexName = 'api-'+moment(rrr['@timestamp']).utc().format('YYYY.MM.DD');
var meta = {index:{_index:indexName,_type:'api',_id:rrr.id}};

@@ -133,0 +157,0 @@

@@ -83,2 +83,7 @@ /**

if(('sws' in req) && ('track' in req.sws) && !req.sws.track ){
// Tracking disabled for this request
return;
}
// Setup handler for finishing reponse

@@ -124,2 +129,68 @@ res.on('finish',function(){

return new Promise( function (resolve, reject) {
if( !swsOptions.authentication ){
return resolve(true);
}
var cookies = new Cookies( req, res );
// Check session cookie
var sessionIdCookie = cookies.get('sws-session-id');
if( (sessionIdCookie !== undefined) && (sessionIdCookie !== null) ){
if( sessionIdCookie in sessionIDs ){
// renew it
//sessionIDs[sessionIdCookie] = Date.now();
storeSessionID(sessionIdCookie);
cookies.set('sws-session-id',sessionIdCookie,{path:swsOptions.uriPath,maxAge:swsOptions.sessionMaxAge*1000});
// Ok
req['sws-auth'] = true;
return resolve(true);
}
}
var authInfo = basicAuth(req);
var authenticated = false;
var msg = 'Authentication required';
if( (authInfo !== undefined) && (authInfo!==null) && ('name' in authInfo) && ('pass' in authInfo)){
if(typeof swsOptions.onAuthenticate === 'function'){
Promise.resolve(swsOptions.onAuthenticate(req, authInfo.name, authInfo.pass)).then(function(onAuthResult) {
if( onAuthResult ){
authenticated = true;
// Session is only for stats requests
if(req.url.startsWith(pathStats)){
// Generate session id
var sessid = uuidv1();
storeSessionID(sessid);
// Set session cookie with expiration in 15 min
cookies.set('sws-session-id',sessid,{path:swsOptions.uriPath,maxAge:swsOptions.sessionMaxAge*1000});
}
req['sws-auth'] = true;
return resolve(true);
}else{
msg = 'Invalid credentials';
res.status(403).end(msg);
return resolve(false);
}
});
}else{
res.status(403).end(msg);
return resolve(false);
}
}else{
res.status(403).end(msg);
return resolve(false);
}
});
/*
if( !swsOptions.authentication ){

@@ -181,2 +252,3 @@ return true;

return true;
*/
}

@@ -206,2 +278,14 @@

processAuth(req,res).then(function (authResult){
if(!authResult){
return;
}
res.status(200);
if(('sws-auth' in req) && req['sws-auth']){
res.setHeader('x-sws-authenticated','true');
}
res.json( processor.getStats( req.query ) );
});
/*
if(!processAuth(req,res)) {

@@ -216,2 +300,3 @@ return;

res.status(200).json( processor.getStats( req.query ) );
*/
}

@@ -224,2 +309,11 @@

processAuth(req,res).then(function (authResult){
if(!authResult){
return;
}
res.status(200).set('Content-Type', 'text/plain');
res.end(promClient.register.metrics());
});
/*
if(!processAuth(req,res)) {

@@ -231,2 +325,3 @@ return;

res.end(promClient.register.metrics());
*/
}

@@ -250,7 +345,5 @@

if(req.url.startsWith(pathStats)) {
processGetStats(req, res);
return;
return processGetStats(req, res);
}else if(req.url.startsWith(pathMetrics)){
processGetMetrics(req,res);
return;
return processGetMetrics(req,res);
}else if(req.url.startsWith(pathLogout)){

@@ -257,0 +350,0 @@ processLogout(req,res);

@@ -52,2 +52,5 @@ /**

// If set to true via options, track only API defined in swagger spec
this.swaggerOnly = false;
// Core statistics

@@ -140,2 +143,6 @@ this.coreStats = new swsCoreStats();

if(swsUtil.supportedOptions.swaggerOnly in swsOptions) {
this.swaggerOnly = swsUtil.supportedOptions.swaggerOnly;
}
};

@@ -247,16 +254,17 @@

// Express parameters: req.param and req.query
if ("params" in req) {
if (req.hasOwnProperty("params")) {
rrr.http.request.params = {};
for(var pname in req.params ){
rrr.http.request.params[pname] = swsUtil.swsStringValue(req.params[pname]);
}
swsUtil.swsStringRecursive(rrr.http.request.params, req.params);
}
if ("query" in req) {
if (req.hasOwnProperty("query")) {
rrr.http.request.query = {};
for(var pname in req.query ){
rrr.http.request.query[pname] = swsUtil.swsStringValue(req.query[pname]);
}
swsUtil.swsStringRecursive(rrr.http.request.query, req.query);
}
if (req.hasOwnProperty("body")) {
rrr.http.request.body = {};
swsUtil.swsStringRecursive(rrr.http.request.body, req.body);
}
return rrr;

@@ -309,2 +317,3 @@ };

req.sws.track = true;
req.sws.startts = ts;

@@ -320,2 +329,8 @@ req.sws.timelineid = Math.floor( ts/ this.timeline.settings.bucket_duration );

// if no match, and tracking of non-swagger requests is disabled, return
if( !req.sws.match && this.swaggerOnly){
req.sws.track = false;
return;
}
// Core stats

@@ -322,0 +337,0 @@ this.coreStats.countRequest(req, res);

@@ -92,4 +92,7 @@ /*

// Default is empty (disabled).
elasticsearch : "elasticsearch"
elasticsearch : "elasticsearch",
// Set to true to track only requests defined in swagger spec. Default false.
swaggerOnly : "swaggerOnly"
};

@@ -189,2 +192,3 @@

// returns string value of argument, depending on typeof

@@ -210,2 +214,39 @@ module.exports.swsStringValue = function (val) {

// returns object key values as string recursively
module.exports.swsStringRecursive = function (output, val) {
if (typeof val === "object" && !Array.isArray(val)) {
for (var key in val) {
output[key] = this.swsStringRecursive(output[key], val[key]);
}
} else {
output = this.swsStringValue(val);
}
return output;
}
// recursively cast properties of nested objects to strings
module.exports.swsCastStringR = function (val) {
switch( typeof val ){
case "string": return val;
case "boolean":
case "number":
return val.toString();
case "object":
var casted = {};
for(var prop in val){
casted[prop] = module.exports.swsCastStringR(val[prop]);
}
return casted;
}
return '';
};
// returns string value of argument, depending on typeof
module.exports.swsNumValue = function (val) {
var res = Number(val);
return Number.isNaN(res) ? 0: res;
};
// Calculate CPU Usage Percentage

@@ -212,0 +253,0 @@ module.exports.swsCPUUsagePct = function(starthrtime, startusage) {

{
"name": "swagger-stats",
"version": "0.95.2",
"version": "0.95.5",
"description": "API Telemetry and APM. Trace API calls and Monitor API performance, health and usage statistics in Node.js Microservices, based on express routes and Swagger (Open API) specification",

@@ -53,4 +53,4 @@ "main": "lib/index.js",

"path-to-regexp": "^2.1.0",
"prom-client": "^10.2.2",
"request": "^2.83.0",
"prom-client": "^11.0.0",
"request": "^2.85.0",
"uuid": "^3.1.0"

@@ -66,3 +66,3 @@ },

"chosen-js": "^1.8.2",
"coveralls": "^2.13.3",
"coveralls": "^3.0.0",
"cross-env": "^5.1.1",

@@ -69,0 +69,0 @@ "css-loader": "^0.28.7",

@@ -201,2 +201,12 @@ <p align="center">

#### v0.95.5
* [feature] Allow onAuthenticate to be asynchronous [#31](https://github.com/slanatech/swagger-stats/issues/31)
* [feature] Prevent tracking of specific routes [#36](https://github.com/slanatech/swagger-stats/issues/36)
* [feature] Support for extracting request body [#38](https://github.com/slanatech/swagger-stats/issues/38)
Thanks to [DavisJaunzems](https://github.com/DavisJaunzems)!
#### v0.95.0

@@ -203,0 +213,0 @@

@@ -15,3 +15,3 @@ {

"version": 104,
"version": 107,
"mappings": {

@@ -47,2 +47,10 @@

{
"reqbody": {
"path_match": "http.request.body.*",
"mapping": {
"type": "keyword"
}
}
},
{
"resheaders": {

@@ -62,2 +70,18 @@ "path_match": "http.response.headers.*",

}
},
{
"attrs": {
"path_match": "attrs.*",
"mapping": {
"type": "keyword"
}
}
},
{
"attrsint": {
"path_match": "attrsint.*",
"mapping": {
"type": "long"
}
}
}

@@ -64,0 +88,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

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

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

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

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

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

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 too big to display

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

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

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

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

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

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

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

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 too big to display

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

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

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

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

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

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 too big to display

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

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

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

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

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

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

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

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 too big to display

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

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

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

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

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

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

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

Sorry, the diff of this file is too big to display

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

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

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

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

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

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

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

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 too big to display

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

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

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

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

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

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

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

Sorry, the diff of this file is too big to display

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

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

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

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

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

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

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

Sorry, the diff of this file is too big to display

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc