64 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * @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
 | |
| };
 |