Dive into secure and efficient coding practices with our curated list of the top 10 examples showcasing 'eslint-utils' in functional components in JavaScript. Our advanced machine learning engine meticulously scans each line of code, cross-referencing millions of open source libraries to ensure your implementation is not just functional, but also robust and secure. Elevate your React applications to new heights by mastering the art of handling side effects, API calls, and asynchronous operations with confidence and precision.
// Check static methods.
for (const reference of getReferences(
Object.keys(PROPERTY_TEST_TARGETS)
)) {
const node = reference.identifier
const parentNode = node.parent
if (
parentNode.type !== "MemberExpression" ||
parentNode.object !== node
) {
continue
}
const objectName = node.name
const properties = PROPERTY_TEST_TARGETS[objectName]
const propertyName = getPropertyName(parentNode)
if (
propertyName &&
properties.indexOf(propertyName) !== -1
) {
report(parentNode, `${objectName}.${propertyName}`)
}
}
// Check subclassing
for (const reference of getReferences(
SUBCLASSING_TEST_TARGETS
)) {
const node = reference.identifier
const parentNode = node.parent
if (
CLASS_TYPE.test(parentNode.type) &&
function parseRegExp(node) {
const evaluated = eslint_utils_1.getStaticValue(node, globalScope);
if (evaluated == null || !(evaluated.value instanceof RegExp)) {
return null;
}
const { pattern, flags } = regexpp_1.parseRegExpLiteral(evaluated.value);
if (pattern.alternatives.length !== 1 ||
flags.ignoreCase ||
flags.global) {
return null;
}
// Check if it can determine a unique string.
const chars = pattern.alternatives[0].elements;
if (!chars.every(c => c.type === 'Character')) {
return null;
}
// To string.
return String.fromCodePoint(...chars.map(c => c.value));
function parseRegExp(node: TSESTree.Node): string | null {
const evaluated = getStaticValue(node, globalScope);
if (evaluated == null || !(evaluated.value instanceof RegExp)) {
return null;
}
const { pattern, flags } = parseRegExpLiteral(evaluated.value);
if (
pattern.alternatives.length !== 1 ||
flags.ignoreCase ||
flags.global
) {
return null;
}
// Check if it can determine a unique string.
const chars = pattern.alternatives[0].elements;
if (!chars.every(c => c.type === 'Character')) {
NewExpression(node) {
// Only indent the arguments if the NewExpression has parens (e.g. `new Foo(bar)` or `new Foo()`, but not `new Foo`
if (node.arguments.length > 0 ||
(eslint_utils_1.isClosingParenToken(sourceCode.getLastToken(node)) &&
eslint_utils_1.isOpeningParenToken(sourceCode.getLastToken(node, 1)))) {
addFunctionCallIndent(node);
}
},
'ObjectExpression, ObjectPattern'(node) {
function getFirstToken(element) {
let token = sourceCode.getTokenBefore(element);
while (eslint_utils_1.isOpeningParenToken(token) && token !== startToken) {
token = sourceCode.getTokenBefore(token);
}
return sourceCode.getTokenAfter(token);
}
// Run through all the tokens in the list, and offset them by one indent level (mainly for comments, other things will end up overridden)
NewExpression(node) {
// Only indent the arguments if the NewExpression has parens (e.g. `new Foo(bar)` or `new Foo()`, but not `new Foo`
if (
node.arguments.length > 0 ||
(isClosingParenToken(sourceCode.getLastToken(node)!) &&
isOpeningParenToken(sourceCode.getLastToken(node, 1)!))
) {
addFunctionCallIndent(node);
}
},
function getConfigForFunction(
node:
| TSESTree.ArrowFunctionExpression
| TSESTree.FunctionDeclaration
| TSESTree.FunctionExpression,
): FuncOption {
if (node.type === AST_NODE_TYPES.ArrowFunctionExpression) {
// Always ignore non-async functions and arrow functions without parens, e.g. async foo => bar
if (
node.async &&
isOpeningParenToken(sourceCode.getFirstToken(node, { skip: 1 })!)
) {
return overrideConfig.asyncArrow ?? baseConfig;
}
} else if (isNamedFunction(node)) {
return overrideConfig.named ?? baseConfig;
// `generator-star-spacing` should warn anonymous generators. E.g. `function* () {}`
} else if (!node.generator) {
return overrideConfig.anonymous ?? baseConfig;
}
return 'ignore';
}
tokens.forEach(nextToken => {
// Accumulate a list of parenthesis pairs
if (isOpeningParenToken(nextToken)) {
parenStack.push(nextToken);
} else if (isClosingParenToken(nextToken)) {
parenPairs.unshift({ left: parenStack.pop()!, right: nextToken });
}
});
if (firstTokenOfLine.loc.start.line !== lineNumber) {
// Don't check the indentation of multi-line tokens (e.g. template literals or block comments) twice.
return;
}
// If the token matches the expected expected indentation, don't report it.
if (
validateTokenIndent(
firstTokenOfLine,
offsets.getDesiredIndent(firstTokenOfLine),
)
) {
return;
}
if (isCommentToken(firstTokenOfLine)) {
const tokenBefore = precedingTokens.get(firstTokenOfLine);
const tokenAfter = tokenBefore
? sourceCode.getTokenAfter(tokenBefore)!
: sourceCode.ast.tokens[0];
const mayAlignWithBefore =
tokenBefore &&
!hasBlankLinesBetween(tokenBefore, firstTokenOfLine);
const mayAlignWithAfter =
tokenAfter && !hasBlankLinesBetween(firstTokenOfLine, tokenAfter);
// If a comment matches the expected indentation of the token immediately before or after, don't report it.
if (
(mayAlignWithBefore &&
validateTokenIndent(
firstTokenOfLine,
sourceCode.lines.forEach((_, lineIndex) => {
const lineNumber = lineIndex + 1;
if (!tokenInfo.firstTokensByLineNumber.has(lineNumber)) {
// Don't check indentation on blank lines
return;
}
const firstTokenOfLine = tokenInfo.firstTokensByLineNumber.get(lineNumber);
if (firstTokenOfLine.loc.start.line !== lineNumber) {
// Don't check the indentation of multi-line tokens (e.g. template literals or block comments) twice.
return;
}
// If the token matches the expected expected indentation, don't report it.
if (validateTokenIndent(firstTokenOfLine, offsets.getDesiredIndent(firstTokenOfLine))) {
return;
}
if (eslint_utils_1.isCommentToken(firstTokenOfLine)) {
const tokenBefore = precedingTokens.get(firstTokenOfLine);
const tokenAfter = tokenBefore
? sourceCode.getTokenAfter(tokenBefore)
: sourceCode.ast.tokens[0];
const mayAlignWithBefore = tokenBefore &&
!hasBlankLinesBetween(tokenBefore, firstTokenOfLine);
const mayAlignWithAfter = tokenAfter && !hasBlankLinesBetween(firstTokenOfLine, tokenAfter);
// If a comment matches the expected indentation of the token immediately before or after, don't report it.
if ((mayAlignWithBefore &&
validateTokenIndent(firstTokenOfLine, offsets.getDesiredIndent(tokenBefore))) ||
(mayAlignWithAfter &&
validateTokenIndent(firstTokenOfLine, offsets.getDesiredIndent(tokenAfter)))) {
return;
}
}
// Otherwise, report the token/comment.