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.
		
		
		
		
		
			
		
			
				
					46 lines
				
				960 B
			
		
		
			
		
	
	
					46 lines
				
				960 B
			| 
											3 years ago
										 | /** | ||
|  |  * Copyright (c) 2014-present, Facebook, Inc. | ||
|  |  * | ||
|  |  * This source code is licensed under the MIT license found in the | ||
|  |  * LICENSE file in the root directory of this source tree. | ||
|  |  */ | ||
|  | 
 | ||
|  | let currentTypes = null; | ||
|  | 
 | ||
|  | export function wrapWithTypes(types, fn) { | ||
|  |   return function (...args) { | ||
|  |     const oldTypes = currentTypes; | ||
|  |     currentTypes = types; | ||
|  |     try { | ||
|  |       return fn.apply(this, args); | ||
|  |     } finally { | ||
|  |       currentTypes = oldTypes; | ||
|  |     } | ||
|  |   }; | ||
|  | } | ||
|  | 
 | ||
|  | export function getTypes() { | ||
|  |   return currentTypes; | ||
|  | } | ||
|  | 
 | ||
|  | export function runtimeProperty(name) { | ||
|  |   const t = getTypes(); | ||
|  |   return t.memberExpression( | ||
|  |     t.identifier("regeneratorRuntime"), | ||
|  |     t.identifier(name), | ||
|  |     false | ||
|  |   ); | ||
|  | } | ||
|  | 
 | ||
|  | export function isReference(path) { | ||
|  |   return path.isReferenced() || path.parentPath.isAssignmentExpression({ left: path.node }); | ||
|  | } | ||
|  | 
 | ||
|  | export function replaceWithOrRemove(path, replacement) { | ||
|  |   if (replacement) { | ||
|  |     path.replaceWith(replacement) | ||
|  |   } else { | ||
|  |     path.remove(); | ||
|  |   } | ||
|  | } |