/ scripts / manifest.js
manifest.js
 1  'use strict';
 2  const fs = require('fs');
 3  const path = require('path');
 4  const coins = require('coinlist');
 5  const getColors = require('get-svg-colors');
 6  const alphaSort = require('alpha-sort');
 7  const manifest = require('../manifest.json');
 8  
 9  const overrides = new Map([
10  	['VRSC', 'VerusCoin'],
11  	['GMR', 'Gimmer'],
12  	['NEXO', 'Nexo'],
13  	['GUSD', 'Gemini dollar'],
14  	['CALL', 'Capital'],
15  	['BOS', 'BOScoin'],
16  	['CIX', 'Cryptonetix'],
17  	['COQUI', 'COQUI Cash'],
18  	['DEEZ', 'DeezNuts'],
19  	['MZC', 'MAZA'],
20  	['CVC', 'Civic'],
21  	['BTM', 'Bitmark'],
22  	['GLXT', 'GLX Token'],
23  	['ONG', 'SoMee.Social'],
24  	['CC', 'CoinCollect'],
25  	['2GIVE', '2Give'],
26  	['BOOTY', 'Booty'],
27  	['PUNGO', 'Pungo Token'],
28  	['X', 'GLX Equity Token'],
29  	['AYWA', 'Aywa'],
30  	['CHAIN', 'Chainmakers'],
31  	['LPT', 'Livepeer Token'],
32  	['AUDR', 'AUDRamp'],
33  	['BAB', 'Bitcoin Cash ABC'],
34  	['BSV', 'BitcoinSV'],
35  	['GOLD', 'Dragonereum Gold'],
36  	['USDC', 'USD Coin'],
37  	['AEUR', 'Augmint Euro Token'],
38  	['BCIO', 'Blockchain.io'],
39  	['BEAM', 'Beam'],
40  	['BTT', 'BitTorrent'],
41  	['GRIN', 'Grin'],
42  	['ILK', 'Inlock Token'],
43  	['BTM', 'Bytom'],
44  	['D', 'Denarius'],
45  	['BTCD', 'BitcoinDark'],
46  	['CMT', 'Comet'],
47  	['CTR', 'Centra'],
48  	['HSR', 'HShare'],
49  	['ICN', 'Iconomi'],
50  	['IOST', 'IOStoken'],
51  	['PRL', 'Oyster'],
52  	['RCN', 'Rcoin'],
53  	['REN', 'Ren'],
54  	['RYO', 'Ryo Currency'],
55  	['SKY', 'Skycoin'],
56  	['XVC', 'Vcash'],
57  	['MATIC', 'Matic Network']
58  ]);
59  
60  const icons = manifest.map(icon => {
61  	const id = typeof icon === 'string' ? icon : icon.symbol;
62  	const filename = `${id.toLowerCase()}.svg`;
63  	const svgPath = path.resolve(__dirname, '../svg/color/', filename);
64  	const svg = fs.readFileSync(svgPath, 'utf8');
65  	const fillColor = getColors(svg).fills[0];
66  
67  	if (!fillColor) {
68  		throw new Error(`Couldn't get color for \`${id}\``);
69  	}
70  
71  	return {
72  		symbol: id.toUpperCase(),
73  		name: overrides.get(id) || coins.get(id, 'name') || id,
74  		color: fillColor.hex().toLowerCase()
75  	};
76  });
77  
78  icons.sort((a, b) => alphaSort.asc(a.symbol, b.symbol));
79  
80  const data = JSON.stringify(icons, null, '\t') + '\n';
81  
82  fs.writeFileSync(path.resolve(__dirname, '../manifest.json'), data);