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

registry-sync

Package Overview
Dependencies
Maintainers
1
Versions
89
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

registry-sync - npm Package Compare versions

Comparing version 2.2.1 to 2.3.0

40

package.json
{
"name": "registry-sync",
"version": "2.2.1",
"version": "2.3.0",
"description": "synchronize a remote npm registry for private use",

@@ -12,3 +12,3 @@ "repository": "https://github.com/heikkipora/registry-sync",

"eslint": "eslint --fix src/* bin/*",
"test": "mocha --require babel-register --require babel-polyfill --timeout 120000 test/*.js"
"test": "mocha --require @babel/register --require @babel/polyfill --timeout 120000 test/*.js"
},

@@ -18,11 +18,11 @@ "author": "Heikki Pora",

"dependencies": {
"@babel/runtime": "7.1.2",
"axios": "0.18.0",
"babel-runtime": "6.26.0",
"bluebird": "3.5.1",
"commander": "2.17.1",
"lodash": "4.17.10",
"bluebird": "3.5.2",
"commander": "2.18.0",
"lodash": "4.17.11",
"mkdirp": "0.5.1",
"rimraf": "2.6.2",
"semver": "5.5.0",
"ssri": "6.0.0",
"semver": "5.5.1",
"ssri": "6.0.1",
"streamifier": "0.1.1",

@@ -32,13 +32,13 @@ "tar-fs": "1.16.3"

"devDependencies": {
"babel-cli": "6.26.0",
"babel-core": "6.26.3",
"babel-eslint": "8.2.6",
"babel-plugin-transform-object-rest-spread": "6.26.0",
"babel-plugin-transform-runtime": "6.23.0",
"babel-polyfill": "6.26.0",
"babel-preset-env": "1.7.0",
"babel-register": "6.26.0",
"chai": "4.1.2",
"eslint": "5.3.0",
"eslint-plugin-mocha": "5.1.0",
"@babel/cli": "7.1.2",
"@babel/core": "7.1.2",
"@babel/plugin-proposal-object-rest-spread": "7.0.0",
"@babel/plugin-transform-runtime": "7.1.0",
"@babel/polyfill": "7.0.0",
"@babel/preset-env": "7.1.0",
"@babel/register": "7.0.0",
"babel-eslint": "10.0.1",
"chai": "4.2.0",
"eslint": "5.6.1",
"eslint-plugin-mocha": "5.2.0",
"express": "4.16.3",

@@ -55,4 +55,4 @@ "mocha": "5.2.0"

"engines": {
"node": ">=5.0.0"
"node": ">=6.0.0"
}
}

@@ -13,3 +13,3 @@ # registry-sync

- Node.js v5.0.0 or newer
- Node.js v6.0.0 or newer

@@ -16,0 +16,0 @@ ## Installation

@@ -1,97 +0,55 @@

'use strict';
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.fetchUrl = undefined;
exports.fetchUrl = fetchUrl;
var _regenerator = require('babel-runtime/regenerator');
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _regenerator2 = _interopRequireDefault(_regenerator);
var _axios = _interopRequireDefault(require("axios"));
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _https = _interopRequireDefault(require("https"));
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
const metadataCache = {};
var fetchUrl = exports.fetchUrl = function () {
var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(url) {
var isBinary = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (!isBinary) {
_context.next = 2;
break;
}
const client = _axios.default.create({
httpsAgent: new _https.default.Agent({
keepAlive: true
}),
timeout: 10 * 1000
});
return _context.abrupt('return', fetch(url, 'arraybuffer'));
function fetchUrl(_x) {
return _fetchUrl.apply(this, arguments);
}
case 2:
if (metadataCache[url]) {
_context.next = 6;
break;
}
function _fetchUrl() {
_fetchUrl = (0, _asyncToGenerator2.default)(function* (url, isBinary = false) {
if (isBinary) {
return fetch(url, 'arraybuffer');
}
_context.next = 5;
return fetch(url, 'json');
if (!metadataCache[url]) {
metadataCache[url] = yield fetch(url, 'json');
}
case 5:
metadataCache[url] = _context.sent;
return metadataCache[url];
});
return _fetchUrl.apply(this, arguments);
}
case 6:
return _context.abrupt('return', metadataCache[url]);
function fetch(_x2, _x3) {
return _fetch.apply(this, arguments);
}
case 7:
case 'end':
return _context.stop();
}
}
}, _callee, this);
}));
return function fetchUrl(_x2) {
return _ref.apply(this, arguments);
};
}();
var fetch = function () {
var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(url, responseType) {
return _regenerator2.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return client.get(url, { responseType: responseType });
case 2:
return _context2.abrupt('return', _context2.sent.data);
case 3:
case 'end':
return _context2.stop();
}
}
}, _callee2, this);
}));
return function fetch(_x3, _x4) {
return _ref2.apply(this, arguments);
};
}();
var _axios = require('axios');
var _axios2 = _interopRequireDefault(_axios);
var _https = require('https');
var _https2 = _interopRequireDefault(_https);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var metadataCache = {};
var client = _axios2.default.create({
httpsAgent: new _https2.default.Agent({ keepAlive: true }),
timeout: 10 * 1000
});
function _fetch() {
_fetch = (0, _asyncToGenerator2.default)(function* (url, responseType) {
return (yield client.get(url, {
responseType
})).data;
});
return _fetch.apply(this, arguments);
}

@@ -1,318 +0,176 @@

'use strict';
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.downloadAll = downloadAll;
var _stringify = require('babel-runtime/core-js/json/stringify');
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
var _stringify2 = _interopRequireDefault(_stringify);
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _extends2 = require('babel-runtime/helpers/extends');
var _lodash = _interopRequireDefault(require("lodash"));
var _extends3 = _interopRequireDefault(_extends2);
var _client = require("./client");
var _keys = require('babel-runtime/core-js/object/keys');
var _mkdirp = _interopRequireDefault(require("mkdirp"));
var _keys2 = _interopRequireDefault(_keys);
var _path = _interopRequireDefault(require("path"));
var _regenerator = require('babel-runtime/regenerator');
var _bluebird = _interopRequireDefault(require("bluebird"));
var _regenerator2 = _interopRequireDefault(_regenerator);
var _semver = _interopRequireDefault(require("semver"));
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _url = _interopRequireDefault(require("url"));
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var _integrity = require("./integrity");
var download = function () {
var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(registryUrl, localUrl, rootFolder, prebuiltBinaryProperties, _ref2) {
var name = _ref2.name,
version = _ref2.version;
var registryMetadata, versionMetadata, localFolder, data, localPregypFolder;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return fetchMetadata(name, registryUrl);
var _pregyp = require("./pregyp");
case 2:
registryMetadata = _context.sent;
versionMetadata = _lodash2.default.cloneDeep(registryMetadata.versions[version]);
var _metadata = require("./metadata");
if (versionMetadata) {
_context.next = 6;
break;
}
const fs = _bluebird.default.promisifyAll(require('fs'));
throw new Error('Unknown package version ' + name + '@' + version);
const mkdirpAsync = _bluebird.default.promisify(_mkdirp.default);
case 6:
_context.next = 8;
return ensureLocalFolderExists(name, rootFolder);
function downloadAll(packages, {
localUrl,
prebuiltBinaryProperties,
registryUrl,
rootFolder
}) {
const downloadFromRegistry = download.bind(null, registryUrl, localUrl, rootFolder, prebuiltBinaryProperties);
return _bluebird.default.mapSeries(packages, downloadFromRegistry);
}
case 8:
localFolder = _context.sent;
_context.next = 11;
return downloadTarball(versionMetadata);
function download(_x, _x2, _x3, _x4, _x5) {
return _download.apply(this, arguments);
}
case 11:
data = _context.sent;
function _download() {
_download = (0, _asyncToGenerator2.default)(function* (registryUrl, localUrl, rootFolder, prebuiltBinaryProperties, {
name,
version
}) {
const registryMetadata = yield fetchMetadata(name, registryUrl);
if (!(0, _pregyp.hasPrebuiltBinaries)(versionMetadata)) {
_context.next = 21;
break;
}
const versionMetadata = _lodash.default.cloneDeep(registryMetadata.versions[version]);
_context.next = 15;
return ensureLocalFolderExists(version, localFolder);
if (!versionMetadata) {
throw new Error(`Unknown package version ${name}@${version}`);
}
case 15:
localPregypFolder = _context.sent;
_context.next = 18;
return (0, _pregyp.downloadPrebuiltBinaries)(versionMetadata, localPregypFolder, prebuiltBinaryProperties);
const localFolder = yield ensureLocalFolderExists(name, rootFolder);
let data = yield downloadTarball(versionMetadata);
case 18:
_context.next = 20;
return (0, _metadata.rewriteMetadataInTarball)(data, versionMetadata, localUrl, localFolder);
if ((0, _pregyp.hasPrebuiltBinaries)(versionMetadata)) {
const localPregypFolder = yield ensureLocalFolderExists(version, localFolder);
yield (0, _pregyp.downloadPrebuiltBinaries)(versionMetadata, localPregypFolder, prebuiltBinaryProperties);
data = yield (0, _metadata.rewriteMetadataInTarball)(data, versionMetadata, localUrl, localFolder);
}
case 20:
data = _context.sent;
yield saveTarball(versionMetadata, data, localFolder);
(0, _metadata.rewriteVersionMetadata)(versionMetadata, data, localUrl);
yield updateMetadata(versionMetadata, registryMetadata, registryUrl, localFolder);
});
return _download.apply(this, arguments);
}
case 21:
_context.next = 23;
return saveTarball(versionMetadata, data, localFolder);
function downloadTarball(_x6) {
return _downloadTarball.apply(this, arguments);
}
case 23:
function _downloadTarball() {
_downloadTarball = (0, _asyncToGenerator2.default)(function* ({
_id: id,
dist
}) {
const data = yield fetchTarball(dist.tarball);
(0, _integrity.verifyIntegrity)(data, id, dist);
return data;
});
return _downloadTarball.apply(this, arguments);
}
(0, _metadata.rewriteVersionMetadata)(versionMetadata, data, localUrl);
_context.next = 26;
return updateMetadata(versionMetadata, registryMetadata, registryUrl, localFolder);
function saveTarball({
name,
version
}, data, localFolder) {
return fs.writeFileAsync(tarballPath(name, version, localFolder), data);
}
case 26:
case 'end':
return _context.stop();
}
}
}, _callee, this);
}));
function updateMetadata(_x7, _x8, _x9, _x10) {
return _updateMetadata.apply(this, arguments);
}
return function download(_x, _x2, _x3, _x4, _x5) {
return _ref3.apply(this, arguments);
};
}();
function _updateMetadata() {
_updateMetadata = (0, _asyncToGenerator2.default)(function* (versionMetadata, defaultMetadata, registryUrl, localFolder) {
const name = versionMetadata.name,
version = versionMetadata.version;
const localMetadataPath = metadataPath(name, localFolder);
const localMetadata = yield loadMetadata(localMetadataPath, defaultMetadata);
localMetadata.versions[version] = versionMetadata;
localMetadata.time[version] = defaultMetadata.time[version];
localMetadata['dist-tags'].latest = Object.keys(localMetadata.versions).sort(_semver.default.compare).pop();
yield saveMetadata(localMetadataPath, localMetadata);
});
return _updateMetadata.apply(this, arguments);
}
var downloadTarball = function () {
var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(_ref4) {
var id = _ref4._id,
dist = _ref4.dist;
var data;
return _regenerator2.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return fetchTarball(dist.tarball);
function loadMetadata(_x11, _x12) {
return _loadMetadata.apply(this, arguments);
}
case 2:
data = _context2.sent;
function _loadMetadata() {
_loadMetadata = (0, _asyncToGenerator2.default)(function* (path, defaultMetadata) {
try {
const json = yield fs.readFileAsync(path, 'utf8');
return JSON.parse(json);
} catch (fileNotFound) {
return (0, _objectSpread2.default)({}, defaultMetadata, {
'dist-tags': {},
time: {},
versions: {}
});
}
});
return _loadMetadata.apply(this, arguments);
}
(0, _integrity.verifyIntegrity)(data, id, dist);
return _context2.abrupt('return', data);
case 5:
case 'end':
return _context2.stop();
}
}
}, _callee2, this);
}));
return function downloadTarball(_x6) {
return _ref5.apply(this, arguments);
};
}();
var updateMetadata = function () {
var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(versionMetadata, defaultMetadata, registryUrl, localFolder) {
var name, version, localMetadataPath, localMetadata;
return _regenerator2.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
name = versionMetadata.name, version = versionMetadata.version;
localMetadataPath = metadataPath(name, localFolder);
_context3.next = 4;
return loadMetadata(localMetadataPath, defaultMetadata);
case 4:
localMetadata = _context3.sent;
localMetadata.versions[version] = versionMetadata;
localMetadata.time[version] = defaultMetadata.time[version];
localMetadata['dist-tags'].latest = (0, _keys2.default)(localMetadata.versions).sort(_semver2.default.compare).pop();
_context3.next = 10;
return saveMetadata(localMetadataPath, localMetadata);
case 10:
case 'end':
return _context3.stop();
}
}
}, _callee3, this);
}));
return function updateMetadata(_x7, _x8, _x9, _x10) {
return _ref7.apply(this, arguments);
};
}();
var loadMetadata = function () {
var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(path, defaultMetadata) {
var json;
return _regenerator2.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_context4.prev = 0;
_context4.next = 3;
return fs.readFileAsync(path, 'utf8');
case 3:
json = _context4.sent;
return _context4.abrupt('return', JSON.parse(json));
case 7:
_context4.prev = 7;
_context4.t0 = _context4['catch'](0);
return _context4.abrupt('return', (0, _extends3.default)({}, defaultMetadata, { 'dist-tags': {}, time: {}, versions: {} }));
case 10:
case 'end':
return _context4.stop();
}
}
}, _callee4, this, [[0, 7]]);
}));
return function loadMetadata(_x11, _x12) {
return _ref8.apply(this, arguments);
};
}();
var saveMetadata = function () {
var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(path, metadata) {
var json;
return _regenerator2.default.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
json = (0, _stringify2.default)(metadata, null, 2);
_context5.next = 3;
return fs.writeFileAsync(path, json, 'utf8');
case 3:
case 'end':
return _context5.stop();
}
}
}, _callee5, this);
}));
return function saveMetadata(_x13, _x14) {
return _ref9.apply(this, arguments);
};
}();
var ensureLocalFolderExists = function () {
var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(name, rootFolder) {
var localFolder;
return _regenerator2.default.wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
localFolder = _path2.default.resolve(rootFolder, name);
_context6.next = 3;
return mkdirpAsync(localFolder);
case 3:
return _context6.abrupt('return', localFolder);
case 4:
case 'end':
return _context6.stop();
}
}
}, _callee6, this);
}));
return function ensureLocalFolderExists(_x15, _x16) {
return _ref10.apply(this, arguments);
};
}();
exports.downloadAll = downloadAll;
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _client = require('./client');
var _mkdirp = require('mkdirp');
var _mkdirp2 = _interopRequireDefault(_mkdirp);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _bluebird = require('bluebird');
var _bluebird2 = _interopRequireDefault(_bluebird);
var _semver = require('semver');
var _semver2 = _interopRequireDefault(_semver);
var _url = require('url');
var _url2 = _interopRequireDefault(_url);
var _integrity = require('./integrity');
var _pregyp = require('./pregyp');
var _metadata = require('./metadata');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var fs = _bluebird2.default.promisifyAll(require('fs'));
var mkdirpAsync = _bluebird2.default.promisify(_mkdirp2.default);
function downloadAll(packages, _ref) {
var localUrl = _ref.localUrl,
prebuiltBinaryProperties = _ref.prebuiltBinaryProperties,
registryUrl = _ref.registryUrl,
rootFolder = _ref.rootFolder;
var downloadFromRegistry = download.bind(null, registryUrl, localUrl, rootFolder, prebuiltBinaryProperties);
return _bluebird2.default.mapSeries(packages, downloadFromRegistry);
function saveMetadata(_x13, _x14) {
return _saveMetadata.apply(this, arguments);
}
function saveTarball(_ref6, data, localFolder) {
var name = _ref6.name,
version = _ref6.version;
return fs.writeFileAsync(tarballPath(name, version, localFolder), data);
function _saveMetadata() {
_saveMetadata = (0, _asyncToGenerator2.default)(function* (path, metadata) {
const json = JSON.stringify(metadata, null, 2);
yield fs.writeFileAsync(path, json, 'utf8');
});
return _saveMetadata.apply(this, arguments);
}
function metadataPath(name, localFolder) {
return _path2.default.join(localFolder, 'index.json');
return _path.default.join(localFolder, 'index.json');
}
function tarballPath(name, version, localFolder) {
return _path2.default.join(localFolder, (0, _metadata.tarballFilename)(name, version));
return _path.default.join(localFolder, (0, _metadata.tarballFilename)(name, version));
}
function ensureLocalFolderExists(_x15, _x16) {
return _ensureLocalFolderExists.apply(this, arguments);
}
function _ensureLocalFolderExists() {
_ensureLocalFolderExists = (0, _asyncToGenerator2.default)(function* (name, rootFolder) {
const localFolder = _path.default.resolve(rootFolder, name);
yield mkdirpAsync(localFolder);
return localFolder;
});
return _ensureLocalFolderExists.apply(this, arguments);
}
function fetchTarball(tarballUrl) {

@@ -323,4 +181,4 @@ return (0, _client.fetchUrl)(tarballUrl, true);

function fetchMetadata(name, registryUrl) {
var urlSafeName = name.replace(/\//g, '%2f');
return (0, _client.fetchUrl)(_url2.default.resolve(registryUrl, urlSafeName));
const urlSafeName = name.replace(/\//g, '%2f');
return (0, _client.fetchUrl)(_url.default.resolve(registryUrl, urlSafeName));
}

@@ -1,43 +0,37 @@

'use strict';
"use strict";
var _lodash = require('lodash');
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _lodash2 = _interopRequireDefault(_lodash);
var _lodash = _interopRequireDefault(require("lodash"));
var _commander = require('commander');
var _commander = _interopRequireDefault(require("commander"));
var _commander2 = _interopRequireDefault(_commander);
var _sync = require("./sync");
var _sync = require('./sync');
_commander.default.version(require(`${__dirname}/../package.json`).version).option('--root <path>', 'Path to save NPM package tarballs and metadata to').option('--manifest <file>', 'Path to a package-lock.json file to use as catalog for mirrored NPM packages.').option('--localUrl <url>', 'URL to use as root in stored package metadata (i.e. where folder defined as --root will be exposed at)').option('--binaryAbi <list>', 'Comma-separated list of node C++ ABI numbers to download pre-built binaries for. See NODE_MODULE_VERSION column in https://nodejs.org/en/download/releases/').option('--binaryArch <list>', 'Comma-separated list of CPU architectures to download pre-built binaries for. Valid values: arm, ia32, and x64').option('--binaryPlatform <list>', 'Comma-separated list of OS platforms to download pre-built binaries for. Valid values: linux, darwin, win32, sunos, freebsd, openbsd, and aix').option('--registryUrl [url]', 'Optional URL to use as NPM registry when fetching packages. Default value is https://registry.npmjs.org').parse(process.argv);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
_commander2.default.version(require(__dirname + '/../package.json').version).option('--root <path>', 'Path to save NPM package tarballs and metadata to').option('--manifest <file>', 'Path to a package-lock.json file to use as catalog for mirrored NPM packages.').option('--localUrl <url>', 'URL to use as root in stored package metadata (i.e. where folder defined as --root will be exposed at)').option('--binaryAbi <list>', 'Comma-separated list of node C++ ABI numbers to download pre-built binaries for. See NODE_MODULE_VERSION column in https://nodejs.org/en/download/releases/').option('--binaryArch <list>', 'Comma-separated list of CPU architectures to download pre-built binaries for. Valid values: arm, ia32, and x64').option('--binaryPlatform <list>', 'Comma-separated list of OS platforms to download pre-built binaries for. Valid values: linux, darwin, win32, sunos, freebsd, openbsd, and aix').option('--registryUrl [url]', 'Optional URL to use as NPM registry when fetching packages. Default value is https://registry.npmjs.org').parse(process.argv);
if (!_commander2.default.root || !_commander2.default.localUrl || !_commander2.default.manifest || !_commander2.default.binaryAbi || !_commander2.default.binaryArch || !_commander2.default.binaryPlatform) {
console.error(_commander2.default.help());
if (!_commander.default.root || !_commander.default.localUrl || !_commander.default.manifest || !_commander.default.binaryAbi || !_commander.default.binaryArch || !_commander.default.binaryPlatform) {
console.error(_commander.default.help());
process.exit(1);
}
var abis = _commander2.default.binaryAbi.split(',');
var architectures = _commander2.default.binaryArch.split(',');
var platforms = _commander2.default.binaryPlatform.split(',');
var prebuiltBinaryProperties = _lodash2.default.flattenDeep(abis.map(function (abi) {
return architectures.map(function (arch) {
return platforms.map(function (platform) {
return { abi: abi, arch: arch, platform: platform };
});
});
}));
const abis = _commander.default.binaryAbi.split(',');
var options = {
localUrl: _commander2.default.localUrl,
manifest: _commander2.default.manifest,
prebuiltBinaryProperties: prebuiltBinaryProperties,
registryUrl: _commander2.default.registryUrl || 'https://registry.npmjs.org',
rootFolder: _commander2.default.root
const architectures = _commander.default.binaryArch.split(',');
const platforms = _commander.default.binaryPlatform.split(',');
const prebuiltBinaryProperties = _lodash.default.flattenDeep(abis.map(abi => architectures.map(arch => platforms.map(platform => ({
abi,
arch,
platform
})))));
const options = {
localUrl: _commander.default.localUrl,
manifest: _commander.default.manifest,
prebuiltBinaryProperties,
registryUrl: _commander.default.registryUrl || 'https://registry.npmjs.org',
rootFolder: _commander.default.root
};
(0, _sync.synchronize)(options).then(function (newPackages) {
return console.log('Downloaded ' + newPackages.length + ' packages');
});
(0, _sync.synchronize)(options).then(newPackages => console.log(`Downloaded ${newPackages.length} packages`));

@@ -1,11 +0,8 @@

'use strict';
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
exports.verifyIntegrity = verifyIntegrity;

@@ -15,14 +12,12 @@ exports.sha1 = sha1;

var _ssri = require('ssri');
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _ssri2 = _interopRequireDefault(_ssri);
var _ssri = _interopRequireDefault(require("ssri"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function verifyIntegrity(data, id, _ref) {
var integrity = _ref.integrity,
shasum = _ref.shasum;
function verifyIntegrity(data, id, {
integrity,
shasum
}) {
if (!integrity && !shasum) {
throw new Error('Integrity values not present in metadata for ' + id);
throw new Error(`Integrity values not present in metadata for ${id}`);
}

@@ -32,6 +27,6 @@

if (sha512(data) != integrity) {
throw new Error('Integrity check with SHA512 failed for ' + id);
throw new Error(`Integrity check with SHA512 failed for ${id}`);
}
} else if (sha1(data) != shasum) {
throw new Error('Integrity check with SHA1 failed for failed for ' + id);
throw new Error(`Integrity check with SHA1 failed for failed for ${id}`);
}

@@ -41,4 +36,6 @@ }

function sha1(data) {
var _ssri$fromData$sha = (0, _slicedToArray3.default)(_ssri2.default.fromData(data, { algorithms: ['sha1'] }).sha1, 1),
integrity = _ssri$fromData$sha[0];
const _ssri$fromData$sha = (0, _slicedToArray2.default)(_ssri.default.fromData(data, {
algorithms: ['sha1']
}).sha1, 1),
integrity = _ssri$fromData$sha[0];

@@ -49,6 +46,8 @@ return integrity.hexDigest();

function sha512(data) {
var _ssri$fromData$sha2 = (0, _slicedToArray3.default)(_ssri2.default.fromData(data, { algorithms: ['sha512'] }).sha512, 1),
integrity = _ssri$fromData$sha2[0];
const _ssri$fromData$sha2 = (0, _slicedToArray2.default)(_ssri.default.fromData(data, {
algorithms: ['sha512']
}).sha512, 1),
integrity = _ssri$fromData$sha2[0];
return integrity.toString();
}

@@ -1,119 +0,40 @@

'use strict';
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.rewriteMetadataInTarball = undefined;
var _regenerator = require('babel-runtime/regenerator');
var _regenerator2 = _interopRequireDefault(_regenerator);
var _stringify = require('babel-runtime/core-js/json/stringify');
var _stringify2 = _interopRequireDefault(_stringify);
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var rewriteMetadataInTarball = exports.rewriteMetadataInTarball = function () {
var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(data, versionMetadata, localUrl, localFolder) {
var tmpFolder, manifestPath, json, metadata, updatedData;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
tmpFolder = _path2.default.join(localFolder, '.tmp');
_context.next = 3;
return mkdirpAsync(tmpFolder);
case 3:
_context.next = 5;
return extractTgz(data, tmpFolder);
case 5:
manifestPath = _path2.default.join(tmpFolder, 'package', 'package.json');
_context.next = 8;
return fs.readFileAsync(manifestPath, 'utf8');
case 8:
json = _context.sent;
metadata = JSON.parse(json);
metadata.binary.host = localUrl;
metadata.binary.remote_path = '/' + versionMetadata.name + '/' + versionMetadata.version + '/';
_context.next = 14;
return fs.writeFileAsync(manifestPath, (0, _stringify2.default)(metadata, null, 2));
case 14:
_context.next = 16;
return compressTgz(tmpFolder);
case 16:
updatedData = _context.sent;
_context.next = 19;
return rimrafAsync(tmpFolder);
case 19:
return _context.abrupt('return', updatedData);
case 20:
case 'end':
return _context.stop();
}
}
}, _callee, this);
}));
return function rewriteMetadataInTarball(_x, _x2, _x3, _x4) {
return _ref.apply(this, arguments);
};
}();
exports.rewriteVersionMetadata = rewriteVersionMetadata;
exports.rewriteMetadataInTarball = rewriteMetadataInTarball;
exports.tarballFilename = tarballFilename;
var _pregyp = require('./pregyp');
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _mkdirp = require('mkdirp');
var _pregyp = require("./pregyp");
var _mkdirp2 = _interopRequireDefault(_mkdirp);
var _mkdirp = _interopRequireDefault(require("mkdirp"));
var _path = require('path');
var _path = _interopRequireDefault(require("path"));
var _path2 = _interopRequireDefault(_path);
var _bluebird = _interopRequireDefault(require("bluebird"));
var _bluebird = require('bluebird');
var _rimraf = _interopRequireDefault(require("rimraf"));
var _bluebird2 = _interopRequireDefault(_bluebird);
var _streamifier = _interopRequireDefault(require("streamifier"));
var _rimraf = require('rimraf');
var _tarFs = _interopRequireDefault(require("tar-fs"));
var _rimraf2 = _interopRequireDefault(_rimraf);
var _url = _interopRequireDefault(require("url"));
var _streamifier = require('streamifier');
var _zlib = _interopRequireDefault(require("zlib"));
var _streamifier2 = _interopRequireDefault(_streamifier);
var _integrity = require("./integrity");
var _tarFs = require('tar-fs');
const fs = _bluebird.default.promisifyAll(require('fs'));
var _tarFs2 = _interopRequireDefault(_tarFs);
const mkdirpAsync = _bluebird.default.promisify(_mkdirp.default);
var _url = require('url');
const rimrafAsync = _bluebird.default.promisify(_rimraf.default);
var _url2 = _interopRequireDefault(_url);
var _zlib = require('zlib');
var _zlib2 = _interopRequireDefault(_zlib);
var _integrity = require('./integrity');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var fs = _bluebird2.default.promisifyAll(require('fs'));
var mkdirpAsync = _bluebird2.default.promisify(_mkdirp2.default);
var rimrafAsync = _bluebird2.default.promisify(_rimraf2.default);
function rewriteVersionMetadata(versionMetadata, data, localUrl) {

@@ -124,3 +45,3 @@ versionMetadata.dist.tarball = localTarballUrl(versionMetadata, localUrl);

versionMetadata.binary.host = localUrl;
versionMetadata.binary.remote_path = '/' + versionMetadata.name + '/' + versionMetadata.version + '/';
versionMetadata.binary.remote_path = `/${versionMetadata.name}/${versionMetadata.version}/`;
versionMetadata.dist.integrity = (0, _integrity.sha512)(data);

@@ -131,5 +52,30 @@ versionMetadata.dist.shasum = (0, _integrity.sha1)(data);

function rewriteMetadataInTarball(_x, _x2, _x3, _x4) {
return _rewriteMetadataInTarball.apply(this, arguments);
}
function _rewriteMetadataInTarball() {
_rewriteMetadataInTarball = (0, _asyncToGenerator2.default)(function* (data, versionMetadata, localUrl, localFolder) {
const tmpFolder = _path.default.join(localFolder, '.tmp');
yield mkdirpAsync(tmpFolder);
yield extractTgz(data, tmpFolder);
const manifestPath = _path.default.join(tmpFolder, 'package', 'package.json');
const json = yield fs.readFileAsync(manifestPath, 'utf8');
const metadata = JSON.parse(json);
metadata.binary.host = localUrl;
metadata.binary.remote_path = `/${versionMetadata.name}/${versionMetadata.version}/`;
yield fs.writeFileAsync(manifestPath, JSON.stringify(metadata, null, 2));
const updatedData = yield compressTgz(tmpFolder);
yield rimrafAsync(tmpFolder);
return updatedData;
});
return _rewriteMetadataInTarball.apply(this, arguments);
}
function extractTgz(data, folder) {
return new _bluebird2.default(function (resolve, reject) {
var tgz = _streamifier2.default.createReadStream(data).pipe(_zlib2.default.createGunzip()).pipe(_tarFs2.default.extract(folder));
return new _bluebird.default((resolve, reject) => {
const tgz = _streamifier.default.createReadStream(data).pipe(_zlib.default.createGunzip()).pipe(_tarFs.default.extract(folder));

@@ -142,11 +88,9 @@ tgz.on('finish', resolve);

function compressTgz(folder) {
return new _bluebird2.default(function (resolve, reject) {
var chunks = [];
var tgz = _tarFs2.default.pack(folder).pipe(_zlib2.default.createGzip());
tgz.on('data', function (chunk) {
return chunks.push(chunk);
});
tgz.on('end', function () {
return resolve(Buffer.concat(chunks));
});
return new _bluebird.default((resolve, reject) => {
const chunks = [];
const tgz = _tarFs.default.pack(folder).pipe(_zlib.default.createGzip());
tgz.on('data', chunk => chunks.push(chunk));
tgz.on('end', () => resolve(Buffer.concat(chunks)));
tgz.on('error', reject);

@@ -156,12 +100,12 @@ });

function localTarballUrl(_ref2, localUrl) {
var name = _ref2.name,
version = _ref2.version;
return _url2.default.resolve(localUrl, name + '/' + tarballFilename(name, version));
function localTarballUrl({
name,
version
}, localUrl) {
return _url.default.resolve(localUrl, `${name}/${tarballFilename(name, version)}`);
}
function tarballFilename(name, version) {
var normalized = name.replace(/\//g, '-');
return normalized + '-' + version + '.tgz';
const normalized = name.replace(/\//g, '-');
return `${normalized}-${version}.tgz`;
}

@@ -1,151 +0,80 @@

'use strict';
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.downloadPrebuiltBinaries = undefined;
exports.hasPrebuiltBinaries = hasPrebuiltBinaries;
exports.downloadPrebuiltBinaries = downloadPrebuiltBinaries;
var _regenerator = require('babel-runtime/regenerator');
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _regenerator2 = _interopRequireDefault(_regenerator);
var _client = require("./client");
var _getIterator2 = require('babel-runtime/core-js/get-iterator');
var _path = _interopRequireDefault(require("path"));
var _getIterator3 = _interopRequireDefault(_getIterator2);
var _bluebird = _interopRequireDefault(require("bluebird"));
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _semver = _interopRequireDefault(require("semver"));
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var _url = _interopRequireDefault(require("url"));
var downloadPrebuiltBinaries = exports.downloadPrebuiltBinaries = function () {
var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(versionMetadata, localFolder, prebuiltBinaryProperties) {
var binary, name, version, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _ref3, abi, arch, platform, data;
const fs = _bluebird.default.promisifyAll(require('fs'));
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
binary = versionMetadata.binary, name = versionMetadata.name, version = versionMetadata.version;
_iteratorNormalCompletion = true;
_didIteratorError = false;
_iteratorError = undefined;
_context.prev = 4;
_iterator = (0, _getIterator3.default)(prebuiltBinaryProperties);
function hasPrebuiltBinaries({
binary
}) {
return binary && binary.module_name;
}
case 6:
if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {
_context.next = 26;
break;
}
function downloadPrebuiltBinaries(_x, _x2, _x3) {
return _downloadPrebuiltBinaries.apply(this, arguments);
}
_ref3 = _step.value;
abi = _ref3.abi, arch = _ref3.arch, platform = _ref3.platform;
_context.prev = 9;
_context.next = 12;
return fetchPrebuiltBinary(name, version, binary, abi, platform, arch);
function _downloadPrebuiltBinaries() {
_downloadPrebuiltBinaries = (0, _asyncToGenerator2.default)(function* (versionMetadata, localFolder, prebuiltBinaryProperties) {
const binary = versionMetadata.binary,
name = versionMetadata.name,
version = versionMetadata.version;
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
case 12:
data = _context.sent;
_context.next = 15;
return fs.writeFileAsync(prebuiltBinaryFilePath(name, version, binary, abi, platform, arch, localFolder), data);
try {
for (var _iterator = prebuiltBinaryProperties[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
const _ref = _step.value;
const abi = _ref.abi,
arch = _ref.arch,
platform = _ref.platform;
case 15:
_context.next = 23;
break;
try {
const data = yield fetchPrebuiltBinary(name, version, binary, abi, platform, arch);
yield fs.writeFileAsync(prebuiltBinaryFilePath(name, version, binary, abi, platform, arch, localFolder), data);
} catch (err) {
// pre-built binaries are commonly not available on all platforms (and S3 will commonly respond with 403 for a non-existent file)
const fileNotFoundError = err.response && (err.response.status == 403 || err.response.status == 404);
case 17:
_context.prev = 17;
_context.t0 = _context['catch'](9);
if (!(_context.t0.response && (_context.t0.response.status == 403 || _context.t0.response.status == 404))) {
_context.next = 21;
break;
}
return _context.abrupt('return');
case 21:
console.error('Unexpected error fetching prebuilt binary for ' + name + ' and ABI v' + abi + ' on ' + arch + '-' + platform);
throw _context.t0;
case 23:
_iteratorNormalCompletion = true;
_context.next = 6;
break;
case 26:
_context.next = 32;
break;
case 28:
_context.prev = 28;
_context.t1 = _context['catch'](4);
_didIteratorError = true;
_iteratorError = _context.t1;
case 32:
_context.prev = 32;
_context.prev = 33;
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
case 35:
_context.prev = 35;
if (!_didIteratorError) {
_context.next = 38;
break;
}
throw _iteratorError;
case 38:
return _context.finish(35);
case 39:
return _context.finish(32);
case 40:
case 'end':
return _context.stop();
if (!fileNotFoundError) {
console.error(`Unexpected error fetching prebuilt binary for ${name} and ABI v${abi} on ${arch}-${platform}`);
throw err;
}
}
}
}, _callee, this, [[4, 28, 32, 40], [9, 17], [33,, 35, 39]]);
}));
return function downloadPrebuiltBinaries(_x, _x2, _x3) {
return _ref2.apply(this, arguments);
};
}();
exports.hasPrebuiltBinaries = hasPrebuiltBinaries;
var _client = require('./client');
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _bluebird = require('bluebird');
var _bluebird2 = _interopRequireDefault(_bluebird);
var _semver = require('semver');
var _semver2 = _interopRequireDefault(_semver);
var _url = require('url');
var _url2 = _interopRequireDefault(_url);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var fs = _bluebird2.default.promisifyAll(require('fs'));
function hasPrebuiltBinaries(_ref) {
var binary = _ref.binary;
return binary && binary.module_name;
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
});
return _downloadPrebuiltBinaries.apply(this, arguments);
}

@@ -158,9 +87,9 @@

function prebuiltBinaryFilePath(name, version, binary, abi, platform, arch, localFolder) {
return _path2.default.join(localFolder, prebuiltBinaryFileName(name, version, binary, abi, platform, arch));
return _path.default.join(localFolder, prebuiltBinaryFileName(name, version, binary, abi, platform, arch));
}
function prebuiltBinaryUrl(name, version, binary, abi, platform, arch) {
var remotePath = prebuiltBinaryRemotePath(name, version, binary, abi, platform, arch);
var fileName = prebuiltBinaryFileName(name, version, binary, abi, platform, arch);
return _url2.default.resolve(binary.host, remotePath + fileName);
const remotePath = prebuiltBinaryRemotePath(name, version, binary, abi, platform, arch).replace(/\/$/, '');
const fileName = prebuiltBinaryFileName(name, version, binary, abi, platform, arch);
return _url.default.resolve(binary.host, `${remotePath}/${fileName}`);
}

@@ -174,11 +103,15 @@

return formatPrebuilt(binary.package_name, name, version, binary.module_name, abi, platform, arch);
}
} // see node-pre-gyp: /lib/util/versioning.js for documentation of possible values
// see node-pre-gyp: /lib/util/versioning.js for documentation of possible values
function formatPrebuilt(formatString, name, version, moduleName, abi, platform, arch) {
var moduleVersion = _semver2.default.parse(version);
var prerelease = (moduleVersion.prerelease || []).join('.');
var build = (moduleVersion.build || []).join('.');
const moduleVersion = _semver.default.parse(version);
return formatString.replace('{name}', name).replace('{version}', version).replace('{major}', moduleVersion.major).replace('{minor}', moduleVersion.minor).replace('{patch}', moduleVersion.patch).replace('{prerelease}', prerelease).replace('{build}', build).replace('{module_name}', moduleName).replace('{node_abi}', 'node-v' + abi).replace('{platform}', platform).replace('{arch}', arch).replace('{configuration}', 'Release').replace('{toolset}', '').replace(/[\/]+/g, '/');
const prerelease = (moduleVersion.prerelease || []).join('.');
const build = (moduleVersion.build || []).join('.');
return formatString.replace('{name}', name).replace('{version}', version).replace('{major}', moduleVersion.major).replace('{minor}', moduleVersion.minor).replace('{patch}', moduleVersion.patch).replace('{prerelease}', prerelease).replace('{build}', build).replace('{module_name}', moduleName).replace('{node_abi}', `node-v${abi}`).replace('{platform}', platform).replace('{arch}', arch).replace('{libc}', libc(platform)).replace('{configuration}', 'Release').replace('{toolset}', '').replace(/[\/]+/g, '/');
}
function libc(platform) {
return platform === 'linux' ? 'glibc' : 'unknown';
}

@@ -1,162 +0,117 @@

'use strict';
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.dependenciesFromPackageLock = exports.loadCache = exports.dependenciesNotInCache = exports.updateDependenciesCache = undefined;
exports.updateDependenciesCache = updateDependenciesCache;
exports.dependenciesNotInCache = dependenciesNotInCache;
exports.dependenciesFromPackageLock = dependenciesFromPackageLock;
var _regenerator = require('babel-runtime/regenerator');
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _regenerator2 = _interopRequireDefault(_regenerator);
var _lodash = _interopRequireDefault(require("lodash"));
var _stringify = require('babel-runtime/core-js/json/stringify');
var _bluebird = _interopRequireDefault(require("bluebird"));
var _stringify2 = _interopRequireDefault(_stringify);
const fs = _bluebird.default.promisifyAll(require('fs'));
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
function updateDependenciesCache(_x, _x2, _x3) {
return _updateDependenciesCache.apply(this, arguments);
}
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
function _updateDependenciesCache() {
_updateDependenciesCache = (0, _asyncToGenerator2.default)(function* (newDependencies, cacheFilePath, prebuiltBinaryProperties) {
const _ref = yield loadCache(cacheFilePath),
cachedDependencies = _ref.dependencies;
var updateDependenciesCache = exports.updateDependenciesCache = function () {
var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(newDependencies, cacheFilePath) {
var cachedDependencies, allDependencies;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return loadCache(cacheFilePath);
const dependencies = (0, _lodash.default)(cachedDependencies).concat(newDependencies).sortBy('id').sortedUniqBy('id').value();
const data = {
dependencies,
prebuiltBinaryProperties
};
return fs.writeFileAsync(cacheFilePath, JSON.stringify(data), 'utf8');
});
return _updateDependenciesCache.apply(this, arguments);
}
case 2:
cachedDependencies = _context.sent;
allDependencies = (0, _lodash2.default)(cachedDependencies).concat(newDependencies).sortBy('id').sortedUniqBy('id').value();
return _context.abrupt('return', fs.writeFileAsync(cacheFilePath, (0, _stringify2.default)(allDependencies), 'utf8'));
function dependenciesNotInCache(_x4, _x5, _x6) {
return _dependenciesNotInCache.apply(this, arguments);
}
case 5:
case 'end':
return _context.stop();
}
}
}, _callee, this);
}));
function _dependenciesNotInCache() {
_dependenciesNotInCache = (0, _asyncToGenerator2.default)(function* (dependencies, cacheFilePath, prebuiltBinaryProperties) {
const _ref2 = yield loadCache(cacheFilePath),
cachedDependencies = _ref2.dependencies,
cachedPrebuiltBinaryProperties = _ref2.prebuiltBinaryProperties;
return function updateDependenciesCache(_x, _x2) {
return _ref.apply(this, arguments);
};
}();
if (cachedDependencies.length > 0 && !_lodash.default.isEqual(prebuiltBinaryProperties, cachedPrebuiltBinaryProperties)) {
console.log(`Pre-built binary properties changed, re-evaluating all packages`);
return dependencies;
}
var dependenciesNotInCache = exports.dependenciesNotInCache = function () {
var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(dependencies, cacheFilePath) {
var cachedDependencies;
return _regenerator2.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return loadCache(cacheFilePath);
return _lodash.default.differenceBy(dependencies, cachedDependencies, 'id');
});
return _dependenciesNotInCache.apply(this, arguments);
}
case 2:
cachedDependencies = _context2.sent;
return _context2.abrupt('return', _lodash2.default.differenceBy(dependencies, cachedDependencies, 'id'));
function loadCache(_x7) {
return _loadCache.apply(this, arguments);
}
case 4:
case 'end':
return _context2.stop();
}
}
}, _callee2, this);
}));
function _loadCache() {
_loadCache = (0, _asyncToGenerator2.default)(function* (cacheFilePath) {
try {
const json = yield fs.readFileAsync(cacheFilePath, 'utf8');
const data = JSON.parse(json);
return function dependenciesNotInCache(_x3, _x4) {
return _ref2.apply(this, arguments);
};
}();
var loadCache = exports.loadCache = function () {
var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(cacheFilePath) {
var json;
return _regenerator2.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
_context3.prev = 0;
_context3.next = 3;
return fs.readFileAsync(cacheFilePath, 'utf8');
case 3:
json = _context3.sent;
return _context3.abrupt('return', JSON.parse(json));
case 7:
_context3.prev = 7;
_context3.t0 = _context3['catch'](0);
return _context3.abrupt('return', []);
case 10:
case 'end':
return _context3.stop();
}
if (Array.isArray(data)) {
return {
dependencies: data,
prebuiltBinaryProperties: []
};
}
}, _callee3, this, [[0, 7]]);
}));
return function loadCache(_x5) {
return _ref3.apply(this, arguments);
};
}();
return data;
} catch (fileNotFound) {
return {
dependencies: [],
prebuiltBinaryProperties: []
};
}
});
return _loadCache.apply(this, arguments);
}
var dependenciesFromPackageLock = exports.dependenciesFromPackageLock = function () {
var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(path) {
var json, dependencyTree;
return _regenerator2.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_context4.next = 2;
return fs.readFileAsync(path, 'utf8');
function dependenciesFromPackageLock(_x8) {
return _dependenciesFromPackageLock.apply(this, arguments);
}
case 2:
json = _context4.sent;
dependencyTree = dependenciesRecursive(JSON.parse(json));
return _context4.abrupt('return', (0, _lodash2.default)(dependencyTree).flattenDeep().map(function (_ref5) {
var name = _ref5.name,
version = _ref5.version;
return { id: name + '@' + version, name: name, version: version };
}).sortBy('id').sortedUniqBy('id').value());
function _dependenciesFromPackageLock() {
_dependenciesFromPackageLock = (0, _asyncToGenerator2.default)(function* (path) {
const json = yield fs.readFileAsync(path, 'utf8');
const dependencyTree = dependenciesRecursive(JSON.parse(json));
return (0, _lodash.default)(dependencyTree).flattenDeep().map(({
name,
version
}) => ({
id: `${name}@${version}`,
name,
version
})).sortBy('id').sortedUniqBy('id').value();
});
return _dependenciesFromPackageLock.apply(this, arguments);
}
case 5:
case 'end':
return _context4.stop();
}
}
}, _callee4, this);
}));
return function dependenciesFromPackageLock(_x6) {
return _ref4.apply(this, arguments);
};
}();
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _bluebird = require('bluebird');
var _bluebird2 = _interopRequireDefault(_bluebird);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var fs = _bluebird2.default.promisifyAll(require('fs'));
function dependenciesRecursive(_ref6) {
var dependencies = _ref6.dependencies;
return (0, _lodash2.default)(dependencies).omitBy(function (_ref7) {
var bundled = _ref7.bundled,
dev = _ref7.dev;
return bundled || dev;
}).mapValues(function (props, name) {
return [{ name: name, version: props.version }].concat(dependenciesRecursive(props));
}).values().value();
function dependenciesRecursive({
dependencies
}) {
return (0, _lodash.default)(dependencies).omitBy(({
bundled,
dev
}) => bundled || dev).mapValues((props, name) => [{
name,
version: props.version
}].concat(dependenciesRecursive(props))).values().value();
}

@@ -1,61 +0,30 @@

'use strict';
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.synchronize = undefined;
exports.synchronize = synchronize;
var _regenerator = require('babel-runtime/regenerator');
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _regenerator2 = _interopRequireDefault(_regenerator);
var _download = require("../src/download");
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _resolve = require("../src/resolve");
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
function synchronize(_x) {
return _synchronize.apply(this, arguments);
}
var synchronize = exports.synchronize = function () {
var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(options) {
var cacheFilePath, packages, newPackages;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
cacheFilePath = options.rootFolder + '/.registry-sync-cache.json';
_context.next = 3;
return (0, _resolve.dependenciesFromPackageLock)(options.manifest);
case 3:
packages = _context.sent;
_context.next = 6;
return (0, _resolve.dependenciesNotInCache)(packages, cacheFilePath);
case 6:
newPackages = _context.sent;
_context.next = 9;
return (0, _download.downloadAll)(newPackages, options);
case 9:
_context.next = 11;
return (0, _resolve.updateDependenciesCache)(newPackages, cacheFilePath);
case 11:
return _context.abrupt('return', newPackages);
case 12:
case 'end':
return _context.stop();
}
}
}, _callee, this);
}));
return function synchronize(_x) {
return _ref.apply(this, arguments);
};
}();
var _download = require('../src/download');
var _resolve = require('../src/resolve');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _synchronize() {
_synchronize = (0, _asyncToGenerator2.default)(function* (options) {
const cacheFilePath = `${options.rootFolder}/.registry-sync-cache.json`;
const packages = yield (0, _resolve.dependenciesFromPackageLock)(options.manifest);
const newPackages = yield (0, _resolve.dependenciesNotInCache)(packages, cacheFilePath, options.prebuiltBinaryProperties);
yield (0, _download.downloadAll)(newPackages, options);
yield (0, _resolve.updateDependenciesCache)(newPackages, cacheFilePath, options.prebuiltBinaryProperties);
return newPackages;
});
return _synchronize.apply(this, arguments);
}
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