@zhin.js/core 1.0.16 → 1.0.17
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 +8 -0
- package/lib/command.d.ts +11 -0
- package/lib/command.d.ts.map +1 -1
- package/lib/command.js +31 -0
- package/lib/command.js.map +1 -1
- package/lib/component.d.ts +1 -1
- package/lib/component.d.ts.map +1 -1
- package/lib/cron.d.ts +3 -12
- package/lib/cron.d.ts.map +1 -1
- package/lib/cron.js +31 -64
- package/lib/cron.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/jsx.d.ts +2 -3
- package/lib/jsx.d.ts.map +1 -1
- package/lib/jsx.js.map +1 -1
- package/lib/message.d.ts +2 -5
- package/lib/message.d.ts.map +1 -1
- package/lib/message.js.map +1 -1
- package/lib/plugin.d.ts +1 -1
- package/lib/plugin.d.ts.map +1 -1
- package/lib/plugin.js +13 -1
- package/lib/plugin.js.map +1 -1
- package/package.json +5 -5
- package/src/command.ts +37 -0
- package/src/component.ts +2 -2
- package/src/cron.ts +33 -70
- package/src/index.ts +1 -1
- package/src/jsx.ts +2 -3
- package/src/message.ts +1 -2
- package/src/plugin.ts +20 -2
- package/tests/command.test.ts +77 -0
package/CHANGELOG.md
CHANGED
package/lib/command.d.ts
CHANGED
|
@@ -10,6 +10,11 @@ import { App } from "./app.js";
|
|
|
10
10
|
*/
|
|
11
11
|
export declare class MessageCommand<T extends keyof RegisteredAdapters = keyof RegisteredAdapters> extends SegmentMatcher {
|
|
12
12
|
#private;
|
|
13
|
+
get helpInfo(): MessageCommand.HelpInfo;
|
|
14
|
+
get help(): string;
|
|
15
|
+
desc(...desc: string[]): MessageCommand<T>;
|
|
16
|
+
usage(...usage: string[]): MessageCommand<T>;
|
|
17
|
+
examples(...examples: string[]): MessageCommand<T>;
|
|
13
18
|
/**
|
|
14
19
|
* 注册命令回调
|
|
15
20
|
* @param callback 命令处理函数
|
|
@@ -27,5 +32,11 @@ export declare class MessageCommand<T extends keyof RegisteredAdapters = keyof R
|
|
|
27
32
|
export declare namespace MessageCommand {
|
|
28
33
|
type Callback<T extends keyof RegisteredAdapters> = (message: Message<AdapterMessage<T>>, result: MatchResult) => SendContent | undefined | Promise<SendContent | undefined>;
|
|
29
34
|
type Checker<T extends keyof RegisteredAdapters> = (message: Message<AdapterMessage<T>>) => MaybePromise<boolean>;
|
|
35
|
+
type HelpInfo = {
|
|
36
|
+
pattern: string;
|
|
37
|
+
desc: string[];
|
|
38
|
+
usage: string[];
|
|
39
|
+
examples: string[];
|
|
40
|
+
};
|
|
30
41
|
}
|
|
31
42
|
//# sourceMappingURL=command.d.ts.map
|
package/lib/command.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAC,cAAc,EAAE,WAAW,EAAC,MAAM,YAAY,CAAC;AACvD,OAAO,EAAC,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B;;;GAGG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,MAAM,kBAAkB,GAAC,MAAM,kBAAkB,CAAE,SAAQ,cAAc;;
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAC,cAAc,EAAE,WAAW,EAAC,MAAM,YAAY,CAAC;AACvD,OAAO,EAAC,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B;;;GAGG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,MAAM,kBAAkB,GAAC,MAAM,kBAAkB,CAAE,SAAQ,cAAc;;IAO3G,IAAI,QAAQ,IAAG,cAAc,CAAC,QAAQ,CAOrC;IACD,IAAI,IAAI,WAOP;IACD,IAAI,CAAC,GAAG,IAAI,EAAC,MAAM,EAAE,GAEF,cAAc,CAAC,CAAC,CAAC;IAEpC,KAAK,CAAC,GAAG,KAAK,EAAC,MAAM,EAAE,GAEJ,cAAc,CAAC,CAAC,CAAC;IAEpC,QAAQ,CAAC,GAAG,QAAQ,EAAC,MAAM,EAAE,GAEV,cAAc,CAAC,CAAC,CAAC;IAEpC;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,GAEvB,cAAc,CAAC,CAAC,CAAC;IAEpC,MAAM,CAAC,GAAG,WAAW,EAAC,MAAM,EAAE,GAEX,cAAc,CAAC,CAAC,CAAC;IAEpC;;;;;OAKG;IACG,MAAM,CAAC,OAAO,EAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,EAAC,GAAG,GAAE,OAAO,CAAC,WAAW,GAAC,SAAS,CAAC;CAoB1F;AACD,yBAAiB,cAAc,CAAA;IAC3B,KAAY,QAAQ,CAAC,CAAC,SAAS,MAAM,kBAAkB,IAAE,CAAC,OAAO,EAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAC,MAAM,EAAC,WAAW,KAAG,WAAW,GAAC,SAAS,GAAC,OAAO,CAAC,WAAW,GAAC,SAAS,CAAC,CAAC;IACvK,KAAY,OAAO,CAAC,CAAC,SAAS,MAAM,kBAAkB,IAAE,CAAC,OAAO,EAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAG,YAAY,CAAC,OAAO,CAAC,CAAA;IACnH,KAAY,QAAQ,GAAC;QACjB,OAAO,EAAC,MAAM,CAAC;QACf,IAAI,EAAC,MAAM,EAAE,CAAC;QACd,KAAK,EAAC,MAAM,EAAE,CAAC;QACf,QAAQ,EAAC,MAAM,EAAE,CAAC;KACrB,CAAA;CACJ"}
|
package/lib/command.js
CHANGED
|
@@ -6,8 +6,39 @@ import { ZhinError } from "./errors.js";
|
|
|
6
6
|
*/
|
|
7
7
|
export class MessageCommand extends SegmentMatcher {
|
|
8
8
|
#callbacks = [];
|
|
9
|
+
#desc = [];
|
|
10
|
+
#usage = [];
|
|
11
|
+
#examples = [];
|
|
9
12
|
#permissions = [];
|
|
10
13
|
#checkers = [];
|
|
14
|
+
get helpInfo() {
|
|
15
|
+
return {
|
|
16
|
+
pattern: this.pattern,
|
|
17
|
+
desc: this.#desc,
|
|
18
|
+
usage: this.#usage,
|
|
19
|
+
examples: this.#examples
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
get help() {
|
|
23
|
+
return [
|
|
24
|
+
this.pattern,
|
|
25
|
+
...this.#desc,
|
|
26
|
+
...this.#usage,
|
|
27
|
+
...this.#examples
|
|
28
|
+
].join("\n");
|
|
29
|
+
}
|
|
30
|
+
desc(...desc) {
|
|
31
|
+
this.#desc.push(...desc);
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
usage(...usage) {
|
|
35
|
+
this.#usage.push(...usage);
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
examples(...examples) {
|
|
39
|
+
this.#examples.push(...examples);
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
11
42
|
/**
|
|
12
43
|
* 注册命令回调
|
|
13
44
|
* @param callback 命令处理函数
|
package/lib/command.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAK5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC;;;GAGG;AACH,MAAM,OAAO,cAA4E,SAAQ,cAAc;IAC3G,UAAU,GAA8B,EAAE,CAAC;IAC3C,YAAY,GAAU,EAAE,CAAC;IACzB,SAAS,GAA6B,EAAE,CAAA;IACxC;;;OAGG;IACH,MAAM,CAAC,QAAmC;QACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC9B,OAAO,IAAyB,CAAC;IACrC,CAAC;IACD,MAAM,CAAC,GAAG,WAAoB;QAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAA;QACtC,OAAO,IAAyB,CAAC;IACrC,CAAC;IACD;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,OAAkC,EAAC,GAAO;QACnD,KAAI,MAAM,UAAU,IAAI,IAAI,CAAC,YAAY,EAAC,CAAC;YACvC,MAAM,MAAM,GAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YAC5C,IAAG,CAAC,MAAM,EAAE,CAAC;gBACT,MAAM,IAAI,SAAS,CAAC,MAAM,UAAU,MAAM,CAAC,CAAA;YAC/C,CAAC;YACD,MAAM,MAAM,GAAC,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,EAAC,OAAO,CAAC,CAAA;YACnD,IAAG,CAAC,MAAM;gBAAE,OAAO;QACvB,CAAC;QACD,KAAI,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,EAAC,CAAC;YAC/B,MAAM,MAAM,GAAC,MAAM,KAAK,CAAC,OAAO,CAAC,CAAA;YACjC,IAAG,CAAC,MAAM;gBAAE,OAAO;QACvB,CAAC;QACD,MAAM,OAAO,GAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAG,CAAC,OAAO;YAAE,OAAM;QACnB,KAAI,MAAM,OAAO,IAAI,IAAI,CAAC,UAAU,EAAC,CAAC;YAClC,MAAM,MAAM,GAAC,MAAM,OAAO,CAAC,OAAO,EAAC,OAAO,CAAC,CAAA;YAC3C,IAAG,MAAM;gBAAE,OAAO,MAAM,CAAA;QAC5B,CAAC;IACL,CAAC;CACJ"}
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAK5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC;;;GAGG;AACH,MAAM,OAAO,cAA4E,SAAQ,cAAc;IAC3G,UAAU,GAA8B,EAAE,CAAC;IAC3C,KAAK,GAAU,EAAE,CAAC;IAClB,MAAM,GAAU,EAAE,CAAC;IACnB,SAAS,GAAU,EAAE,CAAC;IACtB,YAAY,GAAU,EAAE,CAAC;IACzB,SAAS,GAA6B,EAAE,CAAA;IACxC,IAAI,QAAQ;QACR,OAAO;YACH,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,QAAQ,EAAE,IAAI,CAAC,SAAS;SAC3B,CAAA;IACL,CAAC;IACD,IAAI,IAAI;QACJ,OAAO;YACH,IAAI,CAAC,OAAO;YACZ,GAAG,IAAI,CAAC,KAAK;YACb,GAAG,IAAI,CAAC,MAAM;YACd,GAAG,IAAI,CAAC,SAAS;SACpB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IACD,IAAI,CAAC,GAAG,IAAa;QACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QACxB,OAAO,IAAyB,CAAC;IACrC,CAAC;IACD,KAAK,CAAC,GAAG,KAAc;QACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAA;QAC1B,OAAO,IAAyB,CAAC;IACrC,CAAC;IACD,QAAQ,CAAC,GAAG,QAAiB;QACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;QAChC,OAAO,IAAyB,CAAC;IACrC,CAAC;IACD;;;OAGG;IACH,MAAM,CAAC,QAAmC;QACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC9B,OAAO,IAAyB,CAAC;IACrC,CAAC;IACD,MAAM,CAAC,GAAG,WAAoB;QAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAA;QACtC,OAAO,IAAyB,CAAC;IACrC,CAAC;IACD;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,OAAkC,EAAC,GAAO;QACnD,KAAI,MAAM,UAAU,IAAI,IAAI,CAAC,YAAY,EAAC,CAAC;YACvC,MAAM,MAAM,GAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YAC5C,IAAG,CAAC,MAAM,EAAE,CAAC;gBACT,MAAM,IAAI,SAAS,CAAC,MAAM,UAAU,MAAM,CAAC,CAAA;YAC/C,CAAC;YACD,MAAM,MAAM,GAAC,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,EAAC,OAAO,CAAC,CAAA;YACnD,IAAG,CAAC,MAAM;gBAAE,OAAO;QACvB,CAAC;QACD,KAAI,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,EAAC,CAAC;YAC/B,MAAM,MAAM,GAAC,MAAM,KAAK,CAAC,OAAO,CAAC,CAAA;YACjC,IAAG,CAAC,MAAM;gBAAE,OAAO;QACvB,CAAC;QACD,MAAM,OAAO,GAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAG,CAAC,OAAO;YAAE,OAAM;QACnB,KAAI,MAAM,OAAO,IAAI,IAAI,CAAC,UAAU,EAAC,CAAC;YAClC,MAAM,MAAM,GAAC,MAAM,OAAO,CAAC,OAAO,EAAC,OAAO,CAAC,CAAA;YAC3C,IAAG,MAAM;gBAAE,OAAO,MAAM,CAAA;QAC5B,CAAC;IACL,CAAC;CACJ"}
|
package/lib/component.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { Dict, SendContent, SendOptions } from './types.js';
|
|
|
2
2
|
export declare const CapWithChild: unique symbol;
|
|
3
3
|
export declare const CapWithClose: unique symbol;
|
|
4
4
|
export type Component<P = any> = {
|
|
5
|
-
(props: P, context: ComponentContext): Promise<SendContent>;
|
|
5
|
+
(props: P, context: ComponentContext): SendContent | Promise<SendContent>;
|
|
6
6
|
name: string;
|
|
7
7
|
};
|
|
8
8
|
export interface ComponentContext {
|
package/lib/component.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAkB,MAAM,YAAY,CAAC;AAI5E,eAAO,MAAM,YAAY,eAAyB,CAAC;AACnD,eAAO,MAAM,YAAY,eAAyB,CAAC;AAGnD,MAAM,MAAM,SAAS,CAAC,CAAC,GAAG,GAAG,IAAI;IAC7B,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAkB,MAAM,YAAY,CAAC;AAI5E,eAAO,MAAM,YAAY,eAAyB,CAAC;AACnD,eAAO,MAAM,YAAY,eAAyB,CAAC;AAGnD,MAAM,MAAM,SAAS,CAAC,CAAC,GAAG,GAAG,IAAI;IAC7B,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,GAAG,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1E,IAAI,EAAE,MAAM,CAAC;CAChB,CAAA;AAID,MAAM,WAAW,gBAAgB;IAE7B,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAGxF,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAGtB,MAAM,CAAC,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAGpC,IAAI,EAAE,MAAM,CAAC;IAGb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,CAAC;IACpC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;CACzC;AAGD,wBAAgB,eAAe,CAAC,CAAC,GAAG,GAAG,EACnC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EACvB,IAAI,GAAE,MAAuB,GAC9B,SAAS,CAAC,CAAC,CAAC,CAad;AAGD,wBAAgB,cAAc,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAWpF;AAGD,wBAAgB,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,CAAC,CA6FrG;AAuRD,wBAAgB,sBAAsB,CAClC,KAAK,GAAE,IAAS,EAChB,MAAM,CAAC,EAAE,gBAAgB,EACzB,IAAI,GAAE,MAAW,GAClB,gBAAgB,CAuBlB;AACD,wBAAsB,eAAe,CAAC,CAAC,GAAG,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,CAGzI;AAED,wBAAsB,gBAAgB,CAClC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EACpC,OAAO,EAAE,WAAW,EACpB,aAAa,CAAC,EAAE,gBAAgB,GACjC,OAAO,CAAC,WAAW,CAAC,CAkElB;AAGL,eAAO,MAAM,QAAQ;eAA8C,WAAW;EAchE,CAAC;AACf,eAAO,MAAM,KAAK,gBAEP,CAAC"}
|
package/lib/cron.d.ts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Cron 定时任务类
|
|
3
|
-
* 基于
|
|
3
|
+
* 基于 croner 实现的定时任务调度器 (无需 Luxon,内存占用更小)
|
|
4
4
|
*/
|
|
5
5
|
export declare class Cron {
|
|
6
|
-
private
|
|
6
|
+
private job;
|
|
7
7
|
private callback;
|
|
8
|
-
private timeoutId?;
|
|
9
|
-
private isRunning;
|
|
10
8
|
private isDisposed;
|
|
9
|
+
private _cronExpression;
|
|
11
10
|
/**
|
|
12
11
|
* 创建一个新的 Cron 实例
|
|
13
12
|
* @param cronExpression - Cron 表达式 (例如: '0 0 * * *' 表示每天午夜执行)
|
|
@@ -42,14 +41,6 @@ export declare class Cron {
|
|
|
42
41
|
* 获取原始的 cron 表达式字符串
|
|
43
42
|
*/
|
|
44
43
|
get cronExpression(): string;
|
|
45
|
-
/**
|
|
46
|
-
* 调度下一次执行
|
|
47
|
-
*/
|
|
48
|
-
private scheduleNext;
|
|
49
|
-
/**
|
|
50
|
-
* 执行回调函数并调度下一次执行
|
|
51
|
-
*/
|
|
52
|
-
private executeCallback;
|
|
53
44
|
}
|
|
54
45
|
/**
|
|
55
46
|
* Cron 表达式格式说明:
|
package/lib/cron.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../src/cron.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,qBAAa,IAAI;IACf,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../src/cron.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,qBAAa,IAAI;IACf,OAAO,CAAC,GAAG,CAAuB;IAClC,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,eAAe,CAAS;IAEhC;;;;OAIG;gBACS,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAaxE;;OAEG;IACH,GAAG,IAAI,IAAI;IAmBX;;OAEG;IACH,IAAI,IAAI,IAAI;IAOZ;;OAEG;IACH,OAAO,IAAI,IAAI;IAKf;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAiB5B;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAE3B;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG"}
|
package/lib/cron.js
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Cron as Croner } from 'croner';
|
|
2
2
|
/**
|
|
3
3
|
* Cron 定时任务类
|
|
4
|
-
* 基于
|
|
4
|
+
* 基于 croner 实现的定时任务调度器 (无需 Luxon,内存占用更小)
|
|
5
5
|
*/
|
|
6
6
|
export class Cron {
|
|
7
|
-
|
|
7
|
+
job = null;
|
|
8
8
|
callback;
|
|
9
|
-
timeoutId;
|
|
10
|
-
isRunning = false;
|
|
11
9
|
isDisposed = false;
|
|
10
|
+
_cronExpression;
|
|
12
11
|
/**
|
|
13
12
|
* 创建一个新的 Cron 实例
|
|
14
13
|
* @param cronExpression - Cron 表达式 (例如: '0 0 * * *' 表示每天午夜执行)
|
|
@@ -16,8 +15,11 @@ export class Cron {
|
|
|
16
15
|
*/
|
|
17
16
|
constructor(cronExpression, callback) {
|
|
18
17
|
try {
|
|
19
|
-
this.
|
|
18
|
+
this._cronExpression = cronExpression;
|
|
20
19
|
this.callback = callback;
|
|
20
|
+
// 验证 cron 表达式是否有效 (不启动)
|
|
21
|
+
const testJob = new Croner(cronExpression, { paused: true });
|
|
22
|
+
testJob.stop();
|
|
21
23
|
}
|
|
22
24
|
catch (error) {
|
|
23
25
|
throw new Error(`Invalid cron expression "${cronExpression}": ${error.message}`);
|
|
@@ -30,21 +32,27 @@ export class Cron {
|
|
|
30
32
|
if (this.isDisposed) {
|
|
31
33
|
throw new Error('Cannot run a disposed cron job');
|
|
32
34
|
}
|
|
33
|
-
if (this.
|
|
35
|
+
if (this.job) {
|
|
34
36
|
return; // 已经在运行中
|
|
35
37
|
}
|
|
36
|
-
|
|
37
|
-
this.
|
|
38
|
+
// 创建并启动任务
|
|
39
|
+
this.job = new Croner(this._cronExpression, async () => {
|
|
40
|
+
try {
|
|
41
|
+
await this.callback();
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
console.error(`Error executing cron callback: ${error.message}`);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
38
47
|
}
|
|
39
48
|
/**
|
|
40
49
|
* 停止定时任务
|
|
41
50
|
*/
|
|
42
51
|
stop() {
|
|
43
|
-
if (this.
|
|
44
|
-
|
|
45
|
-
this.
|
|
52
|
+
if (this.job) {
|
|
53
|
+
this.job.stop();
|
|
54
|
+
this.job = null;
|
|
46
55
|
}
|
|
47
|
-
this.isRunning = false;
|
|
48
56
|
}
|
|
49
57
|
/**
|
|
50
58
|
* 销毁定时任务,释放资源
|
|
@@ -60,15 +68,20 @@ export class Cron {
|
|
|
60
68
|
if (this.isDisposed) {
|
|
61
69
|
throw new Error('Cannot get next execution time for a disposed cron job');
|
|
62
70
|
}
|
|
63
|
-
//
|
|
64
|
-
this.
|
|
65
|
-
|
|
71
|
+
// 创建临时任务来获取下次执行时间
|
|
72
|
+
const tempJob = new Croner(this._cronExpression, { paused: true });
|
|
73
|
+
const nextRun = tempJob.nextRun();
|
|
74
|
+
tempJob.stop();
|
|
75
|
+
if (!nextRun) {
|
|
76
|
+
throw new Error('Cannot determine next execution time');
|
|
77
|
+
}
|
|
78
|
+
return nextRun;
|
|
66
79
|
}
|
|
67
80
|
/**
|
|
68
81
|
* 检查任务是否正在运行
|
|
69
82
|
*/
|
|
70
83
|
get running() {
|
|
71
|
-
return this.
|
|
84
|
+
return this.job !== null;
|
|
72
85
|
}
|
|
73
86
|
/**
|
|
74
87
|
* 检查任务是否已被销毁
|
|
@@ -80,53 +93,7 @@ export class Cron {
|
|
|
80
93
|
* 获取原始的 cron 表达式字符串
|
|
81
94
|
*/
|
|
82
95
|
get cronExpression() {
|
|
83
|
-
return this.
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* 调度下一次执行
|
|
87
|
-
*/
|
|
88
|
-
scheduleNext() {
|
|
89
|
-
if (!this.isRunning || this.isDisposed) {
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
try {
|
|
93
|
-
// 重置到当前时间并获取下一次执行时间
|
|
94
|
-
this.expression.reset();
|
|
95
|
-
const nextDate = this.expression.next().toDate();
|
|
96
|
-
const now = new Date();
|
|
97
|
-
const delay = nextDate.getTime() - now.getTime();
|
|
98
|
-
// 如果延迟时间为负数或0,说明应该立即执行
|
|
99
|
-
if (delay <= 0) {
|
|
100
|
-
this.executeCallback();
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
// 设置定时器
|
|
104
|
-
this.timeoutId = setTimeout(() => {
|
|
105
|
-
this.executeCallback();
|
|
106
|
-
}, delay);
|
|
107
|
-
}
|
|
108
|
-
catch (error) {
|
|
109
|
-
console.error(`Error scheduling next cron execution: ${error.message}`);
|
|
110
|
-
// 如果出错,停止任务
|
|
111
|
-
this.stop();
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* 执行回调函数并调度下一次执行
|
|
116
|
-
*/
|
|
117
|
-
async executeCallback() {
|
|
118
|
-
if (!this.isRunning || this.isDisposed) {
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
try {
|
|
122
|
-
// 执行回调函数
|
|
123
|
-
await this.callback();
|
|
124
|
-
}
|
|
125
|
-
catch (error) {
|
|
126
|
-
console.error(`Error executing cron callback: ${error.message}`);
|
|
127
|
-
}
|
|
128
|
-
// 调度下一次执行
|
|
129
|
-
this.scheduleNext();
|
|
96
|
+
return this._cronExpression;
|
|
130
97
|
}
|
|
131
98
|
}
|
|
132
99
|
/**
|
package/lib/cron.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron.js","sourceRoot":"","sources":["../src/cron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cron.js","sourceRoot":"","sources":["../src/cron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,QAAQ,CAAC;AAExC;;;GAGG;AACH,MAAM,OAAO,IAAI;IACP,GAAG,GAAkB,IAAI,CAAC;IAC1B,QAAQ,CAA6B;IACrC,UAAU,GAAG,KAAK,CAAC;IACnB,eAAe,CAAS;IAEhC;;;;OAIG;IACH,YAAY,cAAsB,EAAE,QAAoC;QACtE,IAAI,CAAC;YACH,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;YACtC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAEzB,wBAAwB;YACxB,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,4BAA4B,cAAc,MAAO,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IAED;;OAEG;IACH,GAAG;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,SAAS;QACnB,CAAC;QAED,UAAU;QACV,IAAI,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;YACrD,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,kCAAmC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QAED,kBAAkB;QAClB,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG"}
|
package/lib/index.d.ts
CHANGED
|
@@ -12,5 +12,5 @@ export * from './errors.js';
|
|
|
12
12
|
export * from './cron.js';
|
|
13
13
|
export * from '@zhin.js/database';
|
|
14
14
|
export * from '@zhin.js/logger';
|
|
15
|
-
export { Dependency, Schema } from '@zhin.js/hmr';
|
|
15
|
+
export { Dependency, Schema, usePerformanceMonitor } from '@zhin.js/hmr';
|
|
16
16
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAE5B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAE5B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA"}
|
package/lib/index.js
CHANGED
|
@@ -14,5 +14,5 @@ export * from './errors.js'; // 导出错误处理系统
|
|
|
14
14
|
export * from './cron.js';
|
|
15
15
|
export * from '@zhin.js/database';
|
|
16
16
|
export * from '@zhin.js/logger';
|
|
17
|
-
export { Dependency, Schema } from '@zhin.js/hmr';
|
|
17
|
+
export { Dependency, Schema, usePerformanceMonitor } from '@zhin.js/hmr';
|
|
18
18
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,0CAA0C;AAC1C,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA,CAAE,WAAW;AACxC,cAAc,WAAW,CAAA;AACzB,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,0CAA0C;AAC1C,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA,CAAE,WAAW;AACxC,cAAc,WAAW,CAAA;AACzB,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA"}
|
package/lib/jsx.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { MaybePromise } from '@zhin.js/types';
|
|
2
1
|
import { SendContent, MessageElement } from './types.js';
|
|
3
2
|
import { MessageComponent } from './message.js';
|
|
4
3
|
import { Component, ComponentContext } from './component.js';
|
|
@@ -10,9 +9,9 @@ export type JSXProps = Record<string, any> & {
|
|
|
10
9
|
export { Fragment } from './component.js';
|
|
11
10
|
declare global {
|
|
12
11
|
namespace JSX {
|
|
13
|
-
type Element =
|
|
12
|
+
type Element = SendContent | Promise<SendContent>;
|
|
14
13
|
interface ElementClass {
|
|
15
|
-
render(props: any, context?: ComponentContext):
|
|
14
|
+
render(props: any, context?: ComponentContext): Element;
|
|
16
15
|
}
|
|
17
16
|
interface ElementAttributesProperty {
|
|
18
17
|
data: {};
|
package/lib/jsx.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx.d.ts","sourceRoot":"","sources":["../src/jsx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"jsx.d.ts","sourceRoot":"","sources":["../src/jsx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAC,cAAc,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAI7D,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,EAAE,CAAC;AAGxG,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAE;AAGtD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IACzC,QAAQ,CAAC,EAAE,WAAW,CAAC;CAC1B,CAAC;AACF,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAA;AAEvC,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,GAAG,CAAC;QAGV,KAAK,OAAO,GAAG,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;QACjD,UAAU,YAAY;YAClB,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC;SAC3D;QACD,UAAU,yBAAyB;YAC/B,IAAI,EAAE,EAAE,CAAC;SACZ;QACD,UAAU,wBAAwB;YAC9B,QAAQ,EAAE,EAAE,CAAC;SAChB;QACD,UAAU,iBAAiB;YACvB,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC;SAC3B;QAED,UAAU,mBAAmB;YACzB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;SACzB;KACJ;CACJ;AAGD,wBAAgB,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAK/E;AAGD,wBAAgB,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,GAAG,cAAc,CAE1E;AAID,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,CAoChH"}
|
package/lib/jsx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx.js","sourceRoot":"","sources":["../src/jsx.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"jsx.js","sourceRoot":"","sources":["../src/jsx.ts"],"names":[],"mappings":"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"}
|
package/lib/message.d.ts
CHANGED
|
@@ -2,14 +2,11 @@ import { MessageElement, MessageSender, SendContent } from "./types";
|
|
|
2
2
|
import { Component } from "./component.js";
|
|
3
3
|
/**
|
|
4
4
|
* 消息组件类型:用于自定义消息结构
|
|
5
|
-
* 支持同步和异步组件
|
|
6
5
|
*/
|
|
7
6
|
export type MessageComponent<T extends object> = {
|
|
8
7
|
type: Component<T & {
|
|
9
|
-
children?: SendContent
|
|
10
|
-
}
|
|
11
|
-
children?: SendContent;
|
|
12
|
-
}) => Promise<SendContent>);
|
|
8
|
+
children?: SendContent | Promise<SendContent>;
|
|
9
|
+
}>;
|
|
13
10
|
data: T;
|
|
14
11
|
};
|
|
15
12
|
/**
|
package/lib/message.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,aAAa,EAAE,WAAW,EAAC,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,aAAa,EAAE,WAAW,EAAC,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAAE;IAC3C,IAAI,EAAC,SAAS,CAAC,CAAC,GAAC;QAAC,QAAQ,CAAC,EAAC,WAAW,GAAC,OAAO,CAAC,WAAW,CAAC,CAAA;KAAC,CAAC,CAAA;IAC9D,IAAI,EAAC,CAAC,CAAA;CACT,CAAA;AACD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;CACrB;AACD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAA;AACzD;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAC,MAAM,CAAA;IACf,IAAI,EAAC,MAAM,CAAA;IACX,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,OAAO,EAAC,WAAW,EAAC,KAAK,CAAC,EAAC,OAAO,GAAC,MAAM,GAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IACjE,OAAO,IAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACvB,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CAChB;AACD;;GAEG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,MAAM,GAAC,EAAE,IAAE,WAAW,GAAC,CAAC,CAAC;AACvD,yBAAiB,OAAO,CAAA;IACpB;;OAEG;IACH,SAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAC,CAAC,EAAC,MAAM,EAAC,WAAW,GAAE,OAAO,CAAC,CAAC,CAAC,CAE5E;CACJ"}
|
package/lib/message.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"AAwCA,MAAM,KAAW,OAAO,CAOvB;AAPD,WAAiB,OAAO;IACpB;;OAEG;IACH,SAAgB,IAAI,CAAmB,KAAO,EAAC,MAAkB;QAC7D,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAC,MAAM,CAAC,CAAA;IACtC,CAAC;IAFe,YAAI,OAEnB,CAAA;AACL,CAAC,EAPgB,OAAO,KAAP,OAAO,QAOvB"}
|
package/lib/plugin.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { PermissionItem, PermissionChecker } from './permissions.js';
|
|
|
3
3
|
import { Message } from './message.js';
|
|
4
4
|
import { Schema } from '@zhin.js/hmr';
|
|
5
5
|
import { Dependency, Logger } from "@zhin.js/hmr";
|
|
6
|
-
import { App } from "./app";
|
|
6
|
+
import { App } from "./app.js";
|
|
7
7
|
import { MessageCommand } from "./command.js";
|
|
8
8
|
import { Component } from "./component.js";
|
|
9
9
|
import { Prompt } from "./prompt.js";
|
package/lib/plugin.d.ts.map
CHANGED
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
package/lib/plugin.js
CHANGED
|
@@ -165,7 +165,19 @@ export class Plugin extends Dependency {
|
|
|
165
165
|
for (const middleware of this.middlewares) {
|
|
166
166
|
this.dispatch('middleware.remove', middleware);
|
|
167
167
|
}
|
|
168
|
-
this.middlewares =
|
|
168
|
+
this.middlewares.length = 0; // 清空数组但保持引用
|
|
169
|
+
// 清理 commands
|
|
170
|
+
this.commands.length = 0;
|
|
171
|
+
// 清理权限
|
|
172
|
+
this.permissions.length = 0;
|
|
173
|
+
// 清理组件 Map
|
|
174
|
+
this.components.clear();
|
|
175
|
+
// 清理定义 Map
|
|
176
|
+
this.definitions.clear();
|
|
177
|
+
// 清理 crons(在 dispose 事件中已处理,这里确保清空)
|
|
178
|
+
this.crons.length = 0;
|
|
179
|
+
// 清空 logger 引用
|
|
180
|
+
this.#logger = undefined;
|
|
169
181
|
// 调用父类的dispose方法
|
|
170
182
|
super.dispose();
|
|
171
183
|
}
|
package/lib/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.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.
|
|
3
|
+
"version": "1.0.17",
|
|
4
4
|
"description": "Zhin机器人核心框架",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -24,12 +24,12 @@
|
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
+
"croner": "^9.1.0",
|
|
28
|
+
"dotenv": "^16.3.1",
|
|
27
29
|
"segment-matcher": "latest",
|
|
28
|
-
"yaml": "^2.3.4",
|
|
29
30
|
"toml": "^3.0.0",
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"@zhin.js/hmr": "1.0.7",
|
|
31
|
+
"yaml": "^2.3.4",
|
|
32
|
+
"@zhin.js/hmr": "1.0.8",
|
|
33
33
|
"@zhin.js/database": "1.0.4"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
package/src/command.ts
CHANGED
|
@@ -12,8 +12,39 @@ import { App } from "./app.js";
|
|
|
12
12
|
*/
|
|
13
13
|
export class MessageCommand<T extends keyof RegisteredAdapters=keyof RegisteredAdapters> extends SegmentMatcher{
|
|
14
14
|
#callbacks:MessageCommand.Callback<T>[]=[];
|
|
15
|
+
#desc:string[]=[];
|
|
16
|
+
#usage:string[]=[];
|
|
17
|
+
#examples:string[]=[];
|
|
15
18
|
#permissions:string[]=[];
|
|
16
19
|
#checkers:MessageCommand.Checker<T>[]=[]
|
|
20
|
+
get helpInfo():MessageCommand.HelpInfo{
|
|
21
|
+
return {
|
|
22
|
+
pattern: this.pattern,
|
|
23
|
+
desc: this.#desc,
|
|
24
|
+
usage: this.#usage,
|
|
25
|
+
examples: this.#examples
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
get help(){
|
|
29
|
+
return [
|
|
30
|
+
this.pattern,
|
|
31
|
+
...this.#desc,
|
|
32
|
+
...this.#usage,
|
|
33
|
+
...this.#examples
|
|
34
|
+
].join("\n");
|
|
35
|
+
}
|
|
36
|
+
desc(...desc:string[]){
|
|
37
|
+
this.#desc.push(...desc)
|
|
38
|
+
return this as MessageCommand<T>;
|
|
39
|
+
}
|
|
40
|
+
usage(...usage:string[]){
|
|
41
|
+
this.#usage.push(...usage)
|
|
42
|
+
return this as MessageCommand<T>;
|
|
43
|
+
}
|
|
44
|
+
examples(...examples:string[]){
|
|
45
|
+
this.#examples.push(...examples)
|
|
46
|
+
return this as MessageCommand<T>;
|
|
47
|
+
}
|
|
17
48
|
/**
|
|
18
49
|
* 注册命令回调
|
|
19
50
|
* @param callback 命令处理函数
|
|
@@ -56,4 +87,10 @@ export class MessageCommand<T extends keyof RegisteredAdapters=keyof RegisteredA
|
|
|
56
87
|
export namespace MessageCommand{
|
|
57
88
|
export type Callback<T extends keyof RegisteredAdapters>=(message:Message<AdapterMessage<T>>,result:MatchResult)=>SendContent|undefined|Promise<SendContent|undefined>;
|
|
58
89
|
export type Checker<T extends keyof RegisteredAdapters>=(message:Message<AdapterMessage<T>>)=>MaybePromise<boolean>
|
|
90
|
+
export type HelpInfo={
|
|
91
|
+
pattern:string;
|
|
92
|
+
desc:string[];
|
|
93
|
+
usage:string[];
|
|
94
|
+
examples:string[];
|
|
95
|
+
}
|
|
59
96
|
}
|
package/src/component.ts
CHANGED
|
@@ -8,7 +8,7 @@ export const CapWithClose = Symbol('CapWithClose');
|
|
|
8
8
|
|
|
9
9
|
// 函数式组件类型定义
|
|
10
10
|
export type Component<P = any> = {
|
|
11
|
-
(props: P, context: ComponentContext): Promise<SendContent>;
|
|
11
|
+
(props: P, context: ComponentContext): SendContent | Promise<SendContent>;
|
|
12
12
|
name: string;
|
|
13
13
|
}
|
|
14
14
|
|
|
@@ -562,4 +562,4 @@ export const Fragment = defineComponent(async (props: { children?: SendContent }
|
|
|
562
562
|
}, 'Fragment');
|
|
563
563
|
export const Fetch = defineComponent(async ({ url }) => {
|
|
564
564
|
return await fetch(url).then((r) => r.text());
|
|
565
|
-
}, 'fetch');
|
|
565
|
+
}, 'fetch');
|
package/src/cron.ts
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Cron as Croner } from 'croner';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Cron 定时任务类
|
|
5
|
-
* 基于
|
|
5
|
+
* 基于 croner 实现的定时任务调度器 (无需 Luxon,内存占用更小)
|
|
6
6
|
*/
|
|
7
7
|
export class Cron {
|
|
8
|
-
private
|
|
8
|
+
private job: Croner | null = null;
|
|
9
9
|
private callback: () => void | Promise<void>;
|
|
10
|
-
private timeoutId?: NodeJS.Timeout;
|
|
11
|
-
private isRunning = false;
|
|
12
10
|
private isDisposed = false;
|
|
11
|
+
private _cronExpression: string;
|
|
13
12
|
|
|
14
13
|
/**
|
|
15
14
|
* 创建一个新的 Cron 实例
|
|
@@ -18,8 +17,12 @@ export class Cron {
|
|
|
18
17
|
*/
|
|
19
18
|
constructor(cronExpression: string, callback: () => void | Promise<void>) {
|
|
20
19
|
try {
|
|
21
|
-
this.
|
|
20
|
+
this._cronExpression = cronExpression;
|
|
22
21
|
this.callback = callback;
|
|
22
|
+
|
|
23
|
+
// 验证 cron 表达式是否有效 (不启动)
|
|
24
|
+
const testJob = new Croner(cronExpression, { paused: true });
|
|
25
|
+
testJob.stop();
|
|
23
26
|
} catch (error) {
|
|
24
27
|
throw new Error(`Invalid cron expression "${cronExpression}": ${(error as Error).message}`);
|
|
25
28
|
}
|
|
@@ -33,23 +36,28 @@ export class Cron {
|
|
|
33
36
|
throw new Error('Cannot run a disposed cron job');
|
|
34
37
|
}
|
|
35
38
|
|
|
36
|
-
if (this.
|
|
39
|
+
if (this.job) {
|
|
37
40
|
return; // 已经在运行中
|
|
38
41
|
}
|
|
39
42
|
|
|
40
|
-
|
|
41
|
-
this.
|
|
43
|
+
// 创建并启动任务
|
|
44
|
+
this.job = new Croner(this._cronExpression, async () => {
|
|
45
|
+
try {
|
|
46
|
+
await this.callback();
|
|
47
|
+
} catch (error) {
|
|
48
|
+
console.error(`Error executing cron callback: ${(error as Error).message}`);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
42
51
|
}
|
|
43
52
|
|
|
44
53
|
/**
|
|
45
54
|
* 停止定时任务
|
|
46
55
|
*/
|
|
47
56
|
stop(): void {
|
|
48
|
-
if (this.
|
|
49
|
-
|
|
50
|
-
this.
|
|
57
|
+
if (this.job) {
|
|
58
|
+
this.job.stop();
|
|
59
|
+
this.job = null;
|
|
51
60
|
}
|
|
52
|
-
this.isRunning = false;
|
|
53
61
|
}
|
|
54
62
|
|
|
55
63
|
/**
|
|
@@ -68,16 +76,23 @@ export class Cron {
|
|
|
68
76
|
throw new Error('Cannot get next execution time for a disposed cron job');
|
|
69
77
|
}
|
|
70
78
|
|
|
71
|
-
//
|
|
72
|
-
this.
|
|
73
|
-
|
|
79
|
+
// 创建临时任务来获取下次执行时间
|
|
80
|
+
const tempJob = new Croner(this._cronExpression, { paused: true });
|
|
81
|
+
const nextRun = tempJob.nextRun();
|
|
82
|
+
tempJob.stop();
|
|
83
|
+
|
|
84
|
+
if (!nextRun) {
|
|
85
|
+
throw new Error('Cannot determine next execution time');
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return nextRun;
|
|
74
89
|
}
|
|
75
90
|
|
|
76
91
|
/**
|
|
77
92
|
* 检查任务是否正在运行
|
|
78
93
|
*/
|
|
79
94
|
get running(): boolean {
|
|
80
|
-
return this.
|
|
95
|
+
return this.job !== null;
|
|
81
96
|
}
|
|
82
97
|
|
|
83
98
|
/**
|
|
@@ -91,59 +106,7 @@ export class Cron {
|
|
|
91
106
|
* 获取原始的 cron 表达式字符串
|
|
92
107
|
*/
|
|
93
108
|
get cronExpression(): string {
|
|
94
|
-
return this.
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* 调度下一次执行
|
|
99
|
-
*/
|
|
100
|
-
private scheduleNext(): void {
|
|
101
|
-
if (!this.isRunning || this.isDisposed) {
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
try {
|
|
106
|
-
// 重置到当前时间并获取下一次执行时间
|
|
107
|
-
this.expression.reset();
|
|
108
|
-
const nextDate = this.expression.next().toDate();
|
|
109
|
-
const now = new Date();
|
|
110
|
-
const delay = nextDate.getTime() - now.getTime();
|
|
111
|
-
|
|
112
|
-
// 如果延迟时间为负数或0,说明应该立即执行
|
|
113
|
-
if (delay <= 0) {
|
|
114
|
-
this.executeCallback();
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// 设置定时器
|
|
119
|
-
this.timeoutId = setTimeout(() => {
|
|
120
|
-
this.executeCallback();
|
|
121
|
-
}, delay);
|
|
122
|
-
|
|
123
|
-
} catch (error) {
|
|
124
|
-
console.error(`Error scheduling next cron execution: ${(error as Error).message}`);
|
|
125
|
-
// 如果出错,停止任务
|
|
126
|
-
this.stop();
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* 执行回调函数并调度下一次执行
|
|
132
|
-
*/
|
|
133
|
-
private async executeCallback(): Promise<void> {
|
|
134
|
-
if (!this.isRunning || this.isDisposed) {
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
try {
|
|
139
|
-
// 执行回调函数
|
|
140
|
-
await this.callback();
|
|
141
|
-
} catch (error) {
|
|
142
|
-
console.error(`Error executing cron callback: ${(error as Error).message}`);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
// 调度下一次执行
|
|
146
|
-
this.scheduleNext();
|
|
109
|
+
return this._cronExpression;
|
|
147
110
|
}
|
|
148
111
|
}
|
|
149
112
|
|
package/src/index.ts
CHANGED
package/src/jsx.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { MaybePromise } from '@zhin.js/types';
|
|
2
1
|
import { SendContent,MessageElement } from './types.js';
|
|
3
2
|
import { MessageComponent } from './message.js';
|
|
4
3
|
import { Component, ComponentContext } from './component.js';
|
|
@@ -20,9 +19,9 @@ declare global {
|
|
|
20
19
|
namespace JSX {
|
|
21
20
|
// 支持同步和异步组件 - Element 可以是 MessageComponent
|
|
22
21
|
// TypeScript 会在编译时允许异步组件,运行时会自动 await
|
|
23
|
-
type Element =
|
|
22
|
+
type Element = SendContent | Promise<SendContent>
|
|
24
23
|
interface ElementClass {
|
|
25
|
-
render(props: any, context?: ComponentContext):
|
|
24
|
+
render(props: any, context?: ComponentContext): Element;
|
|
26
25
|
}
|
|
27
26
|
interface ElementAttributesProperty {
|
|
28
27
|
data: {};
|
package/src/message.ts
CHANGED
|
@@ -3,10 +3,9 @@ import { Component } from "./component.js";
|
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* 消息组件类型:用于自定义消息结构
|
|
6
|
-
* 支持同步和异步组件
|
|
7
6
|
*/
|
|
8
7
|
export type MessageComponent<T extends object>={
|
|
9
|
-
type:Component<T&{children?:SendContent
|
|
8
|
+
type:Component<T&{children?:SendContent|Promise<SendContent>}>
|
|
10
9
|
data:T
|
|
11
10
|
}
|
|
12
11
|
/**
|
package/src/plugin.ts
CHANGED
|
@@ -9,7 +9,7 @@ import { PermissionItem,PermissionChecker } from './permissions.js';
|
|
|
9
9
|
import {Message} from './message.js'
|
|
10
10
|
import { Schema } from '@zhin.js/hmr';
|
|
11
11
|
import {Dependency, Logger,} from "@zhin.js/hmr";
|
|
12
|
-
import {App} from "./app";
|
|
12
|
+
import {App} from "./app.js";
|
|
13
13
|
import {MessageCommand} from "./command.js";
|
|
14
14
|
import {Component, renderComponents} from "./component.js";
|
|
15
15
|
import { PluginError, MessageError, errorManager } from './errors.js';
|
|
@@ -194,7 +194,25 @@ export class Plugin extends Dependency<Plugin> {
|
|
|
194
194
|
for (const middleware of this.middlewares) {
|
|
195
195
|
this.dispatch('middleware.remove', middleware)
|
|
196
196
|
}
|
|
197
|
-
this.middlewares =
|
|
197
|
+
this.middlewares.length = 0; // 清空数组但保持引用
|
|
198
|
+
|
|
199
|
+
// 清理 commands
|
|
200
|
+
this.commands.length = 0;
|
|
201
|
+
|
|
202
|
+
// 清理权限
|
|
203
|
+
this.permissions.length = 0;
|
|
204
|
+
|
|
205
|
+
// 清理组件 Map
|
|
206
|
+
this.components.clear();
|
|
207
|
+
|
|
208
|
+
// 清理定义 Map
|
|
209
|
+
this.definitions.clear();
|
|
210
|
+
|
|
211
|
+
// 清理 crons(在 dispose 事件中已处理,这里确保清空)
|
|
212
|
+
this.crons.length = 0;
|
|
213
|
+
|
|
214
|
+
// 清空 logger 引用
|
|
215
|
+
this.#logger = undefined;
|
|
198
216
|
|
|
199
217
|
// 调用父类的dispose方法
|
|
200
218
|
super.dispose()
|
package/tests/command.test.ts
CHANGED
|
@@ -611,6 +611,83 @@ describe('Command系统测试', () => {
|
|
|
611
611
|
})
|
|
612
612
|
})
|
|
613
613
|
|
|
614
|
+
describe('帮助系统测试', () => {
|
|
615
|
+
it('应该正确设置和获取描述信息', () => {
|
|
616
|
+
const command = new MessageCommand('help')
|
|
617
|
+
.desc('这是命令描述', '可以有多行描述')
|
|
618
|
+
|
|
619
|
+
expect(command.helpInfo.desc).toEqual(['这是命令描述', '可以有多行描述'])
|
|
620
|
+
})
|
|
621
|
+
|
|
622
|
+
it('应该正确设置和获取用法信息', () => {
|
|
623
|
+
const command = new MessageCommand('help')
|
|
624
|
+
.usage('help', 'help <command>')
|
|
625
|
+
|
|
626
|
+
expect(command.helpInfo.usage).toEqual(['help', 'help <command>'])
|
|
627
|
+
})
|
|
628
|
+
|
|
629
|
+
it('应该正确设置和获取示例信息', () => {
|
|
630
|
+
const command = new MessageCommand('help')
|
|
631
|
+
.examples('help', 'help echo', 'help admin')
|
|
632
|
+
|
|
633
|
+
expect(command.helpInfo.examples).toEqual(['help', 'help echo', 'help admin'])
|
|
634
|
+
})
|
|
635
|
+
|
|
636
|
+
it('应该支持链式调用设置帮助信息', () => {
|
|
637
|
+
const command = new MessageCommand('test')
|
|
638
|
+
.desc('测试命令', '用于测试功能')
|
|
639
|
+
.usage('test', 'test <arg>')
|
|
640
|
+
.examples('test', 'test hello')
|
|
641
|
+
.action(() => 'Test response')
|
|
642
|
+
|
|
643
|
+
expect(command.helpInfo.pattern).toBe('test')
|
|
644
|
+
expect(command.helpInfo.desc).toEqual(['测试命令', '用于测试功能'])
|
|
645
|
+
expect(command.helpInfo.usage).toEqual(['test', 'test <arg>'])
|
|
646
|
+
expect(command.helpInfo.examples).toEqual(['test', 'test hello'])
|
|
647
|
+
})
|
|
648
|
+
|
|
649
|
+
it('应该正确生成帮助文本', () => {
|
|
650
|
+
const command = new MessageCommand('greet')
|
|
651
|
+
.desc('打招呼命令')
|
|
652
|
+
.usage('greet <name>')
|
|
653
|
+
.examples('greet Alice')
|
|
654
|
+
|
|
655
|
+
const help = command.help
|
|
656
|
+
|
|
657
|
+
expect(help).toContain('greet')
|
|
658
|
+
expect(help).toContain('打招呼命令')
|
|
659
|
+
expect(help).toContain('greet <name>')
|
|
660
|
+
expect(help).toContain('greet Alice')
|
|
661
|
+
})
|
|
662
|
+
|
|
663
|
+
it('应该处理没有帮助信息的情况', () => {
|
|
664
|
+
const command = new MessageCommand('simple')
|
|
665
|
+
|
|
666
|
+
expect(command.helpInfo.desc).toEqual([])
|
|
667
|
+
expect(command.helpInfo.usage).toEqual([])
|
|
668
|
+
expect(command.helpInfo.examples).toEqual([])
|
|
669
|
+
expect(command.help).toBe('simple')
|
|
670
|
+
})
|
|
671
|
+
|
|
672
|
+
it('应该正确返回 helpInfo 对象结构', () => {
|
|
673
|
+
const command = new MessageCommand('info')
|
|
674
|
+
.desc('信息命令')
|
|
675
|
+
.usage('info')
|
|
676
|
+
.examples('info')
|
|
677
|
+
|
|
678
|
+
const helpInfo = command.helpInfo
|
|
679
|
+
|
|
680
|
+
expect(helpInfo).toHaveProperty('pattern')
|
|
681
|
+
expect(helpInfo).toHaveProperty('desc')
|
|
682
|
+
expect(helpInfo).toHaveProperty('usage')
|
|
683
|
+
expect(helpInfo).toHaveProperty('examples')
|
|
684
|
+
expect(typeof helpInfo.pattern).toBe('string')
|
|
685
|
+
expect(Array.isArray(helpInfo.desc)).toBe(true)
|
|
686
|
+
expect(Array.isArray(helpInfo.usage)).toBe(true)
|
|
687
|
+
expect(Array.isArray(helpInfo.examples)).toBe(true)
|
|
688
|
+
})
|
|
689
|
+
})
|
|
690
|
+
|
|
614
691
|
describe('权限系统测试', () => {
|
|
615
692
|
it('应该正确处理权限检查失败', async () => {
|
|
616
693
|
const command = new MessageCommand('admin')
|