| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | //      'use strict';const os = require('os');const createExplorer = require('./createExplorer');const loaders = require('./loaders');module.exports = cosmiconfig;function cosmiconfig(  moduleName        ,  options                                                                                                                                                                                                                           ) {  options = options || {};  const defaults = {    packageProp: moduleName,    searchPlaces: [      'package.json',      `.${moduleName}rc`,      `.${moduleName}rc.json`,      `.${moduleName}rc.yaml`,      `.${moduleName}rc.yml`,      `.${moduleName}rc.js`,      `${moduleName}.config.js`,    ],    ignoreEmptySearchPlaces: true,    stopDir: os.homedir(),    cache: true,    transform: identity,  };  const normalizedOptions                  = Object.assign(    {},    defaults,    options,    {      loaders: normalizeLoaders(options.loaders),    }  );  return createExplorer(normalizedOptions);}cosmiconfig.loadJs = loaders.loadJs;cosmiconfig.loadJson = loaders.loadJson;cosmiconfig.loadYaml = loaders.loadYaml;function normalizeLoaders(rawLoaders         )          {  const defaults = {    '.js': { sync: loaders.loadJs, async: loaders.loadJs },    '.json': { sync: loaders.loadJson, async: loaders.loadJson },    '.yaml': { sync: loaders.loadYaml, async: loaders.loadYaml },    '.yml': { sync: loaders.loadYaml, async: loaders.loadYaml },    noExt: { sync: loaders.loadYaml, async: loaders.loadYaml },  };  if (!rawLoaders) {    return defaults;  }  return Object.keys(rawLoaders).reduce((result, ext) => {    const entry = rawLoaders && rawLoaders[ext];    if (typeof entry === 'function') {      result[ext] = { sync: entry, async: entry };    } else {      result[ext] = entry;    }    return result;  }, defaults);}function identity(x) {  return x;}
 |