shouldStoreRHSInTemporaryVariable.js 1.1 KB

1234567891011121314151617181920212223242526
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = shouldStoreRHSInTemporaryVariable;
  6. var _core = require("@babel/core");
  7. function shouldStoreRHSInTemporaryVariable(node) {
  8. if (_core.types.isArrayPattern(node)) {
  9. const nonNullElements = node.elements.filter(element => element !== null);
  10. if (nonNullElements.length > 1) return true;else return shouldStoreRHSInTemporaryVariable(nonNullElements[0]);
  11. } else if (_core.types.isObjectPattern(node)) {
  12. if (node.properties.length > 1) return true;else if (node.properties.length === 0) return false;else return shouldStoreRHSInTemporaryVariable(node.properties[0]);
  13. } else if (_core.types.isObjectProperty(node)) {
  14. return shouldStoreRHSInTemporaryVariable(node.value);
  15. } else if (_core.types.isAssignmentPattern(node)) {
  16. return shouldStoreRHSInTemporaryVariable(node.left);
  17. } else if (_core.types.isRestElement(node)) {
  18. if (_core.types.isIdentifier(node.argument)) return true;
  19. return shouldStoreRHSInTemporaryVariable(node.argument);
  20. } else {
  21. return false;
  22. }
  23. }