返回 AiToEarn
config.ts
1 import { z } from 'zod'
2
3 export const natsConfig = z.object({
4 name: z.string().optional(),
5 servers: z.array(z.string()).optional(),
6 user: z.string().optional(),
7 pass: z.string().optional(),
8 prefix: z.string().optional(),
9 })
10
11 export const openapiConfig = z.object({
12 enable: z.boolean().default(false),
13 title: z.string().default('API Reference'),
14 description: z.string().default('API Reference'),
15 path: z.string().default('/docs'),
16 })
17
18 const logLevel = z.enum(['fatal', 'error', 'warn', 'info', 'debug', 'trace'])
19
20 export const cloudWatchLoggerConfig = z.object({
21 enable: z.boolean().default(false),
22 level: logLevel.default('debug'),
23 region: z.string(),
24 group: z.string(),
25 stream: z.string().optional(),
26 entity: z.object({
27 keyAttributes: z.record(z.string(), z.string()).optional(),
28 attributes: z.record(z.string(), z.string()).optional(),
29 }).optional(),
30 accessKeyId: z.string().optional(),
31 secretAccessKey: z.string().optional(),
32 })
33
34 export const consoleLoggerConfig = z.object({
35 enable: z.boolean().default(true),
36 level: logLevel.default('info'),
37 pretty: z.boolean().default(true),
38 singleLine: z.boolean().default(false),
39 translateTime: z.boolean().default(true),
40 })
41
42 export const feishuLoggerConfig = z.object({
43 enable: z.boolean().default(false),
44 level: logLevel.default('fatal'),
45 url: z.url(),
46 secret: z.string(),
47 })
48
49 export const loggerConfig = z.object({
50 cloudWatch: cloudWatchLoggerConfig.optional(),
51 console: consoleLoggerConfig.optional(),
52 feishu: feishuLoggerConfig.optional(),
53 })
54
55 export const baseConfig = z.object({
56 globalPrefix: z.string().optional(),
57 port: z.number().int().default(3000),
58 enableConfigLogging: z.boolean().default(false),
59 enableBadRequestDetails: z.boolean().default(false),
60 openapi: openapiConfig.optional(),
61 logger: loggerConfig.optional(),
62 nats: natsConfig.optional(),
63 appDomain: z.string().optional().default(''),
64 })
65
66 export type BaseConfig = z.infer<typeof baseConfig>
67
67 lines TYPESCRIPT