48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| Object.defineProperty(exports, '__esModule', { value: true });
 | |
| 
 | |
| var helperPluginUtils = require('@babel/helper-plugin-utils');
 | |
| 
 | |
| function shouldTransform(path) {
 | |
|   const {
 | |
|     node
 | |
|   } = path;
 | |
|   const functionId = node.id;
 | |
|   if (!functionId) return false;
 | |
|   const name = functionId.name;
 | |
|   const paramNameBinding = path.scope.getOwnBinding(name);
 | |
|   if (paramNameBinding === undefined) {
 | |
|     return false;
 | |
|   }
 | |
|   if (paramNameBinding.kind !== "param") {
 | |
|     return false;
 | |
|   }
 | |
|   if (paramNameBinding.identifier === paramNameBinding.path.node) {
 | |
|     return false;
 | |
|   }
 | |
|   return name;
 | |
| }
 | |
| 
 | |
| var index = helperPluginUtils.declare(api => {
 | |
|   api.assertVersion("^7.16.0");
 | |
|   return {
 | |
|     name: "plugin-bugfix-safari-id-destructuring-collision-in-function-expression",
 | |
|     visitor: {
 | |
|       FunctionExpression(path) {
 | |
|         const name = shouldTransform(path);
 | |
|         if (name) {
 | |
|           const {
 | |
|             scope
 | |
|           } = path;
 | |
|           const newParamName = scope.generateUid(name);
 | |
|           scope.rename(name, newParamName);
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   };
 | |
| });
 | |
| 
 | |
| exports.default = index;
 | |
| //# sourceMappingURL=index.js.map
 |