This change modifies the build scripts to use --legacy-peer-deps flag when installing npm dependencies to resolve potential peer dependency conflicts during the build process. The change is applied to both bash (build.sh) and batch (build.bat) build scripts.
175 lines
7.6 KiB
JavaScript
175 lines
7.6 KiB
JavaScript
/**
|
|
* @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"
|
|
)
|
|
)))
|
|
});
|
|
}
|
|
}
|
|
}
|
|
};
|
|
}
|
|
};
|