@realfavicongenerator/generate-favicon
Version:
Generate a favicon
68 lines (67 loc) • 4.08 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateWebAppManifestIconFiles = exports.generateWebAppManifestHtml = exports.WebAppManifest512x512IconFileName = exports.WebAppManifest192x192IconFileName = exports.SiteWebManifestFileName = exports.generateWebManifest = void 0;
const _1 = require(".");
const helper_1 = require("../icon/helper");
const svg_1 = require("../svg");
const metadata_1 = require("../metadata");
const generateWebManifest = (webManifest) => {
return JSON.stringify(webManifest, null, 2);
};
exports.generateWebManifest = generateWebManifest;
exports.SiteWebManifestFileName = 'site.webmanifest';
exports.WebAppManifest192x192IconFileName = 'web-app-manifest-192x192.png';
exports.WebAppManifest512x512IconFileName = 'web-app-manifest-512x512.png';
const generateWebAppManifestHtml = (faviconPath, transformer = _1.identityFaviconAssetPathTransformer, version) => {
return {
markups: [
`<link rel="manifest" href="${transformer(`${faviconPath}${exports.SiteWebManifestFileName}`, false, false, version)}" />`
],
cssSelectors: [
`link[rel="manifest"]`
]
};
};
exports.generateWebAppManifestHtml = generateWebAppManifestHtml;
const generateWebAppManifestIconFiles = (masterIcon_1, settings_1, faviconPath_1, imageAdapter_1, ...args_1) => __awaiter(void 0, [masterIcon_1, settings_1, faviconPath_1, imageAdapter_1, ...args_1], void 0, function* (masterIcon, settings, faviconPath, imageAdapter, pathTransformer = _1.identityFaviconAssetPathTransformer, fileNameTransformer = _1.identityFaviconAssetFileNameTransformer, skipMetadata = false, version) {
var _a;
const transformedIcon = (0, helper_1.transformSvg)((_a = settings.icon) !== null && _a !== void 0 ? _a : masterIcon.icon, settings.transformation, imageAdapter, 512);
const androidnIcon192 = yield imageAdapter.convertSvgToPng((0, svg_1.scaleSvg)(transformedIcon, 192, imageAdapter));
const androidnIcon512 = yield imageAdapter.convertSvgToPng((0, svg_1.scaleSvg)(transformedIcon, 512, imageAdapter));
const webManifest = {
name: settings.name,
short_name: settings.shortName,
icons: [
{
src: pathTransformer(`${faviconPath}${exports.WebAppManifest192x192IconFileName}`, true, true, version),
sizes: '192x192',
type: 'image/png',
purpose: 'maskable'
},
{
src: pathTransformer(`${faviconPath}${exports.WebAppManifest512x512IconFileName}`, true, true, version),
sizes: '512x512',
type: 'image/png',
purpose: 'maskable'
}
],
theme_color: settings.themeColor,
background_color: settings.backgroundColor,
display: 'standalone'
};
return {
[fileNameTransformer(exports.WebAppManifest192x192IconFileName)]: skipMetadata ? androidnIcon192 : (0, metadata_1.addRfgMetadataToPng)(androidnIcon192),
[fileNameTransformer(exports.WebAppManifest512x512IconFileName)]: skipMetadata ? androidnIcon512 : (0, metadata_1.addRfgMetadataToPng)(androidnIcon512),
[fileNameTransformer(exports.SiteWebManifestFileName)]: (0, exports.generateWebManifest)(webManifest)
};
});
exports.generateWebAppManifestIconFiles = generateWebAppManifestIconFiles;