swap-lock-registry
Version:
A CLI tool to swap the registry URL in the lock file without having to remove it
50 lines (49 loc) • 2.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseNpmLockFile = exports.processDependencies = exports.traitNpmLockFile = void 0;
const utils_1 = require("./utils");
const fs_1 = require("fs");
const logger_1 = require("./logger");
async function traitNpmLockFile(lockFile, opts) {
var _a;
const lockFileObject = await parseNpmLockFile(lockFile);
try {
await Promise.all(Object.keys((_a = lockFileObject.packages) !== null && _a !== void 0 ? _a : {})
.filter((pkg) => !!pkg)
.map(async (pkg) => {
var _a;
await (0, utils_1.traitPackage)(lockFileObject.packages, pkg, pkg.replace(/^.*node_modules\//g, ''), (_a = lockFileObject.packages[pkg].from) !== null && _a !== void 0 ? _a : lockFileObject.packages[pkg].version, Object.assign(Object.assign({}, opts), { lockFile }));
}));
await processDependencies(lockFileObject.dependencies, Object.assign(Object.assign({}, opts), { lockFile }));
await fs_1.promises.writeFile(lockFile, JSON.stringify(lockFileObject, null, 2) + '\n');
logger_1.logger.clearLine();
logger_1.logger.success(lockFile, 'done');
}
catch (error) {
console.log(error);
throw new Error('Error while fetching packages metadata, please check the registry url');
}
}
exports.traitNpmLockFile = traitNpmLockFile;
async function processDependencies(dependencies, opts) {
if (!dependencies)
return;
await Promise.all(Object.keys(dependencies)
.filter((pkg) => !!pkg)
.map(async (pkg) => {
var _a;
await (0, utils_1.traitPackage)(dependencies, pkg, pkg, (_a = dependencies[pkg].from) !== null && _a !== void 0 ? _a : dependencies[pkg].version, opts);
await processDependencies(dependencies[pkg].dependencies, opts);
}));
}
exports.processDependencies = processDependencies;
async function parseNpmLockFile(lockFile) {
const lockFileString = await (0, utils_1.readFile)(lockFile);
try {
return JSON.parse(lockFileString);
}
catch (error) {
throw new Error(`Could not parse ${lockFile}!`);
}
}
exports.parseNpmLockFile = parseNpmLockFile;