Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
function binaryExp(node) {
const rule = rules.BinaryExpression;
// makes the rule think it should skip the left or right
if (node.left.type === experimental_utils_1.AST_NODE_TYPES.TSAsExpression) {
return rule(Object.assign(Object.assign({}, node), { left: Object.assign(Object.assign({}, node.left), { type: experimental_utils_1.AST_NODE_TYPES.BinaryExpression }) }));
}
if (node.right.type === experimental_utils_1.AST_NODE_TYPES.TSAsExpression) {
return rule(Object.assign(Object.assign({}, node), { right: Object.assign(Object.assign({}, node.right), { type: experimental_utils_1.AST_NODE_TYPES.BinaryExpression }) }));
}
return rule(node);
}
function callExp(node) {
function isInferrable(annotation, init) {
switch (annotation.type) {
case experimental_utils_1.AST_NODE_TYPES.TSBigIntKeyword: {
// note that bigint cannot have + prefixed to it
const unwrappedInit = hasUnaryPrefix(init, '-')
? init.argument
: init;
return (isFunctionCall(unwrappedInit, 'BigInt') ||
unwrappedInit.type === experimental_utils_1.AST_NODE_TYPES.BigIntLiteral);
}
case experimental_utils_1.AST_NODE_TYPES.TSBooleanKeyword:
return (hasUnaryPrefix(init, '!') ||
isFunctionCall(init, 'Boolean') ||
isLiteral(init, 'boolean'));
case experimental_utils_1.AST_NODE_TYPES.TSNumberKeyword: {
const unwrappedInit = hasUnaryPrefix(init, '+', '-')
? init.argument
: init;
return (isIdentifier(unwrappedInit, 'Infinity', 'NaN') ||
isFunctionCall(unwrappedInit, 'Number') ||
isLiteral(unwrappedInit, 'number'));
}
case experimental_utils_1.AST_NODE_TYPES.TSNullKeyword:
return init.type === experimental_utils_1.AST_NODE_TYPES.Literal && init.value === null;
case experimental_utils_1.AST_NODE_TYPES.TSStringKeyword:
return (isFunctionCall(init, 'String') ||
isLiteral(init, 'string') ||
init.type === experimental_utils_1.AST_NODE_TYPES.TemplateLiteral);
case experimental_utils_1.AST_NODE_TYPES.TSSymbolKeyword:
return isFunctionCall(init, 'Symbol');
case experimental_utils_1.AST_NODE_TYPES.TSTypeReference: {
function isSafeUse(node) {
const parent = node.parent;
switch (parent.type) {
case experimental_utils_1.AST_NODE_TYPES.IfStatement:
case experimental_utils_1.AST_NODE_TYPES.ForStatement:
case experimental_utils_1.AST_NODE_TYPES.MemberExpression:
case experimental_utils_1.AST_NODE_TYPES.SwitchStatement:
case experimental_utils_1.AST_NODE_TYPES.UpdateExpression:
case experimental_utils_1.AST_NODE_TYPES.WhileStatement:
return true;
case experimental_utils_1.AST_NODE_TYPES.CallExpression:
return parent.callee === node;
case experimental_utils_1.AST_NODE_TYPES.ConditionalExpression:
return parent.test === node;
case experimental_utils_1.AST_NODE_TYPES.LogicalExpression:
return parent.operator !== '||';
case experimental_utils_1.AST_NODE_TYPES.TaggedTemplateExpression:
return parent.tag === node;
case experimental_utils_1.AST_NODE_TYPES.UnaryExpression:
return parent.operator === 'typeof';
case experimental_utils_1.AST_NODE_TYPES.BinaryExpression:
return ['instanceof', '==', '!=', '===', '!=='].includes(parent.operator);
case experimental_utils_1.AST_NODE_TYPES.TSNonNullExpression:
case experimental_utils_1.AST_NODE_TYPES.TSAsExpression:
function isConstructor(node) {
return (!!node &&
node.type === experimental_utils_1.AST_NODE_TYPES.MethodDefinition &&
node.kind === 'constructor');
}
/**
function parametersHaveEqualSigils(a, b) {
const optionalA = isTSParameterProperty(a)
? a.parameter.optional
: a.optional;
const optionalB = isTSParameterProperty(b)
? b.parameter.optional
: b.optional;
return ((a.type === experimental_utils_1.AST_NODE_TYPES.RestElement) ===
(b.type === experimental_utils_1.AST_NODE_TYPES.RestElement) &&
(optionalA !== undefined) === (optionalB !== undefined));
}
function typeParametersAreEqual(a, b) {
function isSimpleType(node) {
switch (node.type) {
case experimental_utils_1.AST_NODE_TYPES.Identifier:
case experimental_utils_1.AST_NODE_TYPES.TSAnyKeyword:
case experimental_utils_1.AST_NODE_TYPES.TSBooleanKeyword:
case experimental_utils_1.AST_NODE_TYPES.TSNeverKeyword:
case experimental_utils_1.AST_NODE_TYPES.TSNumberKeyword:
case experimental_utils_1.AST_NODE_TYPES.TSObjectKeyword:
case experimental_utils_1.AST_NODE_TYPES.TSStringKeyword:
case experimental_utils_1.AST_NODE_TYPES.TSSymbolKeyword:
case experimental_utils_1.AST_NODE_TYPES.TSUnknownKeyword:
case experimental_utils_1.AST_NODE_TYPES.TSVoidKeyword:
case experimental_utils_1.AST_NODE_TYPES.TSNullKeyword:
case experimental_utils_1.AST_NODE_TYPES.TSArrayType:
case experimental_utils_1.AST_NODE_TYPES.TSUndefinedKeyword:
case experimental_utils_1.AST_NODE_TYPES.TSThisType:
case experimental_utils_1.AST_NODE_TYPES.TSQualifiedName:
return true;
case experimental_utils_1.AST_NODE_TYPES.TSTypeReference:
if (node.typeName &&
node.typeName.type === experimental_utils_1.AST_NODE_TYPES.Identifier &&
node.typeName.name === 'Array') {
if (!node.typeParameters) {
return true;
}
if (node.typeParameters.params.length === 1) {
return isSimpleType(node.typeParameters.params[0]);
}
}
function isTSParameterProperty(node) {
return (node.type ===
experimental_utils_1.AST_NODE_TYPES.TSParameterProperty);
}
function parametersAreEqual(a, b) {
isLiteral(init, 'boolean'));
case experimental_utils_1.AST_NODE_TYPES.TSNumberKeyword: {
const unwrappedInit = hasUnaryPrefix(init, '+', '-')
? init.argument
: init;
return (isIdentifier(unwrappedInit, 'Infinity', 'NaN') ||
isFunctionCall(unwrappedInit, 'Number') ||
isLiteral(unwrappedInit, 'number'));
}
case experimental_utils_1.AST_NODE_TYPES.TSNullKeyword:
return init.type === experimental_utils_1.AST_NODE_TYPES.Literal && init.value === null;
case experimental_utils_1.AST_NODE_TYPES.TSStringKeyword:
return (isFunctionCall(init, 'String') ||
isLiteral(init, 'string') ||
init.type === experimental_utils_1.AST_NODE_TYPES.TemplateLiteral);
case experimental_utils_1.AST_NODE_TYPES.TSSymbolKeyword:
return isFunctionCall(init, 'Symbol');
case experimental_utils_1.AST_NODE_TYPES.TSTypeReference: {
if (annotation.typeName.type === experimental_utils_1.AST_NODE_TYPES.Identifier &&
annotation.typeName.name === 'RegExp') {
const isRegExpLiteral = init.type === experimental_utils_1.AST_NODE_TYPES.Literal &&
init.value instanceof RegExp;
const isRegExpNewCall = init.type === experimental_utils_1.AST_NODE_TYPES.NewExpression &&
init.callee.type === 'Identifier' &&
init.callee.name === 'RegExp';
const isRegExpCall = isFunctionCall(init, 'RegExp');
return isRegExpLiteral || isRegExpCall || isRegExpNewCall;
}
return false;
}
case experimental_utils_1.AST_NODE_TYPES.TSUndefinedKeyword:
return (hasUnaryPrefix(init, 'void') || isIdentifier(init, 'undefined'));
const parent = node.parent;
switch (parent.type) {
case experimental_utils_1.AST_NODE_TYPES.IfStatement:
case experimental_utils_1.AST_NODE_TYPES.ForStatement:
case experimental_utils_1.AST_NODE_TYPES.MemberExpression:
case experimental_utils_1.AST_NODE_TYPES.SwitchStatement:
case experimental_utils_1.AST_NODE_TYPES.UpdateExpression:
case experimental_utils_1.AST_NODE_TYPES.WhileStatement:
return true;
case experimental_utils_1.AST_NODE_TYPES.CallExpression:
return parent.callee === node;
case experimental_utils_1.AST_NODE_TYPES.ConditionalExpression:
return parent.test === node;
case experimental_utils_1.AST_NODE_TYPES.LogicalExpression:
return parent.operator !== '||';
case experimental_utils_1.AST_NODE_TYPES.TaggedTemplateExpression:
return parent.tag === node;
case experimental_utils_1.AST_NODE_TYPES.UnaryExpression:
return parent.operator === 'typeof';
case experimental_utils_1.AST_NODE_TYPES.BinaryExpression:
return ['instanceof', '==', '!=', '===', '!=='].includes(parent.operator);
case experimental_utils_1.AST_NODE_TYPES.TSNonNullExpression:
case experimental_utils_1.AST_NODE_TYPES.TSAsExpression:
case experimental_utils_1.AST_NODE_TYPES.TSTypeAssertion:
return isSafeUse(parent);
}
return false;
}
//# sourceMappingURL=unbound-method.js.map
function isNodeValidFunction(node) {
return [
experimental_utils_1.AST_NODE_TYPES.ArrowFunctionExpression,
experimental_utils_1.AST_NODE_TYPES.FunctionDeclaration,
experimental_utils_1.AST_NODE_TYPES.FunctionExpression,
experimental_utils_1.AST_NODE_TYPES.TSFunctionType,
experimental_utils_1.AST_NODE_TYPES.TSCallSignatureDeclaration,
].includes(node.type);
}
/**