diff options
author | 2020-11-16 00:10:28 +0100 | |
---|---|---|
committer | 2020-11-16 00:10:28 +0100 | |
commit | e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d (patch) | |
tree | 55713f725f77b44ebfec86e4eec3ce33e71458ca /node_modules/css-loader/lib/loader.js | |
download | website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.gz website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.bz2 website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.zip |
api, login, auth
Diffstat (limited to 'node_modules/css-loader/lib/loader.js')
-rw-r--r-- | node_modules/css-loader/lib/loader.js | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/node_modules/css-loader/lib/loader.js b/node_modules/css-loader/lib/loader.js new file mode 100644 index 0000000..c31d5de --- /dev/null +++ b/node_modules/css-loader/lib/loader.js @@ -0,0 +1,144 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +var loaderUtils = require("loader-utils"); +var processCss = require("./processCss"); +var getImportPrefix = require("./getImportPrefix"); +var compileExports = require("./compile-exports"); + + +module.exports = function(content, map) { + var callback = this.async(); + var query = loaderUtils.getOptions(this) || {}; + var moduleMode = query.modules; + var camelCaseKeys = query.camelCase; + var sourceMap = query.sourceMap || false; + + if(sourceMap) { + if (map) { + if (typeof map === "string") { + map = JSON.stringify(map); + } + + if (map.sources) { + map.sources = map.sources.map(function (source) { + return source.replace(/\\/g, '/'); + }); + map.sourceRoot = ''; + } + } + } else { + // Some loaders (example `"postcss-loader": "1.x.x"`) always generates source map, we should remove it + map = null; + } + + processCss(content, map, { + mode: moduleMode ? "local" : "global", + from: loaderUtils.getRemainingRequest(this).split("!").pop(), + to: loaderUtils.getCurrentRequest(this).split("!").pop(), + query: query, + loaderContext: this, + sourceMap: sourceMap + }, function(err, result) { + if(err) return callback(err); + + var cssAsString = JSON.stringify(result.source); + + // for importing CSS + var importUrlPrefix = getImportPrefix(this, query); + + var alreadyImported = {}; + var importJs = result.importItems.map(function(imp) { + // fixes #781 when importing `url(filename.css )` + imp.url = imp.url.trim(); + return imp; + }).filter(function(imp) { + if(!imp.mediaQuery) { + if(alreadyImported[imp.url]) + return false; + alreadyImported[imp.url] = true; + } + return true; + }).map(function(imp) { + if(!loaderUtils.isUrlRequest(imp.url)) { + return "exports.push([module.id, " + + JSON.stringify("@import url(" + imp.url + ");") + ", " + + JSON.stringify(imp.mediaQuery) + "]);"; + } else { + var importUrl = importUrlPrefix + imp.url; + return "exports.i(require(" + loaderUtils.stringifyRequest(this, importUrl) + "), " + JSON.stringify(imp.mediaQuery) + ");"; + } + }, this).join("\n"); + + function importItemMatcher(item) { + var match = result.importItemRegExp.exec(item); + var idx = +match[1]; + var importItem = result.importItems[idx]; + var importUrl = importUrlPrefix + importItem.url; + return "\" + require(" + loaderUtils.stringifyRequest(this, importUrl) + ").locals" + + "[" + JSON.stringify(importItem.export) + "] + \""; + } + + cssAsString = cssAsString.replace(result.importItemRegExpG, importItemMatcher.bind(this)); + + // helper for ensuring valid CSS strings from requires + var urlEscapeHelper = ""; + + if(query.url !== false && result.urlItems.length > 0) { + urlEscapeHelper = "var escape = require(" + loaderUtils.stringifyRequest(this, require.resolve("./url/escape.js")) + ");\n"; + + cssAsString = cssAsString.replace(result.urlItemRegExpG, function(item) { + var match = result.urlItemRegExp.exec(item); + var idx = +match[1]; + var urlItem = result.urlItems[idx]; + var url = urlItem.url; + idx = url.indexOf("?#"); + if(idx < 0) idx = url.indexOf("#"); + var urlRequest; + if(idx > 0) { // idx === 0 is catched by isUrlRequest + // in cases like url('webfont.eot?#iefix') + urlRequest = url.substr(0, idx); + return "\" + escape(require(" + loaderUtils.stringifyRequest(this, urlRequest) + ")) + \"" + + url.substr(idx); + } + urlRequest = url; + return "\" + escape(require(" + loaderUtils.stringifyRequest(this, urlRequest) + ")) + \""; + }.bind(this)); + } + + var exportJs = compileExports(result, importItemMatcher.bind(this), camelCaseKeys); + if (exportJs) { + exportJs = "exports.locals = " + exportJs + ";"; + } + + var moduleJs; + if(sourceMap && result.map) { + // add a SourceMap + map = result.map; + if(map.sources) { + map.sources = map.sources.map(function(source) { + return source.split("!").pop().replace(/\\/g, '/'); + }, this); + map.sourceRoot = ""; + } + map.file = map.file.split("!").pop().replace(/\\/g, '/'); + map = JSON.stringify(map); + moduleJs = "exports.push([module.id, " + cssAsString + ", \"\", " + map + "]);"; + } else { + moduleJs = "exports.push([module.id, " + cssAsString + ", \"\"]);"; + } + + // embed runtime + callback(null, urlEscapeHelper + + "exports = module.exports = require(" + + loaderUtils.stringifyRequest(this, require.resolve("./css-base.js")) + + ")(" + sourceMap + ");\n" + + "// imports\n" + + importJs + "\n\n" + + "// module\n" + + moduleJs + "\n\n" + + "// exports\n" + + exportJs); + }.bind(this)); +}; |