bloom-layout
Version:
layout components used in bloom packages
172 lines (133 loc) • 6.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _copyWebpackPlugin = require('copy-webpack-plugin');
var _copyWebpackPlugin2 = _interopRequireDefault(_copyWebpackPlugin);
var _htmlWebpackIncludeAssetsPlugin = require('html-webpack-include-assets-plugin');
var _htmlWebpackIncludeAssetsPlugin2 = _interopRequireDefault(_htmlWebpackIncludeAssetsPlugin);
var _ajv = require('ajv');
var _ajv2 = _interopRequireDefault(_ajv);
var _configSchema = require('./configSchema.json');
var _configSchema2 = _interopRequireDefault(_configSchema);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var HtmlWebpackExternalsPlugin = function () {
function HtmlWebpackExternalsPlugin(config) {
var _this = this;
_classCallCheck(this, HtmlWebpackExternalsPlugin);
HtmlWebpackExternalsPlugin.validateArguments(config);
this.assetsToPrepend = [];
this.assetsToAppend = [];
this.assetsToCopy = [];
this.externals = {};
var externals = config.externals,
hash = config.hash,
outputPath = config.outputPath,
publicPath = config.publicPath,
files = config.files,
enabled = config.enabled;
this.hash = hash;
this.outputPath = outputPath;
this.publicPath = publicPath;
this.files = files;
this.enabled = enabled;
externals.forEach(function (_ref) {
var module = _ref.module,
entry = _ref.entry,
global = _ref.global,
supplements = _ref.supplements,
append = _ref.append;
_this.externals[module] = global;
var localEntries = [];
var entries = (Array.isArray(entry) ? entry : [entry]).map(function (entry) {
if (typeof entry === 'string') {
entry = { path: entry, type: undefined };
}
if (HtmlWebpackExternalsPlugin.URL_ENTRY.test(entry.path)) {
return entry;
}
var localEntry = `${module}/${entry.path}`;
localEntries.push(localEntry);
return _extends({}, entry, { path: localEntry });
});
if (append) {
_this.assetsToAppend = [].concat(_toConsumableArray(_this.assetsToAppend), _toConsumableArray(entries));
} else {
_this.assetsToPrepend = [].concat(_toConsumableArray(_this.assetsToPrepend), _toConsumableArray(entries));
}
_this.assetsToCopy = [].concat(_toConsumableArray(_this.assetsToCopy), localEntries, _toConsumableArray(supplements.map(function (asset) {
return `${module}/${asset}`;
})));
});
}
_createClass(HtmlWebpackExternalsPlugin, [{
key: 'apply',
value: function apply(compiler) {
var _this2 = this;
if (!this.enabled) {
return;
}
if (!compiler.options.externals) {
compiler.options.externals = this.externals;
} else if (Array.isArray(compiler.options.externals)) {
compiler.options.externals.push(this.externals);
} else if (typeof compiler.options.externals === 'object') {
compiler.options.externals = _extends({}, compiler.options.externals, this.externals);
}
var publicPath = function () {
if (_this2.publicPath != null) {
return _this2.publicPath;
} else if (compiler.options.output.publicPath != null) {
return compiler.options.output.publicPath;
} else {
return '';
}
}();
var pluginsToApply = [];
pluginsToApply.push(new _copyWebpackPlugin2.default(this.assetsToCopy.map(function (asset) {
return {
from: `node_modules/${asset}`,
to: `${_this2.outputPath}/${asset}`
};
})));
var createAssetsPlugin = function createAssetsPlugin(assets, append) {
if (assets.length) {
pluginsToApply.push(new _htmlWebpackIncludeAssetsPlugin2.default({
assets: assets.map(function (asset) {
return HtmlWebpackExternalsPlugin.URL_ENTRY.test(asset.path) ? asset : _extends({}, asset, {
path: `${publicPath}${_this2.outputPath}/${asset.path}`
});
}),
append,
hash: _this2.hash,
files: _this2.files == null ? undefined : _this2.files,
publicPath: ''
}));
}
};
createAssetsPlugin(this.assetsToPrepend, false);
createAssetsPlugin(this.assetsToAppend, true);
pluginsToApply.forEach(function (plugin) {
return plugin.apply(compiler);
});
}
}]);
return HtmlWebpackExternalsPlugin;
}();
HtmlWebpackExternalsPlugin.validateArguments = function () {
var ajv = new _ajv2.default({ useDefaults: true, removeAdditional: true });
var validateConfig = ajv.compile(_configSchema2.default);
return function (config) {
if (!validateConfig(config)) {
throw new TypeError(ajv.errorsText(validateConfig.errors));
}
};
}();
HtmlWebpackExternalsPlugin.URL_ENTRY = /^(http:|https:)?\/\//;
exports.default = HtmlWebpackExternalsPlugin;
module.exports = exports['default'];
//# sourceMappingURL=HtmlWebpackExternalsPlugin.js.map