88 lines
2.7 KiB
JavaScript
88 lines
2.7 KiB
JavaScript
/**
|
|
* @fileoverview Emits warnings for ESLint.
|
|
* @author Francesco Trotta
|
|
*/
|
|
|
|
"use strict";
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Exports
|
|
//-----------------------------------------------------------------------------
|
|
|
|
/**
|
|
* A service that emits warnings for ESLint.
|
|
*/
|
|
class WarningService {
|
|
/**
|
|
* Creates a new instance of the service.
|
|
* @param {{ emitWarning?: ((warning: string, type: string) => void) | undefined }} [options] A function called internally to emit warnings using API provided by the runtime.
|
|
*/
|
|
constructor({
|
|
emitWarning = globalThis.process?.emitWarning ?? (() => {}),
|
|
} = {}) {
|
|
this.emitWarning = emitWarning;
|
|
}
|
|
|
|
/**
|
|
* Emits a warning when circular fixes are detected while fixing a file.
|
|
* This method is used by the Linter and is safe to call outside Node.js.
|
|
* @param {string} filename The name of the file being fixed.
|
|
* @returns {void}
|
|
*/
|
|
emitCircularFixesWarning(filename) {
|
|
this.emitWarning(
|
|
`Circular fixes detected while fixing ${filename}. It is likely that you have conflicting rules in your configuration.`,
|
|
"ESLintCircularFixesWarning",
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Emits a warning when an empty config file has been loaded.
|
|
* @param {string} configFilePath The path to the config file.
|
|
* @returns {void}
|
|
*/
|
|
emitEmptyConfigWarning(configFilePath) {
|
|
this.emitWarning(
|
|
`Running ESLint with an empty config (from ${configFilePath}). Please double-check that this is what you want. If you want to run ESLint with an empty config, export [{}] to remove this warning.`,
|
|
"ESLintEmptyConfigWarning",
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Emits a warning when an ".eslintignore" file is found.
|
|
* @returns {void}
|
|
*/
|
|
emitESLintIgnoreWarning() {
|
|
this.emitWarning(
|
|
'The ".eslintignore" file is no longer supported. Switch to using the "ignores" property in "eslint.config.js": https://eslint.org/docs/latest/use/configure/migration-guide#ignore-files',
|
|
"ESLintIgnoreWarning",
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Emits a warning when an inactive flag is used.
|
|
* This method is used by the Linter and is safe to call outside Node.js.
|
|
* @param {string} flag The name of the flag.
|
|
* @param {string} message The warning message.
|
|
* @returns {void}
|
|
*/
|
|
emitInactiveFlagWarning(flag, message) {
|
|
this.emitWarning(message, `ESLintInactiveFlag_${flag}`);
|
|
}
|
|
|
|
/**
|
|
* Emits a warning when a suboptimal concurrency setting is detected.
|
|
* Currently, this is only used to warn when the net linting ratio is low.
|
|
* @param {string} notice A notice about how to improve performance.
|
|
* @returns {void}
|
|
*/
|
|
emitPoorConcurrencyWarning(notice) {
|
|
this.emitWarning(
|
|
`You may ${notice} to improve performance.`,
|
|
"ESLintPoorConcurrencyWarning",
|
|
);
|
|
}
|
|
}
|
|
|
|
module.exports = { WarningService };
|