zhin.js 1.0.21 → 1.0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/lib/setup.js +2 -2
- package/lib/setup.js.map +1 -1
- package/package.json +4 -4
- package/src/setup.ts +2 -2
- package/tests/setup.test.ts +175 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# zhin.js
|
|
2
2
|
|
|
3
|
+
## 1.0.23
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 52ae08a: fix: 更新消息处理流程
|
|
8
|
+
- Updated dependencies [52ae08a]
|
|
9
|
+
- @zhin.js/core@1.0.23
|
|
10
|
+
- @zhin.js/logger@0.1.7
|
|
11
|
+
- @zhin.js/schema@1.0.7
|
|
12
|
+
|
|
13
|
+
## 1.0.22
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- 26aba27: fix: error default config
|
|
18
|
+
- @zhin.js/logger@0.1.6
|
|
19
|
+
- @zhin.js/schema@1.0.6
|
|
20
|
+
- @zhin.js/core@1.0.22
|
|
21
|
+
|
|
3
22
|
## 1.0.21
|
|
4
23
|
|
|
5
24
|
### Patch Changes
|
package/lib/setup.js
CHANGED
|
@@ -13,8 +13,8 @@ await configService.load('zhin.config.yml', {
|
|
|
13
13
|
dialect: "sqlite",
|
|
14
14
|
filename: "./data/test.db"
|
|
15
15
|
},
|
|
16
|
-
plugin_dirs: [
|
|
17
|
-
plugins: [],
|
|
16
|
+
plugin_dirs: ['node_modules', './src/plugins'],
|
|
17
|
+
plugins: ['@zhin.js/http', '@zhin.js/console', '@zhin.js/adapter-sandbox'],
|
|
18
18
|
services: ['process', 'config', 'command', 'component', 'permission', 'cron'],
|
|
19
19
|
});
|
|
20
20
|
const appConfig = configService.get('zhin.config.yml');
|
package/lib/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EACL,SAAS,EAAE,YAAY,EACvB,OAAO,EACP,aAAa,EAAE,iBAAiB,EAChC,oBAAoB,EAAE,sBAAsB,EAAE,iBAAiB,EAC/D,qBAAqB,EACrB,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAC3B,MAAM,EACJ,OAAO,EACP,KAAK,EAAE,IAAI,EACX,UAAU,EACV,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;AAElC,qCAAqC;AACrC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAC1C,MAAM,aAAa,CAAC,IAAI,CAAC,iBAAiB,EAAE;IAC1C,SAAS,EAAE,QAAQ,CAAC,IAAI;IACxB,IAAI,EAAE,EAAE;IACR,QAAQ,EAAE;QACR,OAAO,EAAE,QAAQ;QACjB,QAAQ,EAAE,gBAAgB;KAC3B;IACD,WAAW,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zhin.js",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.23",
|
|
4
4
|
"description": "开箱即用的机器人框架 - 包含进程适配器、HTTP服务、Web控制台和SQLite数据库",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -35,9 +35,9 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"yaml": "^2.3.4",
|
|
37
37
|
"dotenv": "^16.3.1",
|
|
38
|
-
"@zhin.js/core": "1.0.
|
|
39
|
-
"@zhin.js/logger": "0.1.
|
|
40
|
-
"@zhin.js/schema": "1.0.
|
|
38
|
+
"@zhin.js/core": "1.0.23",
|
|
39
|
+
"@zhin.js/logger": "0.1.7",
|
|
40
|
+
"@zhin.js/schema": "1.0.7"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"typescript": "^5.3.0",
|
package/src/setup.ts
CHANGED
|
@@ -29,8 +29,8 @@ await configService.load('zhin.config.yml', {
|
|
|
29
29
|
dialect: "sqlite",
|
|
30
30
|
filename: "./data/test.db"
|
|
31
31
|
},
|
|
32
|
-
plugin_dirs: [
|
|
33
|
-
plugins: [],
|
|
32
|
+
plugin_dirs: ['node_modules', './src/plugins'],
|
|
33
|
+
plugins: ['@zhin.js/http', '@zhin.js/console', '@zhin.js/adapter-sandbox'],
|
|
34
34
|
services: ['process', 'config', 'command', 'component', 'permission', 'cron'],
|
|
35
35
|
});
|
|
36
36
|
const appConfig = configService.get<AppConfig>('zhin.config.yml');
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest'
|
|
2
|
+
import fs from 'fs'
|
|
3
|
+
import path from 'path'
|
|
4
|
+
import { parse as parseYaml } from 'yaml'
|
|
5
|
+
|
|
6
|
+
describe('Setup - Default Configuration', () => {
|
|
7
|
+
const testConfigPath = path.join(process.cwd(), 'test-zhin-config.yml')
|
|
8
|
+
|
|
9
|
+
afterEach(() => {
|
|
10
|
+
// 清理测试文件
|
|
11
|
+
if (fs.existsSync(testConfigPath)) {
|
|
12
|
+
fs.unlinkSync(testConfigPath)
|
|
13
|
+
}
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
it('should generate default config when file does not exist', async () => {
|
|
17
|
+
// 动态导入 ConfigService
|
|
18
|
+
const { ConfigService } = await import('@zhin.js/core')
|
|
19
|
+
const { LogLevel } = await import('@zhin.js/logger')
|
|
20
|
+
|
|
21
|
+
const configService = new ConfigService()
|
|
22
|
+
|
|
23
|
+
// 加载配置(应该会生成默认配置文件)
|
|
24
|
+
await configService.load('test-zhin-config.yml', {
|
|
25
|
+
log_level: LogLevel.INFO,
|
|
26
|
+
bots: [],
|
|
27
|
+
database: {
|
|
28
|
+
dialect: "sqlite",
|
|
29
|
+
filename: "./data/test.db"
|
|
30
|
+
},
|
|
31
|
+
plugin_dirs: ['node_modules', './src/plugins'],
|
|
32
|
+
plugins: ['@zhin.js/http', '@zhin.js/console', '@zhin.js/adapter-sandbox'],
|
|
33
|
+
services: ['process', 'config', 'command', 'component', 'permission', 'cron'],
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
// 验证配置文件已生成
|
|
37
|
+
expect(fs.existsSync(testConfigPath)).toBe(true)
|
|
38
|
+
|
|
39
|
+
// 读取并解析配置文件
|
|
40
|
+
const content = fs.readFileSync(testConfigPath, 'utf-8')
|
|
41
|
+
const config = parseYaml(content)
|
|
42
|
+
|
|
43
|
+
// 验证默认配置内容
|
|
44
|
+
expect(config.log_level).toBe(LogLevel.INFO)
|
|
45
|
+
expect(config.bots).toEqual([])
|
|
46
|
+
expect(config.database).toEqual({
|
|
47
|
+
dialect: "sqlite",
|
|
48
|
+
filename: "./data/test.db"
|
|
49
|
+
})
|
|
50
|
+
expect(config.plugin_dirs).toEqual(['node_modules', './src/plugins'])
|
|
51
|
+
expect(config.plugins).toEqual(['@zhin.js/http', '@zhin.js/console', '@zhin.js/adapter-sandbox'])
|
|
52
|
+
expect(config.services).toEqual(['process', 'config', 'command', 'component', 'permission', 'cron'])
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
it('should have correct plugin_dirs order', async () => {
|
|
56
|
+
const { ConfigService } = await import('@zhin.js/core')
|
|
57
|
+
const { LogLevel } = await import('@zhin.js/logger')
|
|
58
|
+
|
|
59
|
+
const configService = new ConfigService()
|
|
60
|
+
|
|
61
|
+
await configService.load('test-zhin-config.yml', {
|
|
62
|
+
log_level: LogLevel.INFO,
|
|
63
|
+
bots: [],
|
|
64
|
+
database: {
|
|
65
|
+
dialect: "sqlite",
|
|
66
|
+
filename: "./data/test.db"
|
|
67
|
+
},
|
|
68
|
+
plugin_dirs: ['node_modules', './src/plugins'],
|
|
69
|
+
plugins: ['@zhin.js/http', '@zhin.js/console', '@zhin.js/adapter-sandbox'],
|
|
70
|
+
services: ['process', 'config', 'command', 'component', 'permission', 'cron'],
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
const content = fs.readFileSync(testConfigPath, 'utf-8')
|
|
74
|
+
const config = parseYaml(content)
|
|
75
|
+
|
|
76
|
+
// 验证 plugin_dirs 顺序:node_modules 在前,./src/plugins 在后
|
|
77
|
+
expect(config.plugin_dirs[0]).toBe('node_modules')
|
|
78
|
+
expect(config.plugin_dirs[1]).toBe('./src/plugins')
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
it('should have correct plugins loading order', async () => {
|
|
82
|
+
const { ConfigService } = await import('@zhin.js/core')
|
|
83
|
+
const { LogLevel } = await import('@zhin.js/logger')
|
|
84
|
+
|
|
85
|
+
const configService = new ConfigService()
|
|
86
|
+
|
|
87
|
+
await configService.load('test-zhin-config.yml', {
|
|
88
|
+
log_level: LogLevel.INFO,
|
|
89
|
+
bots: [],
|
|
90
|
+
database: {
|
|
91
|
+
dialect: "sqlite",
|
|
92
|
+
filename: "./data/test.db"
|
|
93
|
+
},
|
|
94
|
+
plugin_dirs: ['node_modules', './src/plugins'],
|
|
95
|
+
plugins: ['@zhin.js/http', '@zhin.js/console', '@zhin.js/adapter-sandbox'],
|
|
96
|
+
services: ['process', 'config', 'command', 'component', 'permission', 'cron'],
|
|
97
|
+
})
|
|
98
|
+
|
|
99
|
+
const content = fs.readFileSync(testConfigPath, 'utf-8')
|
|
100
|
+
const config = parseYaml(content)
|
|
101
|
+
|
|
102
|
+
// 验证插件加载顺序:服务插件在前,适配器插件在后
|
|
103
|
+
expect(config.plugins).toContain('@zhin.js/http')
|
|
104
|
+
expect(config.plugins).toContain('@zhin.js/console')
|
|
105
|
+
expect(config.plugins).toContain('@zhin.js/adapter-sandbox')
|
|
106
|
+
|
|
107
|
+
// 验证顺序
|
|
108
|
+
const httpIndex = config.plugins.indexOf('@zhin.js/http')
|
|
109
|
+
const consoleIndex = config.plugins.indexOf('@zhin.js/console')
|
|
110
|
+
const sandboxIndex = config.plugins.indexOf('@zhin.js/adapter-sandbox')
|
|
111
|
+
|
|
112
|
+
expect(httpIndex).toBeGreaterThanOrEqual(0)
|
|
113
|
+
expect(consoleIndex).toBeGreaterThanOrEqual(0)
|
|
114
|
+
expect(sandboxIndex).toBeGreaterThanOrEqual(0)
|
|
115
|
+
})
|
|
116
|
+
|
|
117
|
+
it('should include all required services', async () => {
|
|
118
|
+
const { ConfigService } = await import('@zhin.js/core')
|
|
119
|
+
const { LogLevel } = await import('@zhin.js/logger')
|
|
120
|
+
|
|
121
|
+
const configService = new ConfigService()
|
|
122
|
+
|
|
123
|
+
await configService.load('test-zhin-config.yml', {
|
|
124
|
+
log_level: LogLevel.INFO,
|
|
125
|
+
bots: [],
|
|
126
|
+
database: {
|
|
127
|
+
dialect: "sqlite",
|
|
128
|
+
filename: "./data/test.db"
|
|
129
|
+
},
|
|
130
|
+
plugin_dirs: ['node_modules', './src/plugins'],
|
|
131
|
+
plugins: ['@zhin.js/http', '@zhin.js/console', '@zhin.js/adapter-sandbox'],
|
|
132
|
+
services: ['process', 'config', 'command', 'component', 'permission', 'cron'],
|
|
133
|
+
})
|
|
134
|
+
|
|
135
|
+
const content = fs.readFileSync(testConfigPath, 'utf-8')
|
|
136
|
+
const config = parseYaml(content)
|
|
137
|
+
|
|
138
|
+
// 验证所有必需的服务都包含在内
|
|
139
|
+
const requiredServices = ['process', 'config', 'command', 'component', 'permission', 'cron']
|
|
140
|
+
expect(config.services).toEqual(requiredServices)
|
|
141
|
+
})
|
|
142
|
+
|
|
143
|
+
it('should match test-bot configuration structure', async () => {
|
|
144
|
+
const { ConfigService } = await import('@zhin.js/core')
|
|
145
|
+
const { LogLevel } = await import('@zhin.js/logger')
|
|
146
|
+
|
|
147
|
+
const configService = new ConfigService()
|
|
148
|
+
|
|
149
|
+
await configService.load('test-zhin-config.yml', {
|
|
150
|
+
log_level: LogLevel.INFO,
|
|
151
|
+
bots: [],
|
|
152
|
+
database: {
|
|
153
|
+
dialect: "sqlite",
|
|
154
|
+
filename: "./data/test.db"
|
|
155
|
+
},
|
|
156
|
+
plugin_dirs: ['node_modules', './src/plugins'],
|
|
157
|
+
plugins: ['@zhin.js/http', '@zhin.js/console', '@zhin.js/adapter-sandbox'],
|
|
158
|
+
services: ['process', 'config', 'command', 'component', 'permission', 'cron'],
|
|
159
|
+
})
|
|
160
|
+
|
|
161
|
+
const content = fs.readFileSync(testConfigPath, 'utf-8')
|
|
162
|
+
const config = parseYaml(content)
|
|
163
|
+
|
|
164
|
+
// 验证配置结构与 test-bot 一致
|
|
165
|
+
expect(config).toHaveProperty('log_level')
|
|
166
|
+
expect(config).toHaveProperty('bots')
|
|
167
|
+
expect(config).toHaveProperty('database')
|
|
168
|
+
expect(config).toHaveProperty('plugin_dirs')
|
|
169
|
+
expect(config).toHaveProperty('plugins')
|
|
170
|
+
expect(config).toHaveProperty('services')
|
|
171
|
+
|
|
172
|
+
// 验证 plugin_dirs 与 test-bot 一致
|
|
173
|
+
expect(config.plugin_dirs).toEqual(['node_modules', './src/plugins'])
|
|
174
|
+
})
|
|
175
|
+
})
|