You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					34 lines
				
				1.5 KiB
			
		
		
			
		
	
	
					34 lines
				
				1.5 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								exports.__esModule = true;
							 | 
						||
| 
								 | 
							
								exports.hasMinVersion = hasMinVersion;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _semver = _interopRequireDefault(require("semver"));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function hasMinVersion(minVersion, runtimeVersion) {
							 | 
						||
| 
								 | 
							
								  // If the range is unavailable, we're running the script during Babel's
							 | 
						||
| 
								 | 
							
								  // build process, and we want to assume that all versions are satisfied so
							 | 
						||
| 
								 | 
							
								  // that the built output will include all definitions.
							 | 
						||
| 
								 | 
							
								  if (!runtimeVersion || !minVersion) return true; // semver.intersects() has some surprising behavior with comparing ranges
							 | 
						||
| 
								 | 
							
								  // with preprelease versions. We add '^' to ensure that we are always
							 | 
						||
| 
								 | 
							
								  // comparing ranges with ranges, which sidesteps this logic.
							 | 
						||
| 
								 | 
							
								  // For example:
							 | 
						||
| 
								 | 
							
								  //
							 | 
						||
| 
								 | 
							
								  //   semver.intersects(`<7.0.1`, "7.0.0-beta.0") // false - surprising
							 | 
						||
| 
								 | 
							
								  //   semver.intersects(`<7.0.1`, "^7.0.0-beta.0") // true - expected
							 | 
						||
| 
								 | 
							
								  //
							 | 
						||
| 
								 | 
							
								  // This is because the first falls back to
							 | 
						||
| 
								 | 
							
								  //
							 | 
						||
| 
								 | 
							
								  //   semver.satisfies("7.0.0-beta.0", `<7.0.1`) // false - surprising
							 | 
						||
| 
								 | 
							
								  //
							 | 
						||
| 
								 | 
							
								  // and this fails because a prerelease version can only satisfy a range
							 | 
						||
| 
								 | 
							
								  // if it is a prerelease within the same major/minor/patch range.
							 | 
						||
| 
								 | 
							
								  //
							 | 
						||
| 
								 | 
							
								  // Note: If this is found to have issues, please also revist the logic in
							 | 
						||
| 
								 | 
							
								  // babel-core's availableHelper() API.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (_semver.default.valid(runtimeVersion)) runtimeVersion = `^${runtimeVersion}`;
							 | 
						||
| 
								 | 
							
								  return !_semver.default.intersects(`<${minVersion}`, runtimeVersion) && !_semver.default.intersects(`>=8.0.0`, runtimeVersion);
							 | 
						||
| 
								 | 
							
								}
							 |