@zhin.js/core 1.0.16 → 1.0.18

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.
Files changed (118) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/REFACTORING_COMPLETE.md +178 -0
  3. package/REFACTORING_STATUS.md +263 -0
  4. package/lib/adapter.d.ts +44 -19
  5. package/lib/adapter.d.ts.map +1 -1
  6. package/lib/adapter.js +81 -50
  7. package/lib/adapter.js.map +1 -1
  8. package/lib/bot.d.ts +7 -12
  9. package/lib/bot.d.ts.map +1 -1
  10. package/lib/built/adapter-process.d.ts +36 -0
  11. package/lib/built/adapter-process.d.ts.map +1 -0
  12. package/lib/built/adapter-process.js +77 -0
  13. package/lib/built/adapter-process.js.map +1 -0
  14. package/lib/built/command.d.ts +46 -0
  15. package/lib/built/command.d.ts.map +1 -0
  16. package/lib/built/command.js +54 -0
  17. package/lib/built/command.js.map +1 -0
  18. package/lib/built/component.d.ts +42 -0
  19. package/lib/built/component.d.ts.map +1 -0
  20. package/lib/built/component.js +66 -0
  21. package/lib/built/component.js.map +1 -0
  22. package/lib/built/config.d.ts +31 -0
  23. package/lib/built/config.d.ts.map +1 -0
  24. package/lib/built/config.js +141 -0
  25. package/lib/built/config.js.map +1 -0
  26. package/lib/built/cron.d.ts +53 -0
  27. package/lib/built/cron.d.ts.map +1 -0
  28. package/lib/built/cron.js +79 -0
  29. package/lib/built/cron.js.map +1 -0
  30. package/lib/built/database.d.ts +17 -0
  31. package/lib/built/database.d.ts.map +1 -0
  32. package/lib/built/database.js +28 -0
  33. package/lib/built/database.js.map +1 -0
  34. package/lib/{permissions.d.ts → built/permission.d.ts} +5 -10
  35. package/lib/built/permission.d.ts.map +1 -0
  36. package/lib/{permissions.js → built/permission.js} +11 -10
  37. package/lib/built/permission.js.map +1 -0
  38. package/lib/command.d.ts +18 -7
  39. package/lib/command.d.ts.map +1 -1
  40. package/lib/command.js +36 -15
  41. package/lib/command.js.map +1 -1
  42. package/lib/component.d.ts +1 -1
  43. package/lib/component.d.ts.map +1 -1
  44. package/lib/component.js.map +1 -1
  45. package/lib/cron.d.ts +4 -12
  46. package/lib/cron.d.ts.map +1 -1
  47. package/lib/cron.js +33 -64
  48. package/lib/cron.js.map +1 -1
  49. package/lib/index.d.ts +11 -3
  50. package/lib/index.d.ts.map +1 -1
  51. package/lib/index.js +14 -4
  52. package/lib/index.js.map +1 -1
  53. package/lib/jsx-runtime.d.ts +2 -2
  54. package/lib/jsx.d.ts +2 -3
  55. package/lib/jsx.d.ts.map +1 -1
  56. package/lib/jsx.js.map +1 -1
  57. package/lib/message.d.ts +4 -7
  58. package/lib/message.d.ts.map +1 -1
  59. package/lib/message.js.map +1 -1
  60. package/lib/plugin.d.ts +164 -51
  61. package/lib/plugin.d.ts.map +1 -1
  62. package/lib/plugin.js +520 -137
  63. package/lib/plugin.js.map +1 -1
  64. package/lib/prompt.d.ts +1 -1
  65. package/lib/prompt.d.ts.map +1 -1
  66. package/lib/prompt.js +2 -1
  67. package/lib/prompt.js.map +1 -1
  68. package/lib/types.d.ts +33 -33
  69. package/lib/types.d.ts.map +1 -1
  70. package/lib/utils.d.ts +16 -1
  71. package/lib/utils.d.ts.map +1 -1
  72. package/lib/utils.js +166 -66
  73. package/lib/utils.js.map +1 -1
  74. package/package.json +17 -11
  75. package/src/adapter.ts +131 -80
  76. package/src/bot.ts +8 -13
  77. package/src/built/adapter-process.ts +77 -0
  78. package/src/built/command.ts +102 -0
  79. package/src/built/component.ts +111 -0
  80. package/src/built/config.ts +126 -0
  81. package/src/built/cron.ts +140 -0
  82. package/src/built/database.ts +38 -0
  83. package/src/{permissions.ts → built/permission.ts} +9 -12
  84. package/src/command.ts +48 -20
  85. package/src/component.ts +2 -3
  86. package/src/cron.ts +35 -70
  87. package/src/index.ts +15 -5
  88. package/src/jsx.ts +2 -3
  89. package/src/message.ts +3 -4
  90. package/src/plugin.ts +671 -184
  91. package/src/prompt.ts +4 -3
  92. package/src/types.ts +41 -35
  93. package/src/utils.ts +418 -296
  94. package/test/minimal-bot.ts +31 -0
  95. package/test/stress-test.ts +123 -0
  96. package/tests/command.test.ts +124 -44
  97. package/ASYNC-JSX-SUPPORT.md +0 -173
  98. package/lib/app.d.ts +0 -191
  99. package/lib/app.d.ts.map +0 -1
  100. package/lib/app.js +0 -604
  101. package/lib/app.js.map +0 -1
  102. package/lib/config.d.ts +0 -54
  103. package/lib/config.d.ts.map +0 -1
  104. package/lib/config.js +0 -308
  105. package/lib/config.js.map +0 -1
  106. package/lib/log-transport.d.ts +0 -37
  107. package/lib/log-transport.d.ts.map +0 -1
  108. package/lib/log-transport.js +0 -136
  109. package/lib/log-transport.js.map +0 -1
  110. package/lib/permissions.d.ts.map +0 -1
  111. package/lib/permissions.js.map +0 -1
  112. package/src/app.ts +0 -772
  113. package/src/config.ts +0 -397
  114. package/src/log-transport.ts +0 -163
  115. package/tests/app.test.ts +0 -265
  116. package/tests/permissions.test.ts +0 -358
  117. package/tests/plugin.test.ts +0 -234
  118. package/tests/prompt.test.ts +0 -223
package/lib/app.d.ts DELETED
@@ -1,191 +0,0 @@
1
- import { SideEffect, GlobalContext, Models } from "@zhin.js/types";
2
- import { Schema } from '@zhin.js/hmr';
3
- import { HMR, Context, Logger } from "@zhin.js/hmr";
4
- import { AdapterMessage, AppConfig, BeforeSendHandler, RegisteredAdapter, SendOptions, MessageMiddleware } from "./types.js";
5
- import { Config } from "./config.js";
6
- import { Message } from "./message.js";
7
- import { PermissionChecker, Permissions } from "./permissions.js";
8
- import { Plugin } from "./plugin.js";
9
- import { Adapter } from "./adapter";
10
- import { MessageCommand } from "./command";
11
- import { Component } from "./component";
12
- import { RelatedDatabase, DocumentDatabase, KeyValueDatabase, Definition } from "@zhin.js/database";
13
- import { SystemLog } from "./models/system-log.js";
14
- import { User } from "./models/user.js";
15
- declare module "@zhin.js/types" {
16
- interface Models {
17
- SystemLog: SystemLog;
18
- User: User;
19
- }
20
- }
21
- /**
22
- * App类:Zhin.js 应用主入口,负责插件热重载、配置管理、消息分发等。
23
- * 继承自 HMR,支持插件生命周期、适配器管理、数据库集成等。
24
- */
25
- export declare class App extends HMR<Plugin> {
26
- #private;
27
- static currentPlugin: Plugin;
28
- middlewares: MessageMiddleware[];
29
- adapters: string[];
30
- database?: RelatedDatabase<any, Models> | DocumentDatabase<any, Models> | KeyValueDatabase<any, Models>;
31
- permissions: Permissions;
32
- private logTransport?;
33
- /** 配置变更处理锁 */
34
- private configChangeLock;
35
- /**
36
- * 构造函数:初始化应用,加载配置,注册全局异常处理
37
- * @param config 可选,应用配置,若为空则自动查找配置文件
38
- */
39
- constructor(config: AppConfig);
40
- /**
41
- * 构造函数:初始化应用,加载配置,注册全局异常处理
42
- * @param config_file 可选,配置文件路径,默认为 'zhin.config.yml'
43
- */
44
- constructor(config_file?: string);
45
- /**
46
- * 处理配置变更
47
- * 如果上一次变更未完成,等待其完成后再处理新的变更
48
- */
49
- private handleConfigChange;
50
- /**
51
- * 应用配置变更
52
- */
53
- private applyConfigChanges;
54
- /**
55
- * 更新监听目录
56
- */
57
- private updateWatchDirs;
58
- /**
59
- * 更新插件加载
60
- */
61
- private updatePlugins;
62
- /**
63
- * 卸载插件
64
- */
65
- private unloadPlugin;
66
- receiveMessage<P extends RegisteredAdapter>(message: Message<AdapterMessage<P>>): Promise<void>;
67
- messageMiddleware(message: Message, next: () => Promise<void>): Promise<void>;
68
- get commands(): MessageCommand<never>[];
69
- /** 默认配置 */
70
- /**
71
- * 默认配置
72
- * - plugin_dirs: 插件目录
73
- * - plugins: 启用插件
74
- * - bots: 机器人配置
75
- * - debug: 是否调试模式
76
- */
77
- static defaultConfig: AppConfig;
78
- middleware(middleware: MessageMiddleware): void;
79
- /**
80
- * 发送消息到指定适配器和机器人
81
- * @param options 消息发送参数(包含 context、bot、内容等)
82
- * @throws 找不到适配器或机器人时抛出异常
83
- */
84
- sendMessage(options: SendOptions): Promise<string>;
85
- recallMessage(adapter_name: string, bot_name: string, id: string): Promise<void>;
86
- /** 同步加载配置文件 */
87
- /**
88
- * 同步加载配置文件(暂不支持,建议使用异步创建)
89
- * @throws 始终抛出异常,提示使用异步方法
90
- */
91
- static loadConfigSync(): AppConfig;
92
- /** 创建插件依赖 */
93
- /**
94
- * 创建插件依赖
95
- * @param name 插件名
96
- * @param filePath 插件文件路径
97
- */
98
- createDependency(name: string, filePath: string): Plugin;
99
- /** 获取App配置 */
100
- /**
101
- * 获取App配置(只读)
102
- */
103
- getConfig(): Readonly<AppConfig>;
104
- getConfig<T extends Config.Paths<AppConfig>>(key: T): Readonly<Config.Value<AppConfig, T>>;
105
- setConfig(value: AppConfig): void;
106
- setConfig<T extends Config.Paths<AppConfig>>(key: T, value: Config.Value<AppConfig, T>): void;
107
- changeSchema(key: string, value: Schema): void;
108
- get config(): AppConfig;
109
- set config(newConfig: AppConfig);
110
- get definitions(): Map<string, Definition<any>>;
111
- /** 使用插件 */
112
- use(filePath: string): void;
113
- /** 启动App */
114
- start(mode?: "dev" | "prod"): Promise<void>;
115
- /** 停止App */
116
- stop(): Promise<void>;
117
- getContext<T>(name: string): T;
118
- handleBeforeSend(options: SendOptions): Promise<SendOptions>;
119
- }
120
- export declare namespace App {
121
- const schema: Schema<{
122
- database?: any;
123
- bots?: any[] | undefined;
124
- log_level?: number | undefined;
125
- log?: {
126
- maxDays?: number | undefined;
127
- maxRecords?: number | undefined;
128
- cleanupInterval?: number | undefined;
129
- } | undefined;
130
- plugin_dirs?: string[] | undefined;
131
- plugins?: string[] | undefined;
132
- debug?: boolean | undefined;
133
- }, {
134
- database?: any;
135
- bots?: any[] | undefined;
136
- log_level?: number | undefined;
137
- log?: {
138
- maxDays?: number | undefined;
139
- maxRecords?: number | undefined;
140
- cleanupInterval?: number | undefined;
141
- } | undefined;
142
- plugin_dirs?: string[] | undefined;
143
- plugins?: string[] | undefined;
144
- debug?: boolean | undefined;
145
- }>;
146
- }
147
- /** 获取App实例 */
148
- export declare function useApp(): App;
149
- export declare function defineModel<T extends Record<string, any>>(name: string, schema: Definition<T>): Plugin;
150
- export declare function addPermit<T extends RegisteredAdapter>(name: string | RegExp, checker: PermissionChecker<T>): Plugin;
151
- /** 获取当前插件实例 */
152
- export declare function usePlugin(): Plugin;
153
- export declare function beforeSend(handler: BeforeSendHandler): void;
154
- /** 创建Context */
155
- export declare function register<T>(context: Context<T, Plugin>): Context<T, Plugin>;
156
- export declare function registerAdapter<T extends Adapter>(adapter: T): void;
157
- /** 标记必需的Context */
158
- export declare function useContext<T extends (keyof GlobalContext)[]>(...args: [...T, sideEffect: SideEffect<T>]): void;
159
- /** 添加中间件 */
160
- export declare function addMiddleware(middleware: MessageMiddleware): void;
161
- export declare function onDatabaseReady(callback: (database: RelatedDatabase<any, Models> | DocumentDatabase<any, Models> | KeyValueDatabase<any, Models>) => PromiseLike<void>): void;
162
- export declare function useDatabase(): RelatedDatabase<any, Models> | DocumentDatabase<any, Models> | KeyValueDatabase<any, Models> | undefined;
163
- export declare function onAppReady(callback: () => PromiseLike<void>): void;
164
- /** 添加指令 */
165
- export declare function addCommand(command: MessageCommand): void;
166
- /** 添加组件 */
167
- export declare function addComponent<P = any>(component: Component<P>): void;
168
- /** 监听事件 */
169
- export declare function onEvent(event: string, listener: (...args: any[]) => any): void;
170
- /** 监听群组消息 */
171
- export declare function onGroupMessage(handler: (message: Message) => void | Promise<void>): void;
172
- /** 监听私聊消息 */
173
- export declare function onPrivateMessage(handler: (message: Message) => void | Promise<void>): void;
174
- /** 监听所有消息 */
175
- export declare function onMessage<T extends RegisteredAdapter>(handler: (message: Message<AdapterMessage<T>>) => void | Promise<void>): void;
176
- /** 获取下一条消息 */
177
- export declare function usePrompt<P extends RegisteredAdapter>(message: Message<AdapterMessage<P>>): import("./prompt.js").Prompt<P>;
178
- /** 监听插件挂载事件 */
179
- export declare function onMounted(hook: (plugin: Plugin) => Promise<void> | void): void;
180
- /** 监听插件销毁事件 */
181
- export declare function onDispose(hook: () => void): void;
182
- /** 发送消息 */
183
- export declare function sendMessage(options: SendOptions): Promise<void>;
184
- export declare function defineSchema<S extends Schema>(rules: S): S;
185
- /** 获取App实例(用于高级操作) */
186
- export declare function getAppInstance(): App;
187
- /** 获取插件日志记录器 */
188
- export declare function useLogger(): Logger;
189
- /** 创建App实例的工厂函数 */
190
- export declare function createApp(config_file?: string): Promise<App>;
191
- //# sourceMappingURL=app.d.ts.map
package/lib/app.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}