/** * Check if it has been supported. * @param {SupportInfo} info The support info. * @param {Range} configured The configured version range. */ function isSupported({ backported, supported }, configured) { if ( backported && backported.length >= 2 && !backported.every((v, i) => i === 0 || lt(backported[i - 1], v)) ) { throw new Error("Invalid BackportConfiguration") } if (supported == null) { return false } if (backported == null || backported.length === 0) { return !configured.intersects(getSemverRange(`<${supported}`)) } return !configured.intersects( getSemverRange( [...backported, supported] .map((v, i) => (i === 0 ? `<${v}` : `>=${major(v)}.0.0 <${v}`)) .join(" || ") ) ) }
return ( !aCase.supported || options.version.intersects(getSemverRange(`<${aCase.supported}`)) descriptor.data.version = options.version.raw } else { descriptor.data = { version: options.version.raw }
_getApplication(name, version) { const appVersions = this.applications.get(name); if (!appVersions) return null; if (!version) return appVersions.get('latest'); // when version is not a range simply return matched if (semver.valid(version)) return appVersions.get(version); // search matching version, first matched will be the latest try { const range = new semver.Range(version); const versions = this._cachedVersions.get(name); for (let i = 0; i < versions.length; i++) { // version === [versionCode, app] const version = versions[i]; if (range.test(version[0])) return version[1]; } } catch (error) { // ignored } return null; }