From 49a804bf0a9ab131c765320a722828720ada2495 Mon Sep 17 00:00:00 2001 From: Mr Morris Date: Fri, 18 Jul 2025 10:49:54 +0800 Subject: [PATCH 1/4] Fix case-sensitivity collision in token images --- ...1509706a6c66CA549ff0cB464de88231DDBe213B.png | Bin 19988 -> 0 bytes ...20157DBAbb84e3BBFE68C349d0d44E48AE7B5AD2.png | Bin 13863 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/assets/images/tokens/0x1509706a6c66CA549ff0cB464de88231DDBe213B.png delete mode 100644 src/assets/images/tokens/0x20157DBAbb84e3BBFE68C349d0d44E48AE7B5AD2.png diff --git a/src/assets/images/tokens/0x1509706a6c66CA549ff0cB464de88231DDBe213B.png b/src/assets/images/tokens/0x1509706a6c66CA549ff0cB464de88231DDBe213B.png deleted file mode 100644 index bbb3caf016508f8c1074872abcac97bb5f3c3c73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19988 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 diff --git a/src/assets/images/tokens/0x20157DBAbb84e3BBFE68C349d0d44E48AE7B5AD2.png b/src/assets/images/tokens/0x20157DBAbb84e3BBFE68C349d0d44E48AE7B5AD2.png deleted file mode 100644 index f206ec6f626abb13d7c676192bffdc4c623ebed1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13863 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 Dc-igd From 04c9a59661d5108a32e679a65336821f82e665d4 Mon Sep 17 00:00:00 2001 From: Mr Morris Date: Tue, 5 Aug 2025 11:45:43 +0800 Subject: [PATCH 2/4] feat: merged/updated to main branch --- .gitignore | 5 + package.json | 2 + src/lib/scripts/create-pr.js | 495 ++++++++++++++++++++ src/lib/scripts/fetch-tokenlist.js | 380 +++++++++++++++ src/tokenlists/balancer/tokens/berachain.ts | 4 +- 5 files changed, 884 insertions(+), 2 deletions(-) create mode 100644 src/lib/scripts/create-pr.js create mode 100644 src/lib/scripts/fetch-tokenlist.js diff --git a/.gitignore b/.gitignore index 94e191f36..65beef446 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,8 @@ dist .DS_Store .env .idea/** + + + +*.backup* +fetch-tokenlist*.log \ No newline at end of file diff --git a/package.json b/package.json index 55c9cc711..0e610301c 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,8 @@ "scripts": { "generate": "ts-node src/generator.ts", "tokenlist:create": "node src/lib/scripts/create-tokenlist.js", + "tokenlist:fetch": "node src/lib/scripts/fetch-tokenlist.js", + "tokenlist:pr": "node src/lib/scripts/create-pr.js", "lint": "eslint . --ext .js,.ts --max-warnings 0", "lint:fix": "npm run lint -- --fix", "test": "vitest run", diff --git a/src/lib/scripts/create-pr.js b/src/lib/scripts/create-pr.js new file mode 100644 index 000000000..f3bb63aa8 --- /dev/null +++ b/src/lib/scripts/create-pr.js @@ -0,0 +1,495 @@ +#! /usr/bin/env node +/* eslint-disable @typescript-eslint/no-var-requires */ +const commander = require('commander') +const chalk = require('chalk') +const fs = require('fs-extra') +const path = require('path') +const { execSync } = require('child_process') + +// Load environment variables from .env file if it exists +function loadEnvFile() { + try { + const envPath = path.resolve(process.cwd(), '.env') + if (fs.existsSync(envPath)) { + const envContent = fs.readFileSync(envPath, 'utf8') + const envVars = envContent + .split('\n') + .filter((line) => line.trim() && !line.startsWith('#')) + .map((line) => { + const [key, ...valueParts] = line.split('=') + const value = valueParts.join('=').trim() + return { key: key.trim(), value: value.replace(/^["']|["']$/g, '') } + }) + + envVars.forEach(({ key, value }) => { + if (!process.env[key]) { + process.env[key] = value + } + }) + + console.log( + chalk.blue( + `[${new Date().toISOString()}] Loaded environment variables from .env file` + ) + ) + } + } catch (error) { + console.log( + chalk.yellow( + `[${new Date().toISOString()}] Warning: Could not load .env file: ${ + error.message + }` + ) + ) + } +} + +// Load .env file when running locally +loadEnvFile() + +// Configuration +const CONFIG = { + TARGET_TOKEN_FILE: + process.env.TARGET_TOKEN_FILE || + 'src/tokenlists/balancer/tokens/berachain.ts', + ASSETS_DIR: process.env.ASSETS_DIR || 'src/assets/images/tokens', + LOG_FILE: `create-pr-${new Date() + .toISOString() + .replace(/[:.]/g, '-') + .slice(0, 19)}.log`, +} + +// Statistics tracking +const stats = { + newTokens: 0, + newLogos: 0, + changesDetected: false, + prCreated: false, + errors: [], +} + +/** + * Log message with timestamp + */ +function log(message, type = 'info') { + const timestamp = new Date().toISOString() + const logMessage = `[${timestamp}] ${message}` + + switch (type) { + case 'error': + console.error(chalk.red(logMessage)) + stats.errors.push(logMessage) + break + case 'success': + console.log(chalk.green(logMessage)) + break + case 'warning': + console.log(chalk.yellow(logMessage)) + break + default: + console.log(chalk.blue(logMessage)) + } + + // Append to log file + fs.appendFileSync(CONFIG.LOG_FILE, logMessage + '\n') +} + +/** + * Check if running in CI environment + */ +function isCI() { + return process.env.CI === 'true' || process.env.GITHUB_ACTIONS === 'true' +} + +/** + * Configure git for CI environment + */ +function configureGitForCI() { + if (isCI()) { + try { + // Set git user for CI + execSync('git config --global user.name "github-actions[bot]"', { + stdio: 'inherit', + }) + execSync( + 'git config --global user.email "github-actions[bot]@users.noreply.github.com"', + { stdio: 'inherit' } + ) + log('Git configured for CI environment') + } catch (error) { + log( + `Warning: Failed to configure git for CI: ${error.message}`, + 'warning' + ) + } + } +} + +/** + * Check if there are any changes to commit + */ +function hasChanges() { + try { + const result = execSync('git status --porcelain', { encoding: 'utf8' }) + return result.trim().length > 0 + } catch (error) { + log(`Failed to check git status: ${error.message}`, 'error') + return false + } +} + +/** + * Create a new branch with timestamp + */ +function createNewBranch() { + const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19) + const branchName = `feat/tokenlist-update-${timestamp}` + + try { + execSync(`git checkout -b ${branchName}`, { stdio: 'inherit' }) + log(`Created new branch: ${branchName}`) + return branchName + } catch (error) { + log(`Failed to create branch: ${error.message}`, 'error') + return null + } +} + +/** + * Add and commit changes + */ +function commitChanges() { + try { + // Add all changes + execSync('git add .', { stdio: 'inherit' }) + + // Get list of changed files for commit message + const changedFiles = execSync('git diff --cached --name-only', { + encoding: 'utf8', + }) + .trim() + .split('\n') + .filter((file) => file.length > 0) + + const commitMessage = `feat: update token list and assets + +- Updated berachain token list +- Added new token logos +- Generated timestamped backup and logs + +Changed files: +${changedFiles.map((file) => `- ${file}`).join('\n')}` + + execSync(`git commit -m "${commitMessage}"`, { stdio: 'inherit' }) + log('Changes committed successfully') + return true + } catch (error) { + log(`Failed to commit changes: ${error.message}`, 'error') + return false + } +} + +/** + * Get repository information from various sources + */ +function getRepositoryInfo() { + // Try to get from GitHub Actions context first + if (process.env.GITHUB_REPOSITORY) { + const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/') + log(`Using repository info from GITHUB_REPOSITORY: ${owner}/${repo}`) + return { owner, repo } + } + + // Try to get from git remote + try { + const remoteUrl = execSync('git config --get remote.origin.url', { + encoding: 'utf8', + }).trim() + + log(`Remote URL: ${remoteUrl}`) + + // Handle HTTPS format (https://github.com/owner/repo.git) + let repoMatch = remoteUrl.match( + /github\.com[:/]([^/]+)\/([^/]+?)(?:\.git)?$/ + ) + + // If no match, try SSH format (git@host:owner/repo.git) + if (!repoMatch) { + repoMatch = remoteUrl.match(/git@([^:]+):([^/]+)\/([^/]+?)(?:\.git)?$/) + if (repoMatch) { + // SSH format: [host, owner, repo] + const [, host, owner, repo] = repoMatch + log(`Parsed SSH URL: ${owner}/${repo} on ${host}`) + return { owner, repo } + } + } + + if (repoMatch) { + const [, owner, repo] = repoMatch + log(`Parsed HTTPS URL: ${owner}/${repo}`) + return { owner, repo } + } + + log('Could not parse repository information from git remote.', 'error') + return null + } catch (error) { + log( + `Failed to get repository info from git remote: ${error.message}`, + 'error' + ) + return null + } +} + +/** + * Push branch and create PR + */ +function pushAndCreatePR(branchName) { + try { + // Push the branch + execSync(`git push -u origin ${branchName}`, { stdio: 'inherit' }) + log(`Pushed branch ${branchName} to remote`) + + // Get GitHub token from environment + const githubToken = process.env.GITHUB_TOKEN + if (!githubToken) { + log('GITHUB_TOKEN environment variable not found.', 'warning') + log('Please set GITHUB_TOKEN to create PRs automatically.') + log(`Branch pushed: ${branchName}`) + log('Please create the PR manually using the GitHub web interface') + return false + } + + // Get repository info + const repoInfo = getRepositoryInfo() + if (!repoInfo) { + log('Could not determine repository information.', 'error') + log(`Branch pushed: ${branchName}`) + log('Please create the PR manually using the GitHub web interface') + return false + } + + const { owner, repo } = repoInfo + // Always use api.github.com for API calls, regardless of SSH host + const apiUrl = `https://api.github.com/repos/${owner}/${repo}/pulls` + + const prTitle = `feat: Update token list and assets - ${new Date().toLocaleDateString()}` + const prBody = `## Token List Update + +This PR updates the berachain token list and associated logo assets. + +### Changes: +- Updated token list with new addresses +- Added new token logo images +- Generated timestamped backups and logs + +### Files Changed: +- \`src/tokenlists/balancer/tokens/berachain.ts\` - Updated token addresses +- \`src/assets/images/tokens/\` - New logo assets +- Generated backup files and logs + +### Summary: +- New tokens added: ${stats.newTokens} +- New logos downloaded: ${stats.newLogos} +- All changes have been tested and validated + +--- +*Auto-generated by tokenlist update workflow*` + + const prData = { + title: prTitle, + body: prBody, + head: branchName, + base: 'main', + } + + const curlCommand = `curl -X POST "${apiUrl}" \ + -H "Authorization: token ${githubToken}" \ + -H "Accept: application/vnd.github.v3+json" \ + -H "Content-Type: application/json" \ + -d '${JSON.stringify(prData)}'` + + const result = execSync(curlCommand, { encoding: 'utf8' }) + const prResponse = JSON.parse(result) + + if (prResponse.html_url) { + log(`Pull request created successfully: ${prResponse.html_url}`) + stats.prCreated = true + return true + } else { + log(`Failed to create PR: ${result}`, 'error') + return false + } + } catch (error) { + log(`Failed to create PR via API: ${error.message}`, 'error') + log(`Branch pushed: ${branchName}`) + log('Please create the PR manually using the GitHub web interface') + return false + } +} + +/** + * Analyze changes to provide better commit messages + */ +function analyzeChanges() { + try { + // Check for new tokens in berachain.ts + if (fs.existsSync(CONFIG.TARGET_TOKEN_FILE)) { + const content = fs.readFileSync(CONFIG.TARGET_TOKEN_FILE, 'utf8') + const addresses = content.match(/'0x[a-fA-F0-9]{40}'/g) || [] + stats.newTokens = addresses.length + } + + // Check for new logo files by counting only the newly added files + try { + // Use git diff to get files that were added in the last commit + const result = execSync('git diff HEAD~1 --name-only --diff-filter=A', { + encoding: 'utf8', + }) + const newFiles = result + .trim() + .split('\n') + .filter((file) => file.startsWith(CONFIG.ASSETS_DIR)) + stats.newLogos = newFiles.length + } catch (error) { + // Fallback: count all files in directory if git command fails + if (fs.existsSync(CONFIG.ASSETS_DIR)) { + const files = fs.readdirSync(CONFIG.ASSETS_DIR) + stats.newLogos = files.length + } + } + + log(`Analysis: ${stats.newTokens} tokens, ${stats.newLogos} logo files`) + } catch (error) { + log(`Failed to analyze changes: ${error.message}`, 'warning') + } +} + +/** + * Main workflow function + */ +async function createPRWorkflow() { + log('Starting PR creation workflow...') + + // Configure git for CI if needed + configureGitForCI() + + // Clear log file + fs.writeFileSync(CONFIG.LOG_FILE, '') + + try { + // Step 1: Check if there are changes + if (!hasChanges()) { + log('No changes detected. Nothing to commit.', 'warning') + return + } + + stats.changesDetected = true + log('Changes detected, proceeding with PR creation...') + + // Step 2: Analyze changes + analyzeChanges() + + // Step 3: Create new branch + const branchName = createNewBranch() + if (!branchName) { + throw new Error('Failed to create new branch') + } + + // Step 4: Run lint:fix + log('Running lint:fix...') + try { + execSync('npm run lint:fix', { stdio: 'inherit' }) + log('Lint:fix completed successfully') + } catch (error) { + log(`Lint:fix failed: ${error.message}`, 'warning') + log('Continuing with PR creation...') + } + + // Step 5: Commit changes + if (!commitChanges()) { + throw new Error('Failed to commit changes') + } + + // Step 6: Push and create PR + if (!pushAndCreatePR(branchName)) { + log('PR creation workflow completed with warnings', 'warning') + return + } + + log('PR creation workflow completed successfully!', 'success') + } catch (error) { + log(`Workflow failed: ${error.message}`, 'error') + process.exit(1) + } +} + +/** + * Print summary report + */ +function printSummary() { + console.log('\n' + '='.repeat(50)) + console.log(chalk.cyan('CREATE PR SUMMARY')) + console.log('='.repeat(50)) + + if (stats.changesDetected) { + console.log(`Changes detected: ${chalk.green('Yes')}`) + console.log(`New tokens: ${chalk.blue(stats.newTokens)}`) + console.log(`New logos: ${chalk.blue(stats.newLogos)}`) + if (stats.prCreated) { + console.log(`PR created: ${chalk.green('Yes')}`) + } else { + const hasErrors = stats.errors.length > 0 + const hasToken = process.env.GITHUB_TOKEN + if (!hasToken) { + console.log(`PR created: ${chalk.yellow('No - GITHUB_TOKEN not set')}`) + } else if (hasErrors) { + console.log(`PR created: ${chalk.yellow('No - API error occurred')}`) + } else { + console.log(`PR created: ${chalk.yellow('No - Unknown error')}`) + } + } + } else { + console.log(`Changes detected: ${chalk.yellow('No')}`) + console.log('No changes to commit') + } + + if (stats.errors.length > 0) { + console.log(`\n${chalk.red('Errors:')}`) + stats.errors.forEach((error) => console.log(` ${error}`)) + } + + console.log(`\nLog file: ${CONFIG.LOG_FILE}`) + console.log('='.repeat(50)) +} + +/** + * CLI setup + */ +async function init() { + const program = new commander.Command() + .version('1.0.0') + .name('npm run git:pr') + .description('Create a new branch and PR for token list changes') + .option('-f, --force', 'Force PR creation even if no changes detected') + .option('-v, --verbose', 'Enable verbose logging') + .parse(process.argv) + + const options = program.opts() + + if (options.force) { + log('Force mode enabled') + } + + if (options.verbose) { + log('Verbose mode enabled') + } + + await createPRWorkflow() + printSummary() +} + +// Run the script +;(async () => { + await init() +})() diff --git a/src/lib/scripts/fetch-tokenlist.js b/src/lib/scripts/fetch-tokenlist.js new file mode 100644 index 000000000..ec099b9d7 --- /dev/null +++ b/src/lib/scripts/fetch-tokenlist.js @@ -0,0 +1,380 @@ +#! /usr/bin/env node +/* eslint-disable @typescript-eslint/no-var-requires */ +const commander = require('commander') +const chalk = require('chalk') +const fs = require('fs-extra') +const path = require('path') +const { execSync } = require('child_process') + +// Configuration +const CONFIG = { + SOURCE_URL: + process.env.SOURCE_URL || + 'https://raw.githubusercontent.com/burrbear-dev/default-lists/main/src/tokens/mainnet/defaultTokenList.json', + TARGET_TOKEN_FILE: + process.env.TARGET_TOKEN_FILE || + 'src/tokenlists/balancer/tokens/berachain.ts', + ASSETS_DIR: process.env.ASSETS_DIR || 'src/assets/images/tokens', + LOG_FILE: `fetch-tokenlist-${new Date() + .toISOString() + .replace(/[:.]/g, '-') + .slice(0, 19)}.log`, +} + +// Statistics tracking +const stats = { + totalTokens: 0, + successfulDownloads: 0, + failedDownloads: 0, + skippedDownloads: 0, + errors: [], +} + +/** + * Execute curl command and return result + */ +function curlGet(url, options = {}) { + try { + const curlOptions = [ + '-s', // silent mode + '-L', // follow redirects + '--max-time', + '30', // 30 second timeout + '--retry', + '3', // retry 3 times + '--retry-delay', + '2', // wait 2 seconds between retries + ] + + if (options.output) { + curlOptions.push('-o', options.output) + } + + // Build command with proper escaping + const command = `curl ${curlOptions.join(' ')} "${url}"` + const result = execSync(command, { encoding: 'utf8', shell: true }) + + return { success: true, data: result } + } catch (error) { + return { + success: false, + error: error.message, + command: `curl ${options.output ? '-o ' + options.output : ''} "${url}"`, + } + } +} + +/** + * Extract filename from URL + */ +function extractFilenameFromUrl(url) { + try { + const urlObj = new URL(url) + const pathname = urlObj.pathname + return path.basename(pathname) + } catch (error) { + console.error(chalk.red(`Failed to parse URL: ${url}`)) + return null + } +} + +/** + * Validate Ethereum address format + */ +function isValidEthereumAddress(address) { + return /^0x[a-fA-F0-9]{40}$/.test(address) +} + +/** + * Log message with timestamp + */ +function log(message, type = 'info') { + const timestamp = new Date().toISOString() + const logMessage = `[${timestamp}] ${message}` + + switch (type) { + case 'error': + console.error(chalk.red(logMessage)) + stats.errors.push(logMessage) + break + case 'success': + console.log(chalk.green(logMessage)) + break + case 'warning': + console.log(chalk.yellow(logMessage)) + break + default: + console.log(chalk.blue(logMessage)) + } + + // Append to log file + fs.appendFileSync(CONFIG.LOG_FILE, logMessage + '\n') +} + +/** + * Download and parse the source token list using curl + */ +async function fetchTokenList() { + log('Fetching token list from source using curl...') + + try { + const result = curlGet(CONFIG.SOURCE_URL) + + if (!result.success) { + throw new Error(`Failed to fetch token list: ${result.error}`) + } + + const tokenList = JSON.parse(result.data) + + if (!tokenList.tokens || !Array.isArray(tokenList.tokens)) { + throw new Error( + 'Invalid token list format: missing or invalid tokens array' + ) + } + + stats.totalTokens = tokenList.tokens.length + log(`Successfully fetched ${stats.totalTokens} tokens using curl`) + + return tokenList.tokens + } catch (error) { + log(`Failed to fetch token list: ${error.message}`, 'error') + throw error + } +} + +/** + * Process tokens and extract addresses + */ +function processTokens(tokens) { + log('Processing tokens...') + + const tokenAddresses = [] + const validTokens = [] + + for (const token of tokens) { + if (!token.address) { + log(`Token missing address: ${token.symbol || 'unknown'}`, 'warning') + continue + } + + if (!isValidEthereumAddress(token.address)) { + log(`Invalid address format: ${token.address}`, 'warning') + continue + } + + tokenAddresses.push(token.address) + validTokens.push(token) + } + + // Remove duplicates + const uniqueAddresses = [...new Set(tokenAddresses)] + log(`Found ${uniqueAddresses.length} unique valid addresses`) + + return { tokenAddresses: uniqueAddresses, validTokens } +} + +/** + * Update the berachain token list file + */ +async function updateTokenList(tokenAddresses) { + log('Updating berachain token list...') + + try { + const targetFile = path.resolve(CONFIG.TARGET_TOKEN_FILE) + + // Read existing content + let existingContent = '' + let existingAddresses = [] + + if (fs.existsSync(targetFile)) { + existingContent = fs.readFileSync(targetFile, 'utf8') + + // Extract existing addresses from array format + const existingMatch = existingContent.match(/export default \[(.*)\]/s) + + if (existingMatch) { + existingAddresses = existingMatch[1] + .split(',') + .map((addr) => addr.trim().replace(/['"]/g, '')) + .filter((addr) => addr && addr.length > 0) + } + } + + // Merge addresses using Set to ensure uniqueness + const allAddresses = [...new Set([...existingAddresses, ...tokenAddresses])] + + // Create new content + const newContent = `export default [\n${allAddresses + .map((addr) => ` '${addr}'`) + .join(',\n')}\n]` + + // Backup original file BEFORE any changes + if (fs.existsSync(targetFile)) { + const timestamp = new Date() + .toISOString() + .replace(/[:.]/g, '-') + .slice(0, 19) + const backupFile = `${targetFile}.backup-${timestamp}` + fs.copyFileSync(targetFile, backupFile) + log(`Backup created: ${path.basename(backupFile)}`) + } + + // Write new content + fs.writeFileSync(targetFile, newContent) + + const newAddresses = allAddresses.length - existingAddresses.length + log( + `Successfully updated token list with ${allAddresses.length} addresses (${existingAddresses.length} existing + ${newAddresses} new)` + ) + } catch (error) { + log(`Failed to update token list: ${error.message}`, 'error') + throw error + } +} + +/** + * Download logo assets using curl with better path handling + */ +async function downloadAssets(tokens, force = false, options = {}) { + log('Starting asset downloads using curl...') + + // Ensure assets directory exists + fs.ensureDirSync(path.resolve(CONFIG.ASSETS_DIR)) + + for (const token of tokens) { + if (!token.logoURI) { + log(`Token ${token.symbol || token.address} missing logoURI`, 'warning') + continue + } + + // Extract file extension from original URL + const originalFilename = extractFilenameFromUrl(token.logoURI) + if (!originalFilename) { + log(`Could not extract filename from URL: ${token.logoURI}`, 'warning') + continue + } + + // Get file extension from original filename + const fileExtension = path.extname(originalFilename) + + // Use token address as filename with original extension (lowercase) + const filename = `${token.address.toLowerCase()}${fileExtension}` + const targetPath = path.resolve(CONFIG.ASSETS_DIR, filename) + + // Debug logging for file extension handling + if (options.verbose) { + log( + `Processing: ${ + token.symbol || token.address + } - Original: ${originalFilename}, Extension: ${fileExtension}, Target: ${filename}` + ) + } + + // Skip if file already exists (unless force is enabled) + if (!force && fs.existsSync(targetPath)) { + log(`Skipping existing file: ${filename}`) + stats.skippedDownloads++ + continue + } else if (!force) { + log(`File does not exist, will download: ${filename}`) + } + + try { + // Use curl with proper path escaping + const curlCommand = `curl -s -L --max-time 30 --retry 3 --retry-delay 2 -o "${targetPath}" "${token.logoURI}"` + execSync(curlCommand, { shell: true }) + + log(`Downloaded: ${originalFilename} -> ${filename}`) + stats.successfulDownloads++ + } catch (error) { + log(`Failed to download ${filename}: ${error.message}`, 'error') + stats.failedDownloads++ + } + } +} + +/** + * Print summary report + */ +function printSummary() { + console.log('\n' + '='.repeat(50)) + console.log(chalk.cyan('FETCH TOKENLIST SUMMARY')) + console.log('='.repeat(50)) + console.log(`Total tokens processed: ${stats.totalTokens}`) + console.log(`Successful downloads: ${chalk.green(stats.successfulDownloads)}`) + console.log(`Failed downloads: ${chalk.red(stats.failedDownloads)}`) + console.log(`Skipped downloads: ${chalk.yellow(stats.skippedDownloads)}`) + console.log(`Token list updated successfully!`) + + if (stats.errors.length > 0) { + console.log(`\n${chalk.red('Errors:')}`) + stats.errors.forEach((error) => console.log(` ${error}`)) + } + + console.log(`\nLog file: ${CONFIG.LOG_FILE}`) + console.log('='.repeat(50)) +} + +/** + * Main workflow function + */ +async function integrateTokenList(options = {}) { + log('Starting token list integration workflow...') + + try { + // Clear log file + fs.writeFileSync(CONFIG.LOG_FILE, '') + + // Step 1: Fetch token list using curl + const tokens = await fetchTokenList() + + // Step 2: Process tokens + const { tokenAddresses, validTokens } = processTokens(tokens) + + // Step 3: Update token list file + await updateTokenList(tokenAddresses) + + // Step 4: Download logo assets + await downloadAssets(validTokens, options.force, options) + + // Step 5: Print summary + printSummary() + + log('Token list integration completed successfully!', 'success') + } catch (error) { + log(`Workflow failed: ${error.message}`, 'error') + process.exit(1) + } +} + +/** + * CLI setup + */ +async function init() { + const program = new commander.Command() + .version('1.0.0') + .name('npm run tokenlist:fetch') + .description( + 'Fetch and integrate tokens from default-lists repository using curl' + ) + .option('-f, --force', 'Force download even if files exist') + .option('-v, --verbose', 'Enable verbose logging') + .parse(process.argv) + + const options = program.opts() + + if (options.force) { + log('Force mode enabled - will overwrite existing files') + } + + if (options.verbose) { + log('Verbose mode enabled') + } + + await integrateTokenList(options) +} + +// Run the script +;(async () => { + await init() +})() diff --git a/src/tokenlists/balancer/tokens/berachain.ts b/src/tokenlists/balancer/tokens/berachain.ts index 9bae2362e..bda17db00 100644 --- a/src/tokenlists/balancer/tokens/berachain.ts +++ b/src/tokenlists/balancer/tokens/berachain.ts @@ -64,5 +64,5 @@ export default [ '0xB064c58a63EBf8D03CD7A063e9e5e1398CdeA138', '0x56b4930057bcF3Dc9b8f6F17FF64dD54698598e8', '0x23a9dfBc5f489311E891118a587C5367cc992a40', - '0x3e5D85dD846B4Ca5A12Eb19eBd21d2798b724c36', -] + '0x3e5D85dD846B4Ca5A12Eb19eBd21d2798b724c36' +] \ No newline at end of file From f6addb802a1cf3532fd9339dd97fec7087abe3b4 Mon Sep 17 00:00:00 2001 From: Mr Morris Date: Tue, 5 Aug 2025 13:33:50 +0800 Subject: [PATCH 3/4] Merge branch 'main', remote-tracking branch 'origin' into feat/fetch-tokenlist-action --- generated/balancer.tokenlist.json | 127 ++++++++++++------ ...09706a6c66CA549ff0cB464de88231DDBe213B.png | Bin 19988 -> 0 bytes ...09706a6c66ca549ff0cb464de88231ddbe213b.png | Bin 19988 -> 0 bytes ...157DBAbb84e3BBFE68C349d0d44E48AE7B5AD2.png | Bin 13863 -> 0 bytes ...157dbabb84e3bbfe68c349d0d44e48ae7b5ad2.png | Bin 13863 -> 0 bytes src/lib/fetchers/existing.ts | 31 +++-- 6 files changed, 102 insertions(+), 56 deletions(-) delete mode 100644 src/assets/images/tokens/0x1509706a6c66CA549ff0cB464de88231DDBe213B.png delete mode 100644 src/assets/images/tokens/0x1509706a6c66ca549ff0cb464de88231ddbe213b.png delete mode 100644 src/assets/images/tokens/0x20157DBAbb84e3BBFE68C349d0d44E48AE7B5AD2.png delete mode 100644 src/assets/images/tokens/0x20157dbabb84e3bbfe68c349d0d44e48ae7b5ad2.png diff --git a/generated/balancer.tokenlist.json b/generated/balancer.tokenlist.json index c9d4d087a..e7454acb2 100644 --- a/generated/balancer.tokenlist.json +++ b/generated/balancer.tokenlist.json @@ -3,7 +3,7 @@ "version": { "major": 1, "minor": 0, - "patch": 353 + "patch": 354 }, "keywords": [ "Balancer", @@ -17,7 +17,7 @@ "Swap" ], "logoURI": "https://raw.githubusercontent.com/balancer/pebbles/master/images/pebbles-pad.256w.png", - "timestamp": "2025-07-28T07:51:39.897Z", + "timestamp": "2025-08-05T03:34:37.901Z", "tokens": [ { "chainId": 999, @@ -643,287 +643,328 @@ "address": "0xbdaB22CD9a4BcaB42Fe5Cf17e523A029cbe903Dc", "name": "Boeing Company Tokenized by Sailing", "symbol": "BAs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0xbdab22cd9a4bcab42fe5cf17e523a029cbe903dc.svg" }, { "chainId": 80094, "address": "0x69B88c116cb7cBBC5B0f85CBeA1Be91DF40b56E1", "name": "Lockheed Martin Corporation Tokenized by Sailing", "symbol": "LMTs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x69b88c116cb7cbbc5b0f85cbea1be91df40b56e1.svg" }, { "chainId": 80094, "address": "0x24BC5c9a529024e2B670B5b8166993d4ECaefE22", "name": "Coinbase Global Inc Tokenized by Sailing", "symbol": "COINs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x24bc5c9a529024e2b670b5b8166993d4ecaefe22.svg" }, { "chainId": 80094, "address": "0x4E0c8b91183374D3aB5eE691b0F59F1a4A671D80", "name": "Warner Bros. Discovery Inc Tokenized by Sailing", "symbol": "WBDs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x4e0c8b91183374d3ab5ee691b0f59f1a4a671d80.svg" }, { "chainId": 80094, "address": "0xd9c5b692ed20fA4207f2da1a3db3450828d90a46", "name": "YieldMax Universe Fund of Option Income ETFs Tokenized by Sailing", "symbol": "YMAXs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0xd9c5b692ed20fa4207f2da1a3db3450828d90a46.svg" }, { "chainId": 80094, "address": "0x25f838Dc9DFC8F4Ac5bF957c475F90860Dde3460", "name": "ARK Innovation ETF Tokenized By Sailing", "symbol": "ARKKs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x25f838dc9dfc8f4ac5bf957c475f90860dde3460.svg" }, { "chainId": 80094, "address": "0x17A238d9a31fFF2f1078C8e1E4b2aC6B84E3A068", "name": "Paramount Global Tokenized by Sailing", "symbol": "PARAs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x17a238d9a31fff2f1078c8e1e4b2ac6b84e3a068.svg" }, { "chainId": 80094, "address": "0x6379BB654aA1B63bC602DBC947f60305AB9d6467", "name": "YieldMax Short COIN Option Income Strategy ETF Tokenized by Sailing", "symbol": "FIATs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x6379bb654aa1b63bc602dbc947f60305ab9d6467.svg" }, { "chainId": 80094, "address": "0x39890d84ac4a0E94d486068486f6513470E541b4", "name": "Roundhill S&P 500 0DTE Covered Call Strategy ETF Tokenized by Sailing", "symbol": "XDTEs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x39890d84ac4a0e94d486068486f6513470e541b4.svg" }, { "chainId": 80094, "address": "0x77D5cbfE85b3DfB6dB3e63d9392829f4C34FFA86", "name": "Apple Inc Tokenized By Sailing", "symbol": "AAPLs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x77d5cbfe85b3dfb6db3e63d9392829f4c34ffa86.svg" }, { "chainId": 80094, "address": "0xca72Cf92768bc1ABEF4b14cFD3E096c8B5f54696", "name": "Tesla Inc Tokenized By Sailing", "symbol": "TSLAs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0xca72cf92768bc1abef4b14cfd3e096c8b5f54696.svg" }, { "chainId": 80094, "address": "0x30F8a2fE5Ea2eb2E64b26CcbD33b690Ec4EFe723", "name": "Amazon.com Inc Tokenized By Sailing", "symbol": "AMZNs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x30f8a2fe5ea2eb2e64b26ccbd33b690ec4efe723.svg" }, { "chainId": 80094, "address": "0xa8e8EFB06Ff91e8c5BEeD849417945d39F3f22Eb", "name": "SPDR S&P 500 ETF Trust Tokenized By Sailing", "symbol": "SPYs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0xa8e8efb06ff91e8c5beed849417945d39f3f22eb.svg" }, { "chainId": 80094, "address": "0x70fA06e485285B6873B0A93189B613E2d85dc5e2", "name": "GameStop Corp Tokenized By Sailing", "symbol": "GMEs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x70fa06e485285b6873b0a93189b613e2d85dc5e2.svg" }, { "chainId": 80094, "address": "0x59dEA303501B18c058882096b781B89B836aA12C", "name": "Grupo Supervielle SA Tokenized By Sailing", "symbol": "SUPVs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x59dea303501b18c058882096b781b89b836aa12c.svg" }, { "chainId": 80094, "address": "0xbc2CeE93341C0e10d2fd5ED502F17AF88CFa1E7B", "name": "YPF S.A. Tokenized by Sailing", "symbol": "YPFs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0xbc2cee93341c0e10d2fd5ed502f17af88cfa1e7b.svg" }, { "chainId": 80094, "address": "0xf79d63c21d7C69f1097114716dDB76844169B363", "name": "YieldMax COIN Option Income Strategy ETF Tokenized by Sailing", "symbol": "CONYs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0xf79d63c21d7c69f1097114716ddb76844169b363.svg" }, { "chainId": 80094, "address": "0xac894A14e3D2CE9E89AefD209b0a38c12AdcF624", "name": "MercadoLibre Inc. Tokenized by Sailing", "symbol": "MELIs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0xac894a14e3d2ce9e89aefd209b0a38c12adcf624.svg" }, { "chainId": 80094, "address": "0x9933Bb212C36860EF22915D44b74a8Cf1ffd45BB", "name": "NVIDIA Corporation Tokenized by Sailing", "symbol": "NVDAs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x9933bb212c36860ef22915d44b74a8cf1ffd45bb.svg" }, { "chainId": 80094, "address": "0xB35ffDB091e2e4361d907d5AA7dB3C150846a3e1", "name": "Meta Platforms Inc Tokenized By Sailing", "symbol": "METAs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0xb35ffdb091e2e4361d907d5aa7db3c150846a3e1.svg" }, { "chainId": 80094, "address": "0x849F0393632746AC5e8426b53d78266d1d8ac1cd", "name": "Circle Internet Group Inc Tokenized by Sailing", "symbol": "CRCLs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x849f0393632746ac5e8426b53d78266d1d8ac1cd.svg" }, { "chainId": 80094, "address": "0x8f7F14481a9c0943836898F825BFb5494b7828Db", "name": "DLocal Ltd Tokenized By Sailing", "symbol": "DLOs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x8f7f14481a9c0943836898f825bfb5494b7828db.svg" }, { "chainId": 80094, "address": "0x08bc8b0c234390a40Aa305277355fd1A1819f10E", "name": "Upstart Holdings Inc Tokenized by Sailing", "symbol": "UPSTs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x08bc8b0c234390a40aa305277355fd1a1819f10e.svg" }, { "chainId": 80094, "address": "0x7542d8347913fA8eE3090fFf38544CDF694dd5F9", "name": "NEOS S&P 500 High Income ETF Tokenized by Sailing", "symbol": "SPYIs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x7542d8347913fa8ee3090fff38544cdf694dd5f9.svg" }, { "chainId": 80094, "address": "0x3a33A4Fa4443A5fd4aa89349BB3D2bc1D644478b", "name": "AMC Entertainment Holdings Inc Tokenized By Sailing", "symbol": "AMCs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x3a33a4fa4443a5fd4aa89349bb3d2bc1d644478b.svg" }, { "chainId": 80094, "address": "0x12855A68877A95482CEA16a39AaA25009ac6E396", "name": "Invesco QQQ Trust Tokenized By Sailing", "symbol": "QQQs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x12855a68877a95482cea16a39aaa25009ac6e396.svg" }, { "chainId": 80094, "address": "0xB7ca08EEF00a58489A670a1E22D4c6D01579db2F", "name": "Microstrategy Inc Tokenized By Sailing", "symbol": "MSTRs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0xb7ca08eef00a58489a670a1e22d4c6d01579db2f.svg" }, { "chainId": 80094, "address": "0xe9C99da8395C57Bd08830c547a9c5d57A23C5cB3", "name": "Ginkgo Bioworks Inc Tokenized By Sailing", "symbol": "DNAs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0xe9c99da8395c57bd08830c547a9c5d57a23c5cb3.svg" }, { "chainId": 80094, "address": "0x8dcCB687201955299E7bb1da47664313ff6759dd", "name": "The Walt Disney Company Tokenized By Sailing", "symbol": "DISs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x8dccb687201955299e7bb1da47664313ff6759dd.svg" }, { "chainId": 80094, "address": "0x7195A0Bc1e8A8b29Cd426D545522d38e698120Bf", "name": "Goldman Sachs Physical Gold ETF Tokenized By Sailing", "symbol": "AAAUs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x7195a0bc1e8a8b29cd426d545522d38e698120bf.svg" }, { "chainId": 80094, "address": "0xD2A26cF1d3aB11799AFd3E2461eC7ea0D62eEC6C", "name": "Airbnb Inc Tokenized By Sailing", "symbol": "ABNBs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0xd2a26cf1d3ab11799afd3e2461ec7ea0d62eec6c.svg" }, { "chainId": 80094, "address": "0x42BECBE61383ce454db886e2A2802eC88ddC6beb", "name": "Palantir Technologies Inc Tokenized by Sailing", "symbol": "PLTRs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x42becbe61383ce454db886e2a2802ec88ddc6beb.svg" }, { "chainId": 80094, "address": "0x4D9CeB1a0baA95b1Ae6198c152F44AB4e919824D", "name": "Dynatrace Inc Tokenized By Sailing", "symbol": "DTs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x4d9ceb1a0baa95b1ae6198c152f44ab4e919824d.svg" }, { "chainId": 80094, "address": "0x43456286034E248EFC1471687fA7e7fF6aC4Bd5a", "name": "McDonalds Tokenized By Sailing", "symbol": "MCDs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x43456286034e248efc1471687fa7e7ff6ac4bd5a.svg" }, { "chainId": 80094, "address": "0xB1fef1bcf006604c382200168932f00812Ac9FF0", "name": "The Goldman Sachs Group Inc Tokenized by Sailing", "symbol": "GSs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0xb1fef1bcf006604c382200168932f00812ac9ff0.svg" }, { "chainId": 80094, "address": "0x6C353a03d1177b5bA0C4Da63dA77341433015F86", "name": "Uber Technologies Inc Tokenized by Sailing", "symbol": "UBERs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x6c353a03d1177b5ba0c4da63da77341433015f86.svg" }, { "chainId": 80094, "address": "0x682BedD46D9d308eF35eaa7F92430e8A57c73792", "name": "BlackRock Inc Tokenized by Sailing", "symbol": "BLKs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x682bedd46d9d308ef35eaa7f92430e8a57c73792.svg" }, { "chainId": 80094, "address": "0xB064c58a63EBf8D03CD7A063e9e5e1398CdeA138", "name": "BYD Company Limited Tokenized by Sailing", "symbol": "BYDs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0xb064c58a63ebf8d03cd7a063e9e5e1398cdea138.svg" }, { "chainId": 80094, "address": "0x56b4930057bcF3Dc9b8f6F17FF64dD54698598e8", "name": "Microsoft Corporation Tokenized by Sailing", "symbol": "MSFTs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x56b4930057bcf3dc9b8f6f17ff64dd54698598e8.svg" }, { "chainId": 80094, "address": "0x23a9dfBc5f489311E891118a587C5367cc992a40", "name": "United States Natural Gas Fund LP Tokenized by Sailing", "symbol": "UNGs", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x23a9dfbc5f489311e891118a587c5367cc992a40.svg" }, { "chainId": 80094, "address": "0x3e5D85dD846B4Ca5A12Eb19eBd21d2798b724c36", "name": "Sailing", "symbol": "SAIL", - "decimals": 18 + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/0x3e5d85dd846b4ca5a12eb19ebd21d2798b724c36.svg" } ] } \ No newline at end of file diff --git a/src/assets/images/tokens/0x1509706a6c66CA549ff0cB464de88231DDBe213B.png b/src/assets/images/tokens/0x1509706a6c66CA549ff0cB464de88231DDBe213B.png deleted file mode 100644 index bbb3caf016508f8c1074872abcac97bb5f3c3c73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19988 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 diff --git a/src/assets/images/tokens/0x1509706a6c66ca549ff0cb464de88231ddbe213b.png b/src/assets/images/tokens/0x1509706a6c66ca549ff0cb464de88231ddbe213b.png deleted file mode 100644 index bbb3caf016508f8c1074872abcac97bb5f3c3c73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19988 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 diff --git a/src/assets/images/tokens/0x20157DBAbb84e3BBFE68C349d0d44E48AE7B5AD2.png b/src/assets/images/tokens/0x20157DBAbb84e3BBFE68C349d0d44E48AE7B5AD2.png deleted file mode 100644 index f206ec6f626abb13d7c676192bffdc4c623ebed1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13863 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 Dc-igd diff --git a/src/assets/images/tokens/0x20157dbabb84e3bbfe68c349d0d44e48ae7b5ad2.png b/src/assets/images/tokens/0x20157dbabb84e3bbfe68c349d0d44e48ae7b5ad2.png deleted file mode 100644 index f206ec6f626abb13d7c676192bffdc4c623ebed1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13863 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 Dc-igd diff --git a/src/lib/fetchers/existing.ts b/src/lib/fetchers/existing.ts index a958d3c86..53ec70762 100644 --- a/src/lib/fetchers/existing.ts +++ b/src/lib/fetchers/existing.ts @@ -50,25 +50,30 @@ function fetchLocalTokenIcons(network: Network): PartialTokenInfoMap { const localImages: string[] = fs.readdirSync('src/assets/images/tokens') localImages.map((imageName) => { - let address: string - const fileName = imageName.split('.png')[0] + const match = imageName.match(/^(.+)\.(png|svg)$/) + if (!match) return - if (!isAddress(fileName)) { + const fileName = match[1] + const fileExtension = match[2] + + if (fileName && !isAddress(fileName)) { const [_network, _address] = (fileName as string).split('_') if (_network === network && isAddress(_address)) { - address = _address - } else { - return + tokenIcons.push({ + address: getAddress(_address), + logoURI: `https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/${( + fileName as string + ).toLowerCase()}.${fileExtension}`, + }) } } else { - address = fileName + tokenIcons.push({ + address: getAddress(fileName), + logoURI: `https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/${( + fileName as string + ).toLowerCase()}.${fileExtension}`, + }) } - - tokenIcons.push({ - address: getAddress(address), - // eslint-disable-next-line max-len - logoURI: `https://raw.githubusercontent.com/burrbear-dev/tokenlists/main/src/assets/images/tokens/${fileName.toLowerCase()}.png`, - }) }) return convertTokenInfoToMap(tokenIcons as TokenInfo[]) From 55f2d1cacd88fd3a576f07fcde8094750d70a0e8 Mon Sep 17 00:00:00 2001 From: Mr Morris Date: Thu, 14 Aug 2025 09:04:08 +0800 Subject: [PATCH 4/4] fix: ignore output ts.backup files --- .gitignore | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 65beef446..109ceffee 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,6 @@ dist .env .idea/** - - -*.backup* +# Tokenlist scripts output +*ts.backup* fetch-tokenlist*.log \ No newline at end of file