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/MainFieldPlugin.js | 48 ++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 node_modules/enhanced-resolve/lib/MainFieldPlugin.js (limited to 'node_modules/enhanced-resolve/lib/MainFieldPlugin.js') diff --git a/node_modules/enhanced-resolve/lib/MainFieldPlugin.js b/node_modules/enhanced-resolve/lib/MainFieldPlugin.js new file mode 100644 index 000000000..45ecd4b23 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/MainFieldPlugin.js @@ -0,0 +1,48 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +var path = require("path"); + +function MainFieldPlugin(source, options, target) { + this.source = source; + this.options = options; + this.target = target; +} +module.exports = MainFieldPlugin; + +MainFieldPlugin.prototype.apply = function(resolver) { + var target = this.target; + var options = this.options; + resolver.plugin(this.source, function mainField(request, callback) { + if(request.path !== request.descriptionFileRoot) return callback(); + var content = request.descriptionFileData; + var filename = path.basename(request.descriptionFilePath); + var mainModule; + var field = options.name; + 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 === "string") { + mainModule = current; + } + } else { + if(typeof content[field] === "string") { + mainModule = content[field]; + } + } + if(!mainModule) return callback(); + if(options.forceRelative && !/^\.\.?\//.test(mainModule)) + mainModule = "./" + mainModule; + var obj = Object.assign({}, request, { + request: mainModule + }); + return resolver.doResolve(target, obj, "use " + mainModule + " from " + options.name + " in " + filename, callback); + }); +}; -- cgit v1.2.3