UNPKG

@pnp/cli-microsoft365

Version:

Manage Microsoft 365 and SharePoint Framework projects on any platform

129 lines 6.08 kB
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var _DependencyRule_instances, _DependencyRule_needsUpdate, _DependencyRule_getMaxVersion; import semver from 'semver'; import { JsonRule } from '../../JsonRule.js'; export class DependencyRule extends JsonRule { constructor(packageName, packageVersion, isDevDep = false, isOptional = false, add = true, isOverride = false) { super(); _DependencyRule_instances.add(this); this.packageName = packageName; this.packageVersion = packageVersion; this.isDevDep = isDevDep; this.isOptional = isOptional; this.add = add; this.isOverride = isOverride; } get title() { return this.packageName; } get description() { return `${(this.add ? 'Upgrade' : 'Remove')} SharePoint Framework ${(this.isOverride ? 'override ' : this.isDevDep ? 'dev ' : '')}dependency package ${this.packageName}`; } get resolution() { if (this.isOverride) { return this.add ? `override overrides.${this.packageName}=${this.packageVersion}` : `removeOverride overrides.${this.packageName}`; } return this.add ? `${(this.isDevDep ? 'installDev' : 'install')} ${this.packageName}@${this.packageVersion}` : `${(this.isDevDep ? 'uninstallDev' : 'uninstall')} ${this.packageName}`; } get resolutionType() { return 'cmd'; } get severity() { return 'Required'; } get file() { return './package.json'; } // eslint-disable-next-line @typescript-eslint/no-unused-vars customCondition(project) { return false; } visit(project, findings) { if (!project.packageJson) { return; } const projectDependencies = this.isOverride ? project.packageJson.overrides : this.isDevDep ? project.packageJson.devDependencies : project.packageJson.dependencies; const versionEntry = projectDependencies ? projectDependencies[this.packageName] : ''; if (this.add) { let jsonProperty = this.isOverride ? 'overrides' : this.isDevDep ? 'devDependencies' : 'dependencies'; if (versionEntry) { jsonProperty += `.${this.packageName}`; if (__classPrivateFieldGet(this, _DependencyRule_instances, "m", _DependencyRule_needsUpdate).call(this, this.packageVersion, versionEntry)) { const node = this.getAstNodeFromFile(project.packageJson, jsonProperty); this.addFindingWithPosition(findings, node); } } else { if (!this.isOptional || this.customCondition(project)) { const node = this.getAstNodeFromFile(project.packageJson, jsonProperty); this.addFindingWithCustomInfo(this.packageName, this.description.replace('Upgrade', 'Install'), [{ file: this.file, resolution: this.resolution, position: this.getPositionFromNode(node) }], findings); } } } else { const jsonProperty = `${(this.isOverride ? 'overrides' : this.isDevDep ? 'devDependencies' : 'dependencies')}.${this.packageName}`; if (versionEntry) { const node = this.getAstNodeFromFile(project.packageJson, jsonProperty); this.addFindingWithPosition(findings, node); } } } } _DependencyRule_instances = new WeakSet(), _DependencyRule_needsUpdate = function _DependencyRule_needsUpdate(ruleVersion, currentVersion) { try { // Get minimum versions for both const ruleMin = semver.minVersion(ruleVersion); const currentMin = semver.minVersion(currentVersion); // Check if ranges overlap const rangesOverlap = semver.intersects(ruleVersion, currentVersion); if (rangesOverlap) { // Even if they overlap, update if rule requires a higher minimum version if (ruleMin && currentMin && semver.gt(ruleMin, currentMin)) { return true; } return false; } // Ranges don't overlap - check if rule range is greater // Get the maximum version that satisfies the current range const currentMax = __classPrivateFieldGet(this, _DependencyRule_instances, "m", _DependencyRule_getMaxVersion).call(this, currentVersion); // If rule's minimum is greater than current's maximum, update is needed return !!(ruleMin && currentMax && semver.gt(ruleMin, currentMax)); } catch { return false; } }, _DependencyRule_getMaxVersion = function _DependencyRule_getMaxVersion(range) { const rangeObj = new semver.Range(range); // If it's a specific version (no range operators), return it if (semver.valid(range)) { return semver.parse(range); } // For ranges, get the highest version from the set // Check the range set to find upper bounds let maxVer = null; for (const comparatorSet of rangeObj.set) { for (const comparator of comparatorSet) { if (comparator.operator === '<' || comparator.operator === '<=') { const ver = comparator.semver; if (!maxVer || semver.gt(ver, maxVer)) { maxVer = ver; } } } } // If no upper bound found, use minVersion as fallback return maxVer || semver.minVersion(range); }; //# sourceMappingURL=DependencyRule.js.map