plugin-tls 4.5.0 → 4.7.0

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.
@@ -1,15 +1,24 @@
1
- import type { AnyFunction, AbstractConstructor } from "type-tls";
1
+ import type { AbstractConstructor } from "type-tls";
2
2
  import { Destroyable } from "@gby/destroyable";
3
3
  import type { IExtend, AnyIExtend } from "./IExtend";
4
4
  import type { ExtendOptions } from "./extend";
5
+ import type { AsyncableArray } from "./type";
5
6
  /**
6
7
  * 插件管理者
7
8
  *
8
9
  * @remarks
9
10
  * 负责管理插件的注册、应用 等
11
+ * 支持插件的级联(通过 parent):当子类创建了子类插件管理者时,为了能让父类插件管理者的插件生效,需要将父类插件管理者设置为其 parent
10
12
  *
11
13
  */
12
14
  export declare class ExtendManager<HostClass extends AbstractConstructor> extends Destroyable {
15
+ /**
16
+ * 父级插件管理者
17
+ *
18
+ * @remarks
19
+ * 当子类创建了子类插件管理者时,为了能让父类插件管理者的插件生效,需要将父类插件管理者设置为其 parent
20
+ */
21
+ parent?: ExtendManager<HostClass> | null;
13
22
  /**
14
23
  * 插件的宿主
15
24
  */
@@ -20,8 +29,9 @@ export declare class ExtendManager<HostClass extends AbstractConstructor> extend
20
29
  readonly plugins: Set<IExtend<HostClass>>;
21
30
  /**
22
31
  * @param host - 插件的宿主
32
+ * @param parent - 父级插件管理者
23
33
  */
24
- constructor(host?: HostClass);
34
+ constructor(host?: HostClass, parent?: ExtendManager<HostClass> | null);
25
35
  destroyThis(): any;
26
36
  /**
27
37
  * 是否注册了插件
@@ -51,7 +61,7 @@ export declare class ExtendManager<HostClass extends AbstractConstructor> extend
51
61
  * 如果插件的 created 方法返回 Promise,则会等待 Promise resolve
52
62
  * @param hostInst - 插件宿主的新实例
53
63
  */
54
- onCreate(hostInst: InstanceType<HostClass>, ...args: ConstructorParameters<HostClass>): import("com-tools").SerialCallFunsReturn<AnyFunction>;
64
+ onCreate(hostInst: InstanceType<HostClass>, ...args: ConstructorParameters<HostClass>): AsyncableArray;
55
65
  /**
56
66
  * 插件宿主创建实例时调用
57
67
  *
@@ -60,7 +70,7 @@ export declare class ExtendManager<HostClass extends AbstractConstructor> extend
60
70
  * @param hostInst - 插件宿主的新实例
61
71
  * @param args - 初始化宿主实例时的参数
62
72
  */
63
- onInit(hostInst: InstanceType<HostClass>, ...args: any): import("com-tools").SerialCallFunsReturn<AnyFunction>;
73
+ onInit(hostInst: InstanceType<HostClass>, ...args: any): AsyncableArray;
64
74
  /**
65
75
  * 插件宿主被销毁时调用
66
76
  *
@@ -68,6 +78,6 @@ export declare class ExtendManager<HostClass extends AbstractConstructor> extend
68
78
  * 会调用每个插件的 {@link IExtend.onDestroy} 方法
69
79
  * @param hostInst - 被销毁的插件实例
70
80
  */
71
- onDestroy(hostInst: InstanceType<HostClass>): import("com-tools").SerialCallFunsReturn<AnyFunction>;
81
+ onDestroy(hostInst: InstanceType<HostClass>): AsyncableArray;
72
82
  }
73
83
  //# sourceMappingURL=ExtendManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExtendManager.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/ExtendManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C;;;;;;GAMG;AACH,qBAAa,aAAa,CAAC,SAAS,SAAS,mBAAmB,CAAE,SAAQ,WAAW;IAEjF;;OAEG;IACH,IAAI,EAAG,SAAS,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,OAAO,0BAAiC;IAIjD;;OAEG;gBACS,IAAI,CAAC,EAAE,SAAS;IAOnB,WAAW;IAMpB;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,GAAG;IAInB;;;;OAIG;IACH,GAAG,CAAC,CAAC,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,GAAE,CAAC;IAQ3E;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,EAAG,GAAG,IAAI,EAAC,qBAAqB,CAAC,SAAS,CAAC,GAAE,CAAC;IAQ7J;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,EAAG,GAAG,IAAI,EAAC,qBAAqB,CAAC,SAAS,CAAC;IAWrF;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,EAAC,GAAG,IAAI,EAAC,GAAG;IAWpD;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC;CAY9C"}
1
+ {"version":3,"file":"ExtendManager.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/ExtendManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAE7C;;;;;;;GAOG;AACH,qBAAa,aAAa,CAAC,SAAS,SAAS,mBAAmB,CAAE,SAAQ,WAAW;IAEjF;;;;;OAKG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IAEzC;;OAEG;IACH,IAAI,EAAG,SAAS,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,OAAO,0BAAiC;IAIjD;;;OAGG;gBACS,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI;IAQ7D,WAAW;IAMpB;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO;IAI7B;;;;OAIG;IACH,GAAG,CAAC,CAAC,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC;IAO5E;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,GAAG,CAAC;IAO9J;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,GAAG,cAAc;IActG;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,GAAE,cAAc;IAatE;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,GAAE,cAAc;CAe9D"}
@@ -84,4 +84,68 @@ export declare function mixinIExtend<T, E>(target: T, ext: E): T & IExtendHostMe
84
84
  * @param Ext - 扩展的类型
85
85
  */
86
86
  export type IExtendClass<HostClass extends AbstractConstructor, Ext> = ExtendClass<HostClass, IExtendHostMembers<Ext>>;
87
+ /**
88
+ * 定义扩展的类型便利函数
89
+ *
90
+ * @remarks
91
+ * 它会更改 ext 中方法的this指向为 cla & ext,不会真的执行扩展操作。
92
+ *
93
+ * @param hostClass - 扩展的目标,用作 this 的类型
94
+ * @param ext - 描述扩展内容的对象,会自动更改其this的类型
95
+ * @returns 返回注入了 this 类型的 ext 对象本身
96
+ */
97
+ export declare function defineIExtend<HostClass extends AbstractConstructor, Ext>(hostClass: HostClass, ext: IExtendOptions<HostClass, Ext>): Ext;
98
+ /**
99
+ * 创建定义扩展的类型便利函数
100
+ *
101
+ * @remarks
102
+ * 它返回的便利函数的功能与 {@link defineExtend} 的功能一样,唯一区别是不再需要接收 hostClass 参数了
103
+ *
104
+ * @returns 可以用于 定义扩展的 类型便利函数
105
+ */
106
+ export declare function createDefineIExtend<HostClass extends AbstractConstructor>(hostClass: HostClass): <Ext>(ext: IExtendOptions<HostClass, Ext>) => Ext;
107
+ /**
108
+ * 扩展目标
109
+ *
110
+ * @remarks
111
+ * 与 {@link defineExtend} 的区别是:`targetExtend` 会执行对 cla 的扩展操作,而 {@link defineExtend} 不会
112
+ *
113
+ *
114
+ * @param cla - 扩展的目标,也用作 this 的类型
115
+ * @param ext - 扩展描述对象,会自动更改其this的类型
116
+ * @returns 返回注入了 this 类型的 ext 对象本身
117
+ */
118
+ export declare function targetIExtend<C extends AbstractConstructor, Ext>(cla: C, ext: IExtendOptions<C, Ext>): Ext;
119
+ /**
120
+ * 创建用于扩展目标的便捷函数
121
+ *
122
+ * @remarks
123
+ * 它返回的便利函数的功能与 {@link targetExtend} 的功能一样,唯一区别是不再需要接收 cla 参数了
124
+ *
125
+ * @param cla - 扩展的目标,也用作 this 的类型
126
+ * @returns 可以用于 扩展目标 的便利函数
127
+ */
128
+ export declare function createTargetIExtend<C extends AbstractConstructor>(cla: C): <E>(ext: IExtendOptions<C, E>) => E;
129
+ /**
130
+ * 扩展目标
131
+ *
132
+ * @remarks
133
+ * 会执行对 CEarth 类的扩展操作。
134
+ * 与 {@link targetExtend} 的区别仅仅是返回类型不一样。
135
+ *
136
+ * @param cla - 扩展的目标,也用作 this 的类型
137
+ * @param ext - 扩展对象,会自动更改其this的类型
138
+ * @returns 返回扩展后的 cla 对象
139
+ */
140
+ export declare function iextendTarget<C extends AbstractConstructor, E>(cla: C, ext: IExtendOptions<C, E>): IExtendClass<C, E>;
141
+ /**
142
+ * 创建用于扩展目标工具函数
143
+ *
144
+ * @remarks
145
+ * 它返回的便利函数的功能与 {@link extendTarget} 的功能一样,唯一区别是不再需要接收 cla 参数了
146
+ *
147
+ * @param cla - 扩展的目标,也用作 this 的类型
148
+ * @returns 可以用于 扩展目标 的便利函数
149
+ */
150
+ export declare function createIExtendTarget<C extends AbstractConstructor>(cla: C): <E>(ext: IExtendOptions<C, E>) => IExtendClass<C, E>;
87
151
  //# sourceMappingURL=IExtend.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IExtend.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/IExtend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,WAAW,OAAO,CAAC,SAAS,SAAS,mBAAmB;IAC5D;;;OAGG;IACH,QAAQ,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;IAEzF;;;;OAIG;IACH,MAAM,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;IAE1D;;;OAGG;IACH,SAAS,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;CAChD;AAID;;;;GAIG;AACH,MAAM,WAAW,UAAU,CAAC,SAAS,SAAS,mBAAmB,CAAE,SAAQ,OAAO,CAAC,SAAS,CAAC;IAC3F,CAAC,GAAG,EAAE,WAAW,GAAG,GAAG,CAAC;CACzB;AAMD;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,CAAC,SAAS,SAAS,mBAAmB,EAAE,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC;AAE5H;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,CAAC,SAAS,SAAS,mBAAmB,IAAI,cAAc,CAAC,SAAS,EAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;AAS1H;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAGhE;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAUtF;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAW/E;AAUD;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,CAAC,SAAS,SAAS,mBAAmB,EAAE,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"IExtend.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/IExtend.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
- import type { AnyFunction, AbstractConstructor, ClassType } from "type-tls";
1
+ import { type AbstractConstructor, type ClassType } from "type-tls";
2
2
  import { Destroyable } from "@gby/destroyable";
3
3
  import type { IExtend, AnyIExtend } from "./IExtend";
4
4
  import type { AnyIPlugin, IPlugin, PluginUseArgs, PluginUseReturn } from "./IPlugin";
5
5
  import type { ExtendOptions } from "./extend";
6
+ import type { AsyncableArray } from "./type";
6
7
  /**
7
8
  * 用于标识是扩展的标记
8
9
  */
@@ -13,9 +14,17 @@ export declare const extendMark: unique symbol;
13
14
  * @remarks
14
15
  * 负责管理插件 和 扩展的注册、应用 等
15
16
  * 相当于 PluginManager + ExtendManager
17
+ * 支持插件的级联(通过 parent):当子类创建了子类插件管理者时,为了能让父类插件管理者的插件生效,需要将父类插件管理者设置为其 parent
16
18
  *
17
19
  */
18
20
  export declare class PluginExtendManager<Host, HostClass extends AbstractConstructor<Host> = ClassType<Host>> extends Destroyable {
21
+ /**
22
+ * 父级插件管理者
23
+ *
24
+ * @remarks
25
+ * 当子类创建了子类插件管理者时,为了能让父类插件管理者的插件生效,需要将父类插件管理者设置为其 parent
26
+ */
27
+ parent?: PluginExtendManager<Host, HostClass> | null;
19
28
  /**
20
29
  * 插件的宿主
21
30
  */
@@ -27,7 +36,7 @@ export declare class PluginExtendManager<Host, HostClass extends AbstractConstru
27
36
  /**
28
37
  * @param host - 插件的宿主
29
38
  */
30
- constructor(host?: HostClass);
39
+ constructor(host?: HostClass, parent?: PluginExtendManager<Host, HostClass> | null);
31
40
  destroyThis(): any;
32
41
  /**
33
42
  * 是否注册了插件 或 扩展
@@ -35,6 +44,12 @@ export declare class PluginExtendManager<Host, HostClass extends AbstractConstru
35
44
  * @returns 是否注册了插件 或 扩展
36
45
  */
37
46
  hasUsed(plugin: any): boolean;
47
+ /**
48
+ * 获取插件 或 扩展 的 use 的返回值
49
+ * @param plugin
50
+ * @returns
51
+ */
52
+ getUseReturn(plugin: any): any;
38
53
  /**
39
54
  * 判断一个对象是否是插件
40
55
  * @param target
@@ -77,7 +92,7 @@ export declare class PluginExtendManager<Host, HostClass extends AbstractConstru
77
92
  * 如果插件的 created 方法返回 Promise,则会等待 Promise resolve
78
93
  * @param hostInst - 插件宿主的新实例
79
94
  */
80
- onCreate(hostInst: Host, ...args: any): import("com-tools").SerialCallFunsReturn<AnyFunction>;
95
+ onCreate(hostInst: Host, ...args: any): AsyncableArray;
81
96
  /**
82
97
  * 插件宿主创建实例时调用
83
98
  *
@@ -86,7 +101,7 @@ export declare class PluginExtendManager<Host, HostClass extends AbstractConstru
86
101
  * @param hostInst - 插件宿主的新实例
87
102
  * @param args - 初始化宿主实例时的参数
88
103
  */
89
- onInit(hostInst: Host, ...args: any): import("com-tools").SerialCallFunsReturn<AnyFunction>;
104
+ onInit(hostInst: Host, ...args: any): AsyncableArray;
90
105
  /**
91
106
  * 插件宿主被销毁时调用
92
107
  *
@@ -94,6 +109,6 @@ export declare class PluginExtendManager<Host, HostClass extends AbstractConstru
94
109
  * 会调用每个插件的 {@link IPlugin.onDestroy} 方法
95
110
  * @param hostInst - 被销毁的插件实例
96
111
  */
97
- onDestroy(hostInst: Host): import("com-tools").SerialCallFunsReturn<AnyFunction>;
112
+ onDestroy(hostInst: Host): AsyncableArray;
98
113
  }
99
114
  //# sourceMappingURL=PluginExtendManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PluginExtendManager.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/PluginExtendManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C;;GAEG;AACH,eAAO,MAAM,UAAU,eAAmB,CAAC;AAG3C;;;;;;;GAOG;AACH,qBAAa,mBAAmB,CAAC,IAAI,EAAC,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAE,SAAQ,WAAW;IAEpH;;OAEG;IACH,IAAI,EAAG,SAAS,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,OAAO,0DAA6D;IAG7E;;OAEG;gBACS,IAAI,CAAC,EAAE,SAAS;IAOnB,WAAW;IAMpB;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,GAAG;IAKnB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,IAAI,EAAC,SAAS,CAAC;IAQxD;;;;OAIG;IACH,SAAS,CAAC,CAAC,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,GAAE,CAAC;IAQ9E;;;;;;OAMG;IACH,aAAa,CAAC,CAAC,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,EAAG,GAAG,IAAI,EAAC,qBAAqB,CAAC,SAAS,CAAC,GAAE,CAAC;IAQhK;;;;OAIG;IACH,SAAS,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,EAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAQxG;;;;;;OAMG;IACH,aAAa,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,EAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAUhI;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAG,GAAG,IAAI,EAAC,GAAG;IAYrC;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAC,GAAG,IAAI,EAAC,GAAG;IAYjC;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,EAAE,IAAI;CAa3B"}
1
+ {"version":3,"file":"PluginExtendManager.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/PluginExtendManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,mBAAmB,EAAE,KAAK,SAAS,EAAiB,MAAM,UAAU,CAAC;AACrG,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAG7C;;GAEG;AACH,eAAO,MAAM,UAAU,eAAmB,CAAC;AAG3C;;;;;;;;GAQG;AACH,qBAAa,mBAAmB,CAAC,IAAI,EAAC,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAE,SAAQ,WAAW;IAEpH;;;;;OAKG;IACH,MAAM,CAAC,EAAE,mBAAmB,CAAC,IAAI,EAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IAEpD;;OAEG;IACH,IAAI,EAAG,SAAS,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,OAAO,0DAA6D;IAG7E;;OAEG;gBACS,IAAI,CAAC,EAAE,SAAS,EAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,IAAI,EAAC,SAAS,CAAC,GAAG,IAAI;IAQvE,WAAW;IAMpB;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,GAAG,GAAE,OAAO;IAK5B;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,GAAG,GAAE,GAAG;IAS7B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,IAAI,EAAC,SAAS,CAAC;IAOxD;;;;OAIG;IACH,SAAS,CAAC,CAAC,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,GAAE,CAAC;IAO9E;;;;;;OAMG;IACH,aAAa,CAAC,CAAC,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,EAAG,GAAG,IAAI,EAAC,qBAAqB,CAAC,SAAS,CAAC,GAAE,CAAC;IAOhK;;;;OAIG;IACH,SAAS,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,EAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAOxG;;;;;;OAMG;IACH,aAAa,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,EAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAShI;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAG,GAAG,IAAI,EAAC,GAAG,GAAE,cAAc;IAarD;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAC,GAAG,IAAI,EAAC,GAAG,GAAE,cAAc;IAajD;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,EAAE,IAAI,GAAE,cAAc;CAgB3C"}
@@ -1,14 +1,22 @@
1
- import type { AnyFunction, AbstractClassType } from "type-tls";
1
+ import { type AbstractClassType } from "type-tls";
2
2
  import type { AnyIPlugin, IPlugin, PluginUseArgs, PluginUseReturn } from "./IPlugin";
3
3
  import { Destroyable } from "@gby/destroyable";
4
+ import type { AsyncableArray } from "./type";
4
5
  /**
5
6
  * 插件管理者
6
7
  *
7
8
  * @remarks
8
9
  * 负责管理插件的注册、应用 等
9
- *
10
+ * 支持插件的级联(通过 parent):当子类创建了子类插件管理者时,为了能让父类插件管理者的插件生效,需要将父类插件管理者设置为其 parent
10
11
  */
11
12
  export declare class PluginManager<Host, HostClass = AbstractClassType<Host>> extends Destroyable {
13
+ /**
14
+ * 父级插件管理者
15
+ *
16
+ * @remarks
17
+ * 当子类创建了子类插件管理者时,为了能让父类插件管理者的插件生效,需要将父类插件管理者设置为其 parent
18
+ */
19
+ parent?: PluginManager<Host, HostClass> | null;
12
20
  /**
13
21
  * 插件的宿主
14
22
  */
@@ -20,7 +28,7 @@ export declare class PluginManager<Host, HostClass = AbstractClassType<Host>> ex
20
28
  /**
21
29
  * @param host - 插件的宿主
22
30
  */
23
- constructor(host?: HostClass);
31
+ constructor(host?: HostClass, parent?: PluginManager<Host, HostClass> | null);
24
32
  destroyThis(): any;
25
33
  /**
26
34
  * 是否注册了插件
@@ -28,6 +36,12 @@ export declare class PluginManager<Host, HostClass = AbstractClassType<Host>> ex
28
36
  * @returns 是否注册了插件
29
37
  */
30
38
  hasUsed(plugin: any): boolean;
39
+ /**
40
+ * 获取插件 或 扩展 的 use 的返回值
41
+ * @param plugin
42
+ * @returns
43
+ */
44
+ getUseReturn(plugin: any): any;
31
45
  /**
32
46
  * 使用插件、注册插件
33
47
  * @param plugin - 插件
@@ -50,7 +64,7 @@ export declare class PluginManager<Host, HostClass = AbstractClassType<Host>> ex
50
64
  * 如果插件的 created 方法返回 Promise,则会等待 Promise resolve
51
65
  * @param hostInst - 插件宿主的新实例
52
66
  */
53
- onCreate(hostInst: Host, ...args: any): import("com-tools").SerialCallFunsReturn<AnyFunction>;
67
+ onCreate(hostInst: Host, ...args: any): AsyncableArray;
54
68
  /**
55
69
  * 插件宿主创建实例时调用
56
70
  *
@@ -59,7 +73,7 @@ export declare class PluginManager<Host, HostClass = AbstractClassType<Host>> ex
59
73
  * @param hostInst - 插件宿主的新实例
60
74
  * @param args - 初始化宿主实例时的参数
61
75
  */
62
- onInit(hostInst: Host, ...args: any): import("com-tools").SerialCallFunsReturn<AnyFunction>;
76
+ onInit(hostInst: Host, ...args: any): AsyncableArray;
63
77
  /**
64
78
  * 插件宿主被销毁时调用
65
79
  *
@@ -67,6 +81,6 @@ export declare class PluginManager<Host, HostClass = AbstractClassType<Host>> ex
67
81
  * 会调用每个插件的 {@link IPlugin.onDestroy} 方法
68
82
  * @param hostInst - 被销毁的插件实例
69
83
  */
70
- onDestroy(hostInst: Host): import("com-tools").SerialCallFunsReturn<AnyFunction>;
84
+ onDestroy(hostInst: Host): AsyncableArray;
71
85
  }
72
86
  //# sourceMappingURL=PluginManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PluginManager.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/PluginManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C;;;;;;GAMG;AACH,qBAAa,aAAa,CAAC,IAAI,EAAC,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAE,SAAQ,WAAW;IAEpF;;OAEG;IACH,IAAI,EAAG,SAAS,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,OAAO,qCAA0C;IAG1D;;OAEG;gBACS,IAAI,CAAC,EAAE,SAAS;IAOnB,WAAW;IAOpB;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,GAAG;IAMnB;;;;OAIG;IACH,GAAG,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,EAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAQlG;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,EAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAQ1H;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAG,GAAG,IAAI,EAAC,GAAG;IAWrC;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAC,GAAG,IAAI,EAAC,GAAG;IAWjC;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,EAAE,IAAI;CAY3B"}
1
+ {"version":3,"file":"PluginManager.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/PluginManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,iBAAiB,EAAiB,MAAM,UAAU,CAAC;AACnF,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAE7C;;;;;;GAMG;AACH,qBAAa,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAE,SAAQ,WAAW;IACrF;;;;;OAKG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC;IAG/C;;OAEG;IACH,IAAI,EAAG,SAAS,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,OAAO,qCAA4C;IAG5D;;OAEG;gBACS,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,IAAI;IAQnE,WAAW;IAOpB;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO;IAI7B;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,GAAG,GAAE,GAAG;IAS7B;;;;OAIG;IACH,GAAG,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAOpG;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAQ3H;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,cAAc;IAYtD;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAE,cAAc;IAanD;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,EAAE,IAAI,GAAE,cAAc;CAe3C"}
@@ -88,5 +88,5 @@ export declare function extendTarget<C extends AbstractConstructor, E>(cla: C, e
88
88
  * @param cla - 扩展的目标,也用作 this 的类型
89
89
  * @returns 可以用于 扩展目标 的便利函数
90
90
  */
91
- export declare function createExtendTarget<C extends ClassType>(cla: C): <E>(ext: ExtendOptions<C, E>) => ExtendClass<C, E>;
91
+ export declare function createExtendTarget<C extends AbstractConstructor>(cla: C): <E>(ext: ExtendOptions<C, E>) => ExtendClass<C, E>;
92
92
  //# sourceMappingURL=extend.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/extend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAM/D;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,CAAC,SAAS,SAAS,mBAAmB,EAAE,GAAG,IAAI,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC;AAEtH;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,CAAC,SAAS,SAAS,mBAAmB,IAAI,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;AAKzH;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,CAAC,SAAS,SAAS,mBAAmB,EAAE,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,GAAG,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;AAMhL;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,SAAS,SAAS,mBAAmB,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,GAAG,CAEtI;AAID;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,SAAS,mBAAmB,EAAE,SAAS,EAAE,SAAS,IAC7D,GAAG,EAAE,KAAK,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,KAAG,GAAG,CAG7E;AAOD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,mBAAmB,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAGxG;AAMD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,mBAAmB,EAAE,GAAG,EAAE,CAAC,IACxC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,CAAC,CAI9D;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,mBAAmB,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAGlH;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,CAAC,IAC7B,CAAC,EAAG,KAAK,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,KAAI,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAIjF"}
1
+ {"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/extend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAM/D;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,CAAC,SAAS,SAAS,mBAAmB,EAAE,GAAG,IAAI,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC;AAEtH;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,CAAC,SAAS,SAAS,mBAAmB,IAAI,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;AAKzH;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,CAAC,SAAS,SAAS,mBAAmB,EAAE,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,GAAG,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;AAMhL;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,SAAS,SAAS,mBAAmB,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,GAAG,CAEtI;AAID;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,SAAS,mBAAmB,EAAE,SAAS,EAAE,SAAS,IAC7D,GAAG,EAAE,KAAK,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,KAAG,GAAG,CAG7E;AAOD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,mBAAmB,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAGxG;AAMD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,mBAAmB,EAAE,GAAG,EAAE,CAAC,IACxC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,CAAC,CAI9D;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,mBAAmB,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAGlH;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,mBAAmB,EAAE,GAAG,EAAE,CAAC,IACvC,CAAC,EAAG,KAAK,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,KAAI,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAIjF"}
@@ -5,4 +5,5 @@ export * from "./IPlugin";
5
5
  export * from "./PluginManager";
6
6
  export * from "./ExtendManager";
7
7
  export * from "./PluginExtendManager";
8
+ export * from "./type";
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,QAAQ,CAAA"}
@@ -0,0 +1,2 @@
1
+ export type AsyncableArray = any[] | Promise<any[]>;
2
+ //# sourceMappingURL=type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/type.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,GAAG,EAAE,GAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "plugin-tls",
3
- "version": "4.5.0",
3
+ "version": "4.7.0",
4
4
  "description": "plugin-tls 是插件系统相应的工具,可快速地让任何模块具备插件机制",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.js",
@@ -1 +0,0 @@
1
- "use strict";const O=require("@gby/destroyable"),d=require("deepmerge-ts"),g=require("com-tools"),_=["onCreate","onInit","onDestroy"];function w(i){const t={...i};for(const e of _)typeof t[e]=="function"&&delete t[e];return t}function F(i,t){let e=Object.getOwnPropertyDescriptors(t);for(const n of _)typeof t[n]=="function"&&delete e[n];return Object.defineProperties(i,e),i}function b(i){return i&&typeof i.onUse=="function"}const l=Symbol("extend");class p extends O.Destroyable{host;plugins=new Map;constructor(t){super(),t&&(this.host=t)}destroyThis(){return this.plugins.clear(),this.host=null,super.destroyThis()}hasUsed(t){return this.plugins.has(t)}isPlugin(t){const{plugins:e}=this;return e.has(t)?e.get(t)!==l:b(t)}useExtend(t){const{plugins:e}=this;return e.has(t)?e.get(t):(F(this.host.prototype,t),e.set(t,l),t)}instUseExtend(t,e,...n){const{plugins:s}=this;return s.has(e)?s.get(e):(this.useExtend(e),e.onCreate?.call(t,t,...n),e)}usePlugin(t,...e){const{plugins:n}=this;if(n.has(t))return n.get(t);const s=t.onUse(this.host,...e);return n.set(t,s),s}instUsePlugin(t,e,...n){const{plugins:s}=this;if(s.has(e))return s.get(e);const o=this.usePlugin(e,...n);return e.onCreate?.(t),o}onCreate(t,...e){const n=[];for(const[s,o]of this.plugins)if(s.onCreate){const r=o===l?s.onCreate:s.onCreate.bind(s);n.push(r)}return g.serialCallFuns(n,t,[t,...e])}onInit(t,...e){const n=[];for(const[s,o]of this.plugins)if(s.onInit){const r=o===l?s.onInit:s.onInit.bind(s);n.push(r)}return g.serialCallFuns(n,t,[t,...e])}onDestroy(t){const e=[];for(const[n,s]of this.plugins)if(n.onDestroy){const o=s===l?n.onDestroy:n.onDestroy.bind(n);e.push(o)}return e.reverse(),g.serialCallFuns(e,t,[t])}}function m(i){const t=i.split(".");return t[0]===""&&t.shift(),t}function h(i,t){for(const e of t)if(i=i[e],i==null)return;return i}function V(i,t){return h(i,m(t))}function M(i,t,e){const n=t.pop(),s=t.length;let o=0;for(;o<s;){const r=i[t[o]];if(r==null)break;i=r,o++}t=t.slice(o);for(const r of t)i=i[r]={};return i[n]=e,i}function N(i,t,e){return M(i,m(t),e)}const f={UndefinedAndNull:function(t){return t==null},Undefined:function(t){return t===void 0},Null:function(t){return t===null}};class U{freezeMember=!0;fullOption=new Proxy(this,{get:function(t,e,n){const s=t.plainFullOption[e];return t.freezeMember?Object.freeze(s):s},set:function(t,e,n,s){return t.setMember(e,n,!1),!0},has:function(t,e){return e in t.plainFullOption},getOwnPropertyDescriptor:function(t,e){return Object.getOwnPropertyDescriptor(t.plainFullOption,e)},ownKeys:function(t){return Reflect.ownKeys(t.plainFullOption)},deleteProperty:function(t,e){return t.setMember(e,void 0),!0},defineProperty:function(t,e,n){return Object.defineProperty(t.option,e,n),!0}});setOption(t,e){const n=e?d.deepmergeInto(this.option,t):Object.assign(this.option,t);return this.updateFullOption(),n}get undefinedValue(){return this._undefinedValue}set undefinedValue(t){this._undefinedValue=t,this.isUndefined=f[t]||f.UndefinedAndNull}_undefinedValue="UndefinedAndNull";isUndefined=f.UndefinedAndNull;getMember(t){return this.option[t]}setMember(t,e,n){const s=this.option;if(e===void 0)delete s[t];else{const o=s[t];n&&o&&typeof o=="object"?d.deepmergeInto(o,e):s[t]=e}this.updateFullOption()}getValue(t){return h(this.option,t)}setValue(t,e,n){const s=this.option;let o;n&&(o=h(s,t))&&typeof o=="object"?d.deepmergeInto(o,e):M(this.option,t,e),this.updateFullOption()}}class u extends U{constructor(t,e){super(),t&&(this.option=t),e&&(this.extends=e)}get extends(){return this._extends}set extends(t){this._extends=t,this.updateFullOption()}_extends=null;option={};get plainFullOption(){let t=this._plainFullOption;if(t)return t;const{extends:e,option:n}=this;if(t=n,e){const s=e.plainFullOption;t=d.deepmerge(s,n)}return this._plainFullOption=t}_plainFullOption=null;updateFullOption(){this._plainFullOption=null}getMember(t){const e=this.option[t];if(!this.isUndefined(e))return e;const n=this.extends;if(n)return n.getMember(t)}getValue(t){const e=super.getValue(t);if(!this.isUndefined(e))return e;const n=this.extends;if(n)return n.getValue(t)}}function D(i,t){const{name:e}=t,n=`_${e}`;return{get:function(){return this[n]||(this[n]=new u(void 0,this.constructor[e]))}}}class T extends U{constructor(t,e){super(),e&&this.setModeOption(t,e),this.mode=t}modes={};get mode(){return this._mode||(this.mode=this.modeNames[0])}set mode(t){this._mode=t,this.hasMode(t)||this.setModeOption(t,{}),this.updateFullOption()}_mode;get modeNames(){return this._modeNames||(this._modeNames=this.getModeNames())}_modeNames=null;getModeNames(){return Object.keys(this.modes)}hasMode(t){return!!this.modes[t]}get optionManager(){return this.modes[this.mode]}get option(){return this.optionManager.option}get plainFullOption(){return this._plainFullOption??(this._plainFullOption=this.getFullModeOption(this.mode))}_plainFullOption=null;updateFullOption(){this._plainFullOption=null,this._modeNames=null}getModeOption(t){return this.modes[t].option}getFullModeOption(t){return this.modes[t]?.plainFullOption}setModeOption(t,e,n,s){const{modes:o}=this,r=o[t]||(o[t]=new u);if(r.setOption(e,n),s){const y=o[s];y&&(r.extends=y)}return this.updateFullOption(),r}}class a extends T{constructor(t,e,n){super(t,e),n&&(this.extends=n)}get extends(){return this._extends}set extends(t){this._extends=t,this.updateFullOption()}_extends=null;getFullModeOption(t){const{modes:e,extends:n}=this,s=e[t]?.plainFullOption;if(n){const o=n.getFullModeOption(t);return s?d.deepmerge(o,s):o}return s}getModeNames(){const{modes:t,extends:e}=this,n=Object.keys(t);if(!e)return n;const s=e.getModeNames();return[...new Set([...n,...s])]}hasModeOnTier(t){if(this.hasMode(t))return!0;const e=this.extends;return e?e.hasModeOnTier(t):!1}get optionManager(){return this.getModeOptionManager(this.mode)}getModeOptionManager(t){const e=this.modes[t];return e||(this.extends?.getModeOptionManager(t)?this.setModeOption(t,{}):null)}getMember(t){const e=this.optionManager.getMember(t);if(!this.isUndefined(e))return e;const n=this.extends;if(n)return n.getMember(t)}getValue(t){const e=this.optionManager.getValue(t);if(!this.isUndefined(e))return e;const n=this.extends;if(n)return n.getValue(t)}}function H(i,t){const{name:e}=t,n=`_${e}`;return{get:function(){return this[n]||(this[n]=new a(this.constructor[e].mode,void 0,this.constructor[e]))}}}class P extends O.Destroyable{static isolatedPluginManager=!1;static get pluginManager(){return this.isolatedPluginManager&&!this.hasOwnProperty("_pluginManager")&&(this._pluginManager=new p(this)),this._pluginManager}static _pluginManager=new p(this);get pluginManager(){return this.constructor.pluginManager}static usePlugin(t,...e){return this.pluginManager.usePlugin(t,...e)}static useExtend(t){return this.pluginManager.useExtend(t)}static hasUsed(t){return this.pluginManager.hasUsed(t)}usePlugin(t,...e){return this.pluginManager.instUsePlugin(this,t,...e)}useExtend(t,...e){return this.pluginManager.instUseExtend(this,t,...e)}init(...t){return this.pluginManager.onInit(this,...t)}destroyThis(){const t=this.pluginManager.onDestroy(this);return t instanceof Promise?t.finally(()=>super.destroyThis()):super.destroyThis()}}class v extends P{static defaultOptions=new u;get defaultOptions(){return this._defaultOptions||(this._defaultOptions=new u(void 0,this.constructor.defaultOptions))}_defaultOptions;constructor(t){super(),this.defaultOptions.option=t}}function x(i){const t=O.createDestroyableSubClass(i);return class extends t{static isolatedPluginManager=!1;static get pluginManager(){return this.isolatedPluginManager&&!this.hasOwnProperty("_pluginManager")&&(this._pluginManager=new p(this)),this._pluginManager}static _pluginManager=new p(this);get pluginManager(){return this.constructor.pluginManager}static usePlugin(n,...s){return this.pluginManager.usePlugin(n,...s)}static useExtend(n){return this.pluginManager.useExtend(n)}static hasUsed(n){return this.pluginManager.hasUsed(n)}usePlugin(n,...s){return this.pluginManager.instUsePlugin(this,n,...s)}useExtend(n,...s){return this.pluginManager.instUseExtend(this,n,...s)}init(...n){return this.pluginManager.onInit(this,...n)}destroyThis(){const n=this.pluginManager.onDestroy(this);return n instanceof Promise?n.finally(()=>super.destroyThis()):super.destroyThis()}}}function E(i){const t=x(i);return class extends t{static defaultOptions=new u;get defaultOptions(){return this._defaultOptions||(this._defaultOptions=new u(void 0,this.constructor.defaultOptions))}_defaultOptions;constructor(n){super(),this.defaultOptions.option=n}}}const c="common";class k extends P{static modeOptions=new a(c);get modeOptions(){return this._modeOptions||(this._modeOptions=new a(c,void 0,this.constructor.modeOptions))}_modeOptions;get mode(){return this.modeOptions.mode}set mode(t){this.modeOptions.mode=t}get options(){return this.modeOptions.plainFullOption}constructor(t){super(),this.modeOptions.setOption(t)}}function C(i){const t=x(i);return class extends t{static modeOptions=new a(c);get modeOptions(){return this._modeOptions||(this._modeOptions=new a(c,void 0,this.constructor.modeOptions))}_modeOptions;get mode(){return this.modeOptions.mode}set mode(n){this.modeOptions.mode=n}get options(){return this.modeOptions.plainFullOption}constructor(n){super(),this.modeOptions.setOption(n)}}}exports.ModeOptions=T;exports.PluginExtendManager=p;exports.PluginHost=P;exports.TierModeOptions=a;exports.TierModeOptionsPluginHost=k;exports.TierOptions=u;exports.TierOptionsPluginHost=v;exports.commonModeName=c;exports.createPluginHost=x;exports.createTierModeOptionsPluginHost=C;exports.createTierOptionsPluginHost=E;exports.extendMark=l;exports.getPropertyValue=h;exports.getPropertyValueByPath=V;exports.isPlugin=b;exports.mixinIExtend=F;exports.parsePropertyPath=m;exports.pickHostExtendMembers=w;exports.setPropertyValue=M;exports.setPropertyValueByPath=N;exports.tierModeOptionsDecorator=H;exports.tierOptionsDecorator=D;