Initial import with skill sheet working
This commit is contained in:
		
							
								
								
									
										174
									
								
								node_modules/eslint/lib/rules/multiline-ternary.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										174
									
								
								node_modules/eslint/lib/rules/multiline-ternary.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,174 @@
 | 
			
		||||
/**
 | 
			
		||||
 * @fileoverview Enforce newlines between operands of ternary expressions
 | 
			
		||||
 * @author Kai Cataldo
 | 
			
		||||
 * @deprecated in ESLint v8.53.0
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
const astUtils = require("./utils/ast-utils");
 | 
			
		||||
 | 
			
		||||
//------------------------------------------------------------------------------
 | 
			
		||||
// Rule Definition
 | 
			
		||||
//------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
/** @type {import('../shared/types').Rule} */
 | 
			
		||||
module.exports = {
 | 
			
		||||
    meta: {
 | 
			
		||||
        deprecated: true,
 | 
			
		||||
        replacedBy: [],
 | 
			
		||||
        type: "layout",
 | 
			
		||||
 | 
			
		||||
        docs: {
 | 
			
		||||
            description: "Enforce newlines between operands of ternary expressions",
 | 
			
		||||
            recommended: false,
 | 
			
		||||
            url: "https://eslint.org/docs/latest/rules/multiline-ternary"
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        schema: [
 | 
			
		||||
            {
 | 
			
		||||
                enum: ["always", "always-multiline", "never"]
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
 | 
			
		||||
        messages: {
 | 
			
		||||
            expectedTestCons: "Expected newline between test and consequent of ternary expression.",
 | 
			
		||||
            expectedConsAlt: "Expected newline between consequent and alternate of ternary expression.",
 | 
			
		||||
            unexpectedTestCons: "Unexpected newline between test and consequent of ternary expression.",
 | 
			
		||||
            unexpectedConsAlt: "Unexpected newline between consequent and alternate of ternary expression."
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        fixable: "whitespace"
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    create(context) {
 | 
			
		||||
        const sourceCode = context.sourceCode;
 | 
			
		||||
        const option = context.options[0];
 | 
			
		||||
        const multiline = option !== "never";
 | 
			
		||||
        const allowSingleLine = option === "always-multiline";
 | 
			
		||||
 | 
			
		||||
        //--------------------------------------------------------------------------
 | 
			
		||||
        // Public
 | 
			
		||||
        //--------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
        return {
 | 
			
		||||
            ConditionalExpression(node) {
 | 
			
		||||
                const questionToken = sourceCode.getTokenAfter(node.test, astUtils.isNotClosingParenToken);
 | 
			
		||||
                const colonToken = sourceCode.getTokenAfter(node.consequent, astUtils.isNotClosingParenToken);
 | 
			
		||||
 | 
			
		||||
                const firstTokenOfTest = sourceCode.getFirstToken(node);
 | 
			
		||||
                const lastTokenOfTest = sourceCode.getTokenBefore(questionToken);
 | 
			
		||||
                const firstTokenOfConsequent = sourceCode.getTokenAfter(questionToken);
 | 
			
		||||
                const lastTokenOfConsequent = sourceCode.getTokenBefore(colonToken);
 | 
			
		||||
                const firstTokenOfAlternate = sourceCode.getTokenAfter(colonToken);
 | 
			
		||||
 | 
			
		||||
                const areTestAndConsequentOnSameLine = astUtils.isTokenOnSameLine(lastTokenOfTest, firstTokenOfConsequent);
 | 
			
		||||
                const areConsequentAndAlternateOnSameLine = astUtils.isTokenOnSameLine(lastTokenOfConsequent, firstTokenOfAlternate);
 | 
			
		||||
 | 
			
		||||
                const hasComments = !!sourceCode.getCommentsInside(node).length;
 | 
			
		||||
 | 
			
		||||
                if (!multiline) {
 | 
			
		||||
                    if (!areTestAndConsequentOnSameLine) {
 | 
			
		||||
                        context.report({
 | 
			
		||||
                            node: node.test,
 | 
			
		||||
                            loc: {
 | 
			
		||||
                                start: firstTokenOfTest.loc.start,
 | 
			
		||||
                                end: lastTokenOfTest.loc.end
 | 
			
		||||
                            },
 | 
			
		||||
                            messageId: "unexpectedTestCons",
 | 
			
		||||
                            fix(fixer) {
 | 
			
		||||
                                if (hasComments) {
 | 
			
		||||
                                    return null;
 | 
			
		||||
                                }
 | 
			
		||||
                                const fixers = [];
 | 
			
		||||
                                const areTestAndQuestionOnSameLine = astUtils.isTokenOnSameLine(lastTokenOfTest, questionToken);
 | 
			
		||||
                                const areQuestionAndConsOnSameLine = astUtils.isTokenOnSameLine(questionToken, firstTokenOfConsequent);
 | 
			
		||||
 | 
			
		||||
                                if (!areTestAndQuestionOnSameLine) {
 | 
			
		||||
                                    fixers.push(fixer.removeRange([lastTokenOfTest.range[1], questionToken.range[0]]));
 | 
			
		||||
                                }
 | 
			
		||||
                                if (!areQuestionAndConsOnSameLine) {
 | 
			
		||||
                                    fixers.push(fixer.removeRange([questionToken.range[1], firstTokenOfConsequent.range[0]]));
 | 
			
		||||
                                }
 | 
			
		||||
 | 
			
		||||
                                return fixers;
 | 
			
		||||
                            }
 | 
			
		||||
                        });
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    if (!areConsequentAndAlternateOnSameLine) {
 | 
			
		||||
                        context.report({
 | 
			
		||||
                            node: node.consequent,
 | 
			
		||||
                            loc: {
 | 
			
		||||
                                start: firstTokenOfConsequent.loc.start,
 | 
			
		||||
                                end: lastTokenOfConsequent.loc.end
 | 
			
		||||
                            },
 | 
			
		||||
                            messageId: "unexpectedConsAlt",
 | 
			
		||||
                            fix(fixer) {
 | 
			
		||||
                                if (hasComments) {
 | 
			
		||||
                                    return null;
 | 
			
		||||
                                }
 | 
			
		||||
                                const fixers = [];
 | 
			
		||||
                                const areConsAndColonOnSameLine = astUtils.isTokenOnSameLine(lastTokenOfConsequent, colonToken);
 | 
			
		||||
                                const areColonAndAltOnSameLine = astUtils.isTokenOnSameLine(colonToken, firstTokenOfAlternate);
 | 
			
		||||
 | 
			
		||||
                                if (!areConsAndColonOnSameLine) {
 | 
			
		||||
                                    fixers.push(fixer.removeRange([lastTokenOfConsequent.range[1], colonToken.range[0]]));
 | 
			
		||||
                                }
 | 
			
		||||
                                if (!areColonAndAltOnSameLine) {
 | 
			
		||||
                                    fixers.push(fixer.removeRange([colonToken.range[1], firstTokenOfAlternate.range[0]]));
 | 
			
		||||
                                }
 | 
			
		||||
 | 
			
		||||
                                return fixers;
 | 
			
		||||
                            }
 | 
			
		||||
                        });
 | 
			
		||||
                    }
 | 
			
		||||
                } else {
 | 
			
		||||
                    if (allowSingleLine && node.loc.start.line === node.loc.end.line) {
 | 
			
		||||
                        return;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    if (areTestAndConsequentOnSameLine) {
 | 
			
		||||
                        context.report({
 | 
			
		||||
                            node: node.test,
 | 
			
		||||
                            loc: {
 | 
			
		||||
                                start: firstTokenOfTest.loc.start,
 | 
			
		||||
                                end: lastTokenOfTest.loc.end
 | 
			
		||||
                            },
 | 
			
		||||
                            messageId: "expectedTestCons",
 | 
			
		||||
                            fix: fixer => (hasComments ? null : (
 | 
			
		||||
                                fixer.replaceTextRange(
 | 
			
		||||
                                    [
 | 
			
		||||
                                        lastTokenOfTest.range[1],
 | 
			
		||||
                                        questionToken.range[0]
 | 
			
		||||
                                    ],
 | 
			
		||||
                                    "\n"
 | 
			
		||||
                                )
 | 
			
		||||
                            ))
 | 
			
		||||
                        });
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    if (areConsequentAndAlternateOnSameLine) {
 | 
			
		||||
                        context.report({
 | 
			
		||||
                            node: node.consequent,
 | 
			
		||||
                            loc: {
 | 
			
		||||
                                start: firstTokenOfConsequent.loc.start,
 | 
			
		||||
                                end: lastTokenOfConsequent.loc.end
 | 
			
		||||
                            },
 | 
			
		||||
                            messageId: "expectedConsAlt",
 | 
			
		||||
                            fix: (fixer => (hasComments ? null : (
 | 
			
		||||
                                fixer.replaceTextRange(
 | 
			
		||||
                                    [
 | 
			
		||||
                                        lastTokenOfConsequent.range[1],
 | 
			
		||||
                                        colonToken.range[0]
 | 
			
		||||
                                    ],
 | 
			
		||||
                                    "\n"
 | 
			
		||||
                                )
 | 
			
		||||
                            )))
 | 
			
		||||
                        });
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
		Reference in New Issue
	
	Block a user