| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- #!/usr/bin/env tsx
- /**
- * 简化环境变量系统演示
- * 展示如何使用新的 SimpleEnv 和 Config 系统
- */
- import { SimpleEnv, EnvKeys, Config, SmartAccountDiscovery } from '../src/config/simpleEnv.js'
- async function simpleEnvDemo() {
- console.log('🌟 简化环境变量系统演示')
- console.log('='.repeat(50))
- try {
- // 1. 基础环境变量读取
- console.log('\n📋 第一步: 基础配置读取...')
- console.log(`环境: ${Config.nodeEnv()} ${Config.isDev() ? '(开发)' : '(生产)'}`)
- console.log(`日志级别: ${Config.logLevel()}`)
- // 2. 交易所配置读取
- console.log('\n🏦 第二步: 交易所配置读取...')
- // Aster 配置
- console.log('🎯 Aster DEX:')
- console.log(` WebSocket: ${Config.aster.wsUrl} (固定)`)
- console.log(` HTTP Base: ${Config.aster.httpBase} (固定)`)
- console.log(` 订阅交易对: ${Config.aster.subscribeSymbols.join(', ')} (固定)`)
- console.log(` 用户地址: ${Config.aster.orderUser() ? '已设置 ✅' : '未设置 ❌'}`)
- console.log(` API密钥: ${Config.aster.apiKey() ? '已设置 ✅' : '未设置 ❌'}`)
- // Pacifica 配置
- console.log('\n🌊 Pacifica DEX:')
- console.log(` Base URL: ${Config.pacifica.baseUrl} (固定)`)
- console.log(` WebSocket: ${Config.pacifica.wsUrl} (固定)`)
- console.log(` 交易对: ${Config.pacifica.symbol} (固定)`)
- console.log(` 测试订单: ${Config.pacifica.enableTestOrder() ? '启用' : '禁用'}`)
- console.log(` 测试数量: ${Config.pacifica.testQty()}`)
- console.log(` 账户: ${Config.pacifica.account() ? '已设置 ✅' : '未设置 ❌'}`)
- // 3. 智能账户发现
- console.log('\n🔍 第三步: 智能账户发现...')
- const discoveredAccounts = SmartAccountDiscovery.discoverAll()
- console.log(`📊 发现结果:`)
- console.log(` Pacifica: ${discoveredAccounts.pacifica.length} 个账户`)
- console.log(` Aster: ${discoveredAccounts.aster.length} 个账户`)
- console.log(` Binance: ${discoveredAccounts.binance.length} 个账户`)
- // 显示 Pacifica 账户详情
- if (discoveredAccounts.pacifica.length > 0) {
- console.log('\n🌊 Pacifica 账户详情:')
- discoveredAccounts.pacifica.forEach((account, index) => {
- console.log(` ${index + 1}. ${account.name}`)
- console.log(
- ` 账户: ${account.account.substring(0, 8)}...${account.account.substring(account.account.length - 4)}`,
- )
- console.log(
- ` 私钥: ${account.privateKey.substring(0, 8)}...${account.privateKey.substring(
- account.privateKey.length - 4,
- )}`,
- )
- })
- }
- // 显示 Aster 账户详情
- if (discoveredAccounts.aster.length > 0) {
- console.log('\n🎯 Aster 账户详情:')
- discoveredAccounts.aster.forEach((account, index) => {
- console.log(` ${index + 1}. ${account.name}`)
- console.log(` 用户: ${account.user.substring(0, 8)}...${account.user.substring(account.user.length - 4)}`)
- if (account.signer) {
- console.log(
- ` 签名者: ${account.signer.substring(0, 8)}...${account.signer.substring(account.signer.length - 4)}`,
- )
- }
- console.log(
- ` 私钥: ${account.privateKey.substring(0, 8)}...${account.privateKey.substring(
- account.privateKey.length - 4,
- )}`,
- )
- })
- }
- // 4. 高级环境变量操作
- console.log('\n🔧 第四步: 高级环境变量操作...')
- // 布尔值读取
- const testOrderEnabled = SimpleEnv.bool('PACIFICA_ENABLE_TEST_ORDER')
- console.log(`测试订单启用: ${testOrderEnabled}`)
- // 数组读取
- const symbols = SimpleEnv.array('ASTER_SUBSCRIBE_SYMBOLS')
- console.log(`订阅交易对数组: [${symbols.join(', ')}]`)
- // 数字读取
- const testQty = SimpleEnv.number('PACIFICA_TEST_QTY', 0.001)
- console.log(`测试数量: ${testQty}`)
- // 带前缀的环境变量读取
- const asterVars = SimpleEnv.getPrefix('ASTER_')
- console.log(`\nASTER_ 前缀变量数量: ${Object.keys(asterVars).length}`)
- // 5. 配置验证
- console.log('\n✅ 第五步: 配置验证...')
- const validation = validateConfiguration()
- if (validation.isValid) {
- console.log('🟢 配置验证通过')
- } else {
- console.log('🔴 配置验证失败:')
- validation.errors.forEach(error => console.log(` ❌ ${error}`))
- }
- if (validation.warnings.length > 0) {
- console.log('⚠️ 配置警告:')
- validation.warnings.forEach(warning => console.log(` ⚠️ ${warning}`))
- }
- // 6. 完整配置导出
- if (process.argv.includes('--show-all')) {
- console.log('\n📄 完整配置:')
- console.log(JSON.stringify(Config.getAll(), null, 2))
- }
- console.log('\n🎉 简化环境变量系统演示完成!')
- console.log('\n💡 主要优势:')
- console.log(' 🔹 统一的配置访问接口')
- console.log(' 🔹 自动类型转换 (布尔、数字、数组、JSON)')
- console.log(' 🔹 智能账户自动发现')
- console.log(' 🔹 缓存机制提升性能')
- console.log(' 🔹 预定义键避免字符串硬编码')
- console.log(' 🔹 简洁的 API 设计')
- } catch (error) {
- console.error('❌ 演示失败:', error)
- }
- }
- /**
- * 配置验证函数
- */
- function validateConfiguration(): {
- isValid: boolean
- errors: string[]
- warnings: string[]
- } {
- const result = {
- isValid: true,
- errors: [] as string[],
- warnings: [] as string[],
- }
- // 检查基础配置
- if (!Config.nodeEnv()) {
- result.errors.push('NODE_ENV 未设置')
- }
- // 检查 Aster 配置
- if (!Config.aster.orderUser()) {
- result.warnings.push('Aster 用户地址未设置')
- }
- if (!Config.aster.apiKey()) {
- result.warnings.push('Aster API 密钥未设置')
- }
- // 检查 Pacifica 配置
- if (!Config.pacifica.account()) {
- result.warnings.push('Pacifica 账户未设置')
- }
- if (!Config.pacifica.accountPrivateKey()) {
- result.warnings.push('Pacifica 账户私钥未设置')
- }
- // 检查发现的账户
- const discovered = SmartAccountDiscovery.discoverAll()
- const totalAccounts = discovered.pacifica.length + discovered.aster.length + discovered.binance.length
- if (totalAccounts === 0) {
- result.warnings.push('没有发现任何可用账户')
- }
- result.isValid = result.errors.length === 0
- return result
- }
- /**
- * 显示使用示例
- */
- function showUsageExamples() {
- console.log('\n💡 简化环境变量 API 使用示例:')
- console.log(`
- // 1. 基础用法
- import { SimpleEnv, Config } from '../src/config/simpleEnv'
- // 获取字符串
- const nodeEnv = SimpleEnv.get('NODE_ENV', 'development')
- // 获取必需值 (不存在则抛错)
- const requiredKey = SimpleEnv.require('REQUIRED_KEY')
- // 获取布尔值
- const isEnabled = SimpleEnv.bool('FEATURE_ENABLED', false)
- // 获取数字
- const port = SimpleEnv.number('PORT', 3000)
- // 获取数组
- const symbols = SimpleEnv.array('SYMBOLS', ['BTC', 'ETH'])
- // 2. 使用预定义配置
- console.log('环境:', Config.nodeEnv())
- console.log('是否开发:', Config.isDev())
- console.log('Aster URL:', Config.aster.wsUrl())
- console.log('Pacifica URL:', Config.pacifica.baseUrl())
- // 3. 智能账户发现
- import { SmartAccountDiscovery } from '../src/config/simpleEnv'
- const accounts = SmartAccountDiscovery.discoverAll()
- console.log('发现的账户:', accounts)
- `)
- }
- // 运行演示
- if (import.meta.url === `file://${process.argv[1]}`) {
- if (process.argv.includes('--help') || process.argv.includes('-h')) {
- showUsageExamples()
- } else {
- simpleEnvDemo()
- }
- }
|