"use strict";
|
|
Object.defineProperty(exports, "__esModule", {
|
value: true
|
});
|
exports["default"] = _default;
|
|
var _fs = _interopRequireDefault(require("fs"));
|
|
var _path = _interopRequireDefault(require("path"));
|
|
var _async = _interopRequireDefault(require("async"));
|
|
var _getOptions = _interopRequireDefault(require("./utils/getOptions"));
|
|
var _processResources = _interopRequireDefault(require("./utils/processResources"));
|
|
var _expandResourceGlobs = _interopRequireDefault(require("./utils/expandResourceGlobs"));
|
|
var _rewritePaths = _interopRequireDefault(require("./utils/rewritePaths"));
|
|
var _logger = _interopRequireDefault(require("./utils/logger"));
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
/* eslint func-names: 0 */
|
function _default(source) {
|
var webpack = this;
|
if (webpack.cacheable) webpack.cacheable();
|
var callback = webpack.async(); // eslint-disable-next-line no-underscore-dangle
|
|
global.__DEBUG__ = process.env.DEBUG === 'sass-resources-loader' || process.env.DEBUG === '*';
|
|
_logger["default"].debug('Hey, we\'re in DEBUG mode! Yabba dabba doo!');
|
|
var options = (0, _getOptions["default"])(this);
|
var resourcesFromConfig = options.resources;
|
|
if (!resourcesFromConfig) {
|
var error = new Error('Can\'t find sass resources in your config. Make sure loader.options.resources exists');
|
return callback(error);
|
}
|
|
var resourcesLocations = (0, _expandResourceGlobs["default"])(resourcesFromConfig);
|
var moduleContext = webpack.context;
|
var webpackConfigContext = webpack.rootContext || webpack.options && webpack.options.context || process.cwd();
|
|
if (!webpack.rootContext && !webpack.options && !webpack.options.context) {
|
_logger["default"].debug('`options.context` is missing. Using current working directory as a root instead:', process.cwd());
|
}
|
|
_logger["default"].debug('Module context:', moduleContext);
|
|
_logger["default"].debug('Webpack config context:', webpackConfigContext);
|
|
_logger["default"].debug('Resources:', resourcesLocations);
|
|
if (!resourcesLocations.length) {
|
var _error = new Error("\n Something wrong with provided resources.\n Make sure 'options.resources' is String or Array of Strings with a valid file path.\n ");
|
|
return callback(_error);
|
}
|
|
var files = resourcesLocations.map(function (resource) {
|
var file = _path["default"].resolve(webpackConfigContext, resource);
|
|
webpack.addDependency(file);
|
return file;
|
});
|
|
_async["default"].map(files, function (file, cb) {
|
_fs["default"].readFile(file, 'utf8', function (error, contents) {
|
(0, _rewritePaths["default"])(error, file, contents, moduleContext, cb);
|
});
|
}, function (error, resources) {
|
(0, _processResources["default"])(error, resources, source, options, moduleContext, callback);
|
});
|
|
return undefined;
|
}
|