123456789101112131415161718192021222324252627282930313233343536373839 |
- '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;
- }
- }
|