@ts-common/azure-js-dev-tools
Version:
Developer dependencies for TypeScript related projects
144 lines • 6.61 kB
JavaScript
;
/**
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for
* license information.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.removePackageLockJsonDependencies = exports.isPackageJsonPublished = exports.incrementPackageJsonMinorVersion = exports.writePackageJsonFileSync = exports.readPackageJsonFileSync = exports.findPackageJsonFileSync = exports.writePackageLockJsonFileSync = exports.readPackageLockJsonFileSync = void 0;
var tslib_1 = require("tslib");
var fs = tslib_1.__importStar(require("fs"));
var arrays_1 = require("./arrays");
var npm_1 = require("./npm");
var path_1 = require("./path");
var version_1 = require("./version");
/**
* Read and parse the PackageJson object found at the provided file path.
* @param packageJsonFilePath The path to the file that will be parsed as a PackageJson object.
* @returns The parsed PackageJson object.
*/
function readPackageLockJsonFileSync(packageJsonFilePath) {
return JSON.parse(fs.readFileSync(packageJsonFilePath, { encoding: "utf8" }));
}
exports.readPackageLockJsonFileSync = readPackageLockJsonFileSync;
/**
* Save to the provided PackageJson object to the file at the provided file path.
* @param packageLockJson The PackageLockJson object to save.
* @param packageJsonFilePath The path to the file where the PackageLockJson object will be saved to.
*/
function writePackageLockJsonFileSync(packageLockJson, packageJsonFilePath) {
fs.writeFileSync(packageJsonFilePath, JSON.stringify(packageLockJson, undefined, 2), { encoding: "utf8" });
}
exports.writePackageLockJsonFileSync = writePackageLockJsonFileSync;
/**
* Find a package.json file at the provided path or in one of its ancestor folders.
* @param pathString The path where the search for the package.json file will begin.
* @returns The path to the found package.json file, or undefined if no file was found.
*/
function findPackageJsonFileSync(pathString) {
var result;
function fileExists(filePath) {
return fs.existsSync(filePath) && fs.lstatSync(filePath).isFile();
}
while (pathString && !result) {
if (path_1.getName(pathString) === "package.json" && fileExists(pathString)) {
result = pathString;
}
else {
var packageJsonFilePath = path_1.joinPath(pathString, "package.json");
if (fileExists(packageJsonFilePath)) {
result = packageJsonFilePath;
}
else {
pathString = path_1.getParentFolderPath(pathString);
}
}
}
return result;
}
exports.findPackageJsonFileSync = findPackageJsonFileSync;
/**
* Read and parse the PackageJson object found at the provided file path.
* @param packageJsonFilePath The path to the file that will be parsed as a PackageJson object.
* @returns The parsed PackageJson object.
*/
function readPackageJsonFileSync(packageJsonFilePath) {
return JSON.parse(fs.readFileSync(packageJsonFilePath, { encoding: "utf8" }));
}
exports.readPackageJsonFileSync = readPackageJsonFileSync;
/**
* Save to the provided PackageJson object to the file at the provided file path.
* @param packageJson The PackageJson object to save.
* @param packageJsonFilePath The path to the file where the PackageJson object will be saved to.
*/
function writePackageJsonFileSync(packageJson, packageJsonFilePath) {
fs.writeFileSync(packageJsonFilePath, JSON.stringify(packageJson, undefined, 2), { encoding: "utf8" });
}
exports.writePackageJsonFileSync = writePackageJsonFileSync;
/**
* If a version is specified in the provided PackageJson object, then increment the version's minor
* number.
* @param packageJson The PackageJson object to update.
* @returns Whether or not the version number was successfully updated.
*/
function incrementPackageJsonMinorVersion(packageJson) {
var result = false;
if (packageJson.version) {
var version = new version_1.Version(packageJson.version);
version.bumpMinor();
packageJson.version = version.toString();
result = true;
}
return result;
}
exports.incrementPackageJsonMinorVersion = incrementPackageJsonMinorVersion;
/**
* Get whether or not the provided packageJson has been published to NPM.
* @param packageJson The packageJson to check.
* @returns Whether or not the provided packageJson has been published to NPM.
*/
function isPackageJsonPublished(packageJson) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var result, packageName, packageVersion, publishedVersions;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
result = false;
packageName = packageJson.name;
packageVersion = packageJson.version;
if (!(packageName && packageVersion)) return [3 /*break*/, 2];
return [4 /*yield*/, npm_1.npmView({ packageName: packageName })];
case 1:
publishedVersions = (_a.sent()).versions;
result = arrays_1.contains(publishedVersions, packageVersion);
_a.label = 2;
case 2: return [2 /*return*/, result];
}
});
});
}
exports.isPackageJsonPublished = isPackageJsonPublished;
function removePackageLockJsonDependencies(packageLockJson) {
var e_1, _a;
var dependenciesToRemove = [];
for (var _i = 1; _i < arguments.length; _i++) {
dependenciesToRemove[_i - 1] = arguments[_i];
}
if (packageLockJson && dependenciesToRemove && dependenciesToRemove.length > 0) {
try {
for (var dependenciesToRemove_1 = tslib_1.__values(dependenciesToRemove), dependenciesToRemove_1_1 = dependenciesToRemove_1.next(); !dependenciesToRemove_1_1.done; dependenciesToRemove_1_1 = dependenciesToRemove_1.next()) {
var dependencyToRemove = dependenciesToRemove_1_1.value;
delete packageLockJson.dependencies[dependencyToRemove];
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (dependenciesToRemove_1_1 && !dependenciesToRemove_1_1.done && (_a = dependenciesToRemove_1.return)) _a.call(dependenciesToRemove_1);
}
finally { if (e_1) throw e_1.error; }
}
}
}
exports.removePackageLockJsonDependencies = removePackageLockJsonDependencies;
//# sourceMappingURL=packageJson.js.map