UNPKG

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
"use strict"; 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;