UNPKG

@sentry/wizard

Version:

Sentry wizard helping you to configure your project

57 lines 2.58 kB
"use strict"; 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