home
This commit is contained in:
parent
a71a3b5593
commit
cb52890889
16657 changed files with 1483086 additions and 1 deletions
95
home/ags/node_modules/eslint-plugin-es-x/lib/rules/no-resizable-and-growable-arraybuffers.js
generated
vendored
Normal file
95
home/ags/node_modules/eslint-plugin-es-x/lib/rules/no-resizable-and-growable-arraybuffers.js
generated
vendored
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
"use strict"
|
||||
|
||||
const {
|
||||
CONSTRUCT,
|
||||
ReferenceTracker,
|
||||
} = require("@eslint-community/eslint-utils")
|
||||
const {
|
||||
definePrototypeMethodHandler,
|
||||
} = require("../util/define-prototype-method-handler")
|
||||
const { getSourceCode } = require("eslint-compat-utils")
|
||||
|
||||
/**
|
||||
* @param {Node|undefined} node
|
||||
* @returns {boolean}
|
||||
*/
|
||||
function isSpreadElement(node) {
|
||||
return node && node.type === "SpreadElement"
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
meta: {
|
||||
docs: {
|
||||
description: "disallow resizable and growable ArrayBuffers",
|
||||
category: "ES2024",
|
||||
recommended: false,
|
||||
url: "http://eslint-community.github.io/eslint-plugin-es-x/rules/no-resizable-and-growable-arraybuffers.html",
|
||||
},
|
||||
fixable: null,
|
||||
messages: {
|
||||
forbiddenForResizableArrayBuffer:
|
||||
"ES2024 Resizable ArrayBuffer is forbidden.",
|
||||
forbiddenForGrowableSharedArrayBuffer:
|
||||
"ES2024 Growable SharedArrayBuffer is forbidden.",
|
||||
},
|
||||
schema: [
|
||||
{
|
||||
type: "object",
|
||||
properties: {
|
||||
aggressive: { type: "boolean" },
|
||||
},
|
||||
additionalProperties: false,
|
||||
},
|
||||
],
|
||||
type: "problem",
|
||||
},
|
||||
create(context) {
|
||||
return {
|
||||
...definePrototypeMethodHandler(
|
||||
context,
|
||||
{
|
||||
ArrayBuffer: ["maxByteLength", "resizable", "resize"],
|
||||
SharedArrayBuffer: ["grow", "growable", "maxByteLength"],
|
||||
},
|
||||
{
|
||||
createReport({ className }) {
|
||||
return {
|
||||
messageId:
|
||||
className === "ArrayBuffer"
|
||||
? "forbiddenForResizableArrayBuffer"
|
||||
: "forbiddenForGrowableSharedArrayBuffer",
|
||||
}
|
||||
},
|
||||
},
|
||||
),
|
||||
"Program:exit"(program) {
|
||||
const sourceCode = getSourceCode(context)
|
||||
const tracker = new ReferenceTracker(
|
||||
sourceCode.getScope(program),
|
||||
)
|
||||
for (const { node, path } of tracker.iterateGlobalReferences({
|
||||
ArrayBuffer: { [CONSTRUCT]: true },
|
||||
SharedArrayBuffer: { [CONSTRUCT]: true },
|
||||
})) {
|
||||
if (node.type !== "NewExpression") {
|
||||
continue
|
||||
}
|
||||
const args = node.arguments.slice(0, 2)
|
||||
if (args.some(isSpreadElement)) {
|
||||
continue
|
||||
}
|
||||
const reportedNode = args[1]
|
||||
if (reportedNode) {
|
||||
context.report({
|
||||
node: reportedNode,
|
||||
messageId:
|
||||
path[0] === "ArrayBuffer"
|
||||
? "forbiddenForResizableArrayBuffer"
|
||||
: "forbiddenForGrowableSharedArrayBuffer",
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue