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.
		
		
		
		
		
			
		
			
				
					61 lines
				
				1.8 KiB
			
		
		
			
		
	
	
					61 lines
				
				1.8 KiB
			| 
											3 years ago
										 | "use strict"; | ||
|  | 
 | ||
|  | Object.defineProperty(exports, "__esModule", { | ||
|  |   value: true | ||
|  | }); | ||
|  | exports.default = void 0; | ||
|  | var _helperPluginUtils = require("@babel/helper-plugin-utils"); | ||
|  | var _pluginSyntaxLogicalAssignmentOperators = require("@babel/plugin-syntax-logical-assignment-operators"); | ||
|  | var _core = require("@babel/core"); | ||
|  | var _default = (0, _helperPluginUtils.declare)(api => { | ||
|  |   api.assertVersion(7); | ||
|  |   return { | ||
|  |     name: "proposal-logical-assignment-operators", | ||
|  |     inherits: _pluginSyntaxLogicalAssignmentOperators.default, | ||
|  |     visitor: { | ||
|  |       AssignmentExpression(path) { | ||
|  |         const { | ||
|  |           node, | ||
|  |           scope | ||
|  |         } = path; | ||
|  |         const { | ||
|  |           operator, | ||
|  |           left, | ||
|  |           right | ||
|  |         } = node; | ||
|  |         const operatorTrunc = operator.slice(0, -1); | ||
|  |         if (!_core.types.LOGICAL_OPERATORS.includes(operatorTrunc)) { | ||
|  |           return; | ||
|  |         } | ||
|  |         const lhs = _core.types.cloneNode(left); | ||
|  |         if (_core.types.isMemberExpression(left)) { | ||
|  |           const { | ||
|  |             object, | ||
|  |             property, | ||
|  |             computed | ||
|  |           } = left; | ||
|  |           const memo = scope.maybeGenerateMemoised(object); | ||
|  |           if (memo) { | ||
|  |             left.object = memo; | ||
|  |             lhs.object = _core.types.assignmentExpression("=", _core.types.cloneNode(memo), | ||
|  |             object); | ||
|  |           } | ||
|  |           if (computed) { | ||
|  |             const memo = scope.maybeGenerateMemoised(property); | ||
|  |             if (memo) { | ||
|  |               left.property = memo; | ||
|  |               lhs.property = _core.types.assignmentExpression("=", _core.types.cloneNode(memo), | ||
|  |               property); | ||
|  |             } | ||
|  |           } | ||
|  |         } | ||
|  |         path.replaceWith(_core.types.logicalExpression( | ||
|  |         operatorTrunc, lhs, _core.types.assignmentExpression("=", left, right))); | ||
|  |       } | ||
|  |     } | ||
|  |   }; | ||
|  | }); | ||
|  | exports.default = _default; | ||
|  | 
 | ||
|  | //# sourceMappingURL=index.js.map
 |