UNPKG

@flexis/favicons

Version:

A tool for generating icons for the modern web.

123 lines (104 loc) 4.32 kB
'use strict'; 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=