build: update npm install command to use --legacy-peer-deps

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.
This commit is contained in:
Luiz Costa
2025-11-18 10:23:55 -03:00
parent 20129a1ac7
commit ac4f232e5e
787 changed files with 82341 additions and 121690 deletions
+100 -160
View File
@@ -17,19 +17,11 @@ const astUtils = require("./utils/ast-utils");
//------------------------------------------------------------------------------
const SELECTOR = [
"BreakStatement",
"ContinueStatement",
"DebuggerStatement",
"DoWhileStatement",
"ExportAllDeclaration",
"ExportDefaultDeclaration",
"ExportNamedDeclaration",
"ExpressionStatement",
"ImportDeclaration",
"ReturnStatement",
"ThrowStatement",
"VariableDeclaration",
"PropertyDefinition",
"BreakStatement", "ContinueStatement", "DebuggerStatement",
"DoWhileStatement", "ExportAllDeclaration",
"ExportDefaultDeclaration", "ExportNamedDeclaration",
"ExpressionStatement", "ImportDeclaration", "ReturnStatement",
"ThrowStatement", "VariableDeclaration", "PropertyDefinition"
].join(",");
/**
@@ -41,20 +33,20 @@ const SELECTOR = [
* @returns {Node[]|null} The child node list.
*/
function getChildren(node) {
const t = node.type;
const t = node.type;
if (
t === "BlockStatement" ||
t === "StaticBlock" ||
t === "Program" ||
t === "ClassBody"
) {
return node.body;
}
if (t === "SwitchCase") {
return node.consequent;
}
return null;
if (
t === "BlockStatement" ||
t === "StaticBlock" ||
t === "Program" ||
t === "ClassBody"
) {
return node.body;
}
if (t === "SwitchCase") {
return node.consequent;
}
return null;
}
/**
@@ -63,156 +55,104 @@ function getChildren(node) {
* @returns {boolean} `true` if the node is the last statement in the parent block.
*/
function isLastChild(node) {
const t = node.parent.type;
const t = node.parent.type;
if (
t === "IfStatement" &&
node.parent.consequent === node &&
node.parent.alternate
) {
// before `else` keyword.
return true;
}
if (t === "DoWhileStatement") {
// before `while` keyword.
return true;
}
const nodeList = getChildren(node.parent);
if (t === "IfStatement" && node.parent.consequent === node && node.parent.alternate) { // before `else` keyword.
return true;
}
if (t === "DoWhileStatement") { // before `while` keyword.
return true;
}
const nodeList = getChildren(node.parent);
return nodeList !== null && nodeList.at(-1) === node; // before `}` or etc.
return nodeList !== null && nodeList[nodeList.length - 1] === node; // before `}` or etc.
}
/** @type {import('../types').Rule.RuleModule} */
/** @type {import('../shared/types').Rule} */
module.exports = {
meta: {
deprecated: {
message: "Formatting rules are being moved out of ESLint core.",
url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/",
deprecatedSince: "8.53.0",
availableUntil: "11.0.0",
replacedBy: [
{
message:
"ESLint Stylistic now maintains deprecated stylistic core rules.",
url: "https://eslint.style/guide/migration",
plugin: {
name: "@stylistic/eslint-plugin",
url: "https://eslint.style",
},
rule: {
name: "semi-style",
url: "https://eslint.style/rules/semi-style",
},
},
],
},
type: "layout",
meta: {
deprecated: true,
replacedBy: [],
type: "layout",
docs: {
description: "Enforce location of semicolons",
recommended: false,
url: "https://eslint.org/docs/latest/rules/semi-style",
},
docs: {
description: "Enforce location of semicolons",
recommended: false,
url: "https://eslint.org/docs/latest/rules/semi-style"
},
schema: [{ enum: ["last", "first"] }],
fixable: "whitespace",
schema: [{ enum: ["last", "first"] }],
fixable: "whitespace",
messages: {
expectedSemiColon: "Expected this semicolon to be at {{pos}}.",
},
},
messages: {
expectedSemiColon: "Expected this semicolon to be at {{pos}}."
}
},
create(context) {
const sourceCode = context.sourceCode;
const option = context.options[0] || "last";
create(context) {
const sourceCode = context.sourceCode;
const option = context.options[0] || "last";
/**
* Check the given semicolon token.
* @param {Token} semiToken The semicolon token to check.
* @param {"first"|"last"} expected The expected location to check.
* @returns {void}
*/
function check(semiToken, expected) {
const prevToken = sourceCode.getTokenBefore(semiToken);
const nextToken = sourceCode.getTokenAfter(semiToken);
const prevIsSameLine =
!prevToken || astUtils.isTokenOnSameLine(prevToken, semiToken);
const nextIsSameLine =
!nextToken || astUtils.isTokenOnSameLine(semiToken, nextToken);
/**
* Check the given semicolon token.
* @param {Token} semiToken The semicolon token to check.
* @param {"first"|"last"} expected The expected location to check.
* @returns {void}
*/
function check(semiToken, expected) {
const prevToken = sourceCode.getTokenBefore(semiToken);
const nextToken = sourceCode.getTokenAfter(semiToken);
const prevIsSameLine = !prevToken || astUtils.isTokenOnSameLine(prevToken, semiToken);
const nextIsSameLine = !nextToken || astUtils.isTokenOnSameLine(semiToken, nextToken);
if (
(expected === "last" && !prevIsSameLine) ||
(expected === "first" && !nextIsSameLine)
) {
context.report({
loc: semiToken.loc,
messageId: "expectedSemiColon",
data: {
pos:
expected === "last"
? "the end of the previous line"
: "the beginning of the next line",
},
fix(fixer) {
if (
prevToken &&
nextToken &&
sourceCode.commentsExistBetween(
prevToken,
nextToken,
)
) {
return null;
}
if ((expected === "last" && !prevIsSameLine) || (expected === "first" && !nextIsSameLine)) {
context.report({
loc: semiToken.loc,
messageId: "expectedSemiColon",
data: {
pos: (expected === "last")
? "the end of the previous line"
: "the beginning of the next line"
},
fix(fixer) {
if (prevToken && nextToken && sourceCode.commentsExistBetween(prevToken, nextToken)) {
return null;
}
const start = prevToken
? prevToken.range[1]
: semiToken.range[0];
const end = nextToken
? nextToken.range[0]
: semiToken.range[1];
const text = expected === "last" ? ";\n" : "\n;";
const start = prevToken ? prevToken.range[1] : semiToken.range[0];
const end = nextToken ? nextToken.range[0] : semiToken.range[1];
const text = (expected === "last") ? ";\n" : "\n;";
return fixer.replaceTextRange([start, end], text);
},
});
}
}
return fixer.replaceTextRange([start, end], text);
}
});
}
}
return {
[SELECTOR](node) {
if (option === "first" && isLastChild(node)) {
return;
}
return {
[SELECTOR](node) {
if (option === "first" && isLastChild(node)) {
return;
}
const lastToken = sourceCode.getLastToken(node);
const lastToken = sourceCode.getLastToken(node);
if (astUtils.isSemicolonToken(lastToken)) {
check(lastToken, option);
}
},
if (astUtils.isSemicolonToken(lastToken)) {
check(lastToken, option);
}
},
ForStatement(node) {
const firstSemi =
node.init &&
sourceCode.getTokenAfter(
node.init,
astUtils.isSemicolonToken,
);
const secondSemi =
node.test &&
sourceCode.getTokenAfter(
node.test,
astUtils.isSemicolonToken,
);
ForStatement(node) {
const firstSemi = node.init && sourceCode.getTokenAfter(node.init, astUtils.isSemicolonToken);
const secondSemi = node.test && sourceCode.getTokenAfter(node.test, astUtils.isSemicolonToken);
if (firstSemi) {
check(firstSemi, "last");
}
if (secondSemi) {
check(secondSemi, "last");
}
},
};
},
if (firstSemi) {
check(firstSemi, "last");
}
if (secondSemi) {
check(secondSemi, "last");
}
}
};
}
};