UNPKG

simple-icons

Version:

SVG icons for popular brands https://simpleicons.org

6 lines (5 loc) 3.06 kB
var A=Object.create;var n=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty;var L=(e,r)=>{for(var t in r)n(e,t,{get:r[t],enumerable:!0})},m=(e,r,t,l)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of y(r))!v.call(e,o)&&o!==t&&n(e,o,{get:()=>r[o],enumerable:!(l=w(r,o))||l.enumerable});return e};var d=(e,r,t)=>(t=e!=null?A(_(e)):{},m(r||!e||!e.__esModule?n(t,"default",{value:e,enumerable:!0}):t,e)),S=e=>m(n({},"__esModule",{value:!0}),e);var O={};L(O,{SVG_PATH_REGEX:()=>$,collator:()=>D,getIconSlug:()=>C,getIconsData:()=>G,getIconsDataPath:()=>x,getIconsDataString:()=>E,getThirdPartyExtensions:()=>j,getThirdPartyLibraries:()=>z,htmlFriendlyToTitle:()=>F,normalizeColor:()=>b,normalizeNewlines:()=>T,slugToVariableName:()=>P,svgToPath:()=>I,titleToHtmlFriendly:()=>N,titleToSlug:()=>f});module.exports=S(O);var a=d(require("node:fs/promises")),s=d(require("node:path"));const h={},u={"+":"plus",".":"dot","&":"and",\u0111:"d",\u0127:"h",\u0131:"i",\u0138:"k",\u0140:"l",\u0142:"l",\u00DF:"ss",\u0167:"t",\u00F8:"o"},R=new RegExp(`[${Object.keys(u).join("")}]`,"gv"),U=/[^a-z\d]/gv,$=/^m[\-mzlhvcsqtae\d,. ]+$/iv,C=e=>e.slug||f(e.title),I=e=>e.split('"',8)[7],f=e=>e.toLowerCase().replaceAll(R,r=>u[r]).normalize("NFD").replaceAll(U,""),P=e=>`si${e[0].toUpperCase()}${e.slice(1)}`,N=e=>e.replaceAll("&","&amp;").replaceAll('"',"&quot;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll(/./gv,r=>{const t=r.codePointAt(0)||0;return t>127?`&#${t};`:r}),F=e=>e.replaceAll(/&#(\d+);/gv,(r,t)=>String.fromCodePoint(Number.parseInt(t,10))).replaceAll(/&(quot|amp|lt|gt);/gv,(r,t)=>({quot:'"',amp:"&",lt:"<",gt:">"})[t]),x=()=>s.default.resolve(h.dirname,"data","simple-icons.json"),E=()=>a.default.readFile(x(),"utf8"),G=async()=>{const e=await E();return JSON.parse(e)},T=e=>e.replaceAll(`\r `,` `),b=e=>{let r=e.replace("#","").toUpperCase();return r.length<6?r=[...r.slice(0,3)].map(t=>t.repeat(2)).join(""):r.length>6&&(r=r.slice(0,6)),r},M=e=>{const[r,t]=e.split(" | "),l=/>([^<]+)<\/a>$/v.exec(r)?.[1];if(l===void 0)throw new Error(`Module name improperly parsed from line: ${e}`);const o=/^\s*<a href="(.[^"]+)"/v.exec(r)?.[1];if(o===void 0)throw new Error(`Module URL improperly parsed from line: ${e}`);const i=/<img src="(.[^"]+)"/v.exec(r)?.[1];if(i===void 0)throw new Error(`Module image URL improperly parsed from line: ${e}`);const p=/\[(.+)\]/v.exec(t)?.[1];if(p===void 0)throw new Error(`Author improperly parsed from line: ${e}`);const c=/\((.+)\)/v.exec(t)?.[1];if(c===void 0)throw new Error(`Author URL improperly parsed from line: ${e}`);return{module:{name:l,url:o,image:{url:i}},author:{name:p,url:c}}},g=async e=>{const r=await a.default.readFile(s.default.join(h.dirname,"README.md"),"utf8");return T(r).split(e)[1].split(`| `)[0].split(`| |`).slice(2).map(t=>M(t))},j=async()=>g("## Third-Party Extensions"),z=async()=>g("## Third-Party Libraries"),D=new Intl.Collator("en",{usage:"search",caseFirst:"upper"});