import fs from 'node:fs/promises'; import path from 'node:path'; import {fileURLToPath} from 'node:url'; const root=path.resolve(path.dirname(fileURLToPath(import.meta.url)),'..'); const output=path.join(root,'assets','flags'); const regions=`AC AD AE AF AG AI AL AM AO AQ AR AS AT AU AW AX AZ BA BB BD BE BF BG BH BI BJ BL BM BN BO BQ BR BS BT BV BW BY BZ CA CC CD CF CG CH CI CK CL CM CN CO CP CQ CR CU CV CW CX CY CZ DE DG DJ DK DM DO DZ EA EC EE EG EH ER ES ET EU FI FJ FK FM FO FR GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY HK HM HN HR HT HU IC ID IE IL IM IN IO IQ IR IS IT JE JM JO JP KE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ NA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY QA RE RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR SS ST SV SX SY SZ TA TC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM UN US UY UZ VA VC VE VG VI VN VU WF WS XK YE YT ZA ZM ZW`.split(' '); const subdivisionKeys=[ '1f3f4-e0067-e0062-e0065-e006e-e0067-e007f', '1f3f4-e0067-e0062-e0073-e0063-e0074-e007f', '1f3f4-e0067-e0062-e0077-e006c-e0073-e007f' ]; const regionKey=code=>[...code].map(letter=>(0x1f1e6+letter.charCodeAt(0)-65).toString(16)).join('-'); const keys=[...regions.map(regionKey),...subdivisionKeys]; const base='https://cdn.jsdelivr.net/gh/jdecked/twemoji@latest'; await fs.mkdir(output,{recursive:true}); const failures=[]; for(let offset=0;offset{ try{ const response=await fetch(`${base}/assets/svg/${key}.svg`); if(!response.ok)throw new Error(`${response.status} ${response.statusText}`); await fs.writeFile(path.join(output,`${key}.svg`),Buffer.from(await response.arrayBuffer())); }catch(error){failures.push(`${key}: ${error.message}`)} })); } const licenseResponse=await fetch(`${base}/LICENSE-GRAPHICS`); if(!licenseResponse.ok)throw new Error(`Twemoji license download failed: ${licenseResponse.status}`); await fs.writeFile(path.join(output,'LICENSE-TWEMOJI.txt'),await licenseResponse.text(),'utf8'); if(failures.length)throw new Error(`Flag downloads failed:\n${failures.join('\n')}`); console.log(`Downloaded ${keys.length} Twemoji flag SVG assets.`);