first commit

This commit is contained in:
2025-10-26 23:10:15 +08:00
commit 8f0345b7be
14961 changed files with 2356381 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
import { TSESTree } from '@typescript-eslint/types';
import { createRule } from '../utils/index.js';
const restrictedGlobals = [
'clearInterval',
'clearTimeout',
'global',
'globalThis',
'process',
'setInterval',
'setTimeout',
'setImmediate',
'clearImmediate',
'__dirname',
'__filename',
];
export const NoRestrictedGlobalsRule = createRule({
name: 'no-restricted-globals',
meta: {
type: 'problem',
docs: {
description: 'Disallow usage of restricted global variables in community nodes.',
},
messages: {
restrictedGlobal: "Use of restricted global '{{ name }}' is not allowed",
},
schema: [],
},
defaultOptions: [],
create(context) {
function checkReference(ref, name) {
const { parent } = ref.identifier;
// Skip property access (like console.process - we want process.exit but not obj.process)
if (parent?.type === TSESTree.AST_NODE_TYPES.MemberExpression &&
parent.property === ref.identifier &&
!parent.computed) {
return;
}
context.report({
node: ref.identifier,
messageId: 'restrictedGlobal',
data: { name },
});
}
return {
Program() {
const globalScope = context.sourceCode.getScope(context.sourceCode.ast);
const allReferences = [
...globalScope.variables
.filter((variable) => restrictedGlobals.includes(variable.name) && variable.defs.length === 0)
.flatMap((variable) => variable.references.map((ref) => ({ ref, name: variable.name }))),
...globalScope.through
.filter((ref) => restrictedGlobals.includes(ref.identifier.name))
.map((ref) => ({ ref, name: ref.identifier.name })),
];
allReferences.forEach(({ ref, name }) => checkReference(ref, name));
},
};
},
});
//# sourceMappingURL=no-restricted-globals.js.map