summaryrefslogtreecommitdiffstats
path: root/node_modules/sass-loader/lib/proxyCustomImporters.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/sass-loader/lib/proxyCustomImporters.js')
-rw-r--r--node_modules/sass-loader/lib/proxyCustomImporters.js29
1 files changed, 29 insertions, 0 deletions
diff --git a/node_modules/sass-loader/lib/proxyCustomImporters.js b/node_modules/sass-loader/lib/proxyCustomImporters.js
new file mode 100644
index 0000000..b15a917
--- /dev/null
+++ b/node_modules/sass-loader/lib/proxyCustomImporters.js
@@ -0,0 +1,29 @@
+"use strict";
+
+/**
+ * Creates new custom importers that use the given `resourcePath` if libsass calls the custom importer with `prev`
+ * being 'stdin'.
+ *
+ * Why do we need this? We have to use the `data` option of node-sass in order to compile our sass because
+ * the `resourcePath` might not be an actual file on disk. When using the `data` option, libsass uses the string
+ * 'stdin' instead of a filename.
+ *
+ * We have to fix this behavior in order to provide a consistent experience to the webpack user.
+ *
+ * @param {function|Array<function>} importer
+ * @param {string} resourcePath
+ * @returns {Array<function>}
+ */
+function proxyCustomImporters(importer, resourcePath) {
+ return [].concat(importer).map((importer) => {
+ return function (url, prev, done) {
+ return importer.apply(
+ this, // eslint-disable-line no-invalid-this
+ Array.from(arguments)
+ .map((arg, i) => i === 1 && arg === "stdin" ? resourcePath : arg)
+ );
+ };
+ });
+}
+
+module.exports = proxyCustomImporters;