flag-resizer 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ATTRIBUTION.txt +25 -0
- package/CHANGELOG.md +11 -0
- package/LICENSE +21 -0
- package/LICENSE-GRAPHICS +56 -0
- package/README.md +340 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +219 -0
- package/dist/cli.js.map +1 -0
- package/dist/generator.js +950 -0
- package/dist/generator.js.map +1 -0
- package/dist/index.d.ts +451 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/flags/README.md +1 -0
- package/flags/ac.svg +1 -0
- package/flags/ad.svg +1 -0
- package/flags/ae.svg +1 -0
- package/flags/af.svg +1 -0
- package/flags/ag.svg +1 -0
- package/flags/ai.svg +1 -0
- package/flags/al.svg +1 -0
- package/flags/am.svg +1 -0
- package/flags/ao.svg +1 -0
- package/flags/aq.svg +1 -0
- package/flags/ar.svg +1 -0
- package/flags/as.svg +1 -0
- package/flags/at.svg +1 -0
- package/flags/au-act.svg +12 -0
- package/flags/au-nsw.svg +232 -0
- package/flags/au-nt.svg +40 -0
- package/flags/au-qld.svg +12 -0
- package/flags/au-sa.svg +31 -0
- package/flags/au-tas.svg +114 -0
- package/flags/au-vic.svg +191 -0
- package/flags/au-wa.svg +393 -0
- package/flags/au.svg +1 -0
- package/flags/aw.svg +1 -0
- package/flags/ax.svg +1 -0
- package/flags/az.svg +1 -0
- package/flags/ba.svg +1 -0
- package/flags/bb.svg +1 -0
- package/flags/bd.svg +1 -0
- package/flags/be.svg +1 -0
- package/flags/bf.svg +1 -0
- package/flags/bg.svg +1 -0
- package/flags/bh.svg +1 -0
- package/flags/bi.svg +1 -0
- package/flags/bj.svg +1 -0
- package/flags/bl.svg +1 -0
- package/flags/bm.svg +1 -0
- package/flags/bn.svg +1 -0
- package/flags/bo.svg +1 -0
- package/flags/bq.svg +1 -0
- package/flags/br.svg +1 -0
- package/flags/bs.svg +1 -0
- package/flags/bt.svg +1 -0
- package/flags/bv.svg +1 -0
- package/flags/bw.svg +1 -0
- package/flags/by.svg +1 -0
- package/flags/bz.svg +1 -0
- package/flags/ca-ab.svg +100 -0
- package/flags/ca-bc.svg +34 -0
- package/flags/ca-mb.svg +99 -0
- package/flags/ca-nb.svg +244 -0
- package/flags/ca-nl.svg +16 -0
- package/flags/ca-ns.svg +155 -0
- package/flags/ca-nt.svg +45 -0
- package/flags/ca-nu.svg +16 -0
- package/flags/ca-on.svg +31 -0
- package/flags/ca-pe.svg +748 -0
- package/flags/ca-qc.svg +20 -0
- package/flags/ca-sk.svg +91 -0
- package/flags/ca-yt.svg +81 -0
- package/flags/ca.svg +1 -0
- package/flags/cc.svg +1 -0
- package/flags/cd.svg +1 -0
- package/flags/cf.svg +1 -0
- package/flags/cg.svg +1 -0
- package/flags/ch.svg +1 -0
- package/flags/ci.svg +1 -0
- package/flags/ck.svg +1 -0
- package/flags/cl.svg +1 -0
- package/flags/cm.svg +1 -0
- package/flags/cn.svg +1 -0
- package/flags/co.svg +1 -0
- package/flags/cp.svg +1 -0
- package/flags/cq.svg +1 -0
- package/flags/cr.svg +1 -0
- package/flags/cu.svg +1 -0
- package/flags/cv.svg +1 -0
- package/flags/cw.svg +1 -0
- package/flags/cx.svg +1 -0
- package/flags/cy.svg +1 -0
- package/flags/cz.svg +1 -0
- package/flags/de-bb.svg +76 -0
- package/flags/de-be.svg +17 -0
- package/flags/de-bw.svg +12 -0
- package/flags/de-by.svg +16 -0
- package/flags/de-hb.svg +12 -0
- package/flags/de-he.svg +14 -0
- package/flags/de-hh.svg +40 -0
- package/flags/de-mv.svg +12 -0
- package/flags/de-ni.svg +86 -0
- package/flags/de-nw.svg +15 -0
- package/flags/de-rp.svg +292 -0
- package/flags/de-sh.svg +14 -0
- package/flags/de-sl.svg +279 -0
- package/flags/de-sn.svg +13 -0
- package/flags/de-st.svg +207 -0
- package/flags/de-th.svg +17 -0
- package/flags/de.svg +1 -0
- package/flags/dg.svg +1 -0
- package/flags/dj.svg +1 -0
- package/flags/dk.svg +1 -0
- package/flags/dm.svg +1 -0
- package/flags/do.svg +1 -0
- package/flags/dz.svg +1 -0
- package/flags/ea.svg +1 -0
- package/flags/ec.svg +1 -0
- package/flags/ee.svg +1 -0
- package/flags/eg.svg +1 -0
- package/flags/eh.svg +1 -0
- package/flags/er.svg +1 -0
- package/flags/es-an.svg +215 -0
- package/flags/es-ar.svg +66 -0
- package/flags/es-as.svg +19 -0
- package/flags/es-cb.svg +590 -0
- package/flags/es-ce.svg +357 -0
- package/flags/es-cl.svg +473 -0
- package/flags/es-cm.svg +457 -0
- package/flags/es-cn.svg +200 -0
- package/flags/es-ct.svg +13 -0
- package/flags/es-ex.svg +251 -0
- package/flags/es-ga.svg +205 -0
- package/flags/es-ib.svg +104 -0
- package/flags/es-mc.svg +32 -0
- package/flags/es-md.svg +29 -0
- package/flags/es-ml.svg +717 -0
- package/flags/es-nc.svg +775 -0
- package/flags/es-pv.svg +14 -0
- package/flags/es-ri.svg +787 -0
- package/flags/es-vc.svg +21 -0
- package/flags/es.svg +1 -0
- package/flags/et.svg +1 -0
- package/flags/eu.svg +1 -0
- package/flags/fi.svg +1 -0
- package/flags/fj.svg +1 -0
- package/flags/fk.svg +1 -0
- package/flags/fm.svg +1 -0
- package/flags/fo.svg +1 -0
- package/flags/fr.svg +1 -0
- package/flags/ga.svg +1 -0
- package/flags/gb-eng.svg +1 -0
- package/flags/gb-nir.svg +141 -0
- package/flags/gb-sct.svg +1 -0
- package/flags/gb-wls.svg +1 -0
- package/flags/gb.svg +1 -0
- package/flags/gd.svg +1 -0
- package/flags/ge.svg +1 -0
- package/flags/gf.svg +1 -0
- package/flags/gg.svg +1 -0
- package/flags/gh.svg +1 -0
- package/flags/gi.svg +1 -0
- package/flags/gl.svg +1 -0
- package/flags/gm.svg +1 -0
- package/flags/gn.svg +1 -0
- package/flags/gp.svg +1 -0
- package/flags/gq.svg +1 -0
- package/flags/gr.svg +1 -0
- package/flags/gs.svg +1 -0
- package/flags/gt.svg +1 -0
- package/flags/gu.svg +1 -0
- package/flags/gw.svg +1 -0
- package/flags/gy.svg +1 -0
- package/flags/hk.svg +1 -0
- package/flags/hm.svg +1 -0
- package/flags/hn.svg +1 -0
- package/flags/hr.svg +1 -0
- package/flags/ht.svg +1 -0
- package/flags/hu.svg +1 -0
- package/flags/ic.svg +1 -0
- package/flags/id.svg +1 -0
- package/flags/ie.svg +1 -0
- package/flags/il.svg +1 -0
- package/flags/im.svg +1 -0
- package/flags/in.svg +1 -0
- package/flags/io.svg +1 -0
- package/flags/iq.svg +1 -0
- package/flags/ir.svg +42 -0
- package/flags/is.svg +1 -0
- package/flags/it.svg +1 -0
- package/flags/je.svg +1 -0
- package/flags/jm.svg +1 -0
- package/flags/jo.svg +1 -0
- package/flags/jp.svg +1 -0
- package/flags/ke.svg +1 -0
- package/flags/kg.svg +1 -0
- package/flags/kh.svg +1 -0
- package/flags/ki.svg +1 -0
- package/flags/km.svg +1 -0
- package/flags/kn.svg +1 -0
- package/flags/kp.svg +1 -0
- package/flags/kr.svg +1 -0
- package/flags/kw.svg +1 -0
- package/flags/ky.svg +1 -0
- package/flags/kz.svg +1 -0
- package/flags/la.svg +1 -0
- package/flags/lb.svg +1 -0
- package/flags/lc.svg +1 -0
- package/flags/li.svg +1 -0
- package/flags/lk.svg +1 -0
- package/flags/lr.svg +1 -0
- package/flags/ls.svg +1 -0
- package/flags/lt.svg +1 -0
- package/flags/lu.svg +1 -0
- package/flags/lv.svg +1 -0
- package/flags/ly.svg +1 -0
- package/flags/ma.svg +1 -0
- package/flags/mc.svg +1 -0
- package/flags/md.svg +1 -0
- package/flags/me.svg +1 -0
- package/flags/mf.svg +1 -0
- package/flags/mg.svg +1 -0
- package/flags/mh.svg +1 -0
- package/flags/mk.svg +1 -0
- package/flags/ml.svg +1 -0
- package/flags/mm.svg +1 -0
- package/flags/mn.svg +1 -0
- package/flags/mo.svg +1 -0
- package/flags/mp.svg +1 -0
- package/flags/mq.svg +1 -0
- package/flags/mr.svg +1 -0
- package/flags/ms.svg +1 -0
- package/flags/mt.svg +1 -0
- package/flags/mu.svg +1 -0
- package/flags/mv.svg +1 -0
- package/flags/mw.svg +1 -0
- package/flags/mx.svg +1 -0
- package/flags/my.svg +1 -0
- package/flags/mz.svg +1 -0
- package/flags/na.svg +1 -0
- package/flags/nc.svg +1 -0
- package/flags/ne.svg +1 -0
- package/flags/nf.svg +1 -0
- package/flags/ng.svg +1 -0
- package/flags/ni.svg +1 -0
- package/flags/nl.svg +1 -0
- package/flags/no.svg +1 -0
- package/flags/np.svg +1 -0
- package/flags/nr.svg +1 -0
- package/flags/nu.svg +1 -0
- package/flags/nz.svg +1 -0
- package/flags/om.svg +1 -0
- package/flags/pa.svg +1 -0
- package/flags/pe.svg +1 -0
- package/flags/pf.svg +1 -0
- package/flags/pg.svg +1 -0
- package/flags/ph.svg +1 -0
- package/flags/pk.svg +1 -0
- package/flags/pl.svg +1 -0
- package/flags/pm.svg +1 -0
- package/flags/pn.svg +1 -0
- package/flags/pr.svg +1 -0
- package/flags/ps.svg +1 -0
- package/flags/pt.svg +1 -0
- package/flags/pw.svg +1 -0
- package/flags/py.svg +1 -0
- package/flags/qa.svg +1 -0
- package/flags/re.svg +1 -0
- package/flags/ro.svg +1 -0
- package/flags/rs.svg +1 -0
- package/flags/ru.svg +1 -0
- package/flags/rw.svg +1 -0
- package/flags/sa.svg +1 -0
- package/flags/sb.svg +1 -0
- package/flags/sc.svg +1 -0
- package/flags/sd.svg +1 -0
- package/flags/se.svg +1 -0
- package/flags/sg.svg +1 -0
- package/flags/sh.svg +1 -0
- package/flags/si.svg +1 -0
- package/flags/sj.svg +1 -0
- package/flags/sk.svg +1 -0
- package/flags/sl.svg +1 -0
- package/flags/sm.svg +1 -0
- package/flags/sn.svg +1 -0
- package/flags/so.svg +1 -0
- package/flags/sr.svg +1 -0
- package/flags/ss.svg +1 -0
- package/flags/st.svg +1 -0
- package/flags/sv.svg +1 -0
- package/flags/sx.svg +1 -0
- package/flags/sy.svg +1 -0
- package/flags/sz.svg +1 -0
- package/flags/ta.svg +1 -0
- package/flags/tc.svg +1 -0
- package/flags/td.svg +1 -0
- package/flags/tf.svg +1 -0
- package/flags/tg.svg +1 -0
- package/flags/th.svg +1 -0
- package/flags/tj.svg +1 -0
- package/flags/tk.svg +1 -0
- package/flags/tl.svg +1 -0
- package/flags/tm.svg +1 -0
- package/flags/tn.svg +1 -0
- package/flags/to.svg +1 -0
- package/flags/tr.svg +1 -0
- package/flags/tt.svg +1 -0
- package/flags/tv.svg +1 -0
- package/flags/tw.svg +1 -0
- package/flags/tz.svg +1 -0
- package/flags/ua.svg +1 -0
- package/flags/ug.svg +1 -0
- package/flags/um.svg +1 -0
- package/flags/un.svg +1 -0
- package/flags/us-ak.svg +12 -0
- package/flags/us-al.svg +12 -0
- package/flags/us-ar.svg +12 -0
- package/flags/us-az.svg +12 -0
- package/flags/us-ca.svg +12 -0
- package/flags/us-co.svg +12 -0
- package/flags/us-ct.svg +12 -0
- package/flags/us-de.svg +12 -0
- package/flags/us-fl.svg +12 -0
- package/flags/us-ga.svg +12 -0
- package/flags/us-hi.svg +12 -0
- package/flags/us-ia.svg +12 -0
- package/flags/us-id.svg +12 -0
- package/flags/us-il.svg +12 -0
- package/flags/us-in.svg +12 -0
- package/flags/us-ks.svg +12 -0
- package/flags/us-ky.svg +12 -0
- package/flags/us-la.svg +12 -0
- package/flags/us-ma.svg +12 -0
- package/flags/us-md.svg +12 -0
- package/flags/us-me.svg +12 -0
- package/flags/us-mi.svg +12 -0
- package/flags/us-mn.svg +12 -0
- package/flags/us-mo.svg +12 -0
- package/flags/us-ms.svg +12 -0
- package/flags/us-mt.svg +12 -0
- package/flags/us-nc.svg +12 -0
- package/flags/us-nd.svg +12 -0
- package/flags/us-ne.svg +12 -0
- package/flags/us-nh.svg +12 -0
- package/flags/us-nj.svg +12 -0
- package/flags/us-nm.svg +12 -0
- package/flags/us-nv.svg +12 -0
- package/flags/us-ny.svg +12 -0
- package/flags/us-oh.svg +12 -0
- package/flags/us-ok.svg +12 -0
- package/flags/us-or.svg +12 -0
- package/flags/us-pa.svg +12 -0
- package/flags/us-ri.svg +12 -0
- package/flags/us-sc.svg +12 -0
- package/flags/us-sd.svg +12 -0
- package/flags/us-tn.svg +12 -0
- package/flags/us-tx.svg +12 -0
- package/flags/us-ut.svg +12 -0
- package/flags/us-va.svg +12 -0
- package/flags/us-vt.svg +12 -0
- package/flags/us-wa.svg +12 -0
- package/flags/us-wi.svg +12 -0
- package/flags/us-wv.svg +12 -0
- package/flags/us-wy.svg +12 -0
- package/flags/us.svg +1 -0
- package/flags/uy.svg +1 -0
- package/flags/uz.svg +1 -0
- package/flags/va.svg +1 -0
- package/flags/vc.svg +1 -0
- package/flags/ve.svg +1 -0
- package/flags/vg.svg +1 -0
- package/flags/vi.svg +1 -0
- package/flags/vn.svg +1 -0
- package/flags/vu.svg +1 -0
- package/flags/wf.svg +1 -0
- package/flags/ws.svg +1 -0
- package/flags/xk.svg +1 -0
- package/flags/ye.svg +1 -0
- package/flags/yt.svg +1 -0
- package/flags/za.svg +1 -0
- package/flags/zm.svg +1 -0
- package/flags/zw.svg +1 -0
- package/package.json +113 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","names":[],"sources":["../src/data/flags.ts","../src/errors.ts","../src/config.ts","../src/generated-typescript.ts","../src/generator.ts"],"sourcesContent":["// Display names follow FlagCDN where available and the sourced ISO 3166-2\n// manifests for additional subdivisions.\nexport const FLAGS = {\n ac: 'Ascension Island',\n ad: 'Andorra',\n ae: 'United Arab Emirates',\n af: 'Afghanistan',\n ag: 'Antigua and Barbuda',\n ai: 'Anguilla',\n al: 'Albania',\n am: 'Armenia',\n ao: 'Angola',\n aq: 'Antarctica',\n ar: 'Argentina',\n as: 'American Samoa',\n at: 'Austria',\n au: 'Australia',\n 'au-act': 'Australian Capital Territory',\n 'au-nsw': 'New South Wales',\n 'au-nt': 'Northern Territory',\n 'au-qld': 'Queensland',\n 'au-sa': 'South Australia',\n 'au-tas': 'Tasmania',\n 'au-vic': 'Victoria',\n 'au-wa': 'Western Australia',\n aw: 'Aruba',\n ax: 'Åland Islands',\n az: 'Azerbaijan',\n ba: 'Bosnia and Herzegovina',\n bb: 'Barbados',\n bd: 'Bangladesh',\n be: 'Belgium',\n bf: 'Burkina Faso',\n bg: 'Bulgaria',\n bh: 'Bahrain',\n bi: 'Burundi',\n bj: 'Benin',\n bl: 'Saint Barthélemy',\n bm: 'Bermuda',\n bn: 'Brunei',\n bo: 'Bolivia',\n bq: 'Caribbean Netherlands',\n br: 'Brazil',\n bs: 'Bahamas',\n bt: 'Bhutan',\n bv: 'Bouvet Island',\n bw: 'Botswana',\n by: 'Belarus',\n bz: 'Belize',\n ca: 'Canada',\n 'ca-ab': 'Alberta',\n 'ca-bc': 'British Columbia',\n 'ca-mb': 'Manitoba',\n 'ca-nb': 'New Brunswick',\n 'ca-nl': 'Newfoundland and Labrador',\n 'ca-ns': 'Nova Scotia',\n 'ca-nt': 'Northwest Territories',\n 'ca-nu': 'Nunavut',\n 'ca-on': 'Ontario',\n 'ca-pe': 'Prince Edward Island',\n 'ca-qc': 'Quebec',\n 'ca-sk': 'Saskatchewan',\n 'ca-yt': 'Yukon',\n cc: 'Cocos (Keeling) Islands',\n cd: 'DR Congo',\n cf: 'Central African Republic',\n cg: 'Republic of the Congo',\n ch: 'Switzerland',\n ci: \"Côte d'Ivoire (Ivory Coast)\",\n ck: 'Cook Islands',\n cl: 'Chile',\n cm: 'Cameroon',\n cn: 'China',\n co: 'Colombia',\n cp: 'Clipperton Island',\n cq: 'Sark',\n cr: 'Costa Rica',\n cu: 'Cuba',\n cv: 'Cape Verde',\n cw: 'Curaçao',\n cx: 'Christmas Island',\n cy: 'Cyprus',\n cz: 'Czechia',\n de: 'Germany',\n 'de-bb': 'Brandenburg',\n 'de-be': 'Berlin',\n 'de-bw': 'Baden-Württemberg',\n 'de-by': 'Bavaria',\n 'de-hb': 'Bremen',\n 'de-he': 'Hesse',\n 'de-hh': 'Hamburg',\n 'de-mv': 'Mecklenburg-Western Pomerania',\n 'de-ni': 'Lower Saxony',\n 'de-nw': 'North Rhine-Westphalia',\n 'de-rp': 'Rhineland-Palatinate',\n 'de-sh': 'Schleswig-Holstein',\n 'de-sl': 'Saarland',\n 'de-sn': 'Saxony',\n 'de-st': 'Saxony-Anhalt',\n 'de-th': 'Thuringia',\n dg: 'Diego Garcia',\n dj: 'Djibouti',\n dk: 'Denmark',\n dm: 'Dominica',\n do: 'Dominican Republic',\n dz: 'Algeria',\n ea: 'Ceuta & Melilla',\n ec: 'Ecuador',\n ee: 'Estonia',\n eg: 'Egypt',\n eh: 'Western Sahara',\n er: 'Eritrea',\n es: 'Spain',\n 'es-an': 'Andalusia',\n 'es-ar': 'Aragon',\n 'es-as': 'Asturias',\n 'es-cb': 'Cantabria',\n 'es-ce': 'Ceuta',\n 'es-cl': 'Castile and León',\n 'es-cm': 'Castilla-La Mancha',\n 'es-cn': 'Canary Islands',\n 'es-ct': 'Catalonia',\n 'es-ex': 'Extremadura',\n 'es-ga': 'Galicia',\n 'es-ib': 'Balearic Islands',\n 'es-mc': 'Region of Murcia',\n 'es-md': 'Community of Madrid',\n 'es-ml': 'Melilla',\n 'es-nc': 'Navarre',\n 'es-pv': 'Basque Country',\n 'es-ri': 'La Rioja',\n 'es-vc': 'Valencian Community',\n et: 'Ethiopia',\n eu: 'European Union',\n fi: 'Finland',\n fj: 'Fiji',\n fk: 'Falkland Islands',\n fm: 'Micronesia',\n fo: 'Faroe Islands',\n fr: 'France',\n ga: 'Gabon',\n gb: 'United Kingdom',\n 'gb-eng': 'England',\n 'gb-nir': 'Northern Ireland',\n 'gb-sct': 'Scotland',\n 'gb-wls': 'Wales',\n gd: 'Grenada',\n ge: 'Georgia',\n gf: 'French Guiana',\n gg: 'Guernsey',\n gh: 'Ghana',\n gi: 'Gibraltar',\n gl: 'Greenland',\n gm: 'Gambia',\n gn: 'Guinea',\n gp: 'Guadeloupe',\n gq: 'Equatorial Guinea',\n gr: 'Greece',\n gs: 'South Georgia',\n gt: 'Guatemala',\n gu: 'Guam',\n gw: 'Guinea-Bissau',\n gy: 'Guyana',\n hk: 'Hong Kong',\n hm: 'Heard Island and McDonald Islands',\n hn: 'Honduras',\n hr: 'Croatia',\n ht: 'Haiti',\n hu: 'Hungary',\n ic: 'Canary Islands',\n id: 'Indonesia',\n ie: 'Ireland',\n il: 'Israel',\n im: 'Isle of Man',\n in: 'India',\n io: 'British Indian Ocean Territory',\n iq: 'Iraq',\n ir: 'Iran',\n is: 'Iceland',\n it: 'Italy',\n je: 'Jersey',\n jm: 'Jamaica',\n jo: 'Jordan',\n jp: 'Japan',\n ke: 'Kenya',\n kg: 'Kyrgyzstan',\n kh: 'Cambodia',\n ki: 'Kiribati',\n km: 'Comoros',\n kn: 'Saint Kitts and Nevis',\n kp: 'North Korea',\n kr: 'South Korea',\n kw: 'Kuwait',\n ky: 'Cayman Islands',\n kz: 'Kazakhstan',\n la: 'Laos',\n lb: 'Lebanon',\n lc: 'Saint Lucia',\n li: 'Liechtenstein',\n lk: 'Sri Lanka',\n lr: 'Liberia',\n ls: 'Lesotho',\n lt: 'Lithuania',\n lu: 'Luxembourg',\n lv: 'Latvia',\n ly: 'Libya',\n ma: 'Morocco',\n mc: 'Monaco',\n md: 'Moldova',\n me: 'Montenegro',\n mf: 'Saint Martin',\n mg: 'Madagascar',\n mh: 'Marshall Islands',\n mk: 'North Macedonia',\n ml: 'Mali',\n mm: 'Myanmar',\n mn: 'Mongolia',\n mo: 'Macau',\n mp: 'Northern Mariana Islands',\n mq: 'Martinique',\n mr: 'Mauritania',\n ms: 'Montserrat',\n mt: 'Malta',\n mu: 'Mauritius',\n mv: 'Maldives',\n mw: 'Malawi',\n mx: 'Mexico',\n my: 'Malaysia',\n mz: 'Mozambique',\n na: 'Namibia',\n nc: 'New Caledonia',\n ne: 'Niger',\n nf: 'Norfolk Island',\n ng: 'Nigeria',\n ni: 'Nicaragua',\n nl: 'Netherlands',\n no: 'Norway',\n np: 'Nepal',\n nr: 'Nauru',\n nu: 'Niue',\n nz: 'New Zealand',\n om: 'Oman',\n pa: 'Panama',\n pe: 'Peru',\n pf: 'French Polynesia',\n pg: 'Papua New Guinea',\n ph: 'Philippines',\n pk: 'Pakistan',\n pl: 'Poland',\n pm: 'Saint Pierre and Miquelon',\n pn: 'Pitcairn Islands',\n pr: 'Puerto Rico',\n ps: 'Palestine',\n pt: 'Portugal',\n pw: 'Palau',\n py: 'Paraguay',\n qa: 'Qatar',\n re: 'Réunion',\n ro: 'Romania',\n rs: 'Serbia',\n ru: 'Russia',\n rw: 'Rwanda',\n sa: 'Saudi Arabia',\n sb: 'Solomon Islands',\n sc: 'Seychelles',\n sd: 'Sudan',\n se: 'Sweden',\n sg: 'Singapore',\n sh: 'Saint Helena, Ascension and Tristan da Cunha',\n si: 'Slovenia',\n sj: 'Svalbard and Jan Mayen',\n sk: 'Slovakia',\n sl: 'Sierra Leone',\n sm: 'San Marino',\n sn: 'Senegal',\n so: 'Somalia',\n sr: 'Suriname',\n ss: 'South Sudan',\n st: 'São Tomé and Príncipe',\n sv: 'El Salvador',\n sx: 'Sint Maarten',\n sy: 'Syria',\n sz: 'Eswatini (Swaziland)',\n ta: 'Tristan da Cunha',\n tc: 'Turks and Caicos Islands',\n td: 'Chad',\n tf: 'French Southern and Antarctic Lands',\n tg: 'Togo',\n th: 'Thailand',\n tj: 'Tajikistan',\n tk: 'Tokelau',\n tl: 'Timor-Leste',\n tm: 'Turkmenistan',\n tn: 'Tunisia',\n to: 'Tonga',\n tr: 'Turkey',\n tt: 'Trinidad and Tobago',\n tv: 'Tuvalu',\n tw: 'Taiwan',\n tz: 'Tanzania',\n ua: 'Ukraine',\n ug: 'Uganda',\n um: 'United States Minor Outlying Islands',\n un: 'United Nations',\n us: 'United States',\n 'us-ak': 'Alaska',\n 'us-al': 'Alabama',\n 'us-ar': 'Arkansas',\n 'us-az': 'Arizona',\n 'us-ca': 'California',\n 'us-co': 'Colorado',\n 'us-ct': 'Connecticut',\n 'us-de': 'Delaware',\n 'us-fl': 'Florida',\n 'us-ga': 'Georgia',\n 'us-hi': 'Hawaii',\n 'us-ia': 'Iowa',\n 'us-id': 'Idaho',\n 'us-il': 'Illinois',\n 'us-in': 'Indiana',\n 'us-ks': 'Kansas',\n 'us-ky': 'Kentucky',\n 'us-la': 'Louisiana',\n 'us-ma': 'Massachusetts',\n 'us-md': 'Maryland',\n 'us-me': 'Maine',\n 'us-mi': 'Michigan',\n 'us-mn': 'Minnesota',\n 'us-mo': 'Missouri',\n 'us-ms': 'Mississippi',\n 'us-mt': 'Montana',\n 'us-nc': 'North Carolina',\n 'us-nd': 'North Dakota',\n 'us-ne': 'Nebraska',\n 'us-nh': 'New Hampshire',\n 'us-nj': 'New Jersey',\n 'us-nm': 'New Mexico',\n 'us-nv': 'Nevada',\n 'us-ny': 'New York',\n 'us-oh': 'Ohio',\n 'us-ok': 'Oklahoma',\n 'us-or': 'Oregon',\n 'us-pa': 'Pennsylvania',\n 'us-ri': 'Rhode Island',\n 'us-sc': 'South Carolina',\n 'us-sd': 'South Dakota',\n 'us-tn': 'Tennessee',\n 'us-tx': 'Texas',\n 'us-ut': 'Utah',\n 'us-va': 'Virginia',\n 'us-vt': 'Vermont',\n 'us-wa': 'Washington',\n 'us-wi': 'Wisconsin',\n 'us-wv': 'West Virginia',\n 'us-wy': 'Wyoming',\n uy: 'Uruguay',\n uz: 'Uzbekistan',\n va: 'Vatican City (Holy See)',\n vc: 'Saint Vincent and the Grenadines',\n ve: 'Venezuela',\n vg: 'British Virgin Islands',\n vi: 'United States Virgin Islands',\n vn: 'Vietnam',\n vu: 'Vanuatu',\n wf: 'Wallis and Futuna',\n ws: 'Samoa',\n xk: 'Kosovo',\n ye: 'Yemen',\n yt: 'Mayotte',\n za: 'South Africa',\n zm: 'Zambia',\n zw: 'Zimbabwe',\n} as const;\n\nexport type CountryCode = keyof typeof FLAGS;\n\nexport const COUNTRY_CODES = Object.keys(FLAGS) as CountryCode[];\n","export class FlagResizerError extends Error {\n public override readonly name = 'FlagResizerError';\n\n public constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n }\n}\n","import path from 'node:path';\n\nimport { loadConfig } from 'c12';\nimport { z } from 'zod';\n\nimport { COUNTRY_CODES, FLAGS, type CountryCode } from './data/flags.js';\nimport { FlagResizerError } from './errors.js';\nimport type {\n FlagFormat,\n FlagFilterValue,\n FlagResizerConfig,\n GenerateOptions,\n ProfileConfig,\n ResolvedConfiguration,\n ResolvedProfileConfig,\n} from './types.js';\n\nconst countryCodeSchema = z.enum(COUNTRY_CODES as [CountryCode, ...CountryCode[]]);\nconst filterPatternSchema = z\n .string()\n .regex(/^(?=.*\\*)[a-z*]+(?:-[a-z*]+)*$/u, 'must be a lowercase flag code or a pattern using \"*\"');\nconst filterValueSchema = z.union([countryCodeSchema, filterPatternSchema]);\nconst formatSchema = z.enum(['png', 'webp']);\nconst sizeSchema = z.tuple([\n z.number().int().positive('width must be a positive integer'),\n z.number().int().positive('height must be a positive integer'),\n]);\nconst formatOutputSchema = z\n .object({\n dir: z.string().trim().min(1),\n publicPath: z.string().trim().min(1),\n })\n .strict();\nconst profileSchema = z\n .object({\n filter: z\n .object({\n type: z.enum(['whitelist', 'blacklist']),\n values: z.array(filterValueSchema),\n })\n .strict(),\n sizes: z.array(sizeSchema).min(1),\n quality: z.number().int().min(1).max(100),\n formats: z.array(formatSchema).min(1),\n output: z\n .object({\n png: formatOutputSchema.optional(),\n webp: formatOutputSchema.optional(),\n ts: z.string().trim().min(1),\n })\n .strict(),\n })\n .strict();\nconst configSchema = z.record(z.string().trim().min(1), profileSchema);\n\ninterface LoadedConfig {\n raw: unknown;\n baseDir: string;\n configFile?: string;\n}\n\nexport function defineConfig<const T extends FlagResizerConfig>(config: T): T {\n return config;\n}\n\nfunction formatValidationError(error: z.ZodError): string {\n return error.issues\n .map((issue) => {\n const location = issue.path.length > 0 ? issue.path.join('.') : 'config';\n const received = issue.code === 'invalid_value' ? ` (${String(issue.input)})` : '';\n return `${location}: ${issue.message}${received}`;\n })\n .join('\\n');\n}\n\nfunction preflightFormatTypos(raw: unknown): void {\n if (typeof raw !== 'object' || raw === null) return;\n\n for (const [profileName, value] of Object.entries(raw)) {\n if (typeof value !== 'object' || value === null) continue;\n const formats: unknown = Reflect.get(value, 'formats');\n if (Array.isArray(formats) && formats.includes('wepb')) {\n throw new FlagResizerError(\n `Profile \"${profileName}\" contains format \"wepb\". Did you mean \"webp\"?`,\n );\n }\n }\n}\n\nfunction normalizePublicPath(publicPath: string): string {\n const normalized = publicPath.replace(/\\/+$/u, '');\n return normalized === '' ? '/' : normalized;\n}\n\nfunction assertUniqueValues(profileName: string, profile: ProfileConfig): void {\n const formats = new Set(profile.formats);\n if (formats.size !== profile.formats.length) {\n throw new FlagResizerError(`Profile \"${profileName}\" contains duplicate formats.`);\n }\n\n const sizes = new Set(profile.sizes.map(([width, height]) => `${width}x${height}`));\n if (sizes.size !== profile.sizes.length) {\n throw new FlagResizerError(`Profile \"${profileName}\" contains duplicate sizes.`);\n }\n\n const countries = new Set(profile.filter.values);\n if (countries.size !== profile.filter.values.length) {\n throw new FlagResizerError(`Profile \"${profileName}\" contains duplicate filter values.`);\n }\n}\n\nfunction assertConsistentRatio(profileName: string, profile: ProfileConfig): void {\n const first = profile.sizes[0];\n if (!first) return;\n\n const [baseWidth, baseHeight] = first;\n for (const [width, height] of profile.sizes.slice(1)) {\n if (width * baseHeight !== height * baseWidth) {\n throw new FlagResizerError(\n `Profile \"${profileName}\" mixes aspect ratios: ${baseWidth}x${baseHeight} and ${width}x${height}.`,\n );\n }\n }\n}\n\nfunction matchesFilterValue(code: CountryCode, value: FlagFilterValue): boolean {\n if (!value.includes('*')) return code === value;\n return new RegExp(`^${value.split('*').join('.*')}$`, 'u').test(code);\n}\n\nfunction assertFilterValuesMatch(profileName: string, profile: ProfileConfig): void {\n for (const value of profile.filter.values) {\n if (!COUNTRY_CODES.some((code) => matchesFilterValue(code, value))) {\n throw new FlagResizerError(\n `Profile \"${profileName}\" contains filter pattern \"${value}\" that matches no bundled flags.`,\n );\n }\n }\n}\n\nfunction selectCountries(profile: ProfileConfig): readonly CountryCode[] {\n return COUNTRY_CODES.filter((code) => {\n const matches = profile.filter.values.some((value) => matchesFilterValue(code, value));\n return profile.filter.type === 'whitelist' ? matches : !matches;\n });\n}\n\nfunction resolveProfile(\n name: string,\n profile: ProfileConfig,\n baseDir: string,\n): ResolvedProfileConfig {\n assertUniqueValues(name, profile);\n assertConsistentRatio(name, profile);\n assertFilterValuesMatch(name, profile);\n\n for (const format of profile.formats) {\n if (!profile.output[format]) {\n throw new FlagResizerError(\n `Profile \"${name}\" enables \"${format}\" but output.${format} is missing.`,\n );\n }\n }\n\n return {\n ...profile,\n name,\n countries: selectCountries(profile),\n output: {\n ...(profile.output.png\n ? {\n png: {\n dir: path.resolve(baseDir, profile.output.png.dir),\n publicPath: normalizePublicPath(profile.output.png.publicPath),\n },\n }\n : {}),\n ...(profile.output.webp\n ? {\n webp: {\n dir: path.resolve(baseDir, profile.output.webp.dir),\n publicPath: normalizePublicPath(profile.output.webp.publicPath),\n },\n }\n : {}),\n ts: path.resolve(baseDir, profile.output.ts),\n },\n };\n}\n\nfunction profileTargets(profile: ResolvedProfileConfig): Iterable<string> {\n const targets: string[] = [profile.output.ts];\n\n for (const format of profile.formats) {\n const output = profile.output[format];\n if (!output) continue;\n for (const [width, height] of profile.sizes) {\n for (const code of profile.countries) {\n targets.push(path.join(output.dir, `${width}x${height}`, `${code}.${format}`));\n }\n }\n }\n\n return targets;\n}\n\nfunction assertNoTargetCollisions(profiles: readonly ResolvedProfileConfig[]): void {\n const owners = new Map<string, string>();\n\n for (const profile of profiles) {\n for (const target of profileTargets(profile)) {\n const owner = owners.get(target);\n if (owner) {\n throw new FlagResizerError(\n `Profiles \"${owner}\" and \"${profile.name}\" both generate ${target}.`,\n );\n }\n owners.set(target, profile.name);\n }\n }\n}\n\nasync function loadRawConfiguration(options: GenerateOptions): Promise<LoadedConfig> {\n const cwd = path.resolve(options.cwd ?? process.cwd());\n if ('config' in options) {\n return { raw: options.config, baseDir: cwd };\n }\n\n const requestedFile = options.configFile ? path.resolve(cwd, options.configFile) : undefined;\n\n try {\n const result = await loadConfig({\n name: 'flag-resizer',\n cwd,\n ...(requestedFile ? { configFile: requestedFile } : {}),\n configFileRequired: true,\n rcFile: false,\n globalRc: false,\n packageJson: false,\n dotenv: false,\n envName: false,\n extend: false,\n });\n const discoveredFile =\n typeof result.configFile === 'string' ? path.resolve(result.configFile) : requestedFile;\n\n return {\n raw: result.config,\n baseDir: discoveredFile ? path.dirname(discoveredFile) : cwd,\n ...(discoveredFile ? { configFile: discoveredFile } : {}),\n };\n } catch (error) {\n const target = requestedFile ?? path.join(cwd, 'flag-resizer.config.*');\n throw new FlagResizerError(`Unable to load flag-resizer configuration from ${target}.`, {\n cause: error,\n });\n }\n}\n\nexport async function resolveConfiguration(\n options: GenerateOptions,\n): Promise<ResolvedConfiguration> {\n const loaded = await loadRawConfiguration(options);\n preflightFormatTypos(loaded.raw);\n\n const parsed = configSchema.safeParse(loaded.raw);\n if (!parsed.success) {\n throw new FlagResizerError(\n `Invalid flag-resizer configuration:\\n${formatValidationError(parsed.error)}`,\n );\n }\n\n const entries = Object.entries(parsed.data);\n if (entries.length === 0) {\n throw new FlagResizerError('The configuration must contain at least one profile.');\n }\n\n const allProfiles = entries.map(([name, profile]) =>\n resolveProfile(name, profile as ProfileConfig, loaded.baseDir),\n );\n assertNoTargetCollisions(allProfiles);\n\n const requested = options.profiles;\n const selected =\n requested && requested.length > 0\n ? requested.map((name) => {\n const profile = allProfiles.find((candidate) => candidate.name === name);\n if (!profile) {\n throw new FlagResizerError(\n `Unknown profile \"${name}\". Available profiles: ${allProfiles\n .map((candidate) => candidate.name)\n .join(', ')}.`,\n );\n }\n return profile;\n })\n : allProfiles;\n\n if (new Set(selected.map((profile) => profile.name)).size !== selected.length) {\n throw new FlagResizerError('A profile was selected more than once.');\n }\n\n return {\n baseDir: loaded.baseDir,\n profiles: selected,\n ...(loaded.configFile ? { configFile: loaded.configFile } : {}),\n };\n}\n\nexport function getCountryName(code: CountryCode): string {\n return FLAGS[code];\n}\n\nexport function isFlagFormat(value: string): value is FlagFormat {\n return value === 'png' || value === 'webp';\n}\n","import { FLAGS } from './data/flags.js';\nimport type { FlagFormat, ResolvedProfileConfig } from './types.js';\n\nfunction quote(value: string): string {\n return JSON.stringify(value);\n}\n\nfunction propertyKey(value: string): string {\n return /^[A-Za-z_$][\\w$]*$/u.test(value) ? value : quote(value);\n}\n\nexport function createTypeScriptManifest(profile: ResolvedProfileConfig): string {\n const flags = profile.countries\n .map((code) => ` ${propertyKey(code)}: ${quote(FLAGS[code])},`)\n .join('\\n');\n const sizes = profile.sizes.map(([width, height]) => `${width}x${height}`);\n const sizeValues = sizes.map((size) => ` ${quote(size)},`).join('\\n');\n const dimensions = profile.sizes\n .map(\n ([width, height]) =>\n ` ${quote(`${width}x${height}`)}: { width: ${width}, height: ${height} },`,\n )\n .join('\\n');\n const formats = profile.formats.map((format) => ` ${quote(format)},`).join('\\n');\n const publicPaths = profile.formats\n .map((format: FlagFormat) => {\n const output = profile.output[format];\n if (!output) throw new Error(`Missing resolved output for ${format}.`);\n return ` ${format}: ${quote(output.publicPath)},`;\n })\n .join('\\n');\n\n return `/**\n * Generated by script 🍺\n * Do not edit manually.\n */\n\nexport const FLAGS = {\n${flags}\n} as const;\n\nexport type CountryCode = keyof typeof FLAGS;\n\nexport const FLAG_SIZES = [\n${sizeValues}\n] as const;\n\nexport type FlagSize = (typeof FLAG_SIZES)[number];\n\nexport const FLAG_DIMENSIONS = {\n${dimensions}\n} as const satisfies Record<FlagSize, { width: number; height: number }>;\n\nexport const FLAG_FORMATS = [\n${formats}\n] as const;\n\nexport type FlagFormat = (typeof FLAG_FORMATS)[number];\n\nexport const FLAG_PUBLIC_PATHS = {\n${publicPaths}\n} as const satisfies Record<FlagFormat, string>;\n\nexport function getFlagPath(\n code: CountryCode,\n size: FlagSize,\n format: FlagFormat,\n): string {\n const publicPath = FLAG_PUBLIC_PATHS[format];\n const basePath = publicPath === '/' ? '' : publicPath;\n return \\`\\${basePath}/\\${size}/\\${code}.\\${format}\\`;\n}\n`;\n}\n","import {\n access,\n copyFile,\n mkdir,\n mkdtemp,\n readFile,\n rename,\n rm,\n rmdir,\n stat,\n unlink,\n writeFile,\n} from 'node:fs/promises';\nimport { availableParallelism } from 'node:os';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { randomUUID } from 'node:crypto';\n\nimport sharp from 'sharp';\n\nimport { resolveConfiguration } from './config.js';\nimport type { CountryCode } from './data/flags.js';\nimport { FlagResizerError } from './errors.js';\nimport { createTypeScriptManifest } from './generated-typescript.js';\nimport type {\n FlagFormat,\n GenerateOptions,\n GenerationResult,\n ProfileGenerationResult,\n ResolvedProfileConfig,\n} from './types.js';\n\nconst PACKAGE_ROOT = fileURLToPath(new URL('../', import.meta.url));\nconst FLAGS_DIRECTORY = path.join(PACKAGE_ROOT, 'flags');\nconst ATTRIBUTION_FILE = path.join(PACKAGE_ROOT, 'ATTRIBUTION.txt');\nconst GRAPHICS_LICENSE_FILE = path.join(PACKAGE_ROOT, 'LICENSE-GRAPHICS');\nconst MANIFEST_VERSION = 1;\n\ntype ManagedFileKind = 'attribution' | 'image' | 'license' | 'typescript';\ntype FileStatus = 'created' | 'updated' | 'unchanged';\n\ninterface ManagedFile {\n root: string;\n relativePath: string;\n kind: ManagedFileKind;\n}\n\ninterface ProfileManifest {\n files: ManagedFile[];\n}\n\ninterface ManagedManifest {\n version: typeof MANIFEST_VERSION;\n profiles: Record<string, ProfileManifest>;\n}\n\ninterface PlannedFile {\n entry: ManagedFile;\n target: string;\n image: boolean;\n createContent: () => Promise<Buffer>;\n}\n\ninterface GenerationPlan {\n tasks: PlannedFile[];\n filesByProfile: Map<string, ManagedFile[]>;\n imageCountByProfile: Map<string, number>;\n}\n\nfunction emptyManifest(): ManagedManifest {\n return { version: MANIFEST_VERSION, profiles: {} };\n}\n\nfunction entryTarget(entry: ManagedFile): string {\n return path.resolve(entry.root, entry.relativePath);\n}\n\nfunction entryKey(entry: ManagedFile): string {\n return entryTarget(entry);\n}\n\nfunction assertSafeManagedFile(entry: ManagedFile): void {\n if (!path.isAbsolute(entry.root)) {\n throw new FlagResizerError('The managed manifest contains a non-absolute output root.');\n }\n if (path.isAbsolute(entry.relativePath) || entry.relativePath.includes('\\0')) {\n throw new FlagResizerError('The managed manifest contains an unsafe file path.');\n }\n\n const target = entryTarget(entry);\n const relative = path.relative(entry.root, target);\n if (relative === '' || relative === '..' || relative.startsWith(`..${path.sep}`)) {\n throw new FlagResizerError('The managed manifest contains a path outside its output root.');\n }\n\n const portable = entry.relativePath.split(path.sep).join('/');\n const valid =\n (entry.kind === 'attribution' && portable === 'ATTRIBUTION.txt') ||\n (entry.kind === 'license' && portable === 'LICENSE-GRAPHICS') ||\n (entry.kind === 'typescript' && /^[^/]+\\.ts$/u.test(portable)) ||\n (entry.kind === 'image' &&\n /^[1-9]\\d*x[1-9]\\d*\\/(?:[a-z]{2}|au-(?:act|nsw|nt|qld|sa|tas|vic|wa)|ca-(?:ab|bc|mb|nb|nl|ns|nt|nu|on|pe|qc|sk|yt)|de-(?:bb|be|bw|by|hb|he|hh|mv|ni|nw|rp|sh|sl|sn|st|th)|es-(?:an|ar|as|cb|ce|cl|cm|cn|ct|ex|ga|ib|mc|md|ml|nc|pv|ri|vc)|gb-(?:eng|nir|sct|wls)|us-(?:ak|al|ar|az|ca|co|ct|de|fl|ga|hi|ia|id|il|in|ks|ky|la|ma|md|me|mi|mn|mo|ms|mt|nc|nd|ne|nh|nj|nm|nv|ny|oh|ok|or|pa|ri|sc|sd|tn|tx|ut|va|vt|wa|wi|wv|wy))\\.(?:png|webp)$/u.test(\n portable,\n ));\n\n if (!valid) {\n throw new FlagResizerError(\n `The managed manifest contains an invalid ${entry.kind} path: ${entry.relativePath}.`,\n );\n }\n}\n\nfunction managedFile(target: string, root: string, kind: ManagedFileKind): ManagedFile {\n const entry = {\n root: path.resolve(root),\n relativePath: path.relative(path.resolve(root), path.resolve(target)),\n kind,\n };\n assertSafeManagedFile(entry);\n return entry;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction parseManifest(value: unknown): ManagedManifest {\n if (!isRecord(value) || value['version'] !== MANIFEST_VERSION || !isRecord(value['profiles'])) {\n throw new FlagResizerError('The managed manifest has an unsupported or invalid structure.');\n }\n\n const profiles: Record<string, ProfileManifest> = {};\n for (const [profileName, profileValue] of Object.entries(value['profiles'])) {\n if (!isRecord(profileValue) || !Array.isArray(profileValue['files'])) {\n throw new FlagResizerError(`The manifest entry for profile \"${profileName}\" is invalid.`);\n }\n\n const files = profileValue['files'].map((file): ManagedFile => {\n if (\n !isRecord(file) ||\n typeof file['root'] !== 'string' ||\n typeof file['relativePath'] !== 'string' ||\n !['attribution', 'image', 'license', 'typescript'].includes(String(file['kind']))\n ) {\n throw new FlagResizerError(\n `The manifest contains an invalid file owned by profile \"${profileName}\".`,\n );\n }\n const entry: ManagedFile = {\n root: file['root'],\n relativePath: file['relativePath'],\n kind: file['kind'] as ManagedFileKind,\n };\n assertSafeManagedFile(entry);\n return entry;\n });\n profiles[profileName] = { files };\n }\n\n return { version: MANIFEST_VERSION, profiles };\n}\n\nasync function pathExists(file: string): Promise<boolean> {\n try {\n await access(file);\n return true;\n } catch {\n return false;\n }\n}\n\nasync function readManifest(file: string): Promise<ManagedManifest> {\n try {\n return parseManifest(JSON.parse(await readFile(file, 'utf8')) as unknown);\n } catch (error) {\n if (isRecord(error) && error['code'] === 'ENOENT') {\n return emptyManifest();\n }\n if (error instanceof FlagResizerError) throw error;\n throw new FlagResizerError(`Unable to read managed manifest ${file}.`, { cause: error });\n }\n}\n\nfunction resolveConcurrency(value: number | undefined): number {\n if (value !== undefined && (!Number.isInteger(value) || value < 1)) {\n throw new FlagResizerError('concurrency must be a positive integer.');\n }\n return value ?? Math.max(1, Math.min(8, availableParallelism()));\n}\n\nasync function runBounded<T>(\n items: readonly T[],\n concurrency: number,\n worker: (item: T, index: number) => Promise<void>,\n): Promise<void> {\n let nextIndex = 0;\n\n async function runWorker(): Promise<void> {\n while (nextIndex < items.length) {\n const index = nextIndex;\n nextIndex += 1;\n const item = items[index];\n if (item) await worker(item, index);\n }\n }\n\n await Promise.all(\n Array.from({ length: Math.min(concurrency, Math.max(1, items.length)) }, runWorker),\n );\n}\n\nfunction svgDensity(width: number, height: number): number {\n const scale = Math.max(width, height) / 36;\n return Math.max(72, Math.ceil(scale * 72));\n}\n\nasync function createImage(\n svg: Buffer,\n width: number,\n height: number,\n format: FlagFormat,\n quality: number,\n): Promise<Buffer> {\n const pipeline = sharp(svg, { density: svgDensity(width, height) })\n .resize(width, height, {\n fit: 'cover',\n position: 'centre',\n })\n .ensureAlpha();\n\n if (format === 'png') {\n return pipeline\n .png({\n quality,\n compressionLevel: 9,\n adaptiveFiltering: true,\n effort: 7,\n })\n .toBuffer();\n }\n\n return pipeline.webp({ quality, effort: 4 }).toBuffer();\n}\n\nfunction addProfileFile(\n filesByProfile: Map<string, ManagedFile[]>,\n profileName: string,\n entry: ManagedFile,\n): void {\n const entries = filesByProfile.get(profileName) ?? [];\n entries.push(entry);\n filesByProfile.set(profileName, entries);\n}\n\nfunction createGenerationPlan(profiles: readonly ResolvedProfileConfig[]): GenerationPlan {\n const taskByTarget = new Map<string, PlannedFile>();\n const filesByProfile = new Map<string, ManagedFile[]>();\n const imageCountByProfile = new Map<string, number>();\n const svgCache = new Map<CountryCode, Promise<Buffer>>();\n let attributionContent: Promise<Buffer> | undefined;\n let licenseContent: Promise<Buffer> | undefined;\n\n const readSvg = (code: CountryCode): Promise<Buffer> => {\n let content = svgCache.get(code);\n if (!content) {\n content = readFile(path.join(FLAGS_DIRECTORY, `${code}.svg`));\n svgCache.set(code, content);\n }\n return content;\n };\n\n const register = (\n profileName: string,\n entry: ManagedFile,\n image: boolean,\n createContent: () => Promise<Buffer>,\n ): void => {\n const target = entryTarget(entry);\n if (!taskByTarget.has(target)) {\n taskByTarget.set(target, { entry, target, image, createContent });\n }\n addProfileFile(filesByProfile, profileName, entry);\n };\n\n for (const profile of profiles) {\n const typeScriptEntry = managedFile(\n profile.output.ts,\n path.dirname(profile.output.ts),\n 'typescript',\n );\n register(profile.name, typeScriptEntry, false, () =>\n Promise.resolve(Buffer.from(createTypeScriptManifest(profile))),\n );\n\n let imageCount = 0;\n for (const format of profile.formats) {\n const output = profile.output[format];\n if (!output) {\n throw new FlagResizerError(\n `Profile \"${profile.name}\" has no resolved output for ${format}.`,\n );\n }\n\n const attributionEntry = managedFile(\n path.join(output.dir, 'ATTRIBUTION.txt'),\n output.dir,\n 'attribution',\n );\n register(profile.name, attributionEntry, false, () => {\n attributionContent ??= readFile(ATTRIBUTION_FILE);\n return attributionContent;\n });\n\n const licenseEntry = managedFile(\n path.join(output.dir, 'LICENSE-GRAPHICS'),\n output.dir,\n 'license',\n );\n register(profile.name, licenseEntry, false, () => {\n licenseContent ??= readFile(GRAPHICS_LICENSE_FILE);\n return licenseContent;\n });\n\n for (const [width, height] of profile.sizes) {\n for (const code of profile.countries) {\n const target = path.join(output.dir, `${width}x${height}`, `${code}.${format}`);\n const entry = managedFile(target, output.dir, 'image');\n register(profile.name, entry, true, async () =>\n createImage(await readSvg(code), width, height, format, profile.quality),\n );\n imageCount += 1;\n }\n }\n }\n imageCountByProfile.set(profile.name, imageCount);\n }\n\n return {\n tasks: [...taskByTarget.values()].sort((left, right) =>\n left.target.localeCompare(right.target),\n ),\n filesByProfile,\n imageCountByProfile,\n };\n}\n\nasync function buffersEqual(file: string, expected: Buffer): Promise<boolean> {\n try {\n const currentStat = await stat(file);\n if (currentStat.size !== expected.byteLength) return false;\n return (await readFile(file)).equals(expected);\n } catch (error) {\n if (isRecord(error) && error['code'] === 'ENOENT') return false;\n throw error;\n }\n}\n\nasync function writeStagedFile(target: string, staged: string): Promise<void> {\n await mkdir(path.dirname(target), { recursive: true });\n const temporaryTarget = path.join(\n path.dirname(target),\n `.${path.basename(target)}.${process.pid}.${randomUUID()}.tmp`,\n );\n\n try {\n await copyFile(staged, temporaryTarget);\n await rename(temporaryTarget, target);\n } finally {\n await rm(temporaryTarget, { force: true });\n }\n}\n\nasync function writeAtomic(target: string, content: string): Promise<void> {\n await mkdir(path.dirname(target), { recursive: true });\n const temporaryTarget = path.join(\n path.dirname(target),\n `.${path.basename(target)}.${process.pid}.${randomUUID()}.tmp`,\n );\n\n try {\n await writeFile(temporaryTarget, content);\n await rename(temporaryTarget, target);\n } finally {\n await rm(temporaryTarget, { force: true });\n }\n}\n\nasync function removeEmptyParents(start: string, root: string): Promise<void> {\n let directory = path.resolve(start);\n const resolvedRoot = path.resolve(root);\n\n while (directory !== resolvedRoot) {\n const relative = path.relative(resolvedRoot, directory);\n if (relative === '..' || relative.startsWith(`..${path.sep}`)) return;\n try {\n await rmdir(directory);\n } catch {\n return;\n }\n directory = path.dirname(directory);\n }\n}\n\nasync function pruneFile(entry: ManagedFile): Promise<boolean> {\n assertSafeManagedFile(entry);\n const target = entryTarget(entry);\n try {\n await unlink(target);\n await removeEmptyParents(path.dirname(target), entry.root);\n return true;\n } catch (error) {\n if (isRecord(error) && error['code'] === 'ENOENT') return false;\n throw new FlagResizerError(`Unable to remove stale generated file ${target}.`, {\n cause: error,\n });\n }\n}\n\nfunction sortedManifest(manifest: ManagedManifest): ManagedManifest {\n return {\n version: MANIFEST_VERSION,\n profiles: Object.fromEntries(\n Object.entries(manifest.profiles)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([profileName, profile]) => [\n profileName,\n {\n files: [...profile.files].sort((left, right) =>\n entryTarget(left).localeCompare(entryTarget(right)),\n ),\n },\n ]),\n ),\n };\n}\n\nfunction nextManifest(\n previous: ManagedManifest,\n plan: GenerationPlan,\n selectedProfiles: readonly ResolvedProfileConfig[],\n fullRun: boolean,\n): ManagedManifest {\n const profiles: Record<string, ProfileManifest> = fullRun ? {} : { ...previous.profiles };\n for (const profile of selectedProfiles) {\n profiles[profile.name] = { files: plan.filesByProfile.get(profile.name) ?? [] };\n }\n return sortedManifest({ version: MANIFEST_VERSION, profiles });\n}\n\nfunction staleEntries(previous: ManagedManifest, next: ManagedManifest): ManagedFile[] {\n const retainedTargets = new Set(\n Object.values(next.profiles).flatMap((profile) => profile.files.map(entryKey)),\n );\n const stale = new Map<string, ManagedFile>();\n\n for (const profile of Object.values(previous.profiles)) {\n for (const entry of profile.files) {\n const target = entryKey(entry);\n if (!retainedTargets.has(target)) stale.set(target, entry);\n }\n }\n return [...stale.values()];\n}\n\nfunction removedOwnershipCount(\n previous: ManagedManifest,\n next: ManagedManifest,\n profileName: string,\n): number {\n const nextFiles = new Set((next.profiles[profileName]?.files ?? []).map(entryKey));\n return (previous.profiles[profileName]?.files ?? []).filter(\n (entry) => !nextFiles.has(entryKey(entry)),\n ).length;\n}\n\nexport async function generate(options: GenerateOptions = {}): Promise<GenerationResult> {\n const started = performance.now();\n const concurrency = resolveConcurrency(options.concurrency);\n const resolved = await resolveConfiguration(options);\n const manifestFile = path.join(resolved.baseDir, '.flag-resizer', 'manifest.json');\n const previousManifest = await readManifest(manifestFile);\n const plan = createGenerationPlan(resolved.profiles);\n const fullRun = !options.profiles || options.profiles.length === 0;\n const manifest = nextManifest(previousManifest, plan, resolved.profiles, fullRun);\n const stale = staleEntries(previousManifest, manifest);\n const statuses = new Map<string, FileStatus>();\n const dryRun = options.dryRun ?? false;\n\n if (dryRun) {\n await runBounded(plan.tasks, concurrency, async (task) => {\n statuses.set(task.target, (await pathExists(task.target)) ? 'updated' : 'created');\n });\n } else {\n const stagingDirectory = await mkdtemp(path.join(os.tmpdir(), 'flag-resizer-'));\n const stagedFiles = new Map<string, string>();\n\n try {\n await runBounded(plan.tasks, concurrency, async (task, index) => {\n const content = await task.createContent();\n const exists = await pathExists(task.target);\n if (exists && (await buffersEqual(task.target, content))) {\n statuses.set(task.target, 'unchanged');\n return;\n }\n\n statuses.set(task.target, exists ? 'updated' : 'created');\n const staged = path.join(stagingDirectory, String(index));\n await writeFile(staged, content);\n stagedFiles.set(task.target, staged);\n });\n\n for (const task of plan.tasks) {\n const staged = stagedFiles.get(task.target);\n if (staged) await writeStagedFile(task.target, staged);\n }\n\n for (const entry of stale) await pruneFile(entry);\n await writeAtomic(manifestFile, `${JSON.stringify(manifest, null, 2)}\\n`);\n } catch (error) {\n throw new FlagResizerError('Flag generation failed before the manifest was committed.', {\n cause: error,\n });\n } finally {\n await rm(stagingDirectory, { recursive: true, force: true });\n }\n }\n\n const profiles: ProfileGenerationResult[] = resolved.profiles.map((profile) => {\n const entries = plan.filesByProfile.get(profile.name) ?? [];\n const counts = { created: 0, updated: 0, unchanged: 0 };\n for (const entry of entries) {\n const status = statuses.get(entryTarget(entry));\n if (status) counts[status] += 1;\n }\n\n return {\n name: profile.name,\n countries: profile.countries.length,\n images: plan.imageCountByProfile.get(profile.name) ?? 0,\n sizes: profile.sizes,\n formats: profile.formats,\n outputDirectories: Object.fromEntries(\n profile.formats.map((format) => [format, profile.output[format]?.dir]),\n ),\n ...counts,\n removed: removedOwnershipCount(previousManifest, manifest, profile.name),\n typeScriptFile: profile.output.ts,\n };\n });\n\n return {\n dryRun,\n durationMs: Math.round(performance.now() - started),\n ...(resolved.configFile ? { configFile: resolved.configFile } : {}),\n manifestFile,\n profiles,\n };\n}\n"],"mappings":";;;;;;;;;AAEA,MAAa,QAAQ;CACnB,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,UAAU;CACV,UAAU;CACV,SAAS;CACT,UAAU;CACV,SAAS;CACT,UAAU;CACV,UAAU;CACV,SAAS;CACT,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,UAAU;CACV,UAAU;CACV,UAAU;CACV,UAAU;CACV,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,451 @@
|
|
|
1
|
+
//#region src/data/flags.d.ts
|
|
2
|
+
declare const FLAGS: {
|
|
3
|
+
readonly ac: "Ascension Island";
|
|
4
|
+
readonly ad: "Andorra";
|
|
5
|
+
readonly ae: "United Arab Emirates";
|
|
6
|
+
readonly af: "Afghanistan";
|
|
7
|
+
readonly ag: "Antigua and Barbuda";
|
|
8
|
+
readonly ai: "Anguilla";
|
|
9
|
+
readonly al: "Albania";
|
|
10
|
+
readonly am: "Armenia";
|
|
11
|
+
readonly ao: "Angola";
|
|
12
|
+
readonly aq: "Antarctica";
|
|
13
|
+
readonly ar: "Argentina";
|
|
14
|
+
readonly as: "American Samoa";
|
|
15
|
+
readonly at: "Austria";
|
|
16
|
+
readonly au: "Australia";
|
|
17
|
+
readonly 'au-act': "Australian Capital Territory";
|
|
18
|
+
readonly 'au-nsw': "New South Wales";
|
|
19
|
+
readonly 'au-nt': "Northern Territory";
|
|
20
|
+
readonly 'au-qld': "Queensland";
|
|
21
|
+
readonly 'au-sa': "South Australia";
|
|
22
|
+
readonly 'au-tas': "Tasmania";
|
|
23
|
+
readonly 'au-vic': "Victoria";
|
|
24
|
+
readonly 'au-wa': "Western Australia";
|
|
25
|
+
readonly aw: "Aruba";
|
|
26
|
+
readonly ax: "Åland Islands";
|
|
27
|
+
readonly az: "Azerbaijan";
|
|
28
|
+
readonly ba: "Bosnia and Herzegovina";
|
|
29
|
+
readonly bb: "Barbados";
|
|
30
|
+
readonly bd: "Bangladesh";
|
|
31
|
+
readonly be: "Belgium";
|
|
32
|
+
readonly bf: "Burkina Faso";
|
|
33
|
+
readonly bg: "Bulgaria";
|
|
34
|
+
readonly bh: "Bahrain";
|
|
35
|
+
readonly bi: "Burundi";
|
|
36
|
+
readonly bj: "Benin";
|
|
37
|
+
readonly bl: "Saint Barthélemy";
|
|
38
|
+
readonly bm: "Bermuda";
|
|
39
|
+
readonly bn: "Brunei";
|
|
40
|
+
readonly bo: "Bolivia";
|
|
41
|
+
readonly bq: "Caribbean Netherlands";
|
|
42
|
+
readonly br: "Brazil";
|
|
43
|
+
readonly bs: "Bahamas";
|
|
44
|
+
readonly bt: "Bhutan";
|
|
45
|
+
readonly bv: "Bouvet Island";
|
|
46
|
+
readonly bw: "Botswana";
|
|
47
|
+
readonly by: "Belarus";
|
|
48
|
+
readonly bz: "Belize";
|
|
49
|
+
readonly ca: "Canada";
|
|
50
|
+
readonly 'ca-ab': "Alberta";
|
|
51
|
+
readonly 'ca-bc': "British Columbia";
|
|
52
|
+
readonly 'ca-mb': "Manitoba";
|
|
53
|
+
readonly 'ca-nb': "New Brunswick";
|
|
54
|
+
readonly 'ca-nl': "Newfoundland and Labrador";
|
|
55
|
+
readonly 'ca-ns': "Nova Scotia";
|
|
56
|
+
readonly 'ca-nt': "Northwest Territories";
|
|
57
|
+
readonly 'ca-nu': "Nunavut";
|
|
58
|
+
readonly 'ca-on': "Ontario";
|
|
59
|
+
readonly 'ca-pe': "Prince Edward Island";
|
|
60
|
+
readonly 'ca-qc': "Quebec";
|
|
61
|
+
readonly 'ca-sk': "Saskatchewan";
|
|
62
|
+
readonly 'ca-yt': "Yukon";
|
|
63
|
+
readonly cc: "Cocos (Keeling) Islands";
|
|
64
|
+
readonly cd: "DR Congo";
|
|
65
|
+
readonly cf: "Central African Republic";
|
|
66
|
+
readonly cg: "Republic of the Congo";
|
|
67
|
+
readonly ch: "Switzerland";
|
|
68
|
+
readonly ci: "Côte d'Ivoire (Ivory Coast)";
|
|
69
|
+
readonly ck: "Cook Islands";
|
|
70
|
+
readonly cl: "Chile";
|
|
71
|
+
readonly cm: "Cameroon";
|
|
72
|
+
readonly cn: "China";
|
|
73
|
+
readonly co: "Colombia";
|
|
74
|
+
readonly cp: "Clipperton Island";
|
|
75
|
+
readonly cq: "Sark";
|
|
76
|
+
readonly cr: "Costa Rica";
|
|
77
|
+
readonly cu: "Cuba";
|
|
78
|
+
readonly cv: "Cape Verde";
|
|
79
|
+
readonly cw: "Curaçao";
|
|
80
|
+
readonly cx: "Christmas Island";
|
|
81
|
+
readonly cy: "Cyprus";
|
|
82
|
+
readonly cz: "Czechia";
|
|
83
|
+
readonly de: "Germany";
|
|
84
|
+
readonly 'de-bb': "Brandenburg";
|
|
85
|
+
readonly 'de-be': "Berlin";
|
|
86
|
+
readonly 'de-bw': "Baden-Württemberg";
|
|
87
|
+
readonly 'de-by': "Bavaria";
|
|
88
|
+
readonly 'de-hb': "Bremen";
|
|
89
|
+
readonly 'de-he': "Hesse";
|
|
90
|
+
readonly 'de-hh': "Hamburg";
|
|
91
|
+
readonly 'de-mv': "Mecklenburg-Western Pomerania";
|
|
92
|
+
readonly 'de-ni': "Lower Saxony";
|
|
93
|
+
readonly 'de-nw': "North Rhine-Westphalia";
|
|
94
|
+
readonly 'de-rp': "Rhineland-Palatinate";
|
|
95
|
+
readonly 'de-sh': "Schleswig-Holstein";
|
|
96
|
+
readonly 'de-sl': "Saarland";
|
|
97
|
+
readonly 'de-sn': "Saxony";
|
|
98
|
+
readonly 'de-st': "Saxony-Anhalt";
|
|
99
|
+
readonly 'de-th': "Thuringia";
|
|
100
|
+
readonly dg: "Diego Garcia";
|
|
101
|
+
readonly dj: "Djibouti";
|
|
102
|
+
readonly dk: "Denmark";
|
|
103
|
+
readonly dm: "Dominica";
|
|
104
|
+
readonly do: "Dominican Republic";
|
|
105
|
+
readonly dz: "Algeria";
|
|
106
|
+
readonly ea: "Ceuta & Melilla";
|
|
107
|
+
readonly ec: "Ecuador";
|
|
108
|
+
readonly ee: "Estonia";
|
|
109
|
+
readonly eg: "Egypt";
|
|
110
|
+
readonly eh: "Western Sahara";
|
|
111
|
+
readonly er: "Eritrea";
|
|
112
|
+
readonly es: "Spain";
|
|
113
|
+
readonly 'es-an': "Andalusia";
|
|
114
|
+
readonly 'es-ar': "Aragon";
|
|
115
|
+
readonly 'es-as': "Asturias";
|
|
116
|
+
readonly 'es-cb': "Cantabria";
|
|
117
|
+
readonly 'es-ce': "Ceuta";
|
|
118
|
+
readonly 'es-cl': "Castile and León";
|
|
119
|
+
readonly 'es-cm': "Castilla-La Mancha";
|
|
120
|
+
readonly 'es-cn': "Canary Islands";
|
|
121
|
+
readonly 'es-ct': "Catalonia";
|
|
122
|
+
readonly 'es-ex': "Extremadura";
|
|
123
|
+
readonly 'es-ga': "Galicia";
|
|
124
|
+
readonly 'es-ib': "Balearic Islands";
|
|
125
|
+
readonly 'es-mc': "Region of Murcia";
|
|
126
|
+
readonly 'es-md': "Community of Madrid";
|
|
127
|
+
readonly 'es-ml': "Melilla";
|
|
128
|
+
readonly 'es-nc': "Navarre";
|
|
129
|
+
readonly 'es-pv': "Basque Country";
|
|
130
|
+
readonly 'es-ri': "La Rioja";
|
|
131
|
+
readonly 'es-vc': "Valencian Community";
|
|
132
|
+
readonly et: "Ethiopia";
|
|
133
|
+
readonly eu: "European Union";
|
|
134
|
+
readonly fi: "Finland";
|
|
135
|
+
readonly fj: "Fiji";
|
|
136
|
+
readonly fk: "Falkland Islands";
|
|
137
|
+
readonly fm: "Micronesia";
|
|
138
|
+
readonly fo: "Faroe Islands";
|
|
139
|
+
readonly fr: "France";
|
|
140
|
+
readonly ga: "Gabon";
|
|
141
|
+
readonly gb: "United Kingdom";
|
|
142
|
+
readonly 'gb-eng': "England";
|
|
143
|
+
readonly 'gb-nir': "Northern Ireland";
|
|
144
|
+
readonly 'gb-sct': "Scotland";
|
|
145
|
+
readonly 'gb-wls': "Wales";
|
|
146
|
+
readonly gd: "Grenada";
|
|
147
|
+
readonly ge: "Georgia";
|
|
148
|
+
readonly gf: "French Guiana";
|
|
149
|
+
readonly gg: "Guernsey";
|
|
150
|
+
readonly gh: "Ghana";
|
|
151
|
+
readonly gi: "Gibraltar";
|
|
152
|
+
readonly gl: "Greenland";
|
|
153
|
+
readonly gm: "Gambia";
|
|
154
|
+
readonly gn: "Guinea";
|
|
155
|
+
readonly gp: "Guadeloupe";
|
|
156
|
+
readonly gq: "Equatorial Guinea";
|
|
157
|
+
readonly gr: "Greece";
|
|
158
|
+
readonly gs: "South Georgia";
|
|
159
|
+
readonly gt: "Guatemala";
|
|
160
|
+
readonly gu: "Guam";
|
|
161
|
+
readonly gw: "Guinea-Bissau";
|
|
162
|
+
readonly gy: "Guyana";
|
|
163
|
+
readonly hk: "Hong Kong";
|
|
164
|
+
readonly hm: "Heard Island and McDonald Islands";
|
|
165
|
+
readonly hn: "Honduras";
|
|
166
|
+
readonly hr: "Croatia";
|
|
167
|
+
readonly ht: "Haiti";
|
|
168
|
+
readonly hu: "Hungary";
|
|
169
|
+
readonly ic: "Canary Islands";
|
|
170
|
+
readonly id: "Indonesia";
|
|
171
|
+
readonly ie: "Ireland";
|
|
172
|
+
readonly il: "Israel";
|
|
173
|
+
readonly im: "Isle of Man";
|
|
174
|
+
readonly in: "India";
|
|
175
|
+
readonly io: "British Indian Ocean Territory";
|
|
176
|
+
readonly iq: "Iraq";
|
|
177
|
+
readonly ir: "Iran";
|
|
178
|
+
readonly is: "Iceland";
|
|
179
|
+
readonly it: "Italy";
|
|
180
|
+
readonly je: "Jersey";
|
|
181
|
+
readonly jm: "Jamaica";
|
|
182
|
+
readonly jo: "Jordan";
|
|
183
|
+
readonly jp: "Japan";
|
|
184
|
+
readonly ke: "Kenya";
|
|
185
|
+
readonly kg: "Kyrgyzstan";
|
|
186
|
+
readonly kh: "Cambodia";
|
|
187
|
+
readonly ki: "Kiribati";
|
|
188
|
+
readonly km: "Comoros";
|
|
189
|
+
readonly kn: "Saint Kitts and Nevis";
|
|
190
|
+
readonly kp: "North Korea";
|
|
191
|
+
readonly kr: "South Korea";
|
|
192
|
+
readonly kw: "Kuwait";
|
|
193
|
+
readonly ky: "Cayman Islands";
|
|
194
|
+
readonly kz: "Kazakhstan";
|
|
195
|
+
readonly la: "Laos";
|
|
196
|
+
readonly lb: "Lebanon";
|
|
197
|
+
readonly lc: "Saint Lucia";
|
|
198
|
+
readonly li: "Liechtenstein";
|
|
199
|
+
readonly lk: "Sri Lanka";
|
|
200
|
+
readonly lr: "Liberia";
|
|
201
|
+
readonly ls: "Lesotho";
|
|
202
|
+
readonly lt: "Lithuania";
|
|
203
|
+
readonly lu: "Luxembourg";
|
|
204
|
+
readonly lv: "Latvia";
|
|
205
|
+
readonly ly: "Libya";
|
|
206
|
+
readonly ma: "Morocco";
|
|
207
|
+
readonly mc: "Monaco";
|
|
208
|
+
readonly md: "Moldova";
|
|
209
|
+
readonly me: "Montenegro";
|
|
210
|
+
readonly mf: "Saint Martin";
|
|
211
|
+
readonly mg: "Madagascar";
|
|
212
|
+
readonly mh: "Marshall Islands";
|
|
213
|
+
readonly mk: "North Macedonia";
|
|
214
|
+
readonly ml: "Mali";
|
|
215
|
+
readonly mm: "Myanmar";
|
|
216
|
+
readonly mn: "Mongolia";
|
|
217
|
+
readonly mo: "Macau";
|
|
218
|
+
readonly mp: "Northern Mariana Islands";
|
|
219
|
+
readonly mq: "Martinique";
|
|
220
|
+
readonly mr: "Mauritania";
|
|
221
|
+
readonly ms: "Montserrat";
|
|
222
|
+
readonly mt: "Malta";
|
|
223
|
+
readonly mu: "Mauritius";
|
|
224
|
+
readonly mv: "Maldives";
|
|
225
|
+
readonly mw: "Malawi";
|
|
226
|
+
readonly mx: "Mexico";
|
|
227
|
+
readonly my: "Malaysia";
|
|
228
|
+
readonly mz: "Mozambique";
|
|
229
|
+
readonly na: "Namibia";
|
|
230
|
+
readonly nc: "New Caledonia";
|
|
231
|
+
readonly ne: "Niger";
|
|
232
|
+
readonly nf: "Norfolk Island";
|
|
233
|
+
readonly ng: "Nigeria";
|
|
234
|
+
readonly ni: "Nicaragua";
|
|
235
|
+
readonly nl: "Netherlands";
|
|
236
|
+
readonly no: "Norway";
|
|
237
|
+
readonly np: "Nepal";
|
|
238
|
+
readonly nr: "Nauru";
|
|
239
|
+
readonly nu: "Niue";
|
|
240
|
+
readonly nz: "New Zealand";
|
|
241
|
+
readonly om: "Oman";
|
|
242
|
+
readonly pa: "Panama";
|
|
243
|
+
readonly pe: "Peru";
|
|
244
|
+
readonly pf: "French Polynesia";
|
|
245
|
+
readonly pg: "Papua New Guinea";
|
|
246
|
+
readonly ph: "Philippines";
|
|
247
|
+
readonly pk: "Pakistan";
|
|
248
|
+
readonly pl: "Poland";
|
|
249
|
+
readonly pm: "Saint Pierre and Miquelon";
|
|
250
|
+
readonly pn: "Pitcairn Islands";
|
|
251
|
+
readonly pr: "Puerto Rico";
|
|
252
|
+
readonly ps: "Palestine";
|
|
253
|
+
readonly pt: "Portugal";
|
|
254
|
+
readonly pw: "Palau";
|
|
255
|
+
readonly py: "Paraguay";
|
|
256
|
+
readonly qa: "Qatar";
|
|
257
|
+
readonly re: "Réunion";
|
|
258
|
+
readonly ro: "Romania";
|
|
259
|
+
readonly rs: "Serbia";
|
|
260
|
+
readonly ru: "Russia";
|
|
261
|
+
readonly rw: "Rwanda";
|
|
262
|
+
readonly sa: "Saudi Arabia";
|
|
263
|
+
readonly sb: "Solomon Islands";
|
|
264
|
+
readonly sc: "Seychelles";
|
|
265
|
+
readonly sd: "Sudan";
|
|
266
|
+
readonly se: "Sweden";
|
|
267
|
+
readonly sg: "Singapore";
|
|
268
|
+
readonly sh: "Saint Helena, Ascension and Tristan da Cunha";
|
|
269
|
+
readonly si: "Slovenia";
|
|
270
|
+
readonly sj: "Svalbard and Jan Mayen";
|
|
271
|
+
readonly sk: "Slovakia";
|
|
272
|
+
readonly sl: "Sierra Leone";
|
|
273
|
+
readonly sm: "San Marino";
|
|
274
|
+
readonly sn: "Senegal";
|
|
275
|
+
readonly so: "Somalia";
|
|
276
|
+
readonly sr: "Suriname";
|
|
277
|
+
readonly ss: "South Sudan";
|
|
278
|
+
readonly st: "São Tomé and Príncipe";
|
|
279
|
+
readonly sv: "El Salvador";
|
|
280
|
+
readonly sx: "Sint Maarten";
|
|
281
|
+
readonly sy: "Syria";
|
|
282
|
+
readonly sz: "Eswatini (Swaziland)";
|
|
283
|
+
readonly ta: "Tristan da Cunha";
|
|
284
|
+
readonly tc: "Turks and Caicos Islands";
|
|
285
|
+
readonly td: "Chad";
|
|
286
|
+
readonly tf: "French Southern and Antarctic Lands";
|
|
287
|
+
readonly tg: "Togo";
|
|
288
|
+
readonly th: "Thailand";
|
|
289
|
+
readonly tj: "Tajikistan";
|
|
290
|
+
readonly tk: "Tokelau";
|
|
291
|
+
readonly tl: "Timor-Leste";
|
|
292
|
+
readonly tm: "Turkmenistan";
|
|
293
|
+
readonly tn: "Tunisia";
|
|
294
|
+
readonly to: "Tonga";
|
|
295
|
+
readonly tr: "Turkey";
|
|
296
|
+
readonly tt: "Trinidad and Tobago";
|
|
297
|
+
readonly tv: "Tuvalu";
|
|
298
|
+
readonly tw: "Taiwan";
|
|
299
|
+
readonly tz: "Tanzania";
|
|
300
|
+
readonly ua: "Ukraine";
|
|
301
|
+
readonly ug: "Uganda";
|
|
302
|
+
readonly um: "United States Minor Outlying Islands";
|
|
303
|
+
readonly un: "United Nations";
|
|
304
|
+
readonly us: "United States";
|
|
305
|
+
readonly 'us-ak': "Alaska";
|
|
306
|
+
readonly 'us-al': "Alabama";
|
|
307
|
+
readonly 'us-ar': "Arkansas";
|
|
308
|
+
readonly 'us-az': "Arizona";
|
|
309
|
+
readonly 'us-ca': "California";
|
|
310
|
+
readonly 'us-co': "Colorado";
|
|
311
|
+
readonly 'us-ct': "Connecticut";
|
|
312
|
+
readonly 'us-de': "Delaware";
|
|
313
|
+
readonly 'us-fl': "Florida";
|
|
314
|
+
readonly 'us-ga': "Georgia";
|
|
315
|
+
readonly 'us-hi': "Hawaii";
|
|
316
|
+
readonly 'us-ia': "Iowa";
|
|
317
|
+
readonly 'us-id': "Idaho";
|
|
318
|
+
readonly 'us-il': "Illinois";
|
|
319
|
+
readonly 'us-in': "Indiana";
|
|
320
|
+
readonly 'us-ks': "Kansas";
|
|
321
|
+
readonly 'us-ky': "Kentucky";
|
|
322
|
+
readonly 'us-la': "Louisiana";
|
|
323
|
+
readonly 'us-ma': "Massachusetts";
|
|
324
|
+
readonly 'us-md': "Maryland";
|
|
325
|
+
readonly 'us-me': "Maine";
|
|
326
|
+
readonly 'us-mi': "Michigan";
|
|
327
|
+
readonly 'us-mn': "Minnesota";
|
|
328
|
+
readonly 'us-mo': "Missouri";
|
|
329
|
+
readonly 'us-ms': "Mississippi";
|
|
330
|
+
readonly 'us-mt': "Montana";
|
|
331
|
+
readonly 'us-nc': "North Carolina";
|
|
332
|
+
readonly 'us-nd': "North Dakota";
|
|
333
|
+
readonly 'us-ne': "Nebraska";
|
|
334
|
+
readonly 'us-nh': "New Hampshire";
|
|
335
|
+
readonly 'us-nj': "New Jersey";
|
|
336
|
+
readonly 'us-nm': "New Mexico";
|
|
337
|
+
readonly 'us-nv': "Nevada";
|
|
338
|
+
readonly 'us-ny': "New York";
|
|
339
|
+
readonly 'us-oh': "Ohio";
|
|
340
|
+
readonly 'us-ok': "Oklahoma";
|
|
341
|
+
readonly 'us-or': "Oregon";
|
|
342
|
+
readonly 'us-pa': "Pennsylvania";
|
|
343
|
+
readonly 'us-ri': "Rhode Island";
|
|
344
|
+
readonly 'us-sc': "South Carolina";
|
|
345
|
+
readonly 'us-sd': "South Dakota";
|
|
346
|
+
readonly 'us-tn': "Tennessee";
|
|
347
|
+
readonly 'us-tx': "Texas";
|
|
348
|
+
readonly 'us-ut': "Utah";
|
|
349
|
+
readonly 'us-va': "Virginia";
|
|
350
|
+
readonly 'us-vt': "Vermont";
|
|
351
|
+
readonly 'us-wa': "Washington";
|
|
352
|
+
readonly 'us-wi': "Wisconsin";
|
|
353
|
+
readonly 'us-wv': "West Virginia";
|
|
354
|
+
readonly 'us-wy': "Wyoming";
|
|
355
|
+
readonly uy: "Uruguay";
|
|
356
|
+
readonly uz: "Uzbekistan";
|
|
357
|
+
readonly va: "Vatican City (Holy See)";
|
|
358
|
+
readonly vc: "Saint Vincent and the Grenadines";
|
|
359
|
+
readonly ve: "Venezuela";
|
|
360
|
+
readonly vg: "British Virgin Islands";
|
|
361
|
+
readonly vi: "United States Virgin Islands";
|
|
362
|
+
readonly vn: "Vietnam";
|
|
363
|
+
readonly vu: "Vanuatu";
|
|
364
|
+
readonly wf: "Wallis and Futuna";
|
|
365
|
+
readonly ws: "Samoa";
|
|
366
|
+
readonly xk: "Kosovo";
|
|
367
|
+
readonly ye: "Yemen";
|
|
368
|
+
readonly yt: "Mayotte";
|
|
369
|
+
readonly za: "South Africa";
|
|
370
|
+
readonly zm: "Zambia";
|
|
371
|
+
readonly zw: "Zimbabwe";
|
|
372
|
+
};
|
|
373
|
+
type CountryCode = keyof typeof FLAGS;
|
|
374
|
+
declare const COUNTRY_CODES: CountryCode[];
|
|
375
|
+
//#endregion
|
|
376
|
+
//#region src/types.d.ts
|
|
377
|
+
type FlagFormat = 'png' | 'webp';
|
|
378
|
+
type FlagSize = readonly [width: number, height: number];
|
|
379
|
+
type FlagFilterPattern = `${string}*${string}`;
|
|
380
|
+
type FlagFilterValue = CountryCode | FlagFilterPattern;
|
|
381
|
+
interface FlagFilter {
|
|
382
|
+
type: 'whitelist' | 'blacklist';
|
|
383
|
+
values: readonly FlagFilterValue[];
|
|
384
|
+
}
|
|
385
|
+
interface FormatOutput {
|
|
386
|
+
dir: string;
|
|
387
|
+
publicPath: string;
|
|
388
|
+
}
|
|
389
|
+
interface ProfileOutput {
|
|
390
|
+
png?: FormatOutput;
|
|
391
|
+
webp?: FormatOutput;
|
|
392
|
+
ts: string;
|
|
393
|
+
}
|
|
394
|
+
interface ProfileConfig {
|
|
395
|
+
filter: FlagFilter;
|
|
396
|
+
sizes: readonly FlagSize[];
|
|
397
|
+
quality: number;
|
|
398
|
+
formats: readonly FlagFormat[];
|
|
399
|
+
output: ProfileOutput;
|
|
400
|
+
}
|
|
401
|
+
type FlagResizerConfig = Readonly<Record<string, ProfileConfig>>;
|
|
402
|
+
interface GenerateOptionsBase {
|
|
403
|
+
cwd?: string;
|
|
404
|
+
profiles?: readonly string[];
|
|
405
|
+
concurrency?: number;
|
|
406
|
+
dryRun?: boolean;
|
|
407
|
+
}
|
|
408
|
+
interface GenerateInlineOptions extends GenerateOptionsBase {
|
|
409
|
+
config: FlagResizerConfig;
|
|
410
|
+
configFile?: never;
|
|
411
|
+
}
|
|
412
|
+
interface GenerateFileOptions extends GenerateOptionsBase {
|
|
413
|
+
config?: never;
|
|
414
|
+
configFile?: string;
|
|
415
|
+
}
|
|
416
|
+
type GenerateOptions = GenerateInlineOptions | GenerateFileOptions;
|
|
417
|
+
interface ProfileGenerationResult {
|
|
418
|
+
name: string;
|
|
419
|
+
countries: number;
|
|
420
|
+
images: number;
|
|
421
|
+
sizes: readonly FlagSize[];
|
|
422
|
+
formats: readonly FlagFormat[];
|
|
423
|
+
outputDirectories: Partial<Record<FlagFormat, string>>;
|
|
424
|
+
created: number;
|
|
425
|
+
updated: number;
|
|
426
|
+
unchanged: number;
|
|
427
|
+
removed: number;
|
|
428
|
+
typeScriptFile: string;
|
|
429
|
+
}
|
|
430
|
+
interface GenerationResult {
|
|
431
|
+
dryRun: boolean;
|
|
432
|
+
durationMs: number;
|
|
433
|
+
configFile?: string;
|
|
434
|
+
manifestFile: string;
|
|
435
|
+
profiles: ProfileGenerationResult[];
|
|
436
|
+
}
|
|
437
|
+
//#endregion
|
|
438
|
+
//#region src/config.d.ts
|
|
439
|
+
declare function defineConfig<const T extends FlagResizerConfig>(config: T): T;
|
|
440
|
+
//#endregion
|
|
441
|
+
//#region src/errors.d.ts
|
|
442
|
+
declare class FlagResizerError extends Error {
|
|
443
|
+
readonly name = "FlagResizerError";
|
|
444
|
+
constructor(message: string, options?: ErrorOptions);
|
|
445
|
+
}
|
|
446
|
+
//#endregion
|
|
447
|
+
//#region src/generator.d.ts
|
|
448
|
+
declare function generate(options?: GenerateOptions): Promise<GenerationResult>;
|
|
449
|
+
//#endregion
|
|
450
|
+
export { COUNTRY_CODES, type CountryCode, FLAGS, type FlagFilter, type FlagFilterPattern, type FlagFilterValue, type FlagFormat, type FlagResizerConfig, FlagResizerError, type FlagSize, type FormatOutput, type GenerateFileOptions, type GenerateInlineOptions, type GenerateOptions, type GenerationResult, type ProfileConfig, type ProfileGenerationResult, type ProfileOutput, defineConfig, generate };
|
|
451
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/data/flags.ts","../src/types.ts","../src/config.ts","../src/errors.ts","../src/generator.ts"],"mappings":";cAEa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAoXD,2BAA2B;cAE1B,eAAsC;;;KCtXvC;KACA,qBAAqB,eAAe;KACpC;KACA,kBAAkB,cAAc;UAE3B;EACf;EACA,iBAAiB;;UAGF;EACf;EACA;;UAGe;EACf,MAAM;EACN,OAAO;EACP;;UAGe;EACf,QAAQ;EACR,gBAAgB;EAChB;EACA,kBAAkB;EAClB,QAAQ;;KAGE,oBAAoB,SAAS,eAAe;UAE9C;EACR;EACA;EACA;EACA;;UAGe,8BAA8B;EAC7C,QAAQ;EACR;;UAGe,4BAA4B;EAC3C;EACA;;KAGU,kBAAkB,wBAAwB;UAErC;EACf;EACA;EACA;EACA,gBAAgB;EAChB,kBAAkB;EAClB,mBAAmB,QAAQ,OAAO;EAClC;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA,UAAU;;;;iBCVI,mBAAmB,UAAU,mBAAmB,QAAQ,IAAI;;;cC7D/D,yBAAyB;WACX;EAEN,YAAA,iBAAiB,UAAU;;;;iBCyd1B,SAAS,UAAS,kBAAuB,QAAQ"}
|
package/dist/index.js
ADDED
package/flags/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Source [here](https://github.com/twitter/twemoji)
|
package/flags/ac.svg
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#00247D" d="M32 5H4c-.205 0-.407.015-.604.045l-.004 1.754-2.73-.004C.244 7.427 0 8.185 0 9v18c0 2.209 1.791 4 4 4h28c2.209 0 4-1.791 4-4V9c0-2.209-1.791-4-4-4z"/><path fill="#288548" d="M29.159 16.209l-1.53 3.927-1.53-3.927 1.53-3.927z"/><path fill="#FFF" d="M24.353 17.574s.273.591.91.591 1.001-.455 1.001-.455l.637.819s-.409.273-.409.592c0 0-.273-.273-.182-.501 0 0-.183.183-.318.228 0 0-.046-.273.045-.409 0 0-.318.182-.728.182s-.819-.272-.91-.5c-.091-.228-.046-.547-.046-.547zm2.547-.592c0 .15-.121.272-.273.272H26.4c-.15 0-.273-.122-.273-.272 0-.15.123-.273.273-.273h.227c.152 0 .273.123.273.273zm1.412-.364c0 .151-.122.273-.273.273h-.229c-.15 0-.272-.122-.272-.273 0-.15.122-.273.272-.273h.228c.152.001.274.123.274.273z"/><path fill="#6488BD" d="M27.076 17.188c-.127.08-.296.043-.377-.085l-.097-.153c-.081-.128-.043-.296.084-.377l.039-.024c.127-.081.296-.043.376.085l.098.153c.081.127.043.296-.084.377l-.039.024zm1.547-.182c-.127.081-.296.043-.376-.084l-.098-.154c-.081-.127-.043-.296.084-.376l.039-.024c.127-.081.296-.043.377.084l.097.154c.081.127.043.296-.084.376l-.039.024z"/><path fill="#297F47" d="M27.622 17.098c-.127.08-.296.043-.376-.085l-.098-.153c-.081-.128-.043-.297.084-.377l.039-.024c.127-.081.296-.043.377.085l.097.153c.081.127.043.296-.084.377l-.039.024zm1.337.133c-.15-.005-.269-.131-.264-.282l.006-.182c.005-.15.132-.269.282-.264l.045.002c.151.005.27.131.264.281l-.006.183c-.005.15-.131.269-.281.264l-.046-.002z"/><path fill="#689F9E" d="M27.629 16.709c.591-.027 1.456 1.684 1.502 1.911.045.228-.273.864-.501 1.001-.228.137-1.274.273-1.547.046-.273-.227-.318-.819-.364-1.001-.045-.183-.501-.819-.501-.819l-.5-.091.182-.182.592.045.046-.182h-.273c-.001.001.409-.682 1.364-.728z"/><path fill="#481918" d="M27.447 19.53c.228-.274 1.046-.955 1.319-.818.273.136.228.409-.046.682-.272.273-1.273.136-1.273.136z"/><path fill="#FFF" d="M27.629 19.44h-2.731v2.411c0 1.639.615 2.503 1.115 2.958.501.455 1.615.864 1.615.864s1.114-.409 1.615-.864c.5-.455 1.115-1.319 1.115-2.958V19.44h-2.729z"/><path d="M29.631 24.08c-.364 0-.637.41-1.001.41-.364 0-.637-.364-.955-.364-.318 0-.592.364-.956.364-.363 0-.637-.41-1.001-.41-.079 0-.165.026-.252.065.175.284.369.5.548.663.501.455 1.615.864 1.615.864s1.114-.409 1.615-.864c.186-.169.386-.394.566-.693-.062-.021-.122-.035-.179-.035zm0-1.956c-.364 0-.637.409-1.001.409-.364 0-.637-.364-.955-.364-.318 0-.592.364-.956.364-.363 0-.637-.409-1.001-.409-.251 0-.567.26-.783.376.032.29.085.55.153.783.176-.125.357-.249.585-.249.454 0 .773.409 1.092.409.318 0 .592-.318.91-.318.318 0 .591.318.909.318.318 0 .638-.409 1.093-.409.194 0 .355.091.508.195.065-.232.115-.491.144-.779-.209-.128-.478-.326-.698-.326zm0-1.957c-.364 0-.637.41-1.001.41-.364 0-.637-.364-.955-.364-.318 0-.592.364-.956.364-.363 0-.637-.41-1.001-.41-.265 0-.603.29-.819.395v.894c.241-.147.466-.378.774-.378.454 0 .773.41 1.092.41.318 0 .592-.319.91-.319.318 0 .591.319.909.319.318 0 .638-.41 1.093-.41.268 0 .475.176.683.318v-.884c-.214-.126-.499-.345-.729-.345z" fill="#3AB1D6"/><path fill="#288548" d="M25.13 23.415c.135.409.316.73.508.981l1.991-2.228 1.991 2.228c.191-.251.373-.572.508-.981l-2.499-2.701-2.499 2.701z"/><path fill="#74948F" d="M23.534 23.898c.146-.009.466-.012.591.045.379.174.638.592.638.592s.546.409.592.683c0 0 .409.183.409.364 0 .182-.592.363-.774.318-.183-.046-.683-.182-.865-.091-.182.091-.728.227-.955.182-.228-.046-.5 0-.683 0-.182 0-.409-.182-.683-.272-.273-.092-.91.091-1.001-.183-.091-.272.637-.546.91-.546.274 0 1.048-1.047 1.821-1.092z"/><path fill="#CFDCD9" d="M23.033 24.126s.228.045.273.045c.045 0 .318-.091.409-.045.091.045.046.182.182.228.137.046.183.091.092.228l-.183.272s-.5.091-.683.183c-.182.091-.546.228-.136.272.409.046 1.001.228.909.273-.091.045-.637 0-.818 0-.183 0-.546.091-.638.091-.091 0-.363.046-.227.137.136.091-.183-.046-.364-.091-.182-.046-.592-.183-.318-.274.273-.091.5-.045.637-.045s.318-.183.182-.228c-.136-.046.137-.364.41-.41.272-.045.728-.137.363-.227-.362-.091-.408-.227-.09-.409z"/><path fill="#CFDCD9" d="M23.352 25.036c.183-.046.638.045.592.137-.046.091-.091.182-.228.136-.137-.045-.364-.273-.364-.273z"/><path fill="#3C4544" d="M25.354 25.218c-.046-.274-.592-.683-.592-.683s-.242-.391-.602-.573c-.135.05-.189.163-.036.255.228.137.228.227.137.273-.091.045-.182.136-.227.228-.045.091.137-.046.364 0 .228.045.228.045.409.091.183.045.364.228.274.273-.091.046.091.092.136.227.046.137-.091.092-.273.092-.182 0-.683 0-.729.045-.045.046.865.046.865.137 0 .091-.501 0-.637.045-.137.046-.592.137-.773.092-.183-.046-.547-.092-.638-.046-.091.046-.318.091-.045.137.272.045.727.045 1.001 0 .272-.046.455-.228.728-.137.141.047.148.13.16.199l.113.028c.108.027.359-.026.547-.111.072-.045.142-.094.203-.143.015-.021.024-.043.024-.064.001-.183-.409-.365-.409-.365z"/><path fill="#288548" d="M23.762 23.717s-.091-.41 0-.455c.091-.046.228.137.228.137s0-.501.136-.456c.137.046.183.228.183.228s.137-.363.272-.272c.137.091 0 .364 0 .364s.318.137.228.273c-.091.137-.546.137-.637.183-.091.045-.046.182.045.136.092-.045.547-.228.501-.045-.045.182-.137.228-.318.228-.183 0-.501-.092-.501-.092l-.409.273-.046-.046.318-.456zm-.774-.455c.045.182.091.228.272.228.182 0 .318.091.228.182-.091.091-.318.091-.318.091l.137.364-.046.045-.182-.363-.183.228s-.272-.183-.182-.274c.091-.091.274-.091.182-.182-.091-.091-.227-.364.046-.318.273.045-.182.137-.182.137m-2.502 1.773c.046-.092.318-.183.318-.183s.046-.364.183-.364c.136 0 .272.273.272.273s.046-.182.137-.137c.091.046.318.273.272.364-.045.091-.091.409-.272.455-.182.045-.364-.273-.364-.273s-.091.046-.272.046c-.183 0-.274-.181-.274-.181zm4.14-.729s.137-.409.274-.364c.136.046.136.228.136.228s.409-.045.592.092c.182.136.182.409-.045.5-.229.091-.547-.091-.592-.137-.046-.045-.046.501-.227.501-.183 0-.274-.228-.228-.364.045-.137 0-.273 0-.273s-.364 0-.455.183c0 0 .091-.137.272-.227l.273-.139z"/><path fill="#D1BEA7" d="M24.171 17.893s-.137-.273-.592-.091c-.455.182-.546.5-.591.728-.046.227.091.455-.228.683-.319.228-.546 1.638-.183 1.593.364-.046.455-.091.638.045.182.137.591.183.864-.136 0 0 .272.409.272.637 0 .228-.091.864.183.955 0 0 .409-.546.409-1.092s-.137-1.138-.592-1.41c0 0 .183-.137.319-.319s.226-.136.5-.136h.728s-.182-.41-.409-.501c-.228-.091-.637-.318-1.046 0-.41.318-.683.546-.683.546l-.046-.318s.091-.182.274-.363c.182-.183.182-.455.182-.592l.001-.229z"/><path fill="#937A61" d="M24.944 18.666c.774 0 1.001.728 1.001.728h-.819s-.136-.045-.228-.045c-.091 0-.409.228-.546.5-.137.274-.818-.045-.682-.272.137-.228.455-.911 1.274-.911z"/><path fill="#AF987E" d="M23.352 19.53c.019-.076.156-.09.318-.058.177.034.342.187.501.24.409.136.864.727.864 1.273s-.409 1.183-.455 1.319c-.045.137-.136 0-.182-.137-.046-.136-.046-.454-.046-.727 0-.273-.137-.683-.363-.819-.227-.136-.819-.363-.637-1.091zm-.682 3.732c0 .111.146.504.136.909 0 .031-.044.243-.045.273-.014.395-.142.599-.228.729 0 0-.227-.092-.455-.41-.228-.318-.273-.637-.137-.91.137-.273.729-.591.729-.591z"/><path fill="#D1BEA7" d="M22.396 22.761c.045 0 .16.951.091 1.319-.137.729-.683 1.547-1.047 1.456-.363-.091-.136-.318-.045-.5.091-.183.227-.592.137-.91-.092-.318.864-1.365.864-1.365z"/><path fill="#BA8F69" d="M23.124 20.668c.137.272.455.5.819.091 0 0 .137.683-.137 1.138-.272.455-1.319 1.638-1.319 1.638l-.137-.774.774-2.093z"/><path fill="#BB6C3F" d="M22.441 19.121c.319-.137.774.091.819.363.046.273.091.91.046 1.184-.046.272 0 .728-.091.955-.092.228-.455.455-.501.774-.045.318-.318.591-.727 1.046-.41.455-1.047 1.183-1.229 1.092-.183-.091-.41-1.729.136-3.14.546-1.41 1.547-2.274 1.547-2.274z"/><path fill="#020202" d="M23.625 17.938c.182-.091.318-.045.182.092-.136.135-.365-.001-.182-.092z"/><path fill="#74948F" d="M31.724 23.898c-.146-.009-.466-.012-.591.045-.379.174-.638.592-.638.592s-.546.409-.592.683c0 0-.409.183-.409.364 0 .182.592.363.773.318.183-.046.683-.182.865-.091.182.091.728.227.955.182.228-.046.5 0 .683 0 .182 0 .409-.182.683-.272.273-.092.91.091 1.001-.183.091-.272-.637-.546-.91-.546s-1.047-1.047-1.82-1.092z"/><path fill="#CFDCD9" d="M32.225 24.126s-.228.045-.273.045c-.045 0-.318-.091-.409-.045-.091.045-.046.182-.182.228-.137.046-.183.091-.092.228l.183.272s.5.091.683.183c.182.091.546.228.136.272-.409.046-1.001.228-.909.273.091.045.637 0 .818 0 .183 0 .546.091.638.091.091 0 .363.046.227.137-.136.091.183-.046.364-.091.182-.046.592-.183.318-.274-.273-.091-.5-.045-.637-.045s-.318-.183-.182-.228c.136-.046-.137-.364-.41-.41-.272-.045-.728-.137-.363-.227.362-.091.408-.227.09-.409z"/><path fill="#CFDCD9" d="M31.906 25.036c-.183-.046-.638.045-.592.137.046.091.091.182.227.136.138-.045.365-.273.365-.273z"/><path fill="#3C4544" d="M29.903 25.218c.046-.274.592-.683.592-.683s.242-.391.602-.573c.135.05.189.163.036.255-.227.137-.227.227-.137.273.091.045.182.136.228.228.045.091-.137-.046-.364 0-.228.045-.228.045-.409.091-.183.045-.364.228-.273.273.091.046-.091.092-.136.227-.046.137.091.092.272.092.182 0 .683 0 .729.045.045.046-.865.046-.865.137 0 .091.501 0 .637.045.137.046.592.137.773.092.183-.046.547-.092.638-.046.091.046.318.091.045.137-.272.045-.728.045-1.001 0-.273-.046-.455-.228-.728-.137-.141.047-.148.13-.16.199l-.113.028c-.107.027-.359-.026-.547-.111-.072-.045-.142-.094-.203-.143-.015-.021-.023-.043-.023-.064-.002-.183.407-.365.407-.365z"/><path fill="#288548" d="M31.496 23.717s.091-.41 0-.455c-.091-.046-.227.137-.227.137s0-.501-.136-.456c-.137.046-.183.228-.183.228s-.137-.363-.272-.272c-.137.091 0 .364 0 .364s-.318.137-.228.273c.091.137.546.137.637.183.091.045.046.182-.045.136-.092-.045-.547-.228-.501-.045.045.182.137.228.318.228.183 0 .501-.092.501-.092l.409.273.046-.046-.319-.456zm.774-.455c-.045.182-.091.228-.272.228-.182 0-.318.091-.228.182.091.091.318.091.318.091l-.137.364.046.045.182-.363.183.228s.272-.183.182-.274c-.091-.091-.273-.091-.182-.182.091-.091.227-.364-.046-.318-.272.045.182.137.182.137M35 25.173c-.046-.092-.318-.183-.318-.183s-.046-.364-.183-.364c-.136 0-.272.273-.272.273s-.046-.182-.137-.137c-.091.046-.318.273-.272.364.045.091.091.409.272.455.182.045.364-.273.364-.273s.091.046.272.046c.183 0 .274-.181.274-.181zm-4.141-.729s-.137-.409-.274-.364c-.136.046-.136.228-.136.228s-.409-.045-.592.092c-.182.136-.182.409.045.5.229.091.547-.091.592-.137.046-.045.046.501.228.501.183 0 .273-.228.227-.364-.045-.137 0-.273 0-.273s.364 0 .455.183c0 0-.091-.137-.273-.227l-.272-.139z"/><path fill="#D1BEA7" d="M31.087 17.893s.137-.273.592-.091c.455.182.546.5.591.728.046.227-.091.455.228.683.319.228.546 1.638.183 1.593-.364-.046-.455-.091-.637.045-.183.137-.592.183-.865-.136 0 0-.272.409-.272.637 0 .228.091.864-.183.955 0 0-.409-.546-.409-1.092s.137-1.138.592-1.41c0 0-.183-.137-.319-.319s-.226-.136-.5-.136h-.727s.182-.41.409-.501c.228-.091.637-.318 1.046 0 .41.318.683.546.683.546l.046-.318s-.091-.182-.273-.363c-.182-.183-.182-.455-.182-.592s-.003-.229-.003-.229z"/><path fill="#937A61" d="M30.313 18.666c-.773 0-1.001.728-1.001.728h.819s.136-.045.228-.045c.091 0 .409.228.546.5.137.274.818-.045.682-.272-.136-.228-.454-.911-1.274-.911z"/><path fill="#AF987E" d="M31.906 19.53c-.02-.076-.156-.09-.318-.058-.177.034-.342.187-.501.24-.409.136-.864.727-.864 1.273s.409 1.183.455 1.319c.045.137.136 0 .182-.137.046-.136.046-.454.046-.727 0-.273.137-.683.363-.819.227-.136.819-.363.637-1.091zm.682 3.732c0 .111-.146.504-.136.909.001.031.044.243.045.273.014.395.142.599.228.729 0 0 .227-.092.455-.41.228-.318.273-.637.137-.91-.137-.273-.729-.591-.729-.591z"/><path fill="#D1BEA7" d="M32.861 22.761c-.045 0-.16.951-.091 1.319.137.729.683 1.547 1.047 1.456.363-.091.136-.318.045-.5-.091-.183-.228-.592-.137-.91.092-.318-.864-1.365-.864-1.365z"/><path fill="#BA8F69" d="M32.134 20.668c-.137.272-.455.5-.819.091 0 0-.137.683.137 1.138.272.455 1.319 1.638 1.319 1.638l.137-.774-.774-2.093z"/><path fill="#BB6C3F" d="M32.816 19.121c-.319-.137-.773.091-.819.363-.046.273-.091.91-.046 1.184.046.272 0 .728.092.955.091.228.454.455.5.774.045.318.318.591.728 1.046.41.455 1.047 1.183 1.229 1.092.183-.091.41-1.729-.136-3.14-.547-1.41-1.548-2.274-1.548-2.274z"/><path fill="#020202" d="M31.633 17.938c-.182-.091-.318-.045-.182.092.136.135.364-.001.182-.092z"/><path fill="#FFF" d="M23.216 14.753s.182.455.728.409c.546-.045.955-.182 1.092.318 0 0-.318.046-.455.273-.136.227.228.819.228.819s-.363 0-.5-.228c0 0-.046.409-.318.683-.116.115-.41.136-.41.136l.455-.91c.091-.182.182-.409-.228-.136-.409.272-.955.5-1.273.136 0 0 1.319-.591 1.592-.728-.454 0-.5-.046-.909 0-.244.027-.501.137-.501.137s-.045-.364.455-.364c.318 0-.046-.091-.091-.272-.048-.182.135-.273.135-.273zm6.961 3.73s1.001-.136.865-1.046c-.137-.91-.819-1.547-.683-2.093 0 0-.325.089-.41.363-.182.592.396 1.072.501 1.229.182.273.273.592.273.592s-.5-.409-.774 0c0 0 .318-.046.455.091s.227.318.091.501c-.136.182-.318.363-.318.363zm2.866-3.093s.455.183.455.455c0 .274-.228.364-.591.364 0 0 .182-.137.228-.318.045-.183-.092-.501-.092-.501z"/><path fill="#905F41" d="M26.036 15.071s.683.455.864.501c.183.045.91 0 .91 0l.137-.319s.364-.091.592-.091c.227 0 .501.046.501.046l.091.273-.364.819h-1.229c-.182 0-.592-.137-.683-.318-.091-.183-.455-.409-.546-.546-.091-.137-.591-.501-.273-.365z"/><path fill="#905F41" d="M27.901 15.562c0 .056-.04.101-.091.101-.05 0-.091-.045-.091-.101V13.76c0-.055.041-.1.091-.1.051 0 .091.045.091.1v1.802zm-.818.055c0 .051-.041.091-.091.091-.051 0-.092-.04-.092-.091v-1.638c0-.05.041-.091.092-.091.05 0 .091.041.091.091v1.638zm1.319 0c0 .051-.041.091-.091.091-.05 0-.091-.04-.091-.091v-1.638c0-.05.041-.091.091-.091.05 0 .091.041.091.091v1.638z"/><path fill="#FFF" d="M27.265 14.435c0 .05-.163.091-.364.091-.2 0-.363-.041-.363-.091 0-.051.163-.091.363-.091.201 0 .364.04.364.091zm.182.455c0 .05-.214.091-.479.091-.264 0-.478-.041-.478-.091 0-.051.214-.091.478-.091.265 0 .479.04.479.091zm.683-.615c0 .037-.163.068-.364.068-.201 0-.364-.031-.364-.068 0-.038.163-.068.364-.068.201 0 .364.03.364.068z"/><path fill="#FFF" d="M28.676 14.252c0 .025-.133.046-.296.046-.164 0-.296-.021-.296-.046 0-.024.132-.045.296-.045.163 0 .296.02.296.045zm-.638.455c0 .051-.132.092-.296.092-.163 0-.295-.041-.295-.092 0-.05.132-.091.295-.091.164 0 .296.041.296.091zm.638 0c0 .04-.133.071-.296.071-.164 0-.296-.031-.296-.071 0-.039.132-.07.296-.07.163 0 .296.031.296.07z"/><path fill="#8FD2E2" d="M26.127 16.437s.364-.046.183-.364c0 0 .182-.091.409.137.228.228.638 0 .364-.273 0 0 .227-.137.409.046.183.182.501.228.364-.137 0 0 .318-.091.455.183.137.273.637.227.409-.137 0 0 .228-.046.319.137.091.182.182.227.182.227s.182-.227.363 0c.183.227.092.455-.227.501-.318.045-.456-.318-.456-.318s-.136.182-.363.137c-.228-.046-.364-.228-.364-.228s-.266.136-.409.136c-.228 0-.398-.221-.455-.136-.091.136-.364.273-.637.136 0 0-.227.364-.501.364-.273 0-.546-.164-.546-.409 0-.228.137-.318.272-.273.138.043.229.271.229.271z"/><path fill="#288548" d="M25.49 17.392s-.5.137-.546.41c-.046.272-.091.318-.091.318s-.228-.091-.364-.273c-.137-.182-.182-.592-.137-.728.046-.137.228-.546.41-.773.182-.227.273-.683.228-.865-.046-.182-.273-.363-.273-.363s.592 0 .683.363c.091.364-.091.638-.091.638s.091.045.228-.137c0 0 .045.455-.228.546 0 0-.183.273-.273.501-.091.227-.248.499-.137.409.227-.183.591-.046.591-.046zm-3.003-1.866s-.182.227-.182.364c0 .137.182.455.455.546 0 0-.819-.318-.819-.592 0-.272.365-.318.546-.318zm7.416.273s.092-.682.592-.637c.501.046 1.229.183 1.365.046.137-.137.091-.409.091-.409s.273.045.318.182c.046.137-.136.318-.136.318s.228-.046.363.091c.137.137.273.318.273.318s-.455-.136-.683-.136c-.227 0-.864-.046-.864-.046s.637.364 1.001.501c.363.136.637.273 1.092.136 0 0-.455.273-.592.364-.137.091-.363.091-.637-.046-.272-.136-.727-.454-.727-.454s0 .318.136.637c.137.318.364.546.364.546s-.409-.091-.592-.273c-.182-.182-.182-.591-.182-.591s-.228.318-.546.228c0 0 .137-.092.228-.319s.227-.409.091-.591c-.137-.183-.318-.364-.546-.318-.226.044-.409.453-.409.453zm-1.637.91c-.409.183-.683.455-.637 1.138 0 0 .227-.455.455-.592 0 0 0 .41.137.774.137.363.5.637.773.683 0 0-.318-.501-.318-.91 0 0 .272.682.727 1.092l.046-.318s-.183-.183-.227-.41c0 0 .272.364.637.364s.637-.228.683-.546c0 0-.182.091-.5.137-.319.045-.683-.137-.956-.501-.273-.364-.318-.683-.318-.683l-.502-.228z"/><path fill="#00247D" d="M19 18V5H4c-.32 0-.604.045-.604.045l-.004 1.754-2.73-.004S.62 6.854.535 7C.195 7.589 0 8.272 0 9v9h19z"/><path fill="#EEE" d="M19 5h-2.331L12 8.269V5H7v2.569L3.396 5.045c-.614.094-1.19.325-1.672.665L6.426 9H4.69L.967 6.391c-.11.129-.211.262-.305.404L3.813 9H0v5h3.885L0 16.766V18h3.332L7 15.432V18h5v-3.269L16.668 18H19v-2.029L16.185 14H19V9h-2.814L19 7.029V5z"/><path fill="#CF1B2B" d="M11 5H8v5H0v3h8v5h3v-5h8v-3h-8z"/><path fill="#CF1B2B" d="M19 5h-1.461L12 8.879V9h1.571L19 5.198zm-17.276.71c-.281.195-.534.423-.757.681L4.69 9h1.735L1.724 5.71zM6.437 14L.734 18h1.727L7 14.822V14zM19 17.802v-1.22L15.313 14H13.57z"/></svg>
|