Skip to content

Commit a027d0e

Browse files
committed
tabs
1 parent d95f309 commit a027d0e

File tree

1 file changed

+151
-151
lines changed

1 file changed

+151
-151
lines changed

lib/loader.js

Lines changed: 151 additions & 151 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
2-
MIT License http://www.opensource.org/licenses/mit-license.php
3-
Author Tobias Koppers @sokra
2+
MIT License http://www.opensource.org/licenses/mit-license.php
3+
Author Tobias Koppers @sokra
44
*/
55
var loaderUtils = require("loader-utils");
66
var processCss = require("./processCss");
@@ -10,153 +10,153 @@ var createResolver = require("./createResolver");
1010

1111

1212
module.exports = function(content, map) {
13-
if(this.cacheable) this.cacheable();
14-
var callback = this.async();
15-
var query = loaderUtils.getOptions(this) || {};
16-
var root = query.root;
17-
var moduleMode = query.modules || query.module;
18-
var camelCaseKeys = query.camelCase || query.camelcase;
19-
var resolve = createResolver(query.alias);
20-
21-
var givenExternals = query.externals || {};
22-
var externals = {};
23-
if (Array.isArray(givenExternals)) {
24-
givenExternals.forEach(function (external) {
25-
if (typeof external === 'object') {
26-
externals = Object.assign({}, externals, external);
27-
}
28-
});
29-
} else {
30-
externals = givenExternals;
31-
}
32-
33-
var externalsKeys = Object.keys(externals);
34-
35-
function findExternalFromImportUrl(importUrl) {
36-
var key = externalsKeys.find(function (externalsKey) {
37-
return importUrl.endsWith(externalsKey);
38-
});
39-
40-
if (key) {
41-
return externals[key];
42-
}
43-
44-
return false;
45-
}
46-
47-
if(map !== null && typeof map !== "string") {
48-
map = JSON.stringify(map);
49-
}
50-
51-
processCss(content, map, {
52-
mode: moduleMode ? "local" : "global",
53-
from: loaderUtils.getRemainingRequest(this),
54-
to: loaderUtils.getCurrentRequest(this),
55-
query: query,
56-
minimize: this.minimize,
57-
loaderContext: this
58-
}, function(err, result) {
59-
if(err) return callback(err);
60-
61-
var cssAsString = JSON.stringify(result.source);
62-
63-
// for importing CSS
64-
var importUrlPrefix = getImportPrefix(this, query);
65-
66-
var alreadyImported = {};
67-
var importJs = result.importItems.filter(function(imp) {
68-
if(!imp.mediaQuery) {
69-
if(alreadyImported[imp.url])
70-
return false;
71-
alreadyImported[imp.url] = true;
72-
}
73-
return true;
74-
}).map(function(imp) {
75-
if(!loaderUtils.isUrlRequest(imp.url, root)) {
76-
return "exports.push([module.id, " +
77-
JSON.stringify("@import url(" + imp.url + ");") + ", " +
78-
JSON.stringify(imp.mediaQuery) + "]);";
79-
} else {
80-
var importUrl = importUrlPrefix + imp.url;
81-
82-
var external = findExternalFromImportUrl(importUrl);
83-
if (external === false) {
84-
return "exports.i(require(" + loaderUtils.stringifyRequest(this, importUrl) + "), " + JSON.stringify(imp.mediaQuery) + ");";
85-
}
86-
87-
return "exports.i(" + external + ", " + JSON.stringify(imp.mediaQuery) + ");";
88-
}
89-
}, this).join("\n");
90-
91-
function importItemMatcher(item) {
92-
var match = result.importItemRegExp.exec(item);
93-
var idx = +match[1];
94-
var importItem = result.importItems[idx];
95-
var importUrl = importUrlPrefix + importItem.url;
96-
97-
var external = findExternalFromImportUrl(importUrl);
98-
if (external === false) {
99-
return "\" + require(" + loaderUtils.stringifyRequest(this, importUrl) + ").locals" +
100-
"[" + JSON.stringify(importItem.export) + "] + \"";
101-
}
102-
103-
return "\" + " + external + "" +
104-
"[" + JSON.stringify(importItem.export) + "] + \"";
105-
}
106-
107-
cssAsString = cssAsString.replace(result.importItemRegExpG, importItemMatcher.bind(this));
108-
if(query.url !== false) {
109-
cssAsString = cssAsString.replace(result.urlItemRegExpG, function(item) {
110-
var match = result.urlItemRegExp.exec(item);
111-
var idx = +match[1];
112-
var urlItem = result.urlItems[idx];
113-
var url = resolve(urlItem.url);
114-
idx = url.indexOf("?#");
115-
if(idx < 0) idx = url.indexOf("#");
116-
var urlRequest;
117-
if(idx > 0) { // idx === 0 is catched by isUrlRequest
118-
// in cases like url('webfont.eot?#iefix')
119-
urlRequest = url.substr(0, idx);
120-
return "\" + require(" + loaderUtils.stringifyRequest(this, urlRequest) + ") + \"" +
121-
url.substr(idx);
122-
}
123-
urlRequest = url;
124-
return "\" + require(" + loaderUtils.stringifyRequest(this, urlRequest) + ") + \"";
125-
}.bind(this));
126-
}
127-
128-
129-
var exportJs = compileExports(result, importItemMatcher.bind(this), camelCaseKeys);
130-
if (exportJs) {
131-
exportJs = "exports.locals = " + exportJs + ";";
132-
}
133-
134-
var moduleJs;
135-
if(query.sourceMap && result.map) {
136-
// add a SourceMap
137-
map = result.map;
138-
if(map.sources) {
139-
map.sources = map.sources.map(function(source) {
140-
return source.split("!").pop();
141-
}, this);
142-
map.sourceRoot = "";
143-
}
144-
map.file = map.file.split("!").pop();
145-
map = JSON.stringify(map);
146-
moduleJs = "exports.push([module.id, " + cssAsString + ", \"\", " + map + "]);";
147-
} else {
148-
moduleJs = "exports.push([module.id, " + cssAsString + ", \"\"]);";
149-
}
150-
151-
// embed runtime
152-
callback(null, "exports = module.exports = require(" +
153-
loaderUtils.stringifyRequest(this, require.resolve("./css-base.js")) +
154-
")(" + query.sourceMap + ");\n" +
155-
"// imports\n" +
156-
importJs + "\n\n" +
157-
"// module\n" +
158-
moduleJs + "\n\n" +
159-
"// exports\n" +
160-
exportJs);
161-
}.bind(this));
13+
if(this.cacheable) this.cacheable();
14+
var callback = this.async();
15+
var query = loaderUtils.getOptions(this) || {};
16+
var root = query.root;
17+
var moduleMode = query.modules || query.module;
18+
var camelCaseKeys = query.camelCase || query.camelcase;
19+
var resolve = createResolver(query.alias);
20+
21+
var givenExternals = query.externals || {};
22+
var externals = {};
23+
if (Array.isArray(givenExternals)) {
24+
givenExternals.forEach(function (external) {
25+
if (typeof external === 'object') {
26+
externals = Object.assign({}, externals, external);
27+
}
28+
});
29+
} else {
30+
externals = givenExternals;
31+
}
32+
33+
var externalsKeys = Object.keys(externals);
34+
35+
function findExternalFromImportUrl(importUrl) {
36+
var key = externalsKeys.find(function (externalsKey) {
37+
return importUrl.endsWith(externalsKey);
38+
});
39+
40+
if (key) {
41+
return externals[key];
42+
}
43+
44+
return false;
45+
}
46+
47+
if(map !== null && typeof map !== "string") {
48+
map = JSON.stringify(map);
49+
}
50+
51+
processCss(content, map, {
52+
mode: moduleMode ? "local" : "global",
53+
from: loaderUtils.getRemainingRequest(this),
54+
to: loaderUtils.getCurrentRequest(this),
55+
query: query,
56+
minimize: this.minimize,
57+
loaderContext: this
58+
}, function(err, result) {
59+
if(err) return callback(err);
60+
61+
var cssAsString = JSON.stringify(result.source);
62+
63+
// for importing CSS
64+
var importUrlPrefix = getImportPrefix(this, query);
65+
66+
var alreadyImported = {};
67+
var importJs = result.importItems.filter(function(imp) {
68+
if(!imp.mediaQuery) {
69+
if(alreadyImported[imp.url])
70+
return false;
71+
alreadyImported[imp.url] = true;
72+
}
73+
return true;
74+
}).map(function(imp) {
75+
if(!loaderUtils.isUrlRequest(imp.url, root)) {
76+
return "exports.push([module.id, " +
77+
JSON.stringify("@import url(" + imp.url + ");") + ", " +
78+
JSON.stringify(imp.mediaQuery) + "]);";
79+
} else {
80+
var importUrl = importUrlPrefix + imp.url;
81+
82+
var external = findExternalFromImportUrl(importUrl);
83+
if (external === false) {
84+
return "exports.i(require(" + loaderUtils.stringifyRequest(this, importUrl) + "), " + JSON.stringify(imp.mediaQuery) + ");";
85+
}
86+
87+
return "exports.i(" + external + ", " + JSON.stringify(imp.mediaQuery) + ");";
88+
}
89+
}, this).join("\n");
90+
91+
function importItemMatcher(item) {
92+
var match = result.importItemRegExp.exec(item);
93+
var idx = +match[1];
94+
var importItem = result.importItems[idx];
95+
var importUrl = importUrlPrefix + importItem.url;
96+
97+
var external = findExternalFromImportUrl(importUrl);
98+
if (external === false) {
99+
return "\" + require(" + loaderUtils.stringifyRequest(this, importUrl) + ").locals" +
100+
"[" + JSON.stringify(importItem.export) + "] + \"";
101+
}
102+
103+
return "\" + " + external + "" +
104+
"[" + JSON.stringify(importItem.export) + "] + \"";
105+
}
106+
107+
cssAsString = cssAsString.replace(result.importItemRegExpG, importItemMatcher.bind(this));
108+
if(query.url !== false) {
109+
cssAsString = cssAsString.replace(result.urlItemRegExpG, function(item) {
110+
var match = result.urlItemRegExp.exec(item);
111+
var idx = +match[1];
112+
var urlItem = result.urlItems[idx];
113+
var url = resolve(urlItem.url);
114+
idx = url.indexOf("?#");
115+
if(idx < 0) idx = url.indexOf("#");
116+
var urlRequest;
117+
if(idx > 0) { // idx === 0 is catched by isUrlRequest
118+
// in cases like url('webfont.eot?#iefix')
119+
urlRequest = url.substr(0, idx);
120+
return "\" + require(" + loaderUtils.stringifyRequest(this, urlRequest) + ") + \"" +
121+
url.substr(idx);
122+
}
123+
urlRequest = url;
124+
return "\" + require(" + loaderUtils.stringifyRequest(this, urlRequest) + ") + \"";
125+
}.bind(this));
126+
}
127+
128+
129+
var exportJs = compileExports(result, importItemMatcher.bind(this), camelCaseKeys);
130+
if (exportJs) {
131+
exportJs = "exports.locals = " + exportJs + ";";
132+
}
133+
134+
var moduleJs;
135+
if(query.sourceMap && result.map) {
136+
// add a SourceMap
137+
map = result.map;
138+
if(map.sources) {
139+
map.sources = map.sources.map(function(source) {
140+
return source.split("!").pop();
141+
}, this);
142+
map.sourceRoot = "";
143+
}
144+
map.file = map.file.split("!").pop();
145+
map = JSON.stringify(map);
146+
moduleJs = "exports.push([module.id, " + cssAsString + ", \"\", " + map + "]);";
147+
} else {
148+
moduleJs = "exports.push([module.id, " + cssAsString + ", \"\"]);";
149+
}
150+
151+
// embed runtime
152+
callback(null, "exports = module.exports = require(" +
153+
loaderUtils.stringifyRequest(this, require.resolve("./css-base.js")) +
154+
")(" + query.sourceMap + ");\n" +
155+
"// imports\n" +
156+
importJs + "\n\n" +
157+
"// module\n" +
158+
moduleJs + "\n\n" +
159+
"// exports\n" +
160+
exportJs);
161+
}.bind(this));
162162
};

0 commit comments

Comments
 (0)