WIP - add extractor, generate snippet_data
This commit is contained in:
14
node_modules/jsx-ast-utils/lib/values/JSXElement.js
generated
vendored
Normal file
14
node_modules/jsx-ast-utils/lib/values/JSXElement.js
generated
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = extractValueFromJSXElement;
|
||||
/**
|
||||
* Extractor function for a JSXElement type value node.
|
||||
*
|
||||
* Returns self-closing element with correct name.
|
||||
*/
|
||||
function extractValueFromJSXElement(value) {
|
||||
return "<" + value.openingElement.name.name + " />";
|
||||
}
|
||||
27
node_modules/jsx-ast-utils/lib/values/Literal.js
generated
vendored
Normal file
27
node_modules/jsx-ast-utils/lib/values/Literal.js
generated
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = extractValueFromLiteral;
|
||||
/**
|
||||
* Extractor function for a Literal type value node.
|
||||
*
|
||||
* @param - value - AST Value object with type `Literal`
|
||||
* @returns { String|Boolean } - The extracted value converted to correct type.
|
||||
*/
|
||||
function extractValueFromLiteral(value) {
|
||||
var extractedValue = value.value;
|
||||
|
||||
|
||||
var normalizedStringValue = typeof extractedValue === 'string' && extractedValue.toLowerCase();
|
||||
if (normalizedStringValue === 'true') {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (normalizedStringValue === 'false') {
|
||||
return false;
|
||||
}
|
||||
|
||||
return extractedValue;
|
||||
}
|
||||
19
node_modules/jsx-ast-utils/lib/values/expressions/ArrayExpression.js
generated
vendored
Normal file
19
node_modules/jsx-ast-utils/lib/values/expressions/ArrayExpression.js
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = extractValueFromArrayExpression;
|
||||
/**
|
||||
* Extractor function for an ArrayExpression type value node.
|
||||
* An array expression is an expression with [] syntax.
|
||||
*
|
||||
* @returns - An array of the extracted elements.
|
||||
*/
|
||||
function extractValueFromArrayExpression(value) {
|
||||
// eslint-disable-next-line global-require
|
||||
var getValue = require('./index.js').default;
|
||||
return value.elements.map(function (element) {
|
||||
return getValue(element);
|
||||
});
|
||||
}
|
||||
78
node_modules/jsx-ast-utils/lib/values/expressions/BinaryExpression.js
generated
vendored
Normal file
78
node_modules/jsx-ast-utils/lib/values/expressions/BinaryExpression.js
generated
vendored
Normal file
@ -0,0 +1,78 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = extractValueFromBinaryExpression;
|
||||
/**
|
||||
* Extractor function for a BinaryExpression type value node.
|
||||
* A binary expression has a left and right side separated by an operator
|
||||
* such as `a + b`.
|
||||
*
|
||||
* @param - value - AST Value object with type `BinaryExpression`
|
||||
* @returns - The extracted value converted to correct type.
|
||||
*/
|
||||
function extractValueFromBinaryExpression(value) {
|
||||
// eslint-disable-next-line global-require
|
||||
var getValue = require('./index.js').default;
|
||||
var operator = value.operator,
|
||||
left = value.left,
|
||||
right = value.right;
|
||||
|
||||
var leftVal = getValue(left);
|
||||
var rightVal = getValue(right);
|
||||
|
||||
switch (operator) {
|
||||
case '==':
|
||||
return leftVal == rightVal; // eslint-disable-line
|
||||
case '!=':
|
||||
return leftVal != rightVal; // eslint-disable-line
|
||||
case '===':
|
||||
return leftVal === rightVal;
|
||||
case '!==':
|
||||
return leftVal !== rightVal;
|
||||
case '<':
|
||||
return leftVal < rightVal;
|
||||
case '<=':
|
||||
return leftVal <= rightVal;
|
||||
case '>':
|
||||
return leftVal > rightVal;
|
||||
case '>=':
|
||||
return leftVal >= rightVal;
|
||||
case '<<':
|
||||
return leftVal << rightVal; // eslint-disable-line no-bitwise
|
||||
case '>>':
|
||||
return leftVal >> rightVal; // eslint-disable-line no-bitwise
|
||||
case '>>>':
|
||||
return leftVal >>> rightVal; // eslint-disable-line no-bitwise
|
||||
case '+':
|
||||
return leftVal + rightVal;
|
||||
case '-':
|
||||
return leftVal - rightVal;
|
||||
case '*':
|
||||
return leftVal * rightVal;
|
||||
case '/':
|
||||
return leftVal / rightVal;
|
||||
case '%':
|
||||
return leftVal % rightVal;
|
||||
case '|':
|
||||
return leftVal | rightVal; // eslint-disable-line no-bitwise
|
||||
case '^':
|
||||
return leftVal ^ rightVal; // eslint-disable-line no-bitwise
|
||||
case '&':
|
||||
return leftVal & rightVal; // eslint-disable-line no-bitwise
|
||||
case 'in':
|
||||
try {
|
||||
return leftVal in rightVal;
|
||||
} catch (err) {
|
||||
return false;
|
||||
}
|
||||
case 'instanceof':
|
||||
if (typeof rightVal !== 'function') {
|
||||
return false;
|
||||
}
|
||||
return leftVal instanceof rightVal;
|
||||
default:
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
30
node_modules/jsx-ast-utils/lib/values/expressions/BindExpression.js
generated
vendored
Normal file
30
node_modules/jsx-ast-utils/lib/values/expressions/BindExpression.js
generated
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = extractValueFromBindExpression;
|
||||
/**
|
||||
* Extractor function for a BindExpression type value node.
|
||||
* A bind expression looks like `::this.foo`
|
||||
* This will return `this.foo.bind(this)` as the value to indicate its existence,
|
||||
* since we can not execute the function this.foo.bind(this) in a static environment.
|
||||
*
|
||||
* @param - value - AST Value object with type `BindExpression`
|
||||
* @returns - The extracted value converted to correct type.
|
||||
*/
|
||||
function extractValueFromBindExpression(value) {
|
||||
// eslint-disable-next-line global-require
|
||||
var getValue = require('./index.js').default;
|
||||
var callee = getValue(value.callee);
|
||||
|
||||
// If value.object === null, the callee must be a MemberExpression.
|
||||
// https://github.com/babel/babylon/blob/master/ast/spec.md#bindexpression
|
||||
var object = value.object === null ? getValue(value.callee.object) : getValue(value.object);
|
||||
|
||||
if (value.object && value.object.property) {
|
||||
return object + '.' + callee + '.bind(' + object + ')';
|
||||
}
|
||||
|
||||
return callee + '.bind(' + object + ')';
|
||||
}
|
||||
20
node_modules/jsx-ast-utils/lib/values/expressions/CallExpression.js
generated
vendored
Normal file
20
node_modules/jsx-ast-utils/lib/values/expressions/CallExpression.js
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = extractValueFromCallExpression;
|
||||
/**
|
||||
* Extractor function for a CallExpression type value node.
|
||||
* A call expression looks like `bar()`
|
||||
* This will return `bar` as the value to indicate its existence,
|
||||
* since we can not execute the function bar in a static environment.
|
||||
*
|
||||
* @param - value - AST Value object with type `CallExpression`
|
||||
* @returns - The extracted value converted to correct type.
|
||||
*/
|
||||
function extractValueFromCallExpression(value) {
|
||||
// eslint-disable-next-line global-require
|
||||
var getValue = require('./index.js').default;
|
||||
return getValue(value.callee);
|
||||
}
|
||||
22
node_modules/jsx-ast-utils/lib/values/expressions/ConditionalExpression.js
generated
vendored
Normal file
22
node_modules/jsx-ast-utils/lib/values/expressions/ConditionalExpression.js
generated
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = extractValueFromConditionalExpression;
|
||||
/**
|
||||
* Extractor function for a ConditionalExpression type value node.
|
||||
*
|
||||
* @param - value - AST Value object with type `ConditionalExpression`
|
||||
* @returns - The extracted value converted to correct type.
|
||||
*/
|
||||
function extractValueFromConditionalExpression(value) {
|
||||
// eslint-disable-next-line global-require
|
||||
var getValue = require('./index.js').default;
|
||||
var test = value.test,
|
||||
alternate = value.alternate,
|
||||
consequent = value.consequent;
|
||||
|
||||
|
||||
return getValue(test) ? getValue(consequent) : getValue(alternate);
|
||||
}
|
||||
19
node_modules/jsx-ast-utils/lib/values/expressions/FunctionExpression.js
generated
vendored
Normal file
19
node_modules/jsx-ast-utils/lib/values/expressions/FunctionExpression.js
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = extractValueFromFunctionExpression;
|
||||
/**
|
||||
* Extractor function for a FunctionExpression type value node.
|
||||
* Statically, we can't execute the given function, so just return a function
|
||||
* to indicate that the value is present.
|
||||
*
|
||||
* @param - value - AST Value object with type `FunctionExpression`
|
||||
* @returns - The extracted value converted to correct type.
|
||||
*/
|
||||
function extractValueFromFunctionExpression(value) {
|
||||
return function () {
|
||||
return value;
|
||||
};
|
||||
}
|
||||
35
node_modules/jsx-ast-utils/lib/values/expressions/Identifier.js
generated
vendored
Normal file
35
node_modules/jsx-ast-utils/lib/values/expressions/Identifier.js
generated
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = extractValueFromIdentifier;
|
||||
var JS_RESERVED = {
|
||||
Array: Array,
|
||||
Date: Date,
|
||||
Infinity: Infinity,
|
||||
Math: Math,
|
||||
Number: Number,
|
||||
Object: Object,
|
||||
String: String,
|
||||
undefined: undefined
|
||||
};
|
||||
|
||||
/**
|
||||
* Extractor function for a Identifier type value node.
|
||||
* An Identifier is usually a reference to a variable.
|
||||
* Just return variable name to determine its existence.
|
||||
*
|
||||
* @param - value - AST Value object with type `Identifier`
|
||||
* @returns - The extracted value converted to correct type.
|
||||
*/
|
||||
function extractValueFromIdentifier(value) {
|
||||
var name = value.name;
|
||||
|
||||
|
||||
if (Object.hasOwnProperty.call(JS_RESERVED, name)) {
|
||||
return JS_RESERVED[name];
|
||||
}
|
||||
|
||||
return name;
|
||||
}
|
||||
26
node_modules/jsx-ast-utils/lib/values/expressions/LogicalExpression.js
generated
vendored
Normal file
26
node_modules/jsx-ast-utils/lib/values/expressions/LogicalExpression.js
generated
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = extractValueFromLogicalExpression;
|
||||
/**
|
||||
* Extractor function for a LogicalExpression type value node.
|
||||
* A logical expression is `a && b` or `a || b`, so we evaluate both sides
|
||||
* and return the extracted value of the expression.
|
||||
*
|
||||
* @param - value - AST Value object with type `LogicalExpression`
|
||||
* @returns - The extracted value converted to correct type.
|
||||
*/
|
||||
function extractValueFromLogicalExpression(value) {
|
||||
// eslint-disable-next-line global-require
|
||||
var getValue = require('./index.js').default;
|
||||
var operator = value.operator,
|
||||
left = value.left,
|
||||
right = value.right;
|
||||
|
||||
var leftVal = getValue(left);
|
||||
var rightVal = getValue(right);
|
||||
|
||||
return operator === '&&' ? leftVal && rightVal : leftVal || rightVal;
|
||||
}
|
||||
19
node_modules/jsx-ast-utils/lib/values/expressions/MemberExpression.js
generated
vendored
Normal file
19
node_modules/jsx-ast-utils/lib/values/expressions/MemberExpression.js
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = extractValueFromMemberExpression;
|
||||
/**
|
||||
* Extractor function for a MemberExpression type value node.
|
||||
* A member expression is accessing a property on an object `obj.property`.
|
||||
*
|
||||
* @param - value - AST Value object with type `MemberExpression`
|
||||
* @returns - The extracted value converted to correct type
|
||||
* and maintaing `obj.property` convention.
|
||||
*/
|
||||
function extractValueFromMemberExpression(value) {
|
||||
// eslint-disable-next-line global-require
|
||||
var getValue = require('./index.js').default;
|
||||
return getValue(value.object) + '.' + getValue(value.property);
|
||||
}
|
||||
15
node_modules/jsx-ast-utils/lib/values/expressions/NewExpression.js
generated
vendored
Normal file
15
node_modules/jsx-ast-utils/lib/values/expressions/NewExpression.js
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = extractValueFromNewExpression;
|
||||
/**
|
||||
* Extractor function for a NewExpression type value node.
|
||||
* A new expression instantiates an object with `new` keyword.
|
||||
*
|
||||
* @returns - an empty object.
|
||||
*/
|
||||
function extractValueFromNewExpression() {
|
||||
return new Object(); // eslint-disable-line
|
||||
}
|
||||
35
node_modules/jsx-ast-utils/lib/values/expressions/ObjectExpression.js
generated
vendored
Normal file
35
node_modules/jsx-ast-utils/lib/values/expressions/ObjectExpression.js
generated
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = extractValueFromObjectExpression;
|
||||
|
||||
var _object = require('object.assign');
|
||||
|
||||
var _object2 = _interopRequireDefault(_object);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
/**
|
||||
* Extractor function for an ObjectExpression type value node.
|
||||
* An object expression is using {}.
|
||||
*
|
||||
* @returns - a representation of the object
|
||||
*/
|
||||
function extractValueFromObjectExpression(value) {
|
||||
// eslint-disable-next-line global-require
|
||||
var getValue = require('./index.js').default;
|
||||
return value.properties.reduce(function (obj, property) {
|
||||
var object = (0, _object2.default)({}, obj);
|
||||
// Support types: SpreadProperty and ExperimentalSpreadProperty
|
||||
if (/^(?:Experimental)?Spread(?:Property|Element)$/.test(property.type)) {
|
||||
if (property.argument.type === 'ObjectExpression') {
|
||||
return (0, _object2.default)(object, extractValueFromObjectExpression(property.argument));
|
||||
}
|
||||
} else {
|
||||
object[getValue(property.key)] = getValue(property.value);
|
||||
}
|
||||
return object;
|
||||
}, {});
|
||||
}
|
||||
19
node_modules/jsx-ast-utils/lib/values/expressions/OptionalMemberExpression.js
generated
vendored
Normal file
19
node_modules/jsx-ast-utils/lib/values/expressions/OptionalMemberExpression.js
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = extractValueFromOptionalMemberExpression;
|
||||
/**
|
||||
* Extractor function for a OptionalMemberExpression type value node.
|
||||
* A member expression is accessing a property on an object `obj.property`.
|
||||
*
|
||||
* @param - value - AST Value object with type `OptionalMemberExpression`
|
||||
* @returns - The extracted value converted to correct type
|
||||
* and maintaing `obj?.property` convention.
|
||||
*/
|
||||
function extractValueFromOptionalMemberExpression(value) {
|
||||
// eslint-disable-next-line global-require
|
||||
var getValue = require('./index.js').default;
|
||||
return getValue(value.object) + '?.' + getValue(value.property);
|
||||
}
|
||||
17
node_modules/jsx-ast-utils/lib/values/expressions/SpreadElement.js
generated
vendored
Normal file
17
node_modules/jsx-ast-utils/lib/values/expressions/SpreadElement.js
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = extractValueFromSpreadElement;
|
||||
/**
|
||||
* Extractor function for a SpreadElement type value node.
|
||||
* We can't statically evaluate an array spread, so just return
|
||||
* undefined.
|
||||
*
|
||||
* @param - value - AST Value object with type `SpreadElement`
|
||||
* @returns - An prototypeless object.
|
||||
*/
|
||||
function extractValueFromSpreadElement() {
|
||||
return undefined;
|
||||
}
|
||||
20
node_modules/jsx-ast-utils/lib/values/expressions/TaggedTemplateExpression.js
generated
vendored
Normal file
20
node_modules/jsx-ast-utils/lib/values/expressions/TaggedTemplateExpression.js
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = extractValueFromTaggedTemplateExpression;
|
||||
|
||||
var _TemplateLiteral = require('./TemplateLiteral');
|
||||
|
||||
var _TemplateLiteral2 = _interopRequireDefault(_TemplateLiteral);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
/**
|
||||
* Returns the string value of a tagged template literal object.
|
||||
* Redirects the bulk of the work to `TemplateLiteral`.
|
||||
*/
|
||||
function extractValueFromTaggedTemplateExpression(value) {
|
||||
return (0, _TemplateLiteral2.default)(value.quasi);
|
||||
}
|
||||
40
node_modules/jsx-ast-utils/lib/values/expressions/TemplateLiteral.js
generated
vendored
Normal file
40
node_modules/jsx-ast-utils/lib/values/expressions/TemplateLiteral.js
generated
vendored
Normal file
@ -0,0 +1,40 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = extractValueFromTemplateLiteral;
|
||||
/**
|
||||
* Returns the string value of a template literal object.
|
||||
* Tries to build it as best as it can based on the passed
|
||||
* prop. For instance `This is a ${prop}` will return 'This is a {prop}'.
|
||||
*
|
||||
* If the template literal builds to undefined (`${undefined}`), then
|
||||
* this should return "undefined".
|
||||
*/
|
||||
function extractValueFromTemplateLiteral(value) {
|
||||
var quasis = value.quasis,
|
||||
expressions = value.expressions;
|
||||
|
||||
var partitions = quasis.concat(expressions);
|
||||
|
||||
return partitions.sort(function (a, b) {
|
||||
return a.start - b.start;
|
||||
}).reduce(function (raw, part) {
|
||||
var type = part.type;
|
||||
|
||||
if (type === 'TemplateElement') {
|
||||
return raw + part.value.raw;
|
||||
}
|
||||
|
||||
if (type === 'Identifier') {
|
||||
return part.name === 'undefined' ? '' + raw + part.name : raw + '{' + part.name + '}';
|
||||
}
|
||||
|
||||
if (type.indexOf('Expression') > -1) {
|
||||
return raw + '{' + type + '}';
|
||||
}
|
||||
|
||||
return raw;
|
||||
}, '');
|
||||
}
|
||||
15
node_modules/jsx-ast-utils/lib/values/expressions/ThisExpression.js
generated
vendored
Normal file
15
node_modules/jsx-ast-utils/lib/values/expressions/ThisExpression.js
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = extractValueFromThisExpression;
|
||||
/**
|
||||
* Extractor function for a ThisExpression type value node.
|
||||
* A this expression is using `this` as an identifier.
|
||||
*
|
||||
* @returns - 'this' as a string.
|
||||
*/
|
||||
function extractValueFromThisExpression() {
|
||||
return 'this';
|
||||
}
|
||||
19
node_modules/jsx-ast-utils/lib/values/expressions/TypeCastExpression.js
generated
vendored
Normal file
19
node_modules/jsx-ast-utils/lib/values/expressions/TypeCastExpression.js
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = extractValueFromTypeCastExpression;
|
||||
/**
|
||||
* Extractor function for a TypeCastExpression type value node.
|
||||
* A type cast expression looks like `(this.handleClick: (event: MouseEvent) => void))`
|
||||
* This will return the expression `this.handleClick`.
|
||||
*
|
||||
* @param - value - AST Value object with type `TypeCastExpression`
|
||||
* @returns - The extracted value converted to correct type.
|
||||
*/
|
||||
function extractValueFromTypeCastExpression(value) {
|
||||
// eslint-disable-next-line global-require
|
||||
var getValue = require('./index.js').default;
|
||||
return getValue(value.expression);
|
||||
}
|
||||
39
node_modules/jsx-ast-utils/lib/values/expressions/UnaryExpression.js
generated
vendored
Normal file
39
node_modules/jsx-ast-utils/lib/values/expressions/UnaryExpression.js
generated
vendored
Normal file
@ -0,0 +1,39 @@
|
||||
'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;
|
||||
}
|
||||
}
|
||||
33
node_modules/jsx-ast-utils/lib/values/expressions/UpdateExpression.js
generated
vendored
Normal file
33
node_modules/jsx-ast-utils/lib/values/expressions/UpdateExpression.js
generated
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = extractValueFromUpdateExpression;
|
||||
/**
|
||||
* Extractor function for an UpdateExpression type value node.
|
||||
* An update expression is an expression with an update operator.
|
||||
* For example, foo++ will evaluate to foo + 1.
|
||||
*
|
||||
* @param - value - AST Value object with type `UpdateExpression`
|
||||
* @returns - The extracted value converted to correct type.
|
||||
*/
|
||||
function extractValueFromUpdateExpression(value) {
|
||||
// eslint-disable-next-line global-require
|
||||
var getValue = require('./index.js').default;
|
||||
var operator = value.operator,
|
||||
argument = value.argument,
|
||||
prefix = value.prefix;
|
||||
|
||||
|
||||
var val = getValue(argument);
|
||||
|
||||
switch (operator) {
|
||||
case '++':
|
||||
return prefix ? ++val : val++; // eslint-disable-line no-plusplus
|
||||
case '--':
|
||||
return prefix ? --val : val--; // eslint-disable-line no-plusplus
|
||||
default:
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
244
node_modules/jsx-ast-utils/lib/values/expressions/index.js
generated
vendored
Normal file
244
node_modules/jsx-ast-utils/lib/values/expressions/index.js
generated
vendored
Normal file
@ -0,0 +1,244 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = extract;
|
||||
exports.extractLiteral = extractLiteral;
|
||||
|
||||
var _object = require('object.assign');
|
||||
|
||||
var _object2 = _interopRequireDefault(_object);
|
||||
|
||||
var _Literal = require('../Literal');
|
||||
|
||||
var _Literal2 = _interopRequireDefault(_Literal);
|
||||
|
||||
var _JSXElement = require('../JSXElement');
|
||||
|
||||
var _JSXElement2 = _interopRequireDefault(_JSXElement);
|
||||
|
||||
var _Identifier = require('./Identifier');
|
||||
|
||||
var _Identifier2 = _interopRequireDefault(_Identifier);
|
||||
|
||||
var _TaggedTemplateExpression = require('./TaggedTemplateExpression');
|
||||
|
||||
var _TaggedTemplateExpression2 = _interopRequireDefault(_TaggedTemplateExpression);
|
||||
|
||||
var _TemplateLiteral = require('./TemplateLiteral');
|
||||
|
||||
var _TemplateLiteral2 = _interopRequireDefault(_TemplateLiteral);
|
||||
|
||||
var _FunctionExpression = require('./FunctionExpression');
|
||||
|
||||
var _FunctionExpression2 = _interopRequireDefault(_FunctionExpression);
|
||||
|
||||
var _LogicalExpression = require('./LogicalExpression');
|
||||
|
||||
var _LogicalExpression2 = _interopRequireDefault(_LogicalExpression);
|
||||
|
||||
var _MemberExpression = require('./MemberExpression');
|
||||
|
||||
var _MemberExpression2 = _interopRequireDefault(_MemberExpression);
|
||||
|
||||
var _OptionalMemberExpression = require('./OptionalMemberExpression');
|
||||
|
||||
var _OptionalMemberExpression2 = _interopRequireDefault(_OptionalMemberExpression);
|
||||
|
||||
var _CallExpression = require('./CallExpression');
|
||||
|
||||
var _CallExpression2 = _interopRequireDefault(_CallExpression);
|
||||
|
||||
var _UnaryExpression = require('./UnaryExpression');
|
||||
|
||||
var _UnaryExpression2 = _interopRequireDefault(_UnaryExpression);
|
||||
|
||||
var _ThisExpression = require('./ThisExpression');
|
||||
|
||||
var _ThisExpression2 = _interopRequireDefault(_ThisExpression);
|
||||
|
||||
var _ConditionalExpression = require('./ConditionalExpression');
|
||||
|
||||
var _ConditionalExpression2 = _interopRequireDefault(_ConditionalExpression);
|
||||
|
||||
var _BinaryExpression = require('./BinaryExpression');
|
||||
|
||||
var _BinaryExpression2 = _interopRequireDefault(_BinaryExpression);
|
||||
|
||||
var _ObjectExpression = require('./ObjectExpression');
|
||||
|
||||
var _ObjectExpression2 = _interopRequireDefault(_ObjectExpression);
|
||||
|
||||
var _NewExpression = require('./NewExpression');
|
||||
|
||||
var _NewExpression2 = _interopRequireDefault(_NewExpression);
|
||||
|
||||
var _UpdateExpression = require('./UpdateExpression');
|
||||
|
||||
var _UpdateExpression2 = _interopRequireDefault(_UpdateExpression);
|
||||
|
||||
var _ArrayExpression = require('./ArrayExpression');
|
||||
|
||||
var _ArrayExpression2 = _interopRequireDefault(_ArrayExpression);
|
||||
|
||||
var _BindExpression = require('./BindExpression');
|
||||
|
||||
var _BindExpression2 = _interopRequireDefault(_BindExpression);
|
||||
|
||||
var _SpreadElement = require('./SpreadElement');
|
||||
|
||||
var _SpreadElement2 = _interopRequireDefault(_SpreadElement);
|
||||
|
||||
var _TypeCastExpression = require('./TypeCastExpression');
|
||||
|
||||
var _TypeCastExpression2 = _interopRequireDefault(_TypeCastExpression);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
// Composition map of types to their extractor functions.
|
||||
var TYPES = {
|
||||
Identifier: _Identifier2.default,
|
||||
Literal: _Literal2.default,
|
||||
JSXElement: _JSXElement2.default,
|
||||
TaggedTemplateExpression: _TaggedTemplateExpression2.default,
|
||||
TemplateLiteral: _TemplateLiteral2.default,
|
||||
ArrowFunctionExpression: _FunctionExpression2.default,
|
||||
FunctionExpression: _FunctionExpression2.default,
|
||||
LogicalExpression: _LogicalExpression2.default,
|
||||
MemberExpression: _MemberExpression2.default,
|
||||
OptionalMemberExpression: _OptionalMemberExpression2.default,
|
||||
CallExpression: _CallExpression2.default,
|
||||
UnaryExpression: _UnaryExpression2.default,
|
||||
ThisExpression: _ThisExpression2.default,
|
||||
ConditionalExpression: _ConditionalExpression2.default,
|
||||
BinaryExpression: _BinaryExpression2.default,
|
||||
ObjectExpression: _ObjectExpression2.default,
|
||||
NewExpression: _NewExpression2.default,
|
||||
UpdateExpression: _UpdateExpression2.default,
|
||||
ArrayExpression: _ArrayExpression2.default,
|
||||
BindExpression: _BindExpression2.default,
|
||||
SpreadElement: _SpreadElement2.default,
|
||||
TypeCastExpression: _TypeCastExpression2.default
|
||||
};
|
||||
|
||||
var noop = function noop() {
|
||||
return null;
|
||||
};
|
||||
|
||||
var errorMessage = function errorMessage(expression) {
|
||||
return 'The prop value with an expression type of ' + expression + ' could not be resolved. Please file issue to get this fixed immediately.';
|
||||
};
|
||||
|
||||
/**
|
||||
* This function maps an AST value node
|
||||
* to its correct extractor function for its
|
||||
* given type.
|
||||
*
|
||||
* This will map correctly for *all* possible expression types.
|
||||
*
|
||||
* @param - value - AST Value object with type `JSXExpressionContainer`
|
||||
* @returns The extracted value.
|
||||
*/
|
||||
function extract(value) {
|
||||
// Value will not have the expression property when we recurse.
|
||||
// The type for expression on ArrowFunctionExpression is a boolean.
|
||||
var expression = void 0;
|
||||
if (typeof value.expression !== 'boolean' && value.expression) {
|
||||
expression = value.expression; // eslint-disable-line prefer-destructuring
|
||||
} else {
|
||||
expression = value;
|
||||
}
|
||||
var _expression = expression,
|
||||
type = _expression.type;
|
||||
|
||||
|
||||
while (type === 'TSNonNullExpression' || type === 'TSAsExpression') {
|
||||
var _expression2 = expression;
|
||||
type = _expression2.type;
|
||||
|
||||
if (expression.expression) {
|
||||
var _expression3 = expression;
|
||||
expression = _expression3.expression;
|
||||
}
|
||||
}
|
||||
|
||||
if (TYPES[type] === undefined) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.error(errorMessage(type));
|
||||
return null;
|
||||
}
|
||||
|
||||
return TYPES[type](expression);
|
||||
}
|
||||
|
||||
// Composition map of types to their extractor functions to handle literals.
|
||||
var LITERAL_TYPES = (0, _object2.default)({}, TYPES, {
|
||||
Literal: function Literal(value) {
|
||||
var extractedVal = TYPES.Literal.call(undefined, value);
|
||||
var isNull = extractedVal === null;
|
||||
// This will be convention for attributes that have null
|
||||
// value explicitly defined (<div prop={null} /> maps to 'null').
|
||||
return isNull ? 'null' : extractedVal;
|
||||
},
|
||||
Identifier: function Identifier(value) {
|
||||
var isUndefined = TYPES.Identifier.call(undefined, value) === undefined;
|
||||
return isUndefined ? undefined : null;
|
||||
},
|
||||
JSXElement: noop,
|
||||
ArrowFunctionExpression: noop,
|
||||
FunctionExpression: noop,
|
||||
LogicalExpression: noop,
|
||||
MemberExpression: noop,
|
||||
OptionalMemberExpression: noop,
|
||||
CallExpression: noop,
|
||||
UnaryExpression: function UnaryExpression(value) {
|
||||
var extractedVal = TYPES.UnaryExpression.call(undefined, value);
|
||||
return extractedVal === undefined ? null : extractedVal;
|
||||
},
|
||||
UpdateExpression: function UpdateExpression(value) {
|
||||
var extractedVal = TYPES.UpdateExpression.call(undefined, value);
|
||||
return extractedVal === undefined ? null : extractedVal;
|
||||
},
|
||||
ThisExpression: noop,
|
||||
ConditionalExpression: noop,
|
||||
BinaryExpression: noop,
|
||||
ObjectExpression: noop,
|
||||
NewExpression: noop,
|
||||
ArrayExpression: function ArrayExpression(value) {
|
||||
var extractedVal = TYPES.ArrayExpression.call(undefined, value);
|
||||
return extractedVal.filter(function (val) {
|
||||
return val !== null;
|
||||
});
|
||||
},
|
||||
BindExpression: noop,
|
||||
SpreadElement: noop,
|
||||
TSNonNullExpression: noop,
|
||||
TSAsExpression: noop,
|
||||
TypeCastExpression: noop
|
||||
});
|
||||
|
||||
/**
|
||||
* This function maps an AST value node
|
||||
* to its correct extractor function for its
|
||||
* given type.
|
||||
*
|
||||
* This will map correctly for *some* possible types that map to literals.
|
||||
*
|
||||
* @param - value - AST Value object with type `JSXExpressionContainer`
|
||||
* @returns The extracted value.
|
||||
*/
|
||||
function extractLiteral(value) {
|
||||
// Value will not have the expression property when we recurse.
|
||||
var expression = value.expression || value;
|
||||
var type = expression.type;
|
||||
|
||||
|
||||
if (LITERAL_TYPES[type] === undefined) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.error(errorMessage(type));
|
||||
return null;
|
||||
}
|
||||
|
||||
return LITERAL_TYPES[type](expression);
|
||||
}
|
||||
66
node_modules/jsx-ast-utils/lib/values/index.js
generated
vendored
Normal file
66
node_modules/jsx-ast-utils/lib/values/index.js
generated
vendored
Normal file
@ -0,0 +1,66 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = getValue;
|
||||
exports.getLiteralValue = getLiteralValue;
|
||||
|
||||
var _object = require('object.assign');
|
||||
|
||||
var _object2 = _interopRequireDefault(_object);
|
||||
|
||||
var _Literal = require('./Literal');
|
||||
|
||||
var _Literal2 = _interopRequireDefault(_Literal);
|
||||
|
||||
var _JSXElement = require('./JSXElement');
|
||||
|
||||
var _JSXElement2 = _interopRequireDefault(_JSXElement);
|
||||
|
||||
var _expressions = require('./expressions');
|
||||
|
||||
var _expressions2 = _interopRequireDefault(_expressions);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
// Composition map of types to their extractor functions.
|
||||
var TYPES = {
|
||||
Literal: _Literal2.default,
|
||||
JSXElement: _JSXElement2.default,
|
||||
JSXExpressionContainer: _expressions2.default
|
||||
};
|
||||
|
||||
// Composition map of types to their extractor functions to handle literals.
|
||||
var LITERAL_TYPES = (0, _object2.default)({}, TYPES, {
|
||||
JSXElement: function JSXElement() {
|
||||
return null;
|
||||
},
|
||||
JSXExpressionContainer: _expressions.extractLiteral
|
||||
});
|
||||
|
||||
/**
|
||||
* This function maps an AST value node
|
||||
* to its correct extractor function for its
|
||||
* given type.
|
||||
*
|
||||
* This will map correctly for *all* possible types.
|
||||
*
|
||||
* @param value - AST Value object on a JSX Attribute.
|
||||
*/
|
||||
function getValue(value) {
|
||||
return TYPES[value.type](value);
|
||||
}
|
||||
|
||||
/**
|
||||
* This function maps an AST value node
|
||||
* to its correct extractor function for its
|
||||
* given type.
|
||||
*
|
||||
* This will map correctly for *some* possible types that map to literals.
|
||||
*
|
||||
* @param value - AST Value object on a JSX Attribute.
|
||||
*/
|
||||
function getLiteralValue(value) {
|
||||
return LITERAL_TYPES[value.type](value);
|
||||
}
|
||||
Reference in New Issue
Block a user