{"version":3,"sources":["jsdelivr-header.js","/npm/simple-favicon-generator@0.0.2/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,MAAM,GAAK,QAAQ,MAAM,SACnB,KAAO,QAAQ,QACf,MAAQ,QAAQ,SAEhB,cAAgB,MAAO,EAAS,EAAU,EAAO,EAAS,WACxD,MAAM,GAAS,OAAO,EAAO,GAAQ,OAAO,EAC5C,EAGF,yBAA2B,MAAO,EAAY,KAClD,MAAM,EAAmB,kWAQF,+EAKjB,GAAG,UAAU,EAAY,EACzB,EAGF,oBAAsB,MAC1B,EACA,EACA,EACA,KAEA,MAAM,EAAkB,CACtB,KAAM,EACN,WAAY,EACZ,MAAO,CACL,CACE,IAAK,8BACL,MAAO,UACP,KAAM,aAER,CACE,IAAK,8BACL,MAAO,UACP,KAAM,cAGV,YAAa,EACb,iBAAkB,EAClB,QAAS,SAGL,GAAG,UAAU,EAAY,KAAK,UAAU,GACxC,EAGF,sBAAwB,MAAO,EAAa,WAC1C,cACJ,EACA,KAAK,KAAK,EAAW,8BACrB,WAGI,cACJ,EACA,KAAK,KAAK,EAAW,8BACrB,WAGI,cACJ,EACA,KAAK,KAAK,EAAW,wBACrB,WAGI,cACJ,EACA,KAAK,KAAK,EAAW,qBACrB,UAGI,cACJ,EACA,KAAK,KAAK,EAAW,qBACrB,UAGI,cAAc,EAAa,KAAK,KAAK,EAAW,eAAgB,UAEhE,cACJ,EACA,KAAK,KAAK,EAAW,oBACrB,UAGI,cACJ,EACA,KAAK,KAAK,EAAW,sBACrB,WAGI,cACJ,EACA,KAAK,KAAK,EAAW,sBACrB,IACA,WAGI,cACJ,EACA,KAAK,KAAK,EAAW,sBACrB,IAGI,EAGF,iBAAmB,MACvB,EACA,EACA,EAAY,SACZ,EAAa,UACb,EAAc,aACd,EAAY,aAEZ,IAAK,EAEH,MADA,QAAQ,MAAM,mCACR,IAAI,MAAM,6BAGlB,IAAK,EAEH,MADA,QAAQ,MAAM,mCACR,IAAI,MAAM,0BAGlB,UAEQ,sBAAsB,EAAa,SAGnC,yBACJ,KAAK,KAAK,EAAW,qBACrB,SAII,oBACJ,KAAK,KAAK,EAAW,oBACrB,EACA,EACA,GAGF,QAAQ,IAAI,oCACd,CAAE,MAAO,GAEP,MADA,QAAQ,MAAM,mCACR,CACR,GAGF,OAAO,QAAU","file":"/npm/simple-favicon-generator@0.0.2/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/simple-favicon-generator@0.0.2/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const fs = require('fs').promises;\nconst path = require('path');\nconst sharp = require('sharp');\n\nconst generateImage = async (imgPath, fileName, width, height = width) => {\n  await sharp(imgPath).resize(width, height).toFile(fileName);\n  return;\n};\n\nconst generateBrowserConfigXML = async (outputPath, tileColor) => {\n  const browserConfigXML = `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<browserconfig>\n    <msapplication>\n        <tile>\n            <square70x70logo src=\"/mstile-70x70.png\"/>\n            <square150x150logo src=\"/mstile-150x150.png\"/>\n            <wide310x150logo src=\"/mstile-310x150.png\"/>\n            <square310x310logo src=\"/mstile-310x310.png\"/>\n            <TileColor>${tileColor}</TileColor>\n        </tile>\n    </msapplication>\n</browserconfig>`;\n\n  await fs.writeFile(outputPath, browserConfigXML);\n  return;\n};\n\nconst generateWebmanifest = async (\n  outputPath,\n  sitemName,\n  themeColor,\n  displayMode\n) => {\n  const webManifestJson = {\n    name: sitemName,\n    short_name: sitemName,\n    icons: [\n      {\n        src: '/android-chrome-192x192.png',\n        sizes: '192x192',\n        type: 'image/png',\n      },\n      {\n        src: '/android-chrome-512x512.png',\n        sizes: '512x512',\n        type: 'image/png',\n      },\n    ],\n    theme_color: themeColor,\n    background_color: themeColor,\n    display: displayMode,\n  };\n\n  await fs.writeFile(outputPath, JSON.stringify(webManifestJson));\n  return;\n};\n\nconst generateFaviconImages = async (targetImage, outputDir) => {\n  await generateImage(\n    targetImage,\n    path.join(outputDir, 'android-chrome-192x192.png'),\n    192\n  );\n\n  await generateImage(\n    targetImage,\n    path.join(outputDir, 'android-chrome-512x512.png'),\n    512\n  );\n\n  await generateImage(\n    targetImage,\n    path.join(outputDir, 'apple-touch-icon.png'),\n    180\n  );\n\n  await generateImage(\n    targetImage,\n    path.join(outputDir, 'favicon-16x16.png'),\n    16\n  );\n\n  await generateImage(\n    targetImage,\n    path.join(outputDir, 'favicon-32x32.png'),\n    32\n  );\n\n  await generateImage(targetImage, path.join(outputDir, 'favicon.ico'), 48);\n\n  await generateImage(\n    targetImage,\n    path.join(outputDir, 'mstile-70x70.png'),\n    70\n  );\n\n  await generateImage(\n    targetImage,\n    path.join(outputDir, 'mstile-150x150.png'),\n    150\n  );\n\n  await generateImage(\n    targetImage,\n    path.join(outputDir, 'mstile-310x150.png'),\n    310,\n    150\n  );\n\n  await generateImage(\n    targetImage,\n    path.join(outputDir, 'mstile-310x310.png'),\n    310\n  );\n\n  return;\n};\n\nconst generateFavicons = async (\n  targetImage,\n  siteName,\n  outputDir = 'public',\n  themeColor = '#ffffff',\n  displayMode = 'standalone',\n  tileColor = '#da532c'\n) => {\n  if (!targetImage) {\n    console.error('simple-favicon-generator: ERROR');\n    throw new Error('targetImage is a required');\n  }\n\n  if (!siteName) {\n    console.error('simple-favicon-generator: ERROR');\n    throw new Error('siteName is a required');\n  }\n\n  try {\n    // generate favicon images\n    await generateFaviconImages(targetImage, outputDir);\n\n    // generate browserconfig.xml\n    await generateBrowserConfigXML(\n      path.join(outputDir, 'browserconfig.xml'),\n      tileColor\n    );\n\n    // generate site.webmanifest\n    await generateWebmanifest(\n      path.join(outputDir, 'site.webmanifest'),\n      siteName,\n      themeColor,\n      displayMode\n    );\n\n    console.log('simple-favicon-generator: SUCCESS');\n  } catch (err) {\n    console.error('simple-favicon-generator: ERROR');\n    throw err;\n  }\n};\n\nmodule.exports = generateFavicons;\n"]}