From 3c51c3be85bb0d1bdb87ea0d6632f1c256912f27 Mon Sep 17 00:00:00 2001 From: Dimitri Staessens Date: Sun, 6 Oct 2019 21:37:45 +0200 Subject: build: Add some required modules for node --- node_modules/cosmiconfig/lib/loadRc.js | 85 ++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 node_modules/cosmiconfig/lib/loadRc.js (limited to 'node_modules/cosmiconfig/lib/loadRc.js') diff --git a/node_modules/cosmiconfig/lib/loadRc.js b/node_modules/cosmiconfig/lib/loadRc.js new file mode 100644 index 0000000..cbe1d67 --- /dev/null +++ b/node_modules/cosmiconfig/lib/loadRc.js @@ -0,0 +1,85 @@ +'use strict'; + +var yaml = require('js-yaml'); +var requireFromString = require('require-from-string'); +var readFile = require('./readFile'); +var parseJson = require('./parseJson'); + +module.exports = function (filepath, options) { + return loadExtensionlessRc().then(function (result) { + if (result) return result; + if (options.rcExtensions) return loadRcWithExtensions(); + return null; + }); + + function loadExtensionlessRc() { + return readRcFile().then(function (content) { + if (!content) return null; + + var pasedConfig = (options.rcStrictJson) + ? parseJson(content, filepath) + : yaml.safeLoad(content, { + filename: filepath, + }); + return { + config: pasedConfig, + filepath: filepath, + }; + }); + } + + function loadRcWithExtensions() { + return readRcFile('json').then(function (content) { + if (content) { + var successFilepath = filepath + '.json'; + return { + config: parseJson(content, successFilepath), + filepath: successFilepath, + }; + } + // If not content was found in the file with extension, + // try the next possible extension + return readRcFile('yaml'); + }).then(function (content) { + if (content) { + // If the previous check returned an object with a config + // property, then it succeeded and this step can be skipped + if (content.config) return content; + // If it just returned a string, then *this* check succeeded + var successFilepath = filepath + '.yaml'; + return { + config: yaml.safeLoad(content, { filename: successFilepath }), + filepath: successFilepath, + }; + } + return readRcFile('yml'); + }).then(function (content) { + if (content) { + if (content.config) return content; + var successFilepath = filepath + '.yml'; + return { + config: yaml.safeLoad(content, { filename: successFilepath }), + filepath: successFilepath, + }; + } + return readRcFile('js'); + }).then(function (content) { + if (content) { + if (content.config) return content; + var successFilepath = filepath + '.js'; + return { + config: requireFromString(content, successFilepath), + filepath: successFilepath, + }; + } + return null; + }); + } + + function readRcFile(extension) { + var filepathWithExtension = (extension) + ? filepath + '.' + extension + : filepath; + return readFile(filepathWithExtension); + } +}; -- cgit v1.2.3