HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-172-31-4-197 6.8.0-1036-aws #38~22.04.1-Ubuntu SMP Fri Aug 22 15:44:33 UTC 2025 x86_64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/api-storage/node_modules/eslint/lib/linter/rules.js
/**
 * @fileoverview Defines a storage for rules.
 * @author Nicholas C. Zakas
 * @author aladdin-add
 */

"use strict";

//------------------------------------------------------------------------------
// Requirements
//------------------------------------------------------------------------------

const builtInRules = require("../rules");

//------------------------------------------------------------------------------
// Typedefs
//------------------------------------------------------------------------------

/** @typedef {import("../types").Rule.RuleModule} Rule */

//------------------------------------------------------------------------------
// Public Interface
//------------------------------------------------------------------------------

/**
 * A storage for rules.
 */
class Rules {
	constructor() {
		this._rules = Object.create(null);
	}

	/**
	 * Registers a rule module for rule id in storage.
	 * @param {string} ruleId Rule id (file name).
	 * @param {Rule} rule Rule object.
	 * @returns {void}
	 */
	define(ruleId, rule) {
		this._rules[ruleId] = rule;
	}

	/**
	 * Access rule handler by id (file name).
	 * @param {string} ruleId Rule id (file name).
	 * @returns {Rule} Rule object.
	 */
	get(ruleId) {
		if (typeof this._rules[ruleId] === "string") {
			this.define(ruleId, require(this._rules[ruleId]));
		}
		if (this._rules[ruleId]) {
			return this._rules[ruleId];
		}
		if (builtInRules.has(ruleId)) {
			return builtInRules.get(ruleId);
		}

		return null;
	}

	*[Symbol.iterator]() {
		yield* builtInRules;

		for (const ruleId of Object.keys(this._rules)) {
			yield [ruleId, this.get(ruleId)];
		}
	}
}

module.exports = Rules;