@sentry/wizard
Version:
Sentry wizard helping you to configure your project
57 lines • 2.58 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.hasPackageInstalled = exports.checkPackageVersion = void 0;
const semver_1 = require("semver");
const Logging_1 = require("./Logging");
function checkPackageVersion(appPackage, packageName, acceptableVersions, canBeLatest) {
const depsVersion = appPackage?.dependencies?.[packageName] ?? '';
const devDepsVersion = appPackage?.devDependencies?.[packageName] ?? '';
if (!depsVersion && !devDepsVersion) {
(0, Logging_1.red)(`✗ ${packageName} isn't in your dependencies.`);
(0, Logging_1.red)(' Please install it with yarn/npm.');
return false;
}
if (!fulfillsVersionRange(depsVersion, acceptableVersions, canBeLatest) &&
!fulfillsVersionRange(devDepsVersion, acceptableVersions, canBeLatest)) {
(0, Logging_1.red)(`✗ Your \`package.json\` specifies a version of \`${packageName}\` outside of the compatible version range ${acceptableVersions}.\n`);
return false;
}
(0, Logging_1.green)(`✓ A compatible version of \`${packageName}\` is specified in \`package.json\`.`);
return true;
}
exports.checkPackageVersion = checkPackageVersion;
function fulfillsVersionRange(version, acceptableVersions, canBeLatest) {
if (version === 'latest') {
return canBeLatest;
}
let cleanedUserVersion, isRange;
if ((0, semver_1.valid)(version)) {
cleanedUserVersion = (0, semver_1.valid)(version);
isRange = false;
}
else if ((0, semver_1.validRange)(version)) {
cleanedUserVersion = (0, semver_1.validRange)(version);
isRange = true;
}
return (
// If the given version is a bogus format, this will still be undefined and we'll automatically reject it
!!cleanedUserVersion &&
(isRange
? (0, semver_1.subset)(cleanedUserVersion, acceptableVersions)
: (0, semver_1.satisfies)(cleanedUserVersion, acceptableVersions)));
}
/**
* Determines if the passed `package.json` object has the passed package installed.
*
* @param appPackage The `package.json` object
* @param packageName The name of the package to check for
*
* @returns `true` if the package is installed, `false` otherwise
*/
function hasPackageInstalled(appPackage, packageName) {
const depsVersion = appPackage.dependencies?.[packageName];
const devDepsVersion = appPackage.devDependencies?.[packageName];
return !!depsVersion || !!devDepsVersion;
}
exports.hasPackageInstalled = hasPackageInstalled;
//# sourceMappingURL=Package.js.map
;