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:
+115
-122
@@ -14,143 +14,136 @@ 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: [
|
||||
{
|
||||
allowLoop: false,
|
||||
allowSwitch: false,
|
||||
},
|
||||
],
|
||||
docs: {
|
||||
description: "Disallow labeled statements",
|
||||
recommended: false,
|
||||
url: "https://eslint.org/docs/latest/rules/no-labels"
|
||||
},
|
||||
|
||||
docs: {
|
||||
description: "Disallow labeled statements",
|
||||
recommended: false,
|
||||
frozen: true,
|
||||
url: "https://eslint.org/docs/latest/rules/no-labels",
|
||||
},
|
||||
schema: [
|
||||
{
|
||||
type: "object",
|
||||
properties: {
|
||||
allowLoop: {
|
||||
type: "boolean",
|
||||
default: false
|
||||
},
|
||||
allowSwitch: {
|
||||
type: "boolean",
|
||||
default: false
|
||||
}
|
||||
},
|
||||
additionalProperties: false
|
||||
}
|
||||
],
|
||||
|
||||
schema: [
|
||||
{
|
||||
type: "object",
|
||||
properties: {
|
||||
allowLoop: {
|
||||
type: "boolean",
|
||||
},
|
||||
allowSwitch: {
|
||||
type: "boolean",
|
||||
},
|
||||
},
|
||||
additionalProperties: false,
|
||||
},
|
||||
],
|
||||
messages: {
|
||||
unexpectedLabel: "Unexpected labeled statement.",
|
||||
unexpectedLabelInBreak: "Unexpected label in break statement.",
|
||||
unexpectedLabelInContinue: "Unexpected label in continue statement."
|
||||
}
|
||||
},
|
||||
|
||||
messages: {
|
||||
unexpectedLabel: "Unexpected labeled statement.",
|
||||
unexpectedLabelInBreak: "Unexpected label in break statement.",
|
||||
unexpectedLabelInContinue:
|
||||
"Unexpected label in continue statement.",
|
||||
},
|
||||
},
|
||||
create(context) {
|
||||
const options = context.options[0];
|
||||
const allowLoop = options && options.allowLoop;
|
||||
const allowSwitch = options && options.allowSwitch;
|
||||
let scopeInfo = null;
|
||||
|
||||
create(context) {
|
||||
const [{ allowLoop, allowSwitch }] = context.options;
|
||||
let scopeInfo = null;
|
||||
/**
|
||||
* Gets the kind of a given node.
|
||||
* @param {ASTNode} node A node to get.
|
||||
* @returns {string} The kind of the node.
|
||||
*/
|
||||
function getBodyKind(node) {
|
||||
if (astUtils.isLoop(node)) {
|
||||
return "loop";
|
||||
}
|
||||
if (node.type === "SwitchStatement") {
|
||||
return "switch";
|
||||
}
|
||||
return "other";
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the kind of a given node.
|
||||
* @param {ASTNode} node A node to get.
|
||||
* @returns {string} The kind of the node.
|
||||
*/
|
||||
function getBodyKind(node) {
|
||||
if (astUtils.isLoop(node)) {
|
||||
return "loop";
|
||||
}
|
||||
if (node.type === "SwitchStatement") {
|
||||
return "switch";
|
||||
}
|
||||
return "other";
|
||||
}
|
||||
/**
|
||||
* Checks whether the label of a given kind is allowed or not.
|
||||
* @param {string} kind A kind to check.
|
||||
* @returns {boolean} `true` if the kind is allowed.
|
||||
*/
|
||||
function isAllowed(kind) {
|
||||
switch (kind) {
|
||||
case "loop": return allowLoop;
|
||||
case "switch": return allowSwitch;
|
||||
default: return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the label of a given kind is allowed or not.
|
||||
* @param {string} kind A kind to check.
|
||||
* @returns {boolean} `true` if the kind is allowed.
|
||||
*/
|
||||
function isAllowed(kind) {
|
||||
switch (kind) {
|
||||
case "loop":
|
||||
return allowLoop;
|
||||
case "switch":
|
||||
return allowSwitch;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Checks whether a given name is a label of a loop or not.
|
||||
* @param {string} label A name of a label to check.
|
||||
* @returns {boolean} `true` if the name is a label of a loop.
|
||||
*/
|
||||
function getKind(label) {
|
||||
let info = scopeInfo;
|
||||
|
||||
/**
|
||||
* Checks whether a given name is a label of a loop or not.
|
||||
* @param {string} label A name of a label to check.
|
||||
* @returns {boolean} `true` if the name is a label of a loop.
|
||||
*/
|
||||
function getKind(label) {
|
||||
let info = scopeInfo;
|
||||
while (info) {
|
||||
if (info.label === label) {
|
||||
return info.kind;
|
||||
}
|
||||
info = info.upper;
|
||||
}
|
||||
|
||||
while (info) {
|
||||
if (info.label === label) {
|
||||
return info.kind;
|
||||
}
|
||||
info = info.upper;
|
||||
}
|
||||
/* c8 ignore next */
|
||||
return "other";
|
||||
}
|
||||
|
||||
/* c8 ignore next */
|
||||
return "other";
|
||||
}
|
||||
//--------------------------------------------------------------------------
|
||||
// Public
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Public
|
||||
//--------------------------------------------------------------------------
|
||||
return {
|
||||
LabeledStatement(node) {
|
||||
scopeInfo = {
|
||||
label: node.label.name,
|
||||
kind: getBodyKind(node.body),
|
||||
upper: scopeInfo
|
||||
};
|
||||
},
|
||||
|
||||
return {
|
||||
LabeledStatement(node) {
|
||||
scopeInfo = {
|
||||
label: node.label.name,
|
||||
kind: getBodyKind(node.body),
|
||||
upper: scopeInfo,
|
||||
};
|
||||
},
|
||||
"LabeledStatement:exit"(node) {
|
||||
if (!isAllowed(scopeInfo.kind)) {
|
||||
context.report({
|
||||
node,
|
||||
messageId: "unexpectedLabel"
|
||||
});
|
||||
}
|
||||
|
||||
"LabeledStatement:exit"(node) {
|
||||
if (!isAllowed(scopeInfo.kind)) {
|
||||
context.report({
|
||||
node,
|
||||
messageId: "unexpectedLabel",
|
||||
});
|
||||
}
|
||||
scopeInfo = scopeInfo.upper;
|
||||
},
|
||||
|
||||
scopeInfo = scopeInfo.upper;
|
||||
},
|
||||
BreakStatement(node) {
|
||||
if (node.label && !isAllowed(getKind(node.label.name))) {
|
||||
context.report({
|
||||
node,
|
||||
messageId: "unexpectedLabelInBreak"
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
BreakStatement(node) {
|
||||
if (node.label && !isAllowed(getKind(node.label.name))) {
|
||||
context.report({
|
||||
node,
|
||||
messageId: "unexpectedLabelInBreak",
|
||||
});
|
||||
}
|
||||
},
|
||||
ContinueStatement(node) {
|
||||
if (node.label && !isAllowed(getKind(node.label.name))) {
|
||||
context.report({
|
||||
node,
|
||||
messageId: "unexpectedLabelInContinue"
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
ContinueStatement(node) {
|
||||
if (node.label && !isAllowed(getKind(node.label.name))) {
|
||||
context.report({
|
||||
node,
|
||||
messageId: "unexpectedLabelInContinue",
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user