pay-svr/src/config/config.ts
2023-07-05 11:29:32 +08:00

61 lines
1.9 KiB
TypeScript

import * as dotenv from 'dotenv'
import assert from 'assert'
const NODE_ENV = process.env.NODE_ENV || 'development'
dotenv.config()
let path
switch (process.env.NODE_ENV) {
case 'test':
path = `${__dirname}/../../.env.development`
break
case 'production':
path = `${__dirname}/../../.env.production`
break
default:
path = `${__dirname}/../../.env.development`
}
dotenv.config({ path: path, debug: NODE_ENV === 'development' })
assert(process.env.API_TOKEN_SECRET_PRIVATE, 'API_TOKEN_SECRET_PRIVATE not set')
assert(process.env.API_TOKEN_SECRET_PUBLIC, 'API_TOKEN_SECRET_PUBLIC not set')
assert(process.env.API_TOKEN_EXPIRESIN, 'API_TOKEN_EXPIRESIN not set')
const privateKey = `
-----BEGIN PRIVATE KEY-----
${process.env.API_TOKEN_SECRET_PRIVATE}
-----END PRIVATE KEY-----
`
const publicKey = `
-----BEGIN PUBLIC KEY-----
${process.env.API_TOKEN_SECRET_PUBLIC}
-----END PUBLIC KEY-----
`
let networks = process.env.AVAILABLE_NETWORK.split('|')
let tokenList = process.env.AVAILABLE_TOKENS.split('|')
let chainCfgs = {}
for (let network of networks) {
let data = { chainId: 0, wallet: '', tokens: {} }
data.chainId = parseInt(process.env[`${network.toUpperCase()}_CHAIN_ID`])
data.wallet = process.env[`${network.toUpperCase()}_WALLET`]
for (let sub of tokenList) {
data.tokens[`${sub}_dev`] = process.env[`${network.toUpperCase()}_DEV_${sub.toUpperCase()}_ADDRESS`]
data.tokens[`${sub}_release`] = process.env[`${network.toUpperCase()}_RELEASE_${sub.toUpperCase()}_ADDRESS`]
}
chainCfgs[network] = data
}
let baseConfig = {
api: {
port: parseInt(process.env.API_PORT),
host: process.env.API_HOST,
token_secret_private: privateKey,
token_secret_public: publicKey,
token_expiresIn: process.env.API_TOKEN_EXPIRESIN,
},
db_main: process.env.DB_MAIN,
db_pay: process.env.DB_PAY,
chainCfgs: chainCfgs,
}
export default baseConfig