| 'use strict'; |
| |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| exports.default = extractValueFromUnaryExpression; |
| /** |
| * Extractor function for a UnaryExpression type value node. |
| * A unary expression is an expression with a unary operator. |
| * For example, !"foobar" will evaluate to false, so this will return false. |
| * |
| * @param - value - AST Value object with type `UnaryExpression` |
| * @returns - The extracted value converted to correct type. |
| */ |
| function extractValueFromUnaryExpression(value) { |
| // eslint-disable-next-line global-require |
| var getValue = require('./index.js').default; |
| var operator = value.operator, |
| argument = value.argument; |
| |
| |
| switch (operator) { |
| case '-': |
| return -getValue(argument); |
| case '+': |
| return +getValue(argument); // eslint-disable-line no-implicit-coercion |
| case '!': |
| return !getValue(argument); |
| case '~': |
| return ~getValue(argument); // eslint-disable-line no-bitwise |
| case 'delete': |
| // I believe delete statements evaluate to true. |
| return true; |
| case 'typeof': |
| case 'void': |
| default: |
| return undefined; |
| } |
| } |