From de98e0b232509d5f40c135d540a70e415272ff85 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 3 May 2017 15:35:00 +0200 Subject: node_modules --- .../enhanced-resolve/lib/DescriptionFileUtils.js | 93 ++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 node_modules/enhanced-resolve/lib/DescriptionFileUtils.js (limited to 'node_modules/enhanced-resolve/lib/DescriptionFileUtils.js') diff --git a/node_modules/enhanced-resolve/lib/DescriptionFileUtils.js b/node_modules/enhanced-resolve/lib/DescriptionFileUtils.js new file mode 100644 index 000000000..084d29ec9 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/DescriptionFileUtils.js @@ -0,0 +1,93 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +var forEachBail = require("./forEachBail"); + +function loadDescriptionFile(resolver, directory, filenames, callback) { + (function findDescriptionFile() { + forEachBail(filenames, function(filename, callback) { + var descriptionFilePath = resolver.join(directory, filename); + if(resolver.fileSystem.readJson) { + resolver.fileSystem.readJson(descriptionFilePath, function(err, content) { + if(err) { + if(typeof err.code !== "undefined") return callback(); + return onJson(err); + } + onJson(null, content); + }); + } else { + resolver.fileSystem.readFile(descriptionFilePath, function(err, content) { + if(err) return callback(); + try { + var json = JSON.parse(content); + } catch(e) { + onJson(e); + } + onJson(null, json); + }); + } + + function onJson(err, content) { + if(err) { + if(callback.log) + callback.log(descriptionFilePath + " (directory description file): " + err); + else + err.message = descriptionFilePath + " (directory description file): " + err; + return callback(err); + } + callback(null, { + content: content, + directory: directory, + path: descriptionFilePath + }); + } + }, function(err, result) { + if(err) return callback(err); + if(result) { + return callback(null, result); + } else { + directory = cdUp(directory); + if(!directory) { + return callback(); + } else { + return findDescriptionFile(); + } + } + }); + }()); +} + +function getField(content, field) { + if(!content) return undefined; + if(Array.isArray(field)) { + var current = content; + for(var j = 0; j < field.length; j++) { + if(current === null || typeof current !== "object") { + current = null; + break; + } + current = current[field[j]]; + } + if(typeof current === "object") { + return current; + } + } else { + if(typeof content[field] === "object") { + return content[field]; + } + } +} + +function cdUp(directory) { + if(directory === "/") return null; + var i = directory.lastIndexOf("/"), + j = directory.lastIndexOf("\\"); + var p = i < 0 ? j : j < 0 ? i : i < j ? j : i; + if(p < 0) return null; + return directory.substr(0, p || 1); +} + +exports.loadDescriptionFile = loadDescriptionFile; +exports.getField = getField; +exports.cdUp = cdUp; -- cgit v1.2.3