Actualizacion maquina principal
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / yargs / lib / apply-extends.js
diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/yargs/lib/apply-extends.js b/.config/coc/extensions/node_modules/coc-prettier/node_modules/yargs/lib/apply-extends.js
new file mode 100644 (file)
index 0000000..530b022
--- /dev/null
@@ -0,0 +1,53 @@
+
+'use strict'
+const fs = require('fs')
+const path = require('path')
+const YError = require('./yerror')
+
+let previouslyVisitedConfigs = []
+
+function checkForCircularExtends (cfgPath) {
+  if (previouslyVisitedConfigs.indexOf(cfgPath) > -1) {
+    throw new YError(`Circular extended configurations: '${cfgPath}'.`)
+  }
+}
+
+function getPathToDefaultConfig (cwd, pathToExtend) {
+  return path.resolve(cwd, pathToExtend)
+}
+
+function applyExtends (config, cwd) {
+  let defaultConfig = {}
+
+  if (config.hasOwnProperty('extends')) {
+    if (typeof config.extends !== 'string') return defaultConfig
+    const isPath = /\.json$/.test(config.extends)
+    let pathToDefault = null
+    if (!isPath) {
+      try {
+        pathToDefault = require.resolve(config.extends)
+      } catch (err) {
+        // most likely this simply isn't a module.
+      }
+    } else {
+      pathToDefault = getPathToDefaultConfig(cwd, config.extends)
+    }
+    // maybe the module uses key for some other reason,
+    // err on side of caution.
+    if (!pathToDefault && !isPath) return config
+
+    checkForCircularExtends(pathToDefault)
+
+    previouslyVisitedConfigs.push(pathToDefault)
+
+    defaultConfig = isPath ? JSON.parse(fs.readFileSync(pathToDefault, 'utf8')) : require(config.extends)
+    delete config.extends
+    defaultConfig = applyExtends(defaultConfig, path.dirname(pathToDefault))
+  }
+
+  previouslyVisitedConfigs = []
+
+  return Object.assign({}, defaultConfig, config)
+}
+
+module.exports = applyExtends