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.
Files changed (384) hide show
  1. package/ATTRIBUTION.txt +25 -0
  2. package/CHANGELOG.md +11 -0
  3. package/LICENSE +21 -0
  4. package/LICENSE-GRAPHICS +56 -0
  5. package/README.md +340 -0
  6. package/dist/cli.d.ts +1 -0
  7. package/dist/cli.js +219 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/generator.js +950 -0
  10. package/dist/generator.js.map +1 -0
  11. package/dist/index.d.ts +451 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +2 -0
  14. package/flags/README.md +1 -0
  15. package/flags/ac.svg +1 -0
  16. package/flags/ad.svg +1 -0
  17. package/flags/ae.svg +1 -0
  18. package/flags/af.svg +1 -0
  19. package/flags/ag.svg +1 -0
  20. package/flags/ai.svg +1 -0
  21. package/flags/al.svg +1 -0
  22. package/flags/am.svg +1 -0
  23. package/flags/ao.svg +1 -0
  24. package/flags/aq.svg +1 -0
  25. package/flags/ar.svg +1 -0
  26. package/flags/as.svg +1 -0
  27. package/flags/at.svg +1 -0
  28. package/flags/au-act.svg +12 -0
  29. package/flags/au-nsw.svg +232 -0
  30. package/flags/au-nt.svg +40 -0
  31. package/flags/au-qld.svg +12 -0
  32. package/flags/au-sa.svg +31 -0
  33. package/flags/au-tas.svg +114 -0
  34. package/flags/au-vic.svg +191 -0
  35. package/flags/au-wa.svg +393 -0
  36. package/flags/au.svg +1 -0
  37. package/flags/aw.svg +1 -0
  38. package/flags/ax.svg +1 -0
  39. package/flags/az.svg +1 -0
  40. package/flags/ba.svg +1 -0
  41. package/flags/bb.svg +1 -0
  42. package/flags/bd.svg +1 -0
  43. package/flags/be.svg +1 -0
  44. package/flags/bf.svg +1 -0
  45. package/flags/bg.svg +1 -0
  46. package/flags/bh.svg +1 -0
  47. package/flags/bi.svg +1 -0
  48. package/flags/bj.svg +1 -0
  49. package/flags/bl.svg +1 -0
  50. package/flags/bm.svg +1 -0
  51. package/flags/bn.svg +1 -0
  52. package/flags/bo.svg +1 -0
  53. package/flags/bq.svg +1 -0
  54. package/flags/br.svg +1 -0
  55. package/flags/bs.svg +1 -0
  56. package/flags/bt.svg +1 -0
  57. package/flags/bv.svg +1 -0
  58. package/flags/bw.svg +1 -0
  59. package/flags/by.svg +1 -0
  60. package/flags/bz.svg +1 -0
  61. package/flags/ca-ab.svg +100 -0
  62. package/flags/ca-bc.svg +34 -0
  63. package/flags/ca-mb.svg +99 -0
  64. package/flags/ca-nb.svg +244 -0
  65. package/flags/ca-nl.svg +16 -0
  66. package/flags/ca-ns.svg +155 -0
  67. package/flags/ca-nt.svg +45 -0
  68. package/flags/ca-nu.svg +16 -0
  69. package/flags/ca-on.svg +31 -0
  70. package/flags/ca-pe.svg +748 -0
  71. package/flags/ca-qc.svg +20 -0
  72. package/flags/ca-sk.svg +91 -0
  73. package/flags/ca-yt.svg +81 -0
  74. package/flags/ca.svg +1 -0
  75. package/flags/cc.svg +1 -0
  76. package/flags/cd.svg +1 -0
  77. package/flags/cf.svg +1 -0
  78. package/flags/cg.svg +1 -0
  79. package/flags/ch.svg +1 -0
  80. package/flags/ci.svg +1 -0
  81. package/flags/ck.svg +1 -0
  82. package/flags/cl.svg +1 -0
  83. package/flags/cm.svg +1 -0
  84. package/flags/cn.svg +1 -0
  85. package/flags/co.svg +1 -0
  86. package/flags/cp.svg +1 -0
  87. package/flags/cq.svg +1 -0
  88. package/flags/cr.svg +1 -0
  89. package/flags/cu.svg +1 -0
  90. package/flags/cv.svg +1 -0
  91. package/flags/cw.svg +1 -0
  92. package/flags/cx.svg +1 -0
  93. package/flags/cy.svg +1 -0
  94. package/flags/cz.svg +1 -0
  95. package/flags/de-bb.svg +76 -0
  96. package/flags/de-be.svg +17 -0
  97. package/flags/de-bw.svg +12 -0
  98. package/flags/de-by.svg +16 -0
  99. package/flags/de-hb.svg +12 -0
  100. package/flags/de-he.svg +14 -0
  101. package/flags/de-hh.svg +40 -0
  102. package/flags/de-mv.svg +12 -0
  103. package/flags/de-ni.svg +86 -0
  104. package/flags/de-nw.svg +15 -0
  105. package/flags/de-rp.svg +292 -0
  106. package/flags/de-sh.svg +14 -0
  107. package/flags/de-sl.svg +279 -0
  108. package/flags/de-sn.svg +13 -0
  109. package/flags/de-st.svg +207 -0
  110. package/flags/de-th.svg +17 -0
  111. package/flags/de.svg +1 -0
  112. package/flags/dg.svg +1 -0
  113. package/flags/dj.svg +1 -0
  114. package/flags/dk.svg +1 -0
  115. package/flags/dm.svg +1 -0
  116. package/flags/do.svg +1 -0
  117. package/flags/dz.svg +1 -0
  118. package/flags/ea.svg +1 -0
  119. package/flags/ec.svg +1 -0
  120. package/flags/ee.svg +1 -0
  121. package/flags/eg.svg +1 -0
  122. package/flags/eh.svg +1 -0
  123. package/flags/er.svg +1 -0
  124. package/flags/es-an.svg +215 -0
  125. package/flags/es-ar.svg +66 -0
  126. package/flags/es-as.svg +19 -0
  127. package/flags/es-cb.svg +590 -0
  128. package/flags/es-ce.svg +357 -0
  129. package/flags/es-cl.svg +473 -0
  130. package/flags/es-cm.svg +457 -0
  131. package/flags/es-cn.svg +200 -0
  132. package/flags/es-ct.svg +13 -0
  133. package/flags/es-ex.svg +251 -0
  134. package/flags/es-ga.svg +205 -0
  135. package/flags/es-ib.svg +104 -0
  136. package/flags/es-mc.svg +32 -0
  137. package/flags/es-md.svg +29 -0
  138. package/flags/es-ml.svg +717 -0
  139. package/flags/es-nc.svg +775 -0
  140. package/flags/es-pv.svg +14 -0
  141. package/flags/es-ri.svg +787 -0
  142. package/flags/es-vc.svg +21 -0
  143. package/flags/es.svg +1 -0
  144. package/flags/et.svg +1 -0
  145. package/flags/eu.svg +1 -0
  146. package/flags/fi.svg +1 -0
  147. package/flags/fj.svg +1 -0
  148. package/flags/fk.svg +1 -0
  149. package/flags/fm.svg +1 -0
  150. package/flags/fo.svg +1 -0
  151. package/flags/fr.svg +1 -0
  152. package/flags/ga.svg +1 -0
  153. package/flags/gb-eng.svg +1 -0
  154. package/flags/gb-nir.svg +141 -0
  155. package/flags/gb-sct.svg +1 -0
  156. package/flags/gb-wls.svg +1 -0
  157. package/flags/gb.svg +1 -0
  158. package/flags/gd.svg +1 -0
  159. package/flags/ge.svg +1 -0
  160. package/flags/gf.svg +1 -0
  161. package/flags/gg.svg +1 -0
  162. package/flags/gh.svg +1 -0
  163. package/flags/gi.svg +1 -0
  164. package/flags/gl.svg +1 -0
  165. package/flags/gm.svg +1 -0
  166. package/flags/gn.svg +1 -0
  167. package/flags/gp.svg +1 -0
  168. package/flags/gq.svg +1 -0
  169. package/flags/gr.svg +1 -0
  170. package/flags/gs.svg +1 -0
  171. package/flags/gt.svg +1 -0
  172. package/flags/gu.svg +1 -0
  173. package/flags/gw.svg +1 -0
  174. package/flags/gy.svg +1 -0
  175. package/flags/hk.svg +1 -0
  176. package/flags/hm.svg +1 -0
  177. package/flags/hn.svg +1 -0
  178. package/flags/hr.svg +1 -0
  179. package/flags/ht.svg +1 -0
  180. package/flags/hu.svg +1 -0
  181. package/flags/ic.svg +1 -0
  182. package/flags/id.svg +1 -0
  183. package/flags/ie.svg +1 -0
  184. package/flags/il.svg +1 -0
  185. package/flags/im.svg +1 -0
  186. package/flags/in.svg +1 -0
  187. package/flags/io.svg +1 -0
  188. package/flags/iq.svg +1 -0
  189. package/flags/ir.svg +42 -0
  190. package/flags/is.svg +1 -0
  191. package/flags/it.svg +1 -0
  192. package/flags/je.svg +1 -0
  193. package/flags/jm.svg +1 -0
  194. package/flags/jo.svg +1 -0
  195. package/flags/jp.svg +1 -0
  196. package/flags/ke.svg +1 -0
  197. package/flags/kg.svg +1 -0
  198. package/flags/kh.svg +1 -0
  199. package/flags/ki.svg +1 -0
  200. package/flags/km.svg +1 -0
  201. package/flags/kn.svg +1 -0
  202. package/flags/kp.svg +1 -0
  203. package/flags/kr.svg +1 -0
  204. package/flags/kw.svg +1 -0
  205. package/flags/ky.svg +1 -0
  206. package/flags/kz.svg +1 -0
  207. package/flags/la.svg +1 -0
  208. package/flags/lb.svg +1 -0
  209. package/flags/lc.svg +1 -0
  210. package/flags/li.svg +1 -0
  211. package/flags/lk.svg +1 -0
  212. package/flags/lr.svg +1 -0
  213. package/flags/ls.svg +1 -0
  214. package/flags/lt.svg +1 -0
  215. package/flags/lu.svg +1 -0
  216. package/flags/lv.svg +1 -0
  217. package/flags/ly.svg +1 -0
  218. package/flags/ma.svg +1 -0
  219. package/flags/mc.svg +1 -0
  220. package/flags/md.svg +1 -0
  221. package/flags/me.svg +1 -0
  222. package/flags/mf.svg +1 -0
  223. package/flags/mg.svg +1 -0
  224. package/flags/mh.svg +1 -0
  225. package/flags/mk.svg +1 -0
  226. package/flags/ml.svg +1 -0
  227. package/flags/mm.svg +1 -0
  228. package/flags/mn.svg +1 -0
  229. package/flags/mo.svg +1 -0
  230. package/flags/mp.svg +1 -0
  231. package/flags/mq.svg +1 -0
  232. package/flags/mr.svg +1 -0
  233. package/flags/ms.svg +1 -0
  234. package/flags/mt.svg +1 -0
  235. package/flags/mu.svg +1 -0
  236. package/flags/mv.svg +1 -0
  237. package/flags/mw.svg +1 -0
  238. package/flags/mx.svg +1 -0
  239. package/flags/my.svg +1 -0
  240. package/flags/mz.svg +1 -0
  241. package/flags/na.svg +1 -0
  242. package/flags/nc.svg +1 -0
  243. package/flags/ne.svg +1 -0
  244. package/flags/nf.svg +1 -0
  245. package/flags/ng.svg +1 -0
  246. package/flags/ni.svg +1 -0
  247. package/flags/nl.svg +1 -0
  248. package/flags/no.svg +1 -0
  249. package/flags/np.svg +1 -0
  250. package/flags/nr.svg +1 -0
  251. package/flags/nu.svg +1 -0
  252. package/flags/nz.svg +1 -0
  253. package/flags/om.svg +1 -0
  254. package/flags/pa.svg +1 -0
  255. package/flags/pe.svg +1 -0
  256. package/flags/pf.svg +1 -0
  257. package/flags/pg.svg +1 -0
  258. package/flags/ph.svg +1 -0
  259. package/flags/pk.svg +1 -0
  260. package/flags/pl.svg +1 -0
  261. package/flags/pm.svg +1 -0
  262. package/flags/pn.svg +1 -0
  263. package/flags/pr.svg +1 -0
  264. package/flags/ps.svg +1 -0
  265. package/flags/pt.svg +1 -0
  266. package/flags/pw.svg +1 -0
  267. package/flags/py.svg +1 -0
  268. package/flags/qa.svg +1 -0
  269. package/flags/re.svg +1 -0
  270. package/flags/ro.svg +1 -0
  271. package/flags/rs.svg +1 -0
  272. package/flags/ru.svg +1 -0
  273. package/flags/rw.svg +1 -0
  274. package/flags/sa.svg +1 -0
  275. package/flags/sb.svg +1 -0
  276. package/flags/sc.svg +1 -0
  277. package/flags/sd.svg +1 -0
  278. package/flags/se.svg +1 -0
  279. package/flags/sg.svg +1 -0
  280. package/flags/sh.svg +1 -0
  281. package/flags/si.svg +1 -0
  282. package/flags/sj.svg +1 -0
  283. package/flags/sk.svg +1 -0
  284. package/flags/sl.svg +1 -0
  285. package/flags/sm.svg +1 -0
  286. package/flags/sn.svg +1 -0
  287. package/flags/so.svg +1 -0
  288. package/flags/sr.svg +1 -0
  289. package/flags/ss.svg +1 -0
  290. package/flags/st.svg +1 -0
  291. package/flags/sv.svg +1 -0
  292. package/flags/sx.svg +1 -0
  293. package/flags/sy.svg +1 -0
  294. package/flags/sz.svg +1 -0
  295. package/flags/ta.svg +1 -0
  296. package/flags/tc.svg +1 -0
  297. package/flags/td.svg +1 -0
  298. package/flags/tf.svg +1 -0
  299. package/flags/tg.svg +1 -0
  300. package/flags/th.svg +1 -0
  301. package/flags/tj.svg +1 -0
  302. package/flags/tk.svg +1 -0
  303. package/flags/tl.svg +1 -0
  304. package/flags/tm.svg +1 -0
  305. package/flags/tn.svg +1 -0
  306. package/flags/to.svg +1 -0
  307. package/flags/tr.svg +1 -0
  308. package/flags/tt.svg +1 -0
  309. package/flags/tv.svg +1 -0
  310. package/flags/tw.svg +1 -0
  311. package/flags/tz.svg +1 -0
  312. package/flags/ua.svg +1 -0
  313. package/flags/ug.svg +1 -0
  314. package/flags/um.svg +1 -0
  315. package/flags/un.svg +1 -0
  316. package/flags/us-ak.svg +12 -0
  317. package/flags/us-al.svg +12 -0
  318. package/flags/us-ar.svg +12 -0
  319. package/flags/us-az.svg +12 -0
  320. package/flags/us-ca.svg +12 -0
  321. package/flags/us-co.svg +12 -0
  322. package/flags/us-ct.svg +12 -0
  323. package/flags/us-de.svg +12 -0
  324. package/flags/us-fl.svg +12 -0
  325. package/flags/us-ga.svg +12 -0
  326. package/flags/us-hi.svg +12 -0
  327. package/flags/us-ia.svg +12 -0
  328. package/flags/us-id.svg +12 -0
  329. package/flags/us-il.svg +12 -0
  330. package/flags/us-in.svg +12 -0
  331. package/flags/us-ks.svg +12 -0
  332. package/flags/us-ky.svg +12 -0
  333. package/flags/us-la.svg +12 -0
  334. package/flags/us-ma.svg +12 -0
  335. package/flags/us-md.svg +12 -0
  336. package/flags/us-me.svg +12 -0
  337. package/flags/us-mi.svg +12 -0
  338. package/flags/us-mn.svg +12 -0
  339. package/flags/us-mo.svg +12 -0
  340. package/flags/us-ms.svg +12 -0
  341. package/flags/us-mt.svg +12 -0
  342. package/flags/us-nc.svg +12 -0
  343. package/flags/us-nd.svg +12 -0
  344. package/flags/us-ne.svg +12 -0
  345. package/flags/us-nh.svg +12 -0
  346. package/flags/us-nj.svg +12 -0
  347. package/flags/us-nm.svg +12 -0
  348. package/flags/us-nv.svg +12 -0
  349. package/flags/us-ny.svg +12 -0
  350. package/flags/us-oh.svg +12 -0
  351. package/flags/us-ok.svg +12 -0
  352. package/flags/us-or.svg +12 -0
  353. package/flags/us-pa.svg +12 -0
  354. package/flags/us-ri.svg +12 -0
  355. package/flags/us-sc.svg +12 -0
  356. package/flags/us-sd.svg +12 -0
  357. package/flags/us-tn.svg +12 -0
  358. package/flags/us-tx.svg +12 -0
  359. package/flags/us-ut.svg +12 -0
  360. package/flags/us-va.svg +12 -0
  361. package/flags/us-vt.svg +12 -0
  362. package/flags/us-wa.svg +12 -0
  363. package/flags/us-wi.svg +12 -0
  364. package/flags/us-wv.svg +12 -0
  365. package/flags/us-wy.svg +12 -0
  366. package/flags/us.svg +1 -0
  367. package/flags/uy.svg +1 -0
  368. package/flags/uz.svg +1 -0
  369. package/flags/va.svg +1 -0
  370. package/flags/vc.svg +1 -0
  371. package/flags/ve.svg +1 -0
  372. package/flags/vg.svg +1 -0
  373. package/flags/vi.svg +1 -0
  374. package/flags/vn.svg +1 -0
  375. package/flags/vu.svg +1 -0
  376. package/flags/wf.svg +1 -0
  377. package/flags/ws.svg +1 -0
  378. package/flags/xk.svg +1 -0
  379. package/flags/ye.svg +1 -0
  380. package/flags/yt.svg +1 -0
  381. package/flags/za.svg +1 -0
  382. package/flags/zm.svg +1 -0
  383. package/flags/zw.svg +1 -0
  384. package/package.json +113 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","names":[],"sources":["../src/cli-core.ts","../src/cli.ts"],"sourcesContent":["import { readFileSync } from 'node:fs';\nimport path from 'node:path';\nimport { parseArgs } from 'node:util';\nimport { fileURLToPath } from 'node:url';\n\nimport { FlagResizerError } from './errors.js';\nimport { generate } from './generator.js';\nimport type { GenerationResult } from './types.js';\n\nconst PACKAGE_ROOT = fileURLToPath(new URL('../', import.meta.url));\nconst PACKAGE_JSON = JSON.parse(readFileSync(path.join(PACKAGE_ROOT, 'package.json'), 'utf8')) as {\n version: string;\n};\n\nconst ansi = {\n reset: '\\u001B[0m',\n red: '\\u001B[31m',\n green: '\\u001B[32m',\n yellow: '\\u001B[33m',\n cyan: '\\u001B[36m',\n brightCyan: '\\u001B[96m',\n dim: '\\u001B[2m',\n dimCyan: '\\u001B[2;36m',\n} as const;\n\ninterface Palette {\n red: (value: string) => string;\n green: (value: string) => string;\n yellow: (value: string) => string;\n cyan: (value: string) => string;\n brightCyan: (value: string) => string;\n dim: (value: string) => string;\n dimCyan: (value: string) => string;\n}\n\nconst plain = (value: string): string => value;\n\nfunction palette(enabled: boolean): Palette {\n const color =\n (code: string) =>\n (value: string): string =>\n enabled ? `${code}${value}${ansi.reset}` : value;\n return {\n red: color(ansi.red),\n green: color(ansi.green),\n yellow: color(ansi.yellow),\n cyan: color(ansi.cyan),\n brightCyan: color(ansi.brightCyan),\n dim: color(ansi.dim),\n dimCyan: color(ansi.dimCyan),\n };\n}\n\nfunction colorsEnabled(stream: NodeJS.WriteStream): boolean {\n if (process.env['NO_COLOR'] !== undefined || process.env['FORCE_COLOR'] === '0') return false;\n return stream.isTTY || Boolean(process.env['FORCE_COLOR']);\n}\n\nfunction plural(value: number, word: string): string {\n return `${value} ${word}${value === 1 ? '' : 's'}`;\n}\n\nfunction help(colors: Palette): string {\n return `\n${colors.brightCyan('Flag Resizer')}\n\n${colors.yellow('Usage:')}\n flag-resizer [profiles...] [options]\n\nGenerate typed PNG and WebP flag assets from flag-resizer.config.*\nWith no profile arguments, every configured profile is generated.\n\n${colors.yellow('Options:')}\n ${colors.green('-c, --config <path>')} Use an explicit configuration file.\n ${colors.green(' --concurrency <count>')} Maximum parallel image conversions.\n ${colors.green(' --dry-run')} Preview changes without writing files.\n ${colors.green(' --verbose')} Show configuration and output details.\n ${colors.green('-h, --help')} Display usage information.\n ${colors.green('-v, --version')} Display the installed version.\n`;\n}\n\ninterface ParsedCliArguments {\n positionals: string[];\n values: {\n config?: string;\n concurrency?: string;\n dryRun: boolean;\n verbose: boolean;\n help: boolean;\n version: boolean;\n };\n}\n\nfunction parseCliArguments(args: readonly string[]): ParsedCliArguments {\n const parsed = parseArgs({\n args: [...args],\n allowPositionals: true,\n strict: true,\n options: {\n config: { type: 'string', short: 'c' },\n concurrency: { type: 'string' },\n 'dry-run': { type: 'boolean', default: false },\n verbose: { type: 'boolean', default: false },\n help: { type: 'boolean', short: 'h', default: false },\n version: { type: 'boolean', short: 'v', default: false },\n },\n });\n const values = parsed.values;\n\n return {\n positionals: parsed.positionals,\n values: {\n ...(typeof values.config === 'string' ? { config: values.config } : {}),\n ...(typeof values.concurrency === 'string' ? { concurrency: values.concurrency } : {}),\n dryRun: values['dry-run'],\n verbose: values.verbose,\n help: values.help,\n version: values.version,\n },\n };\n}\n\nfunction parseConcurrency(value: string | undefined): number | undefined {\n if (value === undefined) return undefined;\n const parsed = Number(value);\n if (!Number.isInteger(parsed) || parsed < 1) {\n throw new FlagResizerError('--concurrency must be a positive integer.');\n }\n return parsed;\n}\n\ninterface PrintableProfile {\n name: string;\n countries: number;\n images: number;\n created: number;\n updated: number;\n unchanged: number;\n removed: number;\n}\n\nexport function formatProfileSummary(\n profile: PrintableProfile,\n durationMs: number | undefined,\n useColor = false,\n): string {\n const colors = useColor\n ? palette(true)\n : {\n red: plain,\n green: plain,\n yellow: plain,\n cyan: plain,\n brightCyan: plain,\n dim: plain,\n dimCyan: plain,\n };\n const details = [\n plural(profile.countries, 'flag'),\n plural(profile.images, 'image'),\n ...(profile.created > 0 ? [colors.green(`${profile.created} created`)] : []),\n ...(profile.updated > 0 ? [colors.yellow(`${profile.updated} updated`)] : []),\n ...(profile.unchanged > 0 ? [colors.dim(`${profile.unchanged} unchanged`)] : []),\n ...(profile.removed > 0 ? [colors.red(`${profile.removed} removed`)] : []),\n ...(durationMs === undefined ? [] : [colors.dimCyan(`${durationMs} ms`)]),\n ];\n return `${colors.green('✔')} ${colors.cyan(profile.name)} · ${details.join(' · ')}`;\n}\n\nfunction formatCombinedSummary(\n profiles: readonly PrintableProfile[],\n durationMs: number,\n colors: Palette,\n): string {\n const totals = profiles.reduce(\n (current, profile) => ({\n flags: current.flags + profile.countries,\n images: current.images + profile.images,\n files: current.files + profile.created + profile.updated + profile.unchanged,\n }),\n { flags: 0, images: 0, files: 0 },\n );\n return [\n `${colors.green('✔')} ${plural(profiles.length, 'profile')}`,\n plural(totals.flags, 'flag'),\n plural(totals.images, 'image'),\n plural(totals.files, 'file'),\n colors.dimCyan(`${durationMs} ms`),\n ].join(' · ');\n}\n\nfunction displayPath(target: string, cwd: string): string {\n const relative = path.relative(cwd, target);\n if (relative === '') return '.';\n return relative.startsWith('..') ? target : relative;\n}\n\nfunction verboseRow(label: string, value: string, colors: Palette): string {\n return ` ${colors.dim(label.padEnd(12))}${value}`;\n}\n\nexport function formatVerboseDetails(\n result: GenerationResult,\n cwd = process.cwd(),\n useColor = false,\n): string {\n const colors = palette(useColor);\n const rows: string[] = [];\n\n if (result.configFile) {\n rows.push(verboseRow('config', displayPath(result.configFile, cwd), colors));\n }\n\n for (const profile of result.profiles) {\n rows.push(\n verboseRow(\n 'sizes',\n profile.sizes.map(([width, height]) => `${width}x${height}`).join(', '),\n colors,\n ),\n verboseRow('formats', profile.formats.join(', '), colors),\n );\n for (const format of profile.formats) {\n const directory = profile.outputDirectories[format];\n if (directory) {\n rows.push(verboseRow(`${format} output`, displayPath(directory, cwd), colors));\n }\n }\n rows.push(verboseRow('typescript', displayPath(profile.typeScriptFile, cwd), colors));\n }\n\n rows.push(verboseRow('manifest', displayPath(result.manifestFile, cwd), colors));\n return rows.join('\\n');\n}\n\nexport async function runCli(args: readonly string[]): Promise<number> {\n const stdoutColors = palette(colorsEnabled(process.stdout));\n const stderrColors = palette(colorsEnabled(process.stderr));\n let parsed: ParsedCliArguments;\n try {\n parsed = parseCliArguments(args);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(`${stderrColors.red('error')}: ${message}`);\n return 1;\n }\n\n if (parsed.values.help) {\n console.log(help(stdoutColors));\n return 0;\n }\n if (parsed.values.version) {\n console.log(`flag-resizer ${PACKAGE_JSON.version}`);\n return 0;\n }\n\n try {\n const concurrency = parseConcurrency(parsed.values.concurrency);\n const action = parsed.values.dryRun ? 'Planning flag generation…' : 'Generating flag assets…';\n console.error(`${stderrColors.cyan('...')} ${stderrColors.dim(action)}`);\n const result = await generate({\n ...(parsed.values.config ? { configFile: parsed.values.config } : {}),\n ...(parsed.positionals.length > 0 ? { profiles: parsed.positionals } : {}),\n ...(concurrency === undefined ? {} : { concurrency }),\n dryRun: parsed.values.dryRun,\n });\n\n for (const profile of result.profiles) {\n console.error(\n formatProfileSummary(\n profile,\n result.profiles.length === 1 ? result.durationMs : undefined,\n colorsEnabled(process.stderr),\n ),\n );\n }\n if (result.profiles.length > 1) {\n console.error(formatCombinedSummary(result.profiles, result.durationMs, stderrColors));\n }\n if (parsed.values.verbose) {\n console.error('');\n console.error(formatVerboseDetails(result, process.cwd(), colorsEnabled(process.stderr)));\n }\n return 0;\n } catch (error) {\n if (error instanceof FlagResizerError) {\n console.error(`${stderrColors.red('error')}: ${error.message}`);\n } else {\n console.error(`${stderrColors.red('error')}: unexpected failure`, error);\n }\n return 1;\n }\n}\n","#!/usr/bin/env node\n\nimport { runCli } from './cli-core.js';\n\nprocess.exitCode = await runCli(process.argv.slice(2));\n"],"mappings":"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"}