Sha256: 3345aec2c670372b5dd1ac7172e7a2cfa5c92245e6ffed6c694435d1b4a80a63

Contents?: true

Size: 1.45 KB

Versions: 13

Compression:

Stored size: 1.45 KB

Contents

/*
	MIT License http://www.opensource.org/licenses/mit-license.php
	Author Tobias Koppers @sokra
*/
"use strict";

const forEachBail = require("./forEachBail");
const getPaths = require("./getPaths");

module.exports = class ModulesInHierachicDirectoriesPlugin {
	constructor(source, directories, target) {
		this.source = source;
		this.directories = [].concat(directories);
		this.target = target;
	}

	apply(resolver) {
		const target = resolver.ensureHook(this.target);
		resolver.getHook(this.source).tapAsync("ModulesInHierachicDirectoriesPlugin", (request, resolveContext, callback) => {
			const fs = resolver.fileSystem;
			const addrs = getPaths(request.path).paths.map(p => {
				return this.directories.map(d => resolver.join(p, d));
			}).reduce((array, p) => {
				array.push.apply(array, p);
				return array;
			}, []);
			forEachBail(addrs, (addr, callback) => {
				fs.stat(addr, (err, stat) => {
					if(!err && stat && stat.isDirectory()) {
						const obj = Object.assign({}, request, {
							path: addr,
							request: "./" + request.request
						});
						const message = "looking for modules in " + addr;
						return resolver.doResolve(target, obj, message, resolveContext, callback);
					}
					if(resolveContext.log) resolveContext.log(addr + " doesn't exist or is not a directory");
					if(resolveContext.missing) resolveContext.missing.add(addr);
					return callback();
				});
			}, callback);
		});
	}
};

Version data entries

13 entries across 13 versions & 6 rubygems

Version Path
disco_app-0.18.0 test/dummy/node_modules/enhanced-resolve/lib/ModulesInHierachicDirectoriesPlugin.js
disco_app-0.18.2 test/dummy/node_modules/enhanced-resolve/lib/ModulesInHierachicDirectoriesPlugin.js
enju_library-0.3.8 spec/dummy/node_modules/enhanced-resolve/lib/ModulesInHierachicDirectoriesPlugin.js
jester-data-8.0.0 node_modules/enhanced-resolve/lib/ModulesInHierachicDirectoriesPlugin.js
ezii-os-5.2.1 node_modules/enhanced-resolve/lib/ModulesInHierachicDirectoriesPlugin.js
ezii-os-2.0.1 node_modules/enhanced-resolve/lib/ModulesInHierachicDirectoriesPlugin.js
ezii-os-1.1.0 node_modules/enhanced-resolve/lib/ModulesInHierachicDirectoriesPlugin.js
ezii-os-1.0.0 node_modules/enhanced-resolve/lib/ModulesInHierachicDirectoriesPlugin.js
ezii-os-0.0.0.1.0 node_modules/enhanced-resolve/lib/ModulesInHierachicDirectoriesPlugin.js
ezii-os-0.0.0.0.1 node_modules/enhanced-resolve/lib/ModulesInHierachicDirectoriesPlugin.js
locomotivecms-4.0.0.alpha1 app/javascript/node_modules/enhanced-resolve/lib/ModulesInHierachicDirectoriesPlugin.js
locomotivecms-3.4.0 app/javascript/node_modules/enhanced-resolve/lib/ModulesInHierachicDirectoriesPlugin.js
dragonfly_puppeteer-0.1.0 node_modules/enhanced-resolve/lib/ModulesInHierachicDirectoriesPlugin.js