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:
+134
-133
@@ -15,159 +15,160 @@ const astUtils = require("./utils/ast-utils");
|
||||
// Rule Definition
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
/** @type {import('../types').Rule.RuleModule} */
|
||||
/** @type {import('../shared/types').Rule} */
|
||||
module.exports = {
|
||||
meta: {
|
||||
type: "suggestion",
|
||||
meta: {
|
||||
type: "suggestion",
|
||||
|
||||
defaultOptions: [{ builtinGlobals: true }],
|
||||
docs: {
|
||||
description: "Disallow variable redeclaration",
|
||||
recommended: true,
|
||||
url: "https://eslint.org/docs/latest/rules/no-redeclare"
|
||||
},
|
||||
|
||||
docs: {
|
||||
description: "Disallow variable redeclaration",
|
||||
recommended: true,
|
||||
url: "https://eslint.org/docs/latest/rules/no-redeclare",
|
||||
},
|
||||
messages: {
|
||||
redeclared: "'{{id}}' is already defined.",
|
||||
redeclaredAsBuiltin: "'{{id}}' is already defined as a built-in global variable.",
|
||||
redeclaredBySyntax: "'{{id}}' is already defined by a variable declaration."
|
||||
},
|
||||
|
||||
messages: {
|
||||
redeclared: "'{{id}}' is already defined.",
|
||||
redeclaredAsBuiltin:
|
||||
"'{{id}}' is already defined as a built-in global variable.",
|
||||
redeclaredBySyntax:
|
||||
"'{{id}}' is already defined by a variable declaration.",
|
||||
},
|
||||
schema: [
|
||||
{
|
||||
type: "object",
|
||||
properties: {
|
||||
builtinGlobals: { type: "boolean", default: true }
|
||||
},
|
||||
additionalProperties: false
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
schema: [
|
||||
{
|
||||
type: "object",
|
||||
properties: {
|
||||
builtinGlobals: { type: "boolean" },
|
||||
},
|
||||
additionalProperties: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
create(context) {
|
||||
const options = {
|
||||
builtinGlobals: Boolean(
|
||||
context.options.length === 0 ||
|
||||
context.options[0].builtinGlobals
|
||||
)
|
||||
};
|
||||
const sourceCode = context.sourceCode;
|
||||
|
||||
create(context) {
|
||||
const [{ builtinGlobals }] = context.options;
|
||||
const sourceCode = context.sourceCode;
|
||||
/**
|
||||
* Iterate declarations of a given variable.
|
||||
* @param {escope.variable} variable The variable object to iterate declarations.
|
||||
* @returns {IterableIterator<{type:string,node:ASTNode,loc:SourceLocation}>} The declarations.
|
||||
*/
|
||||
function *iterateDeclarations(variable) {
|
||||
if (options.builtinGlobals && (
|
||||
variable.eslintImplicitGlobalSetting === "readonly" ||
|
||||
variable.eslintImplicitGlobalSetting === "writable"
|
||||
)) {
|
||||
yield { type: "builtin" };
|
||||
}
|
||||
|
||||
/**
|
||||
* Iterate declarations of a given variable.
|
||||
* @param {escope.variable} variable The variable object to iterate declarations.
|
||||
* @returns {IterableIterator<{type:string,node:ASTNode,loc:SourceLocation}>} The declarations.
|
||||
*/
|
||||
function* iterateDeclarations(variable) {
|
||||
if (
|
||||
builtinGlobals &&
|
||||
(variable.eslintImplicitGlobalSetting === "readonly" ||
|
||||
variable.eslintImplicitGlobalSetting === "writable")
|
||||
) {
|
||||
yield { type: "builtin" };
|
||||
}
|
||||
for (const id of variable.identifiers) {
|
||||
yield { type: "syntax", node: id, loc: id.loc };
|
||||
}
|
||||
|
||||
for (const id of variable.identifiers) {
|
||||
yield { type: "syntax", node: id, loc: id.loc };
|
||||
}
|
||||
if (variable.eslintExplicitGlobalComments) {
|
||||
for (const comment of variable.eslintExplicitGlobalComments) {
|
||||
yield {
|
||||
type: "comment",
|
||||
node: comment,
|
||||
loc: astUtils.getNameLocationInGlobalDirectiveComment(
|
||||
sourceCode,
|
||||
comment,
|
||||
variable.name
|
||||
)
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (variable.eslintExplicitGlobalComments) {
|
||||
for (const comment of variable.eslintExplicitGlobalComments) {
|
||||
yield {
|
||||
type: "comment",
|
||||
node: comment,
|
||||
loc: astUtils.getNameLocationInGlobalDirectiveComment(
|
||||
sourceCode,
|
||||
comment,
|
||||
variable.name,
|
||||
),
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Find variables in a given scope and flag redeclared ones.
|
||||
* @param {Scope} scope An eslint-scope scope object.
|
||||
* @returns {void}
|
||||
* @private
|
||||
*/
|
||||
function findVariablesInScope(scope) {
|
||||
for (const variable of scope.variables) {
|
||||
const [
|
||||
declaration,
|
||||
...extraDeclarations
|
||||
] = iterateDeclarations(variable);
|
||||
|
||||
/**
|
||||
* Find variables in a given scope and flag redeclared ones.
|
||||
* @param {Scope} scope An eslint-scope scope object.
|
||||
* @returns {void}
|
||||
* @private
|
||||
*/
|
||||
function findVariablesInScope(scope) {
|
||||
for (const variable of scope.variables) {
|
||||
const [declaration, ...extraDeclarations] =
|
||||
iterateDeclarations(variable);
|
||||
if (extraDeclarations.length === 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (extraDeclarations.length === 0) {
|
||||
continue;
|
||||
}
|
||||
/*
|
||||
* If the type of a declaration is different from the type of
|
||||
* the first declaration, it shows the location of the first
|
||||
* declaration.
|
||||
*/
|
||||
const detailMessageId = declaration.type === "builtin"
|
||||
? "redeclaredAsBuiltin"
|
||||
: "redeclaredBySyntax";
|
||||
const data = { id: variable.name };
|
||||
|
||||
/*
|
||||
* If the type of a declaration is different from the type of
|
||||
* the first declaration, it shows the location of the first
|
||||
* declaration.
|
||||
*/
|
||||
const detailMessageId =
|
||||
declaration.type === "builtin"
|
||||
? "redeclaredAsBuiltin"
|
||||
: "redeclaredBySyntax";
|
||||
const data = { id: variable.name };
|
||||
// Report extra declarations.
|
||||
for (const { type, node, loc } of extraDeclarations) {
|
||||
const messageId = type === declaration.type
|
||||
? "redeclared"
|
||||
: detailMessageId;
|
||||
|
||||
// Report extra declarations.
|
||||
for (const { type, node, loc } of extraDeclarations) {
|
||||
const messageId =
|
||||
type === declaration.type
|
||||
? "redeclared"
|
||||
: detailMessageId;
|
||||
context.report({ node, loc, messageId, data });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
context.report({ node, loc, messageId, data });
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Find variables in the current scope.
|
||||
* @param {ASTNode} node The node of the current scope.
|
||||
* @returns {void}
|
||||
* @private
|
||||
*/
|
||||
function checkForBlock(node) {
|
||||
const scope = sourceCode.getScope(node);
|
||||
|
||||
/**
|
||||
* Find variables in the current scope.
|
||||
* @param {ASTNode} node The node of the current scope.
|
||||
* @returns {void}
|
||||
* @private
|
||||
*/
|
||||
function checkForBlock(node) {
|
||||
const scope = sourceCode.getScope(node);
|
||||
/*
|
||||
* In ES5, some node type such as `BlockStatement` doesn't have that scope.
|
||||
* `scope.block` is a different node in such a case.
|
||||
*/
|
||||
if (scope.block === node) {
|
||||
findVariablesInScope(scope);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* In ES5, some node type such as `BlockStatement` doesn't have that scope.
|
||||
* `scope.block` is a different node in such a case.
|
||||
*/
|
||||
if (scope.block === node) {
|
||||
findVariablesInScope(scope);
|
||||
}
|
||||
}
|
||||
return {
|
||||
Program(node) {
|
||||
const scope = sourceCode.getScope(node);
|
||||
|
||||
return {
|
||||
Program(node) {
|
||||
const scope = sourceCode.getScope(node);
|
||||
findVariablesInScope(scope);
|
||||
|
||||
findVariablesInScope(scope);
|
||||
// Node.js or ES modules has a special scope.
|
||||
if (
|
||||
scope.type === "global" &&
|
||||
scope.childScopes[0] &&
|
||||
|
||||
// Node.js or ES modules has a special scope.
|
||||
if (
|
||||
scope.type === "global" &&
|
||||
scope.childScopes[0] &&
|
||||
// The special scope's block is the Program node.
|
||||
scope.block === scope.childScopes[0].block
|
||||
) {
|
||||
findVariablesInScope(scope.childScopes[0]);
|
||||
}
|
||||
},
|
||||
// The special scope's block is the Program node.
|
||||
scope.block === scope.childScopes[0].block
|
||||
) {
|
||||
findVariablesInScope(scope.childScopes[0]);
|
||||
}
|
||||
},
|
||||
|
||||
FunctionDeclaration: checkForBlock,
|
||||
FunctionExpression: checkForBlock,
|
||||
ArrowFunctionExpression: checkForBlock,
|
||||
FunctionDeclaration: checkForBlock,
|
||||
FunctionExpression: checkForBlock,
|
||||
ArrowFunctionExpression: checkForBlock,
|
||||
|
||||
StaticBlock: checkForBlock,
|
||||
StaticBlock: checkForBlock,
|
||||
|
||||
BlockStatement: checkForBlock,
|
||||
ForStatement: checkForBlock,
|
||||
ForInStatement: checkForBlock,
|
||||
ForOfStatement: checkForBlock,
|
||||
SwitchStatement: checkForBlock,
|
||||
};
|
||||
},
|
||||
BlockStatement: checkForBlock,
|
||||
ForStatement: checkForBlock,
|
||||
ForInStatement: checkForBlock,
|
||||
ForOfStatement: checkForBlock,
|
||||
SwitchStatement: checkForBlock
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user