New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

backpat

Package Overview
Dependencies
Maintainers
2
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

backpat - npm Package Compare versions

Comparing version 0.6.3 to 0.7.0

9

CHANGELOG.md

@@ -7,2 +7,11 @@ # Change Log

## 0.7.0 - 2017-5-13
### Added
- Yarn lock parsing
- More tests
### Changed
- Correct logical error retrieving repo URLs
- Revise dependency processing to allow for very large collections
## 0.6.3 - 2017-1-19

@@ -9,0 +18,0 @@ ### Changed

108

dist/helpers.js

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

});
exports.addNode = exports.readPackageJson = exports.nodeDetails = exports.rootDir = undefined;
exports.addNode = exports.readYarnLock = exports.readPackageJson = exports.nodeDetails = exports.rootDir = undefined;

@@ -15,2 +15,3 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

exports.resolveDependency = resolveDependency;
exports.chopDependencies = chopDependencies;
exports.NpmConfig = NpmConfig;

@@ -29,2 +30,4 @@ exports.httpsGetPromise = httpsGetPromise;

function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
var rootDir = exports.rootDir = process.cwd() + '/';

@@ -37,3 +40,3 @@ var nodeDetails = exports.nodeDetails = {

description: 'A JavaScript runtime ✨🐢🚀✨',
downloads: 10000000 // A fake number since Node isn't downloaded on npm
downloads: 100000000 // A fake number since Node isn't downloaded on npm
}

@@ -44,2 +47,3 @@ };

var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : rootDir;
var dependency = arguments[1];

@@ -49,6 +53,7 @@ if (typeof path !== 'string') {

}
if (dependency) path = path + dependency;
return new Promise(function (resolve, reject) {
(0, _fs.readFile)(path + '/package.json', function (err, data) {
if (err) {
reject(err);
resolve({ name: dependency });
} else {

@@ -58,11 +63,33 @@ resolve(JSON.parse(data.toString()));

});
}).catch(function (reason) {
throw new Error(reason);
});
};
var readYarnLock = exports.readYarnLock = function readYarnLock() {
var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : rootDir;
if (typeof path !== 'string') {
throw new TypeError('Function readYarnLock expected type: string but received ' + (typeof path === 'undefined' ? 'undefined' : _typeof(path)) + ' instead');
}
return new Promise(function (resolve) {
(0, _fs.readFile)(path + '/yarn.lock', function (err, data) {
if (err) {
resolve({ yarnDependencies: {} });
} else {
var lockArray = data.toString().match(/\w.*\@.*(?=:)/g);
var yarnDeps = {
yarnDependencies: lockArray.reduce(function (deps, dep) {
deps[dep.replace(/\@.*/, '')] = dep.replace(/.*[\@\^\~\=\>\<]/, '');
return deps;
}, {})
};
resolve(yarnDeps);
}
});
});
};
function instantiateDependencies(packageJson) {
return new Promise(function (resolve) {
var dependencies = {};
Object.assign(dependencies, packageJson.dependencies ? (0, _utilities.formatVersions)(packageJson.dependencies) : null, packageJson.devDependencies ? (0, _utilities.formatVersions)(packageJson.devDependencies) : null);
Object.assign(dependencies, packageJson.dependencies ? (0, _utilities.formatVersions)(packageJson.dependencies) : null, packageJson.devDependencies ? (0, _utilities.formatVersions)(packageJson.devDependencies) : null, packageJson.yarnDependencies ? (0, _utilities.formatVersions)(packageJson.yarnDependencies) : null);
resolve(dependencies);

@@ -88,3 +115,3 @@ });

}
return readPackageJson(rootDir + 'node_modules/' + dependency).then(resolveDependency);
return readPackageJson(rootDir + 'node_modules/', dependency).then(resolveDependency);
}

@@ -96,3 +123,3 @@

name: dependency.name,
url: dependency.homepage || dependency.repository ? 'https://' + dependency.repository.url.replace(/\w*.*\:\/\/|git@|\.git/g, '') : '',
url: dependency.homepage || (dependency.repository && dependency.repository.url ? 'https://' + dependency.repository.url.replace(/\w*.*\:\/\/|git@|\.git/g, '') : ''),
description: dependency.description

@@ -103,26 +130,51 @@ });

function chopDependencies(depChunk) {
var depChunks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
if (depChunk.length === 0) return depChunks;
if (depChunk.length < 100) {
depChunks.push(depChunk.join(','));
return depChunks;
}
depChunks.push(depChunk.slice(0, 100).join(','));
chopDependencies(depChunk.slice(100), depChunks);
return depChunks;
}
function NpmConfig(dependencies) {
return {
hostname: 'api.npmjs.org',
path: '/downloads/point/last-month/' + Object.keys(dependencies).join(','),
method: 'GET',
headers: {
'User-Agent': 'cachilders/backpat'
}
};
var deps = Object.keys(dependencies);
var depChunks = chopDependencies(deps);
return depChunks.reduce(function (optsArray, depChunk) {
optsArray.push({
hostname: 'api.npmjs.org',
path: '/downloads/point/last-month/' + depChunk,
method: 'GET',
headers: {
'User-Agent': 'cachilders/backpat'
}
});
return optsArray;
}, []);
}
function httpsGetPromise(opts) {
return new Promise(function (resolve, reject) {
_https2.default.get(opts, function (res) {
var body = [];
res.on('data', function (chunk) {
return body.push(chunk);
function httpsGetPromise(optsArray) {
var promiseArray = optsArray.reduce(function (promises, opts) {
promises.push(new Promise(function (resolve, reject) {
_https2.default.get(opts, function (res) {
var body = [];
res.on('data', function (chunk) {
return body.push(chunk);
});
res.on('end', function () {
return resolve(JSON.parse(Buffer.concat(body).toString()));
});
res.on('error', reject);
});
res.on('end', function () {
return resolve(JSON.parse(Buffer.concat(body).toString()));
});
res.on('error', reject);
});
});
}));
return promises;
}, []);
return Promise.all(promiseArray).then(function (results) {
return Object.assign.apply(Object, [{}].concat(_toConsumableArray(results)));
}).catch(console.error);
}

@@ -129,0 +181,0 @@

@@ -12,5 +12,9 @@ 'use strict';

function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
function backpat() {
return new Promise(function (resolve) {
(0, _helpers.readPackageJson)().then(_helpers.instantiateDependencies).then(function (dependencies) {
Promise.all([(0, _helpers.readPackageJson)(), (0, _helpers.readYarnLock)()]).then(function (result) {
return Object.assign.apply(Object, [{}].concat(_toConsumableArray(result)));
}).then(_helpers.instantiateDependencies).then(function (dependencies) {
var merge = (0, _utilities.curriedMerge)(dependencies);

@@ -17,0 +21,0 @@ return (0, _utilities.getNpmData)(dependencies).then(_utilities.pickDownloads).then(merge);

{
"name": "backpat",
"version": "0.6.3",
"version": "0.7.0",
"description": "A simple tool for high-fiving your tech stack",

@@ -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