@zhin.js/core 1.0.5 → 1.0.7

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/lib/utils.js CHANGED
@@ -11,6 +11,35 @@ export const evaluate = (exp, context) => {
11
11
  return undefined;
12
12
  return result;
13
13
  };
14
+ /**
15
+ * 组合中间件,洋葱模型
16
+ * @param middlewares 中间件列表
17
+ * @returns 中间件处理函数
18
+ */
19
+ export function compose(middlewares) {
20
+ return function (message, next = () => Promise.resolve()) {
21
+ let index = -1;
22
+ const dispatch = async (i = 0) => {
23
+ if (i <= index)
24
+ return Promise.reject(new Error('next() called multiple times'));
25
+ index = i;
26
+ let fn = middlewares[i];
27
+ if (i === middlewares.length)
28
+ fn = next;
29
+ if (!fn)
30
+ return;
31
+ try {
32
+ return await fn(message, () => dispatch(i + 1));
33
+ }
34
+ catch (error) {
35
+ // 中间件异常应该被记录但不中断整个流程
36
+ console.error('Middleware error:', error);
37
+ throw error;
38
+ }
39
+ };
40
+ return dispatch(0);
41
+ };
42
+ }
14
43
  const evalCache = Object.create(null);
15
44
  export const execute = (exp, context) => {
16
45
  const fn = evalCache[exp] || (evalCache[exp] = toFunction(exp));
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhin.js/core",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "description": "Zhin机器人核心框架",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -24,13 +24,13 @@
24
24
  }
25
25
  },
26
26
  "dependencies": {
27
- "segment-matcher": "1.0.3",
27
+ "segment-matcher": "1.0.4",
28
28
  "yaml": "^2.3.4",
29
29
  "toml": "^3.0.0",
30
30
  "dotenv": "^16.3.1",
31
31
  "cron-parser": "latest",
32
32
  "@zhin.js/hmr": "1.0.1",
33
- "@zhin.js/database": "1.0.1"
33
+ "@zhin.js/database": "1.0.2"
34
34
  },
35
35
  "peerDependencies": {
36
36
  "@zhin.js/logger": "0.1.0"
package/src/app.ts CHANGED
@@ -13,16 +13,17 @@ import {
13
13
  BeforeSendHandler,
14
14
  RegisteredAdapter,
15
15
  SendOptions,
16
+ MessageMiddleware,
16
17
  } from "./types.js";
17
18
  import { Message } from "./message.js";
18
19
  import { fileURLToPath } from "url";
19
20
  import { generateEnvTypes } from "./types-generator.js";
20
- import logger, { setName } from "@zhin.js/logger";
21
- import { sleep } from "./utils.js";
21
+ import logger, { setName, setLevel, LogLevel } from "@zhin.js/logger";
22
+ import { compose, sleep } from "./utils.js";
22
23
  import { PermissionChecker, Permissions } from "./permissions.js";
23
24
  // 创建静态logger用于配置加载等静态操作
24
25
  setName("Zhin");
25
- import { MessageMiddleware, Plugin } from "./plugin.js";
26
+ import { Plugin } from "./plugin.js";
26
27
  import { Adapter } from "./adapter";
27
28
  import { MessageCommand } from "./command";
28
29
  import { Component } from "./component";
@@ -85,15 +86,39 @@ export class App extends HMR<Plugin> {
85
86
  debug: finalConfig.debug,
86
87
  });
87
88
  this.on("message.send", this.sendMessage.bind(this));
89
+ this.on('message.receive',this.receiveMessage.bind(this))
88
90
  process.on("uncaughtException", (e) => {
89
- const args=e instanceof Error ? [e.message,{stack:e.stack}] : [e];
91
+ const args = e instanceof Error ? [e.message, { stack: e.stack }] : [e];
90
92
  this.logger.error(...args);
91
93
  });
92
94
  process.on("unhandledRejection", (e) => {
93
- const args=e instanceof Error ? [e.message,{stack:e.stack}] : [e];
95
+ const args = e instanceof Error ? [e.message, { stack: e.stack }] : [e];
94
96
  this.logger.error(...args);
95
97
  });
96
98
  this.config = finalConfig;
99
+ setLevel(finalConfig.log_level);
100
+ this.middleware(this.messageMiddleware.bind(this))
101
+ }
102
+ async receiveMessage<P extends RegisteredAdapter>(message: Message<AdapterMessage<P>>) {
103
+ const middlewares=this.dependencyList.reduce((result, plugin) => {
104
+ result.push(...plugin.middlewares as MessageMiddleware<P>[]);
105
+ return result;
106
+ }, [...this.middlewares] as MessageMiddleware<P>[]);
107
+ const handle=compose(middlewares)
108
+ await handle(message)
109
+ }
110
+ async messageMiddleware(message: Message, next: () => Promise<void>) {
111
+ for (const command of this.commands) {
112
+ const result = await command.handle(message, this);
113
+ if (result) message.$reply(result);
114
+ }
115
+ return next();
116
+ }
117
+ get commands() {
118
+ return this.dependencyList.reduce((result, plugin) => {
119
+ result.push(...plugin.commands);
120
+ return result;
121
+ }, [] as MessageCommand[]);
97
122
  }
98
123
  /** 默认配置 */
99
124
  /**
@@ -104,6 +129,7 @@ export class App extends HMR<Plugin> {
104
129
  * - debug: 是否调试模式
105
130
  */
106
131
  static defaultConfig: AppConfig = {
132
+ log_level: LogLevel.INFO,
107
133
  plugin_dirs: ["./plugins"],
108
134
  plugins: [],
109
135
  bots: [],
@@ -155,7 +181,7 @@ export class App extends HMR<Plugin> {
155
181
  * @param filePath 插件文件路径
156
182
  */
157
183
  createDependency(name: string, filePath: string): Plugin {
158
- return new Plugin(this, name, filePath);
184
+ return new Plugin(this, name, filePath)
159
185
  }
160
186
 
161
187
  /** 获取App配置 */
@@ -300,6 +326,7 @@ function getPlugin(hmr: HMR<Plugin>, filename: string): Plugin {
300
326
  if (childPlugin) {
301
327
  return childPlugin;
302
328
  }
329
+ logger.debug(`cant't find plugin for ${filename}, create new`);
303
330
  const parent = hmr.findParent(
304
331
  filename,
305
332
  getCallerFiles(fileURLToPath(import.meta.url))
package/src/command.ts CHANGED
@@ -3,8 +3,8 @@ import {AdapterMessage, SendContent} from "./types.js";
3
3
  import {RegisteredAdapters} from "@zhin.js/types";
4
4
  import type {Message} from "./message.js";
5
5
  import {MaybePromise} from "@zhin.js/types";
6
- import { Plugin } from "./plugin.js";
7
- import { PluginError } from "./errors.js";
6
+ import { ZhinError } from "./errors.js";
7
+ import { App } from "./app.js";
8
8
 
9
9
  /**
10
10
  * MessageCommand类:命令系统核心,基于segment-matcher实现。
@@ -32,11 +32,11 @@ export class MessageCommand<T extends keyof RegisteredAdapters=keyof RegisteredA
32
32
  * @param plugin 插件实例
33
33
  * @returns 命令返回内容或undefined
34
34
  */
35
- async handle(message:Message<AdapterMessage<T>>,plugin:Plugin):Promise<SendContent|undefined>{
35
+ async handle(message:Message<AdapterMessage<T>>,app:App):Promise<SendContent|undefined>{
36
36
  for(const permission of this.#permissions){
37
- const permit=plugin.getPermit(permission)
37
+ const permit=app.permissions.get(permission)
38
38
  if(!permit) {
39
- throw new PluginError(`权限 ${permission} 不存在`,plugin.name)
39
+ throw new ZhinError(`权限 ${permission} 不存在`)
40
40
  }
41
41
  const result=await permit.check(permission,message)
42
42
  if(!result) return;
package/src/config.ts CHANGED
@@ -5,6 +5,7 @@ import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
5
5
  import { parse as parseToml } from 'toml';
6
6
  import { config as loadDotenv } from 'dotenv';
7
7
  import type {AppConfig, DefineConfig} from './types.js';
8
+ import { LogLevel } from '@zhin.js/logger';
8
9
 
9
10
  export interface ConfigOptions {
10
11
  configPath?: string;
@@ -262,6 +263,7 @@ export function saveConfig(config: AppConfig, filePath: string): void {
262
263
  */
263
264
  export function createDefaultConfig(format: ConfigFormat = 'yaml'): AppConfig {
264
265
  return {
266
+ log_level: LogLevel.INFO,
265
267
  bots: [{
266
268
  name: 'onebot11',
267
269
  context: 'onebot11',
package/src/index.ts CHANGED
@@ -13,5 +13,6 @@ export * from './utils.js'
13
13
  export * from './errors.js' // 导出错误处理系统
14
14
  export * from './cron.js'
15
15
  export * from '@zhin.js/database'
16
+ export * from '@zhin.js/logger'
16
17
 
17
18
  export { Dependency } from '@zhin.js/hmr'
package/src/plugin.ts CHANGED
@@ -3,8 +3,8 @@
3
3
  // ============================================================================
4
4
 
5
5
 
6
- import {MaybePromise} from '@zhin.js/types'
7
- import {AdapterMessage, BeforeSendHandler, RegisteredAdapter, SendOptions} from "./types.js";
6
+ import * as fs from 'fs';
7
+ import {AdapterMessage, BeforeSendHandler,MessageMiddleware, RegisteredAdapter, SendOptions} from "./types.js";
8
8
  import { PermissionItem,PermissionChecker } from './permissions.js';
9
9
  import {Message} from './message.js'
10
10
  import {Dependency, Logger,} from "@zhin.js/hmr";
@@ -17,9 +17,6 @@ import {Prompt} from "./prompt.js";
17
17
  import { Schema } from '@zhin.js/database';
18
18
  import { Cron} from './cron.js';
19
19
 
20
- /** 消息中间件函数 */
21
- export type MessageMiddleware<P extends RegisteredAdapter=RegisteredAdapter> = (message: Message<AdapterMessage<P>>, next: () => Promise<void>) => MaybePromise<void>;
22
-
23
20
 
24
21
  // ============================================================================
25
22
  // Plugin 类(插件的生命周期、命令/中间件/组件/定时任务等管理)
@@ -44,17 +41,13 @@ export class Plugin extends Dependency<Plugin> {
44
41
  * @param filePath 插件文件路径
45
42
  */
46
43
  constructor(parent: Dependency<Plugin>, name: string, filePath: string) {
44
+ // 在测试环境中跳过文件检查
45
+ if (process.env.NODE_ENV !== 'test' && !filePath.startsWith('/mock/')) {
46
+ filePath = fs.realpathSync(filePath);
47
+ }
47
48
  super(parent, name, filePath);
49
+ this.logger.debug(`plugin ${name} created at ${filePath}`);
48
50
  // 绑定消息事件,自动分发到命令和中间件
49
- this.on('message.receive',this.#handleMessage.bind(this))
50
- // 注册命令处理为默认中间件
51
- this.addMiddleware(async (message,next)=>{
52
- for(const command of this.commands){
53
- const result=await command.handle(message,this);
54
- if(result) message.$reply(result);
55
- }
56
- return next()
57
- });
58
51
  // 发送前渲染组件
59
52
  this.beforeSend((options)=>renderComponents(this.components,options))
60
53
  // 资源清理:卸载时清空模型、定时任务等
@@ -75,26 +68,6 @@ export class Plugin extends Dependency<Plugin> {
75
68
  }
76
69
  });
77
70
  }
78
- async #handleMessage(message: Message) {
79
- try {
80
- await this.#runMiddlewares(message, 0)
81
- } catch (error) {
82
- const messageError = new MessageError(
83
- `消息处理失败: ${(error as Error).message}`,
84
- message.$id,
85
- message.$channel.id,
86
- { pluginName: this.name, originalError: error }
87
- )
88
-
89
- await errorManager.handle(messageError)
90
-
91
- // 可选:发送错误回复给用户
92
- try {
93
- await message.$reply('抱歉,处理您的消息时出现了错误。')
94
- } catch (replyError) {
95
- }
96
- }
97
- }
98
71
  addPermit<T extends RegisteredAdapter>(name:string|RegExp,check:PermissionChecker<T>){
99
72
  this.permissions.push({name,check});
100
73
  return this;
package/src/prompt.ts CHANGED
@@ -1,5 +1,5 @@
1
- import {AdapterMessage, Dict, RegisteredAdapter} from './types.js';
2
- import { MessageMiddleware,Plugin } from './plugin.js';
1
+ import {AdapterMessage, Dict, MessageMiddleware, RegisteredAdapter} from './types.js';
2
+ import { Plugin } from './plugin.js';
3
3
  import { Message } from './message.js';
4
4
  import { Schema } from './schema.js';
5
5
 
@@ -52,7 +52,7 @@ export class Prompt<P extends RegisteredAdapter> {
52
52
  * @param timeoutText 超时提示
53
53
  */
54
54
  middleware(callback: (input: string | Error) => any, timeout: number = 3 * 60 * 1000, timeoutText = '输入超时') {
55
- const middleware: MessageMiddleware<P> = (event, next) => {
55
+ const middleware: MessageMiddleware<P> = async (event, next) => {
56
56
  if (this.getChannelAddress<P>(event) !== this.getChannelAddress<P>(this.event)) return next();
57
57
  callback(event.$raw);
58
58
  dispose();
package/src/types.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import {MaybePromise,RegisteredAdapters}from '@zhin.js/types'
2
+ import { LogLevel } from '@zhin.js/logger';
2
3
  import {MessageChannel,Message} from "./message.js";
3
4
  import {Adapter} from "./adapter.js";
4
5
  import {Bot,BotConfig} from "./bot.js";
@@ -82,6 +83,9 @@ export interface Group {
82
83
  member_count: number;
83
84
  }
84
85
 
86
+ /** 消息中间件函数 */
87
+ export type MessageMiddleware<P extends RegisteredAdapter=RegisteredAdapter> = (message: Message<AdapterMessage<P>>, next: () => Promise<void>) => MaybePromise<void>;
88
+
85
89
 
86
90
  /**
87
91
  * App配置类型,涵盖机器人、数据库、插件、调试等
@@ -89,6 +93,7 @@ export interface Group {
89
93
  export interface AppConfig {
90
94
  /** 机器人配置列表 */
91
95
  bots?: BotConfig[];
96
+ log_level: LogLevel;
92
97
  /** 数据库配置列表 */
93
98
  database?: DatabaseConfig;
94
99
  /** 插件目录列表,默认为 ['./plugins', 'node_modules'] */
package/src/utils.ts CHANGED
@@ -1,4 +1,5 @@
1
- import {Dict, MessageElement, MessageSegment, SendContent} from "./types";
1
+ import {AdapterMessage, Dict, MessageElement, MessageMiddleware, RegisteredAdapter, SendContent} from "./types";
2
+ import { Message } from "./message.js";
2
3
 
3
4
  export function getValueWithRuntime(template: string, ctx: Dict) {
4
5
  const result = evaluate(template, ctx);
@@ -11,6 +12,31 @@ export const evaluate = <S, T = any>(exp: string, context: S) => {
11
12
  if (result === `return(${exp})`) return undefined;
12
13
  return result;
13
14
  };
15
+ /**
16
+ * 组合中间件,洋葱模型
17
+ * @param middlewares 中间件列表
18
+ * @returns 中间件处理函数
19
+ */
20
+ export function compose<P extends RegisteredAdapter>(middlewares: MessageMiddleware<P>[]){
21
+ return function(message: Message<AdapterMessage<P>>, next: () => Promise<void>=()=>Promise.resolve()){
22
+ let index = -1
23
+ const dispatch=async (i:number=0):Promise<void>=>{
24
+ if(i<=index) return Promise.reject(new Error('next() called multiple times'));
25
+ index=i
26
+ let fn=middlewares[i]
27
+ if(i===middlewares.length) fn=next
28
+ if(!fn) return;
29
+ try {
30
+ return await fn(message, ()=>dispatch(i+1));
31
+ } catch (error) {
32
+ // 中间件异常应该被记录但不中断整个流程
33
+ console.error('Middleware error:', error);
34
+ throw error;
35
+ }
36
+ };
37
+ return dispatch(0);
38
+ }
39
+ }
14
40
  const evalCache: Record<string, Function> = Object.create(null);
15
41
  export const execute = <S, T = any>(exp: string, context: S):T => {
16
42
  const fn = evalCache[exp] || (evalCache[exp] = toFunction(exp));
@@ -4,6 +4,7 @@ import { Bot } from '../src/bot'
4
4
  import { Plugin } from '../src/plugin'
5
5
  import { App } from '../src/app'
6
6
  import type { BotConfig } from '../src/types'
7
+ import * as path from 'path'
7
8
 
8
9
  describe('适配器类测试', () => {
9
10
  // 创建测试用的Bot类
@@ -45,7 +46,7 @@ describe('适配器类测试', () => {
45
46
  { name: 'other-bot', context: 'other-adapter' }
46
47
  ]
47
48
  })
48
- plugin = app.createDependency('test-plugin', 'test-plugin.ts')
49
+ plugin = app.createDependency('test-plugin', '/mock/test-plugin.ts')
49
50
  })
50
51
 
51
52
  describe('构造函数工厂方法测试', () => {
@@ -188,7 +189,7 @@ describe('适配器类测试', () => {
188
189
  }]
189
190
  })
190
191
 
191
- const extendedPlugin = extendedApp.createDependency('test-plugin', 'test-plugin.ts')
192
+ const extendedPlugin = extendedApp.createDependency('test-plugin', '/mock/test-plugin.ts')
192
193
  const extendedAdapter = new Adapter('extended-adapter', ExtendedBot)
193
194
  await extendedAdapter.start(extendedPlugin)
194
195
 
package/tests/app.test.ts CHANGED
@@ -18,7 +18,8 @@ describe('App类测试', () => {
18
18
  plugin_dirs: ['./test-plugins'],
19
19
  plugins: [],
20
20
  bots: [],
21
- debug: true
21
+ debug: true,
22
+ log_level: 1
22
23
  }
23
24
 
24
25
  // 创建测试插件目录
@@ -74,10 +75,10 @@ describe('App类测试', () => {
74
75
 
75
76
  describe('插件管理测试', () => {
76
77
  it('应该正确创建插件依赖', () => {
77
- const plugin = app.createDependency('test-plugin', 'test-plugin.ts')
78
+ const plugin = app.createDependency('test-plugin', '/mock/test-plugin.ts')
78
79
  expect(plugin).toBeInstanceOf(Plugin)
79
80
  expect(plugin.name).toBe('test-plugin')
80
- expect(plugin.filename).toBe('test-plugin.ts')
81
+ expect(plugin.filename).toContain('test-plugin.ts')
81
82
  })
82
83
 
83
84
  it('应该正确加载插件', async () => {
@@ -118,7 +119,7 @@ describe('App类测试', () => {
118
119
  const adapter = new TestAdapter()
119
120
 
120
121
  // 注册适配器
121
- const plugin = app.createDependency('test-plugin', 'test-plugin.ts')
122
+ const plugin = app.createDependency('test-plugin', '/mock/test-plugin.ts')
122
123
  const context = {
123
124
  name: adapter.name,
124
125
  mounted: () => adapter,
@@ -140,7 +141,7 @@ describe('App类测试', () => {
140
141
 
141
142
  it('应该正确设置和获取上下文描述', async () => {
142
143
  // 创建测试插件
143
- const plugin = app.createDependency('test-plugin-desc', 'test-plugin-desc.ts')
144
+ const plugin = app.createDependency('test-plugin-desc', '/mock/test-plugin-desc.ts')
144
145
 
145
146
  // 注册带描述的上下文
146
147
  const context = {
@@ -179,7 +180,7 @@ describe('App类测试', () => {
179
180
  content: '测试消息'
180
181
  }
181
182
 
182
- const plugin = app.createDependency('test-plugin', 'test-plugin.ts')
183
+ const plugin = app.createDependency('test-plugin', '/mock/test-plugin.ts')
183
184
  const handler = vi.fn((opts) => ({
184
185
  ...opts,
185
186
  content: '修改后的消息'