| /** |
| * @fileoverview Provide the function that emits deprecation warnings. |
| * @author Toru Nagashima <http://github.com/mysticatea> |
| */ |
| |
| //------------------------------------------------------------------------------ |
| // Requirements |
| //------------------------------------------------------------------------------ |
| |
| import path from "path"; |
| |
| //------------------------------------------------------------------------------ |
| // Private |
| //------------------------------------------------------------------------------ |
| |
| // Defitions for deprecation warnings. |
| const deprecationWarningMessages = { |
| ESLINT_LEGACY_ECMAFEATURES: |
| "The 'ecmaFeatures' config file property is deprecated and has no effect.", |
| ESLINT_PERSONAL_CONFIG_LOAD: |
| "'~/.eslintrc.*' config files have been deprecated. " + |
| "Please use a config file per project or the '--config' option.", |
| ESLINT_PERSONAL_CONFIG_SUPPRESS: |
| "'~/.eslintrc.*' config files have been deprecated. " + |
| "Please remove it or add 'root:true' to the config files in your " + |
| "projects in order to avoid loading '~/.eslintrc.*' accidentally." |
| }; |
| |
| const sourceFileErrorCache = new Set(); |
| |
| /** |
| * Emits a deprecation warning containing a given filepath. A new deprecation warning is emitted |
| * for each unique file path, but repeated invocations with the same file path have no effect. |
| * No warnings are emitted if the `--no-deprecation` or `--no-warnings` Node runtime flags are active. |
| * @param {string} source The name of the configuration source to report the warning for. |
| * @param {string} errorCode The warning message to show. |
| * @returns {void} |
| */ |
| function emitDeprecationWarning(source, errorCode) { |
| const cacheKey = JSON.stringify({ source, errorCode }); |
| |
| if (sourceFileErrorCache.has(cacheKey)) { |
| return; |
| } |
| sourceFileErrorCache.add(cacheKey); |
| |
| const rel = path.relative(process.cwd(), source); |
| const message = deprecationWarningMessages[errorCode]; |
| |
| process.emitWarning( |
| `${message} (found in "${rel}")`, |
| "DeprecationWarning", |
| errorCode |
| ); |
| } |
| |
| //------------------------------------------------------------------------------ |
| // Public Interface |
| //------------------------------------------------------------------------------ |
| |
| export { |
| emitDeprecationWarning |
| }; |