aboutsummaryrefslogtreecommitdiff
path: root/node_modules/css-loader/lib/createResolver.js
blob: c0d89701ea778fd289f77a8d5b7378124f714cc3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
module.exports = function createResolver(alias) {
	if(typeof alias !== "object" || Array.isArray(alias)) {
		return function(url) {
			return url
		};
	}

	alias = Object.keys(alias).map(function(key) {
		var onlyModule = false;
		var obj = alias[key];
		if(/\$$/.test(key)) {
			onlyModule = true;
			key = key.substr(0, key.length - 1);
		}
		if(typeof obj === "string") {
			obj = {
				alias: obj
			};
		}
		obj = Object.assign({
			name: key,
			onlyModule: onlyModule
		}, obj);
		return obj;
	});

	return function(url) {
		alias.forEach(function(obj) {
			var name = obj.name;
			if(url === name || (!obj.onlyModule && url.startsWith(name + "/"))) {
				url = obj.alias + url.substr(name.length);
			}
		});
		return url;
	}
}