| exports.config = (api, preset) => { | 
|   const config = { | 
|     root: true, | 
|     env: { node: true }, | 
|     extends: ['plugin:vue/essential'], | 
|     parserOptions: { | 
|       ecmaVersion: 2020 | 
|     }, | 
|     rules: { | 
|       'no-console': makeJSOnlyValue(`process.env.NODE_ENV === 'production' ? 'warn' : 'off'`), | 
|       'no-debugger': makeJSOnlyValue(`process.env.NODE_ENV === 'production' ? 'warn' : 'off'`) | 
|     } | 
|   } | 
|   | 
|   if (api.hasPlugin('babel') && !api.hasPlugin('typescript')) { | 
|     config.parserOptions = { | 
|       parser: 'babel-eslint' | 
|     } | 
|   } | 
|   | 
|   if (preset === 'airbnb') { | 
|     config.extends.push('@vue/airbnb') | 
|   } else if (preset === 'standard') { | 
|     config.extends.push('@vue/standard') | 
|   } else if (preset === 'prettier') { | 
|     config.extends.push(...['eslint:recommended', '@vue/prettier']) | 
|   } else { | 
|     // default | 
|     config.extends.push('eslint:recommended') | 
|   } | 
|   | 
|   if (api.hasPlugin('typescript')) { | 
|     // typically, typescript ruleset should be appended to the end of the `extends` array | 
|     // but that is not the case for prettier, as there are conflicting rules | 
|     if (preset === 'prettier') { | 
|       config.extends.pop() | 
|       config.extends.push(...['@vue/typescript/recommended', '@vue/prettier', '@vue/prettier/@typescript-eslint']) | 
|     } else { | 
|       config.extends.push('@vue/typescript/recommended') | 
|     } | 
|   } | 
|   | 
|   return config | 
| } | 
|   | 
| // __expression is a special flag that allows us to customize stringification | 
| // output when extracting configs into standalone files | 
| function makeJSOnlyValue (str) { | 
|   const fn = () => {} | 
|   fn.__expression = str | 
|   return fn | 
| } | 
|   | 
| const baseExtensions = ['.js', '.jsx', '.vue'] | 
| exports.extensions = api => api.hasPlugin('typescript') | 
|   ? baseExtensions.concat('.ts', '.tsx') | 
|   : baseExtensions |