Server IP : 150.95.80.236 / Your IP : 3.139.87.61 Web Server : Apache System : Linux host-150-95-80-236 3.10.0-1160.105.1.el7.x86_64 #1 SMP Thu Dec 7 15:39:45 UTC 2023 x86_64 User : social-telecare ( 10000) PHP Version : 7.4.33 Disable Function : opcache_get_status MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/vhosts/pcu.in.th/api-uat.pcu.in.th/node_modules/eslint/lib/rules/ |
Upload File : |
/** * @fileoverview A rule to ensure whitespace before blocks. * @author Mathias Schreck <https://github.com/lo1tuma> * @deprecated in ESLint v8.53.0 */ "use strict"; //------------------------------------------------------------------------------ // Requirements //------------------------------------------------------------------------------ const astUtils = require("./utils/ast-utils"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ /** * Checks whether the given node represents the body of a function. * @param {ASTNode} node the node to check. * @returns {boolean} `true` if the node is function body. */ function isFunctionBody(node) { const parent = node.parent; return ( node.type === "BlockStatement" && astUtils.isFunction(parent) && parent.body === node ); } //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ /** @type {import('../shared/types').Rule} */ module.exports = { meta: { deprecated: true, replacedBy: [], type: "layout", docs: { description: "Enforce consistent spacing before blocks", recommended: false, url: "https://eslint.org/docs/latest/rules/space-before-blocks" }, fixable: "whitespace", schema: [ { oneOf: [ { enum: ["always", "never"] }, { type: "object", properties: { keywords: { enum: ["always", "never", "off"] }, functions: { enum: ["always", "never", "off"] }, classes: { enum: ["always", "never", "off"] } }, additionalProperties: false } ] } ], messages: { unexpectedSpace: "Unexpected space before opening brace.", missingSpace: "Missing space before opening brace." } }, create(context) { const config = context.options[0], sourceCode = context.sourceCode; let alwaysFunctions = true, alwaysKeywords = true, alwaysClasses = true, neverFunctions = false, neverKeywords = false, neverClasses = false; if (typeof config === "object") { alwaysFunctions = config.functions === "always"; alwaysKeywords = config.keywords === "always"; alwaysClasses = config.classes === "always"; neverFunctions = config.functions === "never"; neverKeywords = config.keywords === "never"; neverClasses = config.classes === "never"; } else if (config === "never") { alwaysFunctions = false; alwaysKeywords = false; alwaysClasses = false; neverFunctions = true; neverKeywords = true; neverClasses = true; } /** * Checks whether the spacing before the given block is already controlled by another rule: * - `arrow-spacing` checks spaces after `=>`. * - `keyword-spacing` checks spaces after keywords in certain contexts. * - `switch-colon-spacing` checks spaces after `:` of switch cases. * @param {Token} precedingToken first token before the block. * @param {ASTNode|Token} node `BlockStatement` node or `{` token of a `SwitchStatement` node. * @returns {boolean} `true` if requiring or disallowing spaces before the given block could produce conflicts with other rules. */ function isConflicted(precedingToken, node) { return ( astUtils.isArrowToken(precedingToken) || ( astUtils.isKeywordToken(precedingToken) && !isFunctionBody(node) ) || ( astUtils.isColonToken(precedingToken) && node.parent && node.parent.type === "SwitchCase" && precedingToken === astUtils.getSwitchCaseColonToken(node.parent, sourceCode) ) ); } /** * Checks the given BlockStatement node has a preceding space if it doesn’t start on a new line. * @param {ASTNode|Token} node The AST node of a BlockStatement. * @returns {void} undefined. */ function checkPrecedingSpace(node) { const precedingToken = sourceCode.getTokenBefore(node); if (precedingToken && !isConflicted(precedingToken, node) && astUtils.isTokenOnSameLine(precedingToken, node)) { const hasSpace = sourceCode.isSpaceBetweenTokens(precedingToken, node); let requireSpace; let requireNoSpace; if (isFunctionBody(node)) { requireSpace = alwaysFunctions; requireNoSpace = neverFunctions; } else if (node.type === "ClassBody") { requireSpace = alwaysClasses; requireNoSpace = neverClasses; } else { requireSpace = alwaysKeywords; requireNoSpace = neverKeywords; } if (requireSpace && !hasSpace) { context.report({ node, messageId: "missingSpace", fix(fixer) { return fixer.insertTextBefore(node, " "); } }); } else if (requireNoSpace && hasSpace) { context.report({ node, messageId: "unexpectedSpace", fix(fixer) { return fixer.removeRange([precedingToken.range[1], node.range[0]]); } }); } } } /** * Checks if the CaseBlock of an given SwitchStatement node has a preceding space. * @param {ASTNode} node The node of a SwitchStatement. * @returns {void} undefined. */ function checkSpaceBeforeCaseBlock(node) { const cases = node.cases; let openingBrace; if (cases.length > 0) { openingBrace = sourceCode.getTokenBefore(cases[0]); } else { openingBrace = sourceCode.getLastToken(node, 1); } checkPrecedingSpace(openingBrace); } return { BlockStatement: checkPrecedingSpace, ClassBody: checkPrecedingSpace, SwitchStatement: checkSpaceBeforeCaseBlock }; } };