@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 CHANGED
@@ -1,5 +1,13 @@
1
1
  # @zhin.js/core
2
2
 
3
+ ## 1.0.17
4
+
5
+ ### Patch Changes
6
+
7
+ - 3bc5d56: fix: 内存优化
8
+ - Updated dependencies [3bc5d56]
9
+ - @zhin.js/hmr@1.0.8
10
+
3
11
  ## 1.0.16
4
12
 
5
13
  ### Patch Changes
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
@@ -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;;IAI3G;;;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;CACtH"}
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 命令处理函数
@@ -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"}
@@ -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 {
@@ -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;IAC5D,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"}
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
- * 基于 cron-parser 实现的定时任务调度器
3
+ * 基于 croner 实现的定时任务调度器 (无需 Luxon,内存占用更小)
4
4
  */
5
5
  export declare class Cron {
6
- private expression;
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,UAAU,CAAiB;IACnC,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAE3B;;;;OAIG;gBACS,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IASxE;;OAEG;IACH,GAAG,IAAI,IAAI;IAaX;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;IACH,OAAO,IAAI,IAAI;IAKf;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAU5B;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;;OAEG;IACH,OAAO,CAAC,YAAY;IA8BpB;;OAEG;YACW,eAAe;CAe9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG"}
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 { CronExpressionParser } from 'cron-parser';
1
+ import { Cron as Croner } from 'croner';
2
2
  /**
3
3
  * Cron 定时任务类
4
- * 基于 cron-parser 实现的定时任务调度器
4
+ * 基于 croner 实现的定时任务调度器 (无需 Luxon,内存占用更小)
5
5
  */
6
6
  export class Cron {
7
- expression;
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.expression = CronExpressionParser.parse(cronExpression);
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.isRunning) {
35
+ if (this.job) {
34
36
  return; // 已经在运行中
35
37
  }
36
- this.isRunning = true;
37
- this.scheduleNext();
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.timeoutId) {
44
- clearTimeout(this.timeoutId);
45
- this.timeoutId = undefined;
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.expression.reset();
65
- return this.expression.next().toDate();
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.isRunning;
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.expression.stringify();
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,oBAAoB,EAAkB,MAAM,aAAa,CAAC;AAEnE;;;GAGG;AACH,MAAM,OAAO,IAAI;IACP,UAAU,CAAiB;IAC3B,QAAQ,CAA6B;IACrC,SAAS,CAAkB;IAC3B,SAAS,GAAG,KAAK,CAAC;IAClB,UAAU,GAAG,KAAK,CAAC;IAE3B;;;;OAIG;IACH,YAAY,cAAsB,EAAE,QAAoC;QACtE,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC7D,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC3B,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,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,SAAS;QACnB,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,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,aAAa;QACb,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,oBAAoB;YACpB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YACjD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;YAEjD,uBAAuB;YACvB,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,QAAQ;YACR,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC/B,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,CAAC,EAAE,KAAK,CAAC,CAAC;QAEZ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yCAA0C,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACnF,YAAY;YACZ,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe;QAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,SAAS;YACT,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,kCAAmC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,UAAU;QACV,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG"}
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
@@ -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 = MessageComponent<any> | Promise<MessageComponent<any>> | Promise<SendContent>;
12
+ type Element = SendContent | Promise<SendContent>;
14
13
  interface ElementClass {
15
- render(props: any, context?: ComponentContext): MaybePromise<SendContent>;
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,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,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,gBAAgB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;QAC5F,UAAU,YAAY;YAClB,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;SAC7E;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"}
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":"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"}
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
- }> | ((props: T & {
11
- children?: SendContent;
12
- }) => Promise<SendContent>);
8
+ children?: SendContent | Promise<SendContent>;
9
+ }>;
13
10
  data: T;
14
11
  };
15
12
  /**
@@ -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;;;GAGG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAAE;IAC3C,IAAI,EAAC,SAAS,CAAC,CAAC,GAAC;QAAC,QAAQ,CAAC,EAAC,WAAW,CAAA;KAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG;QAAC,QAAQ,CAAC,EAAE,WAAW,CAAA;KAAC,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;IAC3G,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"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"AAyCA,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"}
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";
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
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.16",
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
- "dotenv": "^16.3.1",
31
- "cron-parser": "latest",
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 { CronExpressionParser, CronExpression } from 'cron-parser';
1
+ import { Cron as Croner } from 'croner';
2
2
 
3
3
  /**
4
4
  * Cron 定时任务类
5
- * 基于 cron-parser 实现的定时任务调度器
5
+ * 基于 croner 实现的定时任务调度器 (无需 Luxon,内存占用更小)
6
6
  */
7
7
  export class Cron {
8
- private expression: CronExpression;
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.expression = CronExpressionParser.parse(cronExpression);
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.isRunning) {
39
+ if (this.job) {
37
40
  return; // 已经在运行中
38
41
  }
39
42
 
40
- this.isRunning = true;
41
- this.scheduleNext();
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.timeoutId) {
49
- clearTimeout(this.timeoutId);
50
- this.timeoutId = undefined;
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.expression.reset();
73
- return this.expression.next().toDate();
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.isRunning;
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.expression.stringify();
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
@@ -15,4 +15,4 @@ export * from './cron.js'
15
15
  export * from '@zhin.js/database'
16
16
  export * from '@zhin.js/logger'
17
17
 
18
- export { Dependency, Schema } from '@zhin.js/hmr'
18
+ export { Dependency, Schema, usePerformanceMonitor } from '@zhin.js/hmr'
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 = MessageComponent<any> | Promise<MessageComponent<any>> | Promise<SendContent>
22
+ type Element = SendContent | Promise<SendContent>
24
23
  interface ElementClass {
25
- render(props: any, context?: ComponentContext): MaybePromise<SendContent>;
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}> | ((props: T & {children?: SendContent}) => Promise<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()
@@ -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')