@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/plugin.d.ts CHANGED
@@ -1,56 +1,169 @@
1
- import { AdapterMessage, BeforeSendHandler, MessageMiddleware, RegisteredAdapter, SendOptions } from "./types.js";
2
- import { PermissionItem, PermissionChecker } from './permissions.js';
3
- import { Message } from './message.js';
4
- import { Schema } from '@zhin.js/hmr';
5
- import { Dependency, Logger } from "@zhin.js/hmr";
6
- import { App } from "./app";
7
- import { MessageCommand } from "./command.js";
8
- import { Component } from "./component.js";
9
- import { Prompt } from "./prompt.js";
10
- import { Definition } from '@zhin.js/database';
11
- import { Cron } from './cron.js';
12
1
  /**
13
- * 插件类:继承自 Dependency,提供机器人特定功能与生命周期管理。
14
- * 支持命令注册、中间件、组件、定时任务、模型等。
2
+ * Plugin 类 - 基于 zhinjs/next 的 Hooks 实现
3
+ * 移除 Dependency 继承,使用 AsyncLocalStorage 管理上下文
15
4
  */
16
- export declare class Plugin extends Dependency<Plugin> {
5
+ import { AsyncLocalStorage } from "async_hooks";
6
+ import { EventEmitter } from "events";
7
+ import type { RegisteredAdapters } from "./types.js";
8
+ import { Logger } from "@zhin.js/logger";
9
+ import { MessageMiddleware, RegisteredAdapter, MaybePromise, ArrayItem, ConfigService, PermissionService, SendOptions } from "./types.js";
10
+ declare const contextsKey: unique symbol;
11
+ export type SideEffect<A extends (keyof Plugin.Contexts)[]> = {
12
+ (...args: ContextList<A>): MaybePromise<void | DisposeFn<ContextList<A>>>;
13
+ finished?: boolean;
14
+ };
15
+ export type DisposeFn<A> = (context: ArrayItem<A>) => MaybePromise<void>;
16
+ export type ContextList<CS extends (keyof Plugin.Contexts)[]> = CS extends [infer L, ...infer R] ? R extends (keyof Plugin.Contexts)[] ? [ContextItem<L>, ...ContextList<R>] : never[] : never[];
17
+ type ContextItem<L> = L extends keyof Plugin.Contexts ? Plugin.Contexts[L] : never;
18
+ export declare const storage: AsyncLocalStorage<Plugin>;
19
+ /**
20
+ * usePlugin - 获取或创建当前插件实例
21
+ * 类似 React Hooks 的设计,根据调用文件自动创建插件树
22
+ */
23
+ export declare function usePlugin(): Plugin;
24
+ /**
25
+ * getPlugin - 获取当前 AsyncLocalStorage 中的插件实例
26
+ * 用于 extensions 等场景,不创建新插件
27
+ */
28
+ export declare function getPlugin(): Plugin;
29
+ export interface Plugin extends Plugin.Extensions {
30
+ }
31
+ /**
32
+ * Plugin 类 - 核心插件系统
33
+ * 直接继承 EventEmitter
34
+ */
35
+ export declare class Plugin extends EventEmitter<Plugin.Lifecycle> {
17
36
  #private;
18
- middlewares: MessageMiddleware<RegisteredAdapter>[];
19
- components: Map<string, Component<any>>;
20
- permissions: PermissionItem<RegisteredAdapter>[];
21
- definitions: Map<string, Definition<any>>;
22
- commands: MessageCommand[];
23
- crons: Cron[];
24
- /**
25
- * 构造函数:初始化插件,注册消息事件、命令中间件、资源清理等
26
- * @param parent 所属 App 实例
27
- * @param name 插件名
28
- * @param filePath 插件文件路径
29
- */
30
- constructor(parent: Dependency<Plugin>, name: string, filePath: string);
31
- get config(): Record<string, any>;
32
- defineSchema<S extends Schema>(rules: S): S;
33
- set config(newConfig: Record<string, any>);
34
- addPermit<T extends RegisteredAdapter>(name: string | RegExp, check: PermissionChecker<T>): this;
35
- getPermit<T extends RegisteredAdapter>(name: string): PermissionItem<T> | undefined;
36
- cron(cronExpression: string, callback: () => void): this;
37
- defineModel<S extends Record<string, any>>(name: string, definition: Definition<S>): this;
38
- beforeSend(handler: BeforeSendHandler): void;
39
- before(event: string, listener: (...args: any[]) => any): void;
40
- /** 获取所属的App实例 */
41
- get app(): App;
42
- get logger(): Logger;
43
- /** 添加组件 */
44
- addComponent<T = any>(component: Component<T>): void;
45
- /** 添加中间件 */
46
- addCommand(command: MessageCommand): void;
47
- /** 添加中间件 */
48
- addMiddleware<T extends RegisteredAdapter>(middleware: MessageMiddleware<T>): () => void;
49
- prompt<P extends RegisteredAdapter>(message: Message<AdapterMessage<P>>): Prompt<P>;
50
- /** 发送消息 */
51
- sendMessage(options: SendOptions): Promise<void>;
52
- recallMessage(adapter: string, bot: string, id: string): void;
53
- /** 销毁插件 */
54
- dispose(): void;
37
+ parent?: Plugin | undefined;
38
+ static [contextsKey]: string[];
39
+ adapters: (keyof Plugin.Contexts)[];
40
+ started: boolean;
41
+ $contexts: Map<string, Context<any>>;
42
+ children: Plugin[];
43
+ filePath: string;
44
+ fileHash: string;
45
+ logger: Logger;
46
+ get middleware(): MessageMiddleware<RegisteredAdapter>;
47
+ /**
48
+ * 构造函数
49
+ */
50
+ constructor(filePath?: string, parent?: Plugin | undefined);
51
+ /**
52
+ * 添加中间件
53
+ * 中间件用于处理消息流转
54
+ */
55
+ addMiddleware<T extends RegisteredAdapter>(middleware: MessageMiddleware<T>, name?: string): () => void;
56
+ /**
57
+ * 插件名称
58
+ */
59
+ get name(): string;
60
+ /**
61
+ * 根插件
62
+ */
63
+ get root(): Plugin;
64
+ get contexts(): Map<string, Context>;
65
+ useContext<T extends (keyof Plugin.Contexts)[]>(...args: [...T, SideEffect<T>]): void;
66
+ inject<T extends keyof Plugin.Contexts>(name: T): Plugin.Contexts[T] | undefined;
67
+ contextIsReady<T extends keyof Plugin.Contexts>(name: T): boolean;
68
+ /**
69
+ * 启动插件
70
+ */
71
+ start(t?: number): Promise<void>;
72
+ /**
73
+ * 获取插件提供的功能
74
+ * 从各个服务中获取数据
75
+ */
76
+ get features(): Plugin.Features;
77
+ info(): Record<string, any>;
78
+ /**
79
+ * 停止插件
80
+ */
81
+ stop(): Promise<void>;
82
+ onMounted(callback: () => void | Promise<void>): void;
83
+ onDispose(callback: () => void | Promise<void>): () => void;
84
+ /**
85
+ * dispatch - 向上冒泡到父插件,或在根节点广播
86
+ */
87
+ dispatch<K extends keyof Plugin.Lifecycle>(name: K, ...args: Plugin.Lifecycle[K]): Promise<void>;
88
+ /**
89
+ * broadcast - 向下广播到所有子插件
90
+ */
91
+ broadcast<K extends keyof Plugin.Lifecycle>(name: K, ...args: Plugin.Lifecycle[K]): Promise<void>;
92
+ /**
93
+ * 注册上下文
94
+ */
95
+ provide<T extends keyof Plugin.Contexts>(context: Context<T>): this;
96
+ /**
97
+ * 导入插件
98
+ */
99
+ import(entry: string, t?: number): Promise<Plugin>;
100
+ /**
101
+ * 重载插件
102
+ */
103
+ reload(plugin?: Plugin): Promise<void>;
104
+ /**
105
+ * 监听文件变化
106
+ */
107
+ watch(callback: (p: Plugin) => void | Promise<void>, recursive?: boolean): void;
108
+ /**
109
+ * 自动绑定核心方法(只在构造函数中调用一次)
110
+ */
111
+ $bindMethods(): void;
112
+ /**
113
+ * 创建插件实例(异步加载)
114
+ */
115
+ static create(entry: string, parent?: Plugin): Promise<Plugin>;
116
+ }
117
+ export declare function defineContext<T extends keyof Plugin.Contexts, E extends Partial<Plugin.Extensions> = {}>(options: Context<T, E>): Context<T, E>;
118
+ export interface Context<T extends keyof Plugin.Contexts = keyof Plugin.Contexts, E extends Partial<Plugin.Extensions> = {}> {
119
+ name: T;
120
+ description: string;
121
+ value?: Plugin.Contexts[T];
122
+ mounted?: (parent: Plugin) => Plugin.Contexts[T] | Promise<Plugin.Contexts[T]>;
123
+ dispose?: (value: Plugin.Contexts[T]) => void;
124
+ /** 扩展方法,会自动挂载到 Plugin.prototype 上 */
125
+ extensions?: E;
126
+ }
127
+ export declare namespace Plugin {
128
+ /**
129
+ * 插件提供的功能
130
+ */
131
+ interface Features {
132
+ commands: string[];
133
+ components: string[];
134
+ crons: string[];
135
+ middlewares: string[];
136
+ }
137
+ /**
138
+ * 生命周期事件
139
+ */
140
+ interface Lifecycle {
141
+ mounted: [];
142
+ dispose: [];
143
+ "before-start": [Plugin];
144
+ started: [Plugin];
145
+ "before-mount": [Plugin];
146
+ "before-dispose": [Plugin];
147
+ "call.recallMessage": [string, string, string];
148
+ 'before.sendMessage': [SendOptions];
149
+ "context.mounted": [keyof Plugin.Contexts];
150
+ "context.dispose": [keyof Plugin.Contexts];
151
+ }
152
+ /**
153
+ * 服务类型扩展点
154
+ * 各个 Context 通过 declare module 扩展此接口
155
+ */
156
+ interface Contexts extends RegisteredAdapters {
157
+ config: ConfigService;
158
+ permission: PermissionService;
159
+ }
160
+ /**
161
+ * Service 扩展方法类型
162
+ * 这些方法由各个 Context 的 extensions 提供
163
+ * 在 Plugin.start() 时自动注册到 Plugin.prototype
164
+ */
165
+ interface Extensions {
166
+ }
55
167
  }
168
+ export {};
56
169
  //# sourceMappingURL=plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,cAAc,EAAE,iBAAiB,EAAC,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAC,MAAM,YAAY,CAAC;AAC/G,OAAO,EAAE,cAAc,EAAC,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAC,UAAU,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,cAAc,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAC,SAAS,EAAmB,MAAM,gBAAgB,CAAC;AAG3D,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAC,MAAM,WAAW,CAAC;AAOhC;;;GAGG;AACH,qBAAa,MAAO,SAAQ,UAAU,CAAC,MAAM,CAAC;;IAC1C,WAAW,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,CAAM;IACzD,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAa;IACpD,WAAW,EAAE,cAAc,CAAC,iBAAiB,CAAC,EAAE,CAAI;IACpD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAW;IACnD,QAAQ,EAAC,cAAc,EAAE,CAAI;IAC7B,KAAK,EAAC,IAAI,EAAE,CAAI;IAEhB;;;;;OAKG;gBACS,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IA4BtE,IAAI,MAAM,IASW,MAAM,CAAC,MAAM,EAAC,GAAG,CAAC,CAPtC;IACD,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC;IAM3C,IAAI,MAAM,CAAC,SAAS,EAAC,MAAM,CAAC,MAAM,EAAC,GAAG,CAAC,EAEtC;IACD,SAAS,CAAC,CAAC,SAAS,iBAAiB,EAAE,IAAI,EAAC,MAAM,GAAC,MAAM,EAAC,KAAK,EAAC,iBAAiB,CAAC,CAAC,CAAC;IAIpF,SAAS,CAAC,CAAC,SAAS,iBAAiB,EAAE,IAAI,EAAC,MAAM,GAAE,cAAc,CAAC,CAAC,CAAC,GAAC,SAAS;IAG/E,IAAI,CAAC,cAAc,EAAC,MAAM,EAAC,QAAQ,EAAC,MAAI,IAAI;IAqB5C,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAC,GAAG,CAAC,EAAE,IAAI,EAAC,MAAM,EAAC,UAAU,EAAC,UAAU,CAAC,CAAC,CAAC;IAI9E,UAAU,CAAC,OAAO,EAAC,iBAAiB;IAGpC,MAAM,CAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,EAAC,CAAC,GAAG,IAAI,EAAC,GAAG,EAAE,KAAG,GAAG;IAGjD,iBAAiB;IACjB,IAAI,GAAG,IAAI,GAAG,CAEb;IACD,IAAI,MAAM,IAAI,MAAM,CASnB;IACD,WAAW;IACX,YAAY,CAAC,CAAC,GAAC,GAAG,EAAE,SAAS,EAAC,SAAS,CAAC,CAAC,CAAC;IAG1C,YAAY;IACZ,UAAU,CAAC,OAAO,EAAC,cAAc;IAIjC,YAAY;IACZ,aAAa,CAAC,CAAC,SAAS,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAO3E,MAAM,CAAC,CAAC,SAAS,iBAAiB,EAAE,OAAO,EAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAMtE,WAAW;IACL,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAetD,aAAa,CAAC,OAAO,EAAC,MAAM,EAAC,GAAG,EAAC,MAAM,EAAC,EAAE,EAAC,MAAM;IAejD,WAAW;IACX,OAAO,IAAI,IAAI;CAqBlB"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}