|
1 | 1 | import * as path from 'path'; |
2 | 2 | import { Config } from './types/config'; |
3 | 3 | import { version } from '../package.json'; |
| 4 | +import env from 'env-var'; |
4 | 5 |
|
5 | 6 | const PKGROOT = path.join( |
6 | 7 | __dirname, |
7 | 8 | __dirname.includes('dist') ? '../..' : '..' |
8 | 9 | ); |
9 | 10 | export const config: Config = { |
10 | | - token: process.env.RSSBOT_TOKEN || '', |
| 11 | + token: env.get('RSSBOT_TOKEN').required().asString(), |
11 | 12 | proxy: { |
12 | | - protocol: process.env.PROXY_PROTOCOL || null, |
13 | | - host: process.env.PROXY_HOST || null, |
14 | | - port: process.env.PROXY_PORT || null |
| 13 | + protocol: env.get('PROXY_PROTOCOL').asString(), |
| 14 | + host: env.get('PROXY_HOST').asString(), |
| 15 | + port: env.get('PROXY_PORT').asString() |
15 | 16 | }, |
16 | 17 | db_path: |
17 | 18 | (process.env.DYNO // heroku |
18 | 19 | ? process.env.DATABASE_URL |
19 | 20 | : process.env.RSSBOT_DB_PATH) || |
20 | 21 | path.join(PKGROOT, 'data', 'database.db'), // /dist/source/config.js -> /data/ |
21 | | - lang: process.env.RSSBOT_LANG || 'zh-cn', |
22 | | - item_num: parseInt(process.env.RSSBOT_ITEM_NUM) || 10, |
23 | | - fetch_gap: process.env.RSSBOT_FETCH_GAP || '5m', |
24 | | - strict_ttl: |
25 | | - process.env.RSSBOT_STRICT_TTL !== '0' && |
26 | | - process.env.RSSBOT_STRICT_TTL !== 'false', |
27 | | - http_cache: !!process.env.RSSBOT_HTTP_CACHE || false, |
28 | | - notify_error_count: parseInt(process.env.NOTIFY_ERR_COUNT) || 5, |
29 | | - view_all: !!process.env.RSSBOT_VIEW_ALL || false, |
30 | | - UA: |
31 | | - process.env.RSSBOT_UA || |
32 | | - `Mozilla/5.0 NodeRSSBot v${version}(https://github.com/fengkx/NodeRSSBot)`, |
33 | | - not_send: !!process.env.NOT_SEND || false, // just for debug use |
34 | | - concurrency: parseInt(process.env.RSSBOT_CONCURRENCY) || 200, |
35 | | - delete_on_err_send: |
36 | | - process.env.DELETE_ON_ERR_SEND !== '0' && |
37 | | - process.env.DELETE_ON_ERR_SEND !== 'false', // block and chat not found |
38 | | - resp_timeout: parseInt(process.env.RSSBOT_RESP_TIMEOUT) || 40, |
39 | | - allow_list: process.env.RSSBOT_ALLOW_LIST |
40 | | - ? process.env.RSSBOT_ALLOW_LIST.split(',').map((id) => Number(id)) |
41 | | - : null, |
42 | | - auto_migrate: |
43 | | - process.env.AUTO_MIGRATE !== '0' && process.env.AUTO_MIGRATE !== 'false' |
| 22 | + lang: env.get('RSSBOT_LANG').default('zh-cn').asString(), |
| 23 | + item_num: env.get('RSSBOT_ITEM_NUM').default(10).asIntPositive(), |
| 24 | + fetch_gap: env.get('RSSBOT_FETCH_GAP').default('5m').asString(), |
| 25 | + strict_ttl: env.get('RSSBOT_STRICT_TTL').default(1).asBool(), |
| 26 | + http_cache: env.get('RSSBOT_HTTP_CACHE').default(0).asBool(), |
| 27 | + notify_error_count: env.get('NOTIFY_ERR_COUNT').default(5).asIntPositive(), |
| 28 | + view_all: env.get('RSSBOT_VIEW_ALL').default(0).asBool(), |
| 29 | + UA: env |
| 30 | + .get('RSSBOT_UA') |
| 31 | + .default( |
| 32 | + `Mozilla/5.0 NodeRSSBot v${version}(https://github.com/fengkx/NodeRSSBot)` |
| 33 | + ) |
| 34 | + .asString(), |
| 35 | + not_send: env.get('NOT_SEND').default(0).asBool(), // just for debug use |
| 36 | + concurrency: env.get('RSSBOT_CONCURRENCY').default(200).asIntPositive(), |
| 37 | + delete_on_err_send: env.get('DELETE_ON_ERR_SEND').default(1).asBool(), // block and chat not found |
| 38 | + resp_timeout: env.get('RSSBOT_RESP_TIMEOUT').default(40).asIntPositive(), |
| 39 | + allow_list: env |
| 40 | + .get('RSSBOT_ALLOW_LIST') |
| 41 | + .default('') |
| 42 | + .asArray(',') |
| 43 | + .map((id) => Number(id)), |
| 44 | + auto_migrate: env.get('AUTO_MIGRATE').default(1).asBool() |
44 | 45 | }; |
45 | 46 | Object.defineProperty(config, 'PKG_ROOT', { |
46 | 47 | enumerable: false, |
|
0 commit comments