Save current BZZZ config-ui state before CHORUS branding update
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
		
							
								
								
									
										238
									
								
								install/config-ui/node_modules/eslint/lib/rules/no-mixed-requires.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										238
									
								
								install/config-ui/node_modules/eslint/lib/rules/no-mixed-requires.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,238 @@ | ||||
| /** | ||||
|  * @fileoverview Rule to enforce grouped require statements for Node.JS | ||||
|  * @author Raphael Pigulla | ||||
|  * @deprecated in ESLint v7.0.0 | ||||
|  */ | ||||
|  | ||||
| "use strict"; | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| // Rule Definition | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| /** @type {import('../shared/types').Rule} */ | ||||
| module.exports = { | ||||
|     meta: { | ||||
|         deprecated: true, | ||||
|  | ||||
|         replacedBy: [], | ||||
|  | ||||
|         type: "suggestion", | ||||
|  | ||||
|         docs: { | ||||
|             description: "Disallow `require` calls to be mixed with regular variable declarations", | ||||
|             recommended: false, | ||||
|             url: "https://eslint.org/docs/latest/rules/no-mixed-requires" | ||||
|         }, | ||||
|  | ||||
|         schema: [ | ||||
|             { | ||||
|                 oneOf: [ | ||||
|                     { | ||||
|                         type: "boolean" | ||||
|                     }, | ||||
|                     { | ||||
|                         type: "object", | ||||
|                         properties: { | ||||
|                             grouping: { | ||||
|                                 type: "boolean" | ||||
|                             }, | ||||
|                             allowCall: { | ||||
|                                 type: "boolean" | ||||
|                             } | ||||
|                         }, | ||||
|                         additionalProperties: false | ||||
|                     } | ||||
|                 ] | ||||
|             } | ||||
|         ], | ||||
|  | ||||
|         messages: { | ||||
|             noMixRequire: "Do not mix 'require' and other declarations.", | ||||
|             noMixCoreModuleFileComputed: "Do not mix core, module, file and computed requires." | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     create(context) { | ||||
|  | ||||
|         const options = context.options[0]; | ||||
|         let grouping = false, | ||||
|             allowCall = false; | ||||
|  | ||||
|         if (typeof options === "object") { | ||||
|             grouping = options.grouping; | ||||
|             allowCall = options.allowCall; | ||||
|         } else { | ||||
|             grouping = !!options; | ||||
|         } | ||||
|  | ||||
|         /** | ||||
|          * Returns the list of built-in modules. | ||||
|          * @returns {string[]} An array of built-in Node.js modules. | ||||
|          */ | ||||
|         function getBuiltinModules() { | ||||
|  | ||||
|             /* | ||||
|              * This list is generated using: | ||||
|              * `require("repl")._builtinLibs.concat('repl').sort()` | ||||
|              * This particular list is as per nodejs v0.12.2 and iojs v0.7.1 | ||||
|              */ | ||||
|             return [ | ||||
|                 "assert", "buffer", "child_process", "cluster", "crypto", | ||||
|                 "dgram", "dns", "domain", "events", "fs", "http", "https", | ||||
|                 "net", "os", "path", "punycode", "querystring", "readline", | ||||
|                 "repl", "smalloc", "stream", "string_decoder", "tls", "tty", | ||||
|                 "url", "util", "v8", "vm", "zlib" | ||||
|             ]; | ||||
|         } | ||||
|  | ||||
|         const BUILTIN_MODULES = getBuiltinModules(); | ||||
|  | ||||
|         const DECL_REQUIRE = "require", | ||||
|             DECL_UNINITIALIZED = "uninitialized", | ||||
|             DECL_OTHER = "other"; | ||||
|  | ||||
|         const REQ_CORE = "core", | ||||
|             REQ_FILE = "file", | ||||
|             REQ_MODULE = "module", | ||||
|             REQ_COMPUTED = "computed"; | ||||
|  | ||||
|         /** | ||||
|          * Determines the type of a declaration statement. | ||||
|          * @param {ASTNode} initExpression The init node of the VariableDeclarator. | ||||
|          * @returns {string} The type of declaration represented by the expression. | ||||
|          */ | ||||
|         function getDeclarationType(initExpression) { | ||||
|             if (!initExpression) { | ||||
|  | ||||
|                 // "var x;" | ||||
|                 return DECL_UNINITIALIZED; | ||||
|             } | ||||
|  | ||||
|             if (initExpression.type === "CallExpression" && | ||||
|                 initExpression.callee.type === "Identifier" && | ||||
|                 initExpression.callee.name === "require" | ||||
|             ) { | ||||
|  | ||||
|                 // "var x = require('util');" | ||||
|                 return DECL_REQUIRE; | ||||
|             } | ||||
|             if (allowCall && | ||||
|                 initExpression.type === "CallExpression" && | ||||
|                 initExpression.callee.type === "CallExpression" | ||||
|             ) { | ||||
|  | ||||
|                 // "var x = require('diagnose')('sub-module');" | ||||
|                 return getDeclarationType(initExpression.callee); | ||||
|             } | ||||
|             if (initExpression.type === "MemberExpression") { | ||||
|  | ||||
|                 // "var x = require('glob').Glob;" | ||||
|                 return getDeclarationType(initExpression.object); | ||||
|             } | ||||
|  | ||||
|             // "var x = 42;" | ||||
|             return DECL_OTHER; | ||||
|         } | ||||
|  | ||||
|         /** | ||||
|          * Determines the type of module that is loaded via require. | ||||
|          * @param {ASTNode} initExpression The init node of the VariableDeclarator. | ||||
|          * @returns {string} The module type. | ||||
|          */ | ||||
|         function inferModuleType(initExpression) { | ||||
|             if (initExpression.type === "MemberExpression") { | ||||
|  | ||||
|                 // "var x = require('glob').Glob;" | ||||
|                 return inferModuleType(initExpression.object); | ||||
|             } | ||||
|             if (initExpression.arguments.length === 0) { | ||||
|  | ||||
|                 // "var x = require();" | ||||
|                 return REQ_COMPUTED; | ||||
|             } | ||||
|  | ||||
|             const arg = initExpression.arguments[0]; | ||||
|  | ||||
|             if (arg.type !== "Literal" || typeof arg.value !== "string") { | ||||
|  | ||||
|                 // "var x = require(42);" | ||||
|                 return REQ_COMPUTED; | ||||
|             } | ||||
|  | ||||
|             if (BUILTIN_MODULES.includes(arg.value)) { | ||||
|  | ||||
|                 // "var fs = require('fs');" | ||||
|                 return REQ_CORE; | ||||
|             } | ||||
|             if (/^\.{0,2}\//u.test(arg.value)) { | ||||
|  | ||||
|                 // "var utils = require('./utils');" | ||||
|                 return REQ_FILE; | ||||
|             } | ||||
|  | ||||
|             // "var async = require('async');" | ||||
|             return REQ_MODULE; | ||||
|  | ||||
|         } | ||||
|  | ||||
|         /** | ||||
|          * Check if the list of variable declarations is mixed, i.e. whether it | ||||
|          * contains both require and other declarations. | ||||
|          * @param {ASTNode} declarations The list of VariableDeclarators. | ||||
|          * @returns {boolean} True if the declarations are mixed, false if not. | ||||
|          */ | ||||
|         function isMixed(declarations) { | ||||
|             const contains = {}; | ||||
|  | ||||
|             declarations.forEach(declaration => { | ||||
|                 const type = getDeclarationType(declaration.init); | ||||
|  | ||||
|                 contains[type] = true; | ||||
|             }); | ||||
|  | ||||
|             return !!( | ||||
|                 contains[DECL_REQUIRE] && | ||||
|                 (contains[DECL_UNINITIALIZED] || contains[DECL_OTHER]) | ||||
|             ); | ||||
|         } | ||||
|  | ||||
|         /** | ||||
|          * Check if all require declarations in the given list are of the same | ||||
|          * type. | ||||
|          * @param {ASTNode} declarations The list of VariableDeclarators. | ||||
|          * @returns {boolean} True if the declarations are grouped, false if not. | ||||
|          */ | ||||
|         function isGrouped(declarations) { | ||||
|             const found = {}; | ||||
|  | ||||
|             declarations.forEach(declaration => { | ||||
|                 if (getDeclarationType(declaration.init) === DECL_REQUIRE) { | ||||
|                     found[inferModuleType(declaration.init)] = true; | ||||
|                 } | ||||
|             }); | ||||
|  | ||||
|             return Object.keys(found).length <= 1; | ||||
|         } | ||||
|  | ||||
|  | ||||
|         return { | ||||
|  | ||||
|             VariableDeclaration(node) { | ||||
|  | ||||
|                 if (isMixed(node.declarations)) { | ||||
|                     context.report({ | ||||
|                         node, | ||||
|                         messageId: "noMixRequire" | ||||
|                     }); | ||||
|                 } else if (grouping && !isGrouped(node.declarations)) { | ||||
|                     context.report({ | ||||
|                         node, | ||||
|                         messageId: "noMixCoreModuleFileComputed" | ||||
|                     }); | ||||
|                 } | ||||
|             } | ||||
|         }; | ||||
|  | ||||
|     } | ||||
| }; | ||||
		Reference in New Issue
	
	Block a user
	 anthonyrawlins
					anthonyrawlins