@flexis/favicons
Version:
A tool for generating icons for the modern web.
123 lines (104 loc) • 4.32 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var _JSON$stringify = require('@babel/runtime-corejs3/core-js-stable/json/stringify');
var _asyncIterator = require('@babel/runtime-corejs3/helpers/asyncIterator');
var os = require('os');
var Vinyl = require('vinyl');
var through = require('through2-concurrent');
var chalk = require('chalk');
var FaviconsGenerator = require('../');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var _JSON$stringify__default = /*#__PURE__*/_interopDefaultLegacy(_JSON$stringify);
var _asyncIterator__default = /*#__PURE__*/_interopDefaultLegacy(_asyncIterator);
var Vinyl__default = /*#__PURE__*/_interopDefaultLegacy(Vinyl);
var through__default = /*#__PURE__*/_interopDefaultLegacy(through);
var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
var FaviconsGenerator__default = /*#__PURE__*/_interopDefaultLegacy(FaviconsGenerator);
const throughOptions = {
maxConcurrency: os.cpus().length
};
function toVinyl(source) {
return Vinyl__default['default'].isVinyl(source) ? source : source.isBuffer && source.isStream && source.isNull ? new Vinyl__default['default'](source) : source;
}
function log(verbose, ...message) {
if (verbose) {
console.log(...message);
}
}
function plugin({
headers,
background,
verbose,
...options
} = {}) {
log(verbose, chalk__default['default'].blue('\n> Start\n'));
const favicons = new FaviconsGenerator__default['default'](background ? { ...options,
manifest: { ...options.manifest,
background_color: background
}
} : options);
const sources = [];
function each(file, _, next) {
if (file.isNull() || file.isStream()) {
next(null, file);
return;
}
try {
sources.push(toVinyl(file));
next();
} catch (err) {
next(err);
}
}
async function flush(done) {
try {
const icons = favicons.generateIcons(sources);
log(verbose, chalk__default['default'].blue('\n> Icons:\n'));
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError;
try {
for (var _iterator = _asyncIterator__default['default'](icons), _step, _value; _step = await _iterator.next(), _iteratorNormalCompletion = _step.done, _value = await _step.value, !_iteratorNormalCompletion; _iteratorNormalCompletion = true) {
const icon = _value;
this.push(icon);
log(verbose, chalk__default['default'].yellow(icon.basename));
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
await _iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
if (headers) {
const htmlHeaders = favicons.generateHtmlHeaders(headers === true ? {} : headers);
this.push(new Vinyl__default['default']({
contents: Buffer.from(`${FaviconsGenerator.getHtmlHeadersMarkup(htmlHeaders)}\n`),
path: 'favicons.html'
}));
log(verbose, `${chalk__default['default'].blue('\n> HTML Headers:')} ${chalk__default['default'].yellow('favicons.html')}\n`);
}
if (options.manifest) {
const manifest = favicons.generateManifset();
this.push(new Vinyl__default['default']({
contents: Buffer.from(`${_JSON$stringify__default['default'](manifest, null, ' ')}\n`),
path: 'manifest.json'
}));
log(verbose, `${chalk__default['default'].blue('\n> Web Manifest:')} ${chalk__default['default'].yellow('manifest.json')}\n`);
}
done();
} catch (err) {
done(err);
}
}
return through__default['default'].obj(throughOptions, each, flush);
}
exports.default = plugin;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLmpzIiwic291cmNlcyI6W10sInNvdXJjZXNDb250ZW50IjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=