plugin-tls 2.0.1 → 3.0.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.
- package/dist/extend/extend.d.ts +5 -13
- package/dist/extend/extend.d.ts.map +1 -1
- package/dist/extend/index.d.ts +3 -0
- package/dist/extend/index.d.ts.map +1 -0
- package/dist/extend/mixin.d.ts.map +1 -1
- package/dist/index.d.ts +6 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +586 -263
- package/dist/index.umd.cjs +1 -1
- package/dist/options-manager/index.d.ts +6 -0
- package/dist/options-manager/index.d.ts.map +1 -0
- package/dist/options-plugin-host/index.d.ts +3 -0
- package/dist/options-plugin-host/index.d.ts.map +1 -0
- package/dist/options-plugin-host/tier-mode-options/TierModeOptionsPluginHost.d.ts +28 -0
- package/dist/options-plugin-host/tier-mode-options/TierModeOptionsPluginHost.d.ts.map +1 -0
- package/dist/options-plugin-host/tier-mode-options/TierModeOptionsPluginHostEventEmitter.d.ts +29 -0
- package/dist/options-plugin-host/tier-mode-options/TierModeOptionsPluginHostEventEmitter.d.ts.map +1 -0
- package/dist/options-plugin-host/tier-mode-options/TierModeOptionsPluginHostEventTarget.d.ts +28 -0
- package/dist/options-plugin-host/tier-mode-options/TierModeOptionsPluginHostEventTarget.d.ts.map +1 -0
- package/dist/options-plugin-host/tier-mode-options/createTierModeOptionsPluginHost.d.ts +58 -0
- package/dist/options-plugin-host/tier-mode-options/createTierModeOptionsPluginHost.d.ts.map +1 -0
- package/dist/options-plugin-host/tier-mode-options/index.d.ts +6 -0
- package/dist/options-plugin-host/tier-mode-options/index.d.ts.map +1 -0
- package/dist/options-plugin-host/tier-mode-options/type.d.ts +7 -0
- package/dist/options-plugin-host/tier-mode-options/type.d.ts.map +1 -0
- package/dist/options-plugin-host/tier-options/TierOptionsPluginHost.d.ts +25 -0
- package/dist/options-plugin-host/tier-options/TierOptionsPluginHost.d.ts.map +1 -0
- package/dist/options-plugin-host/tier-options/TierOptionsPluginHostEventEmitter.d.ts +26 -0
- package/dist/options-plugin-host/tier-options/TierOptionsPluginHostEventEmitter.d.ts.map +1 -0
- package/dist/options-plugin-host/tier-options/TierOptionsPluginHostEventTarget.d.ts +25 -0
- package/dist/options-plugin-host/tier-options/TierOptionsPluginHostEventTarget.d.ts.map +1 -0
- package/dist/options-plugin-host/tier-options/createTierOptionsPluginHost.d.ts +55 -0
- package/dist/options-plugin-host/tier-options/createTierOptionsPluginHost.d.ts.map +1 -0
- package/dist/options-plugin-host/tier-options/index.d.ts +5 -0
- package/dist/options-plugin-host/tier-options/index.d.ts.map +1 -0
- package/dist/plugin-host/PluginHost.d.ts +41 -226
- package/dist/plugin-host/PluginHost.d.ts.map +1 -1
- package/dist/plugin-host/PluginHostEventEmitter.d.ts +64 -0
- package/dist/plugin-host/PluginHostEventEmitter.d.ts.map +1 -0
- package/dist/plugin-host/PluginHostEventTarget.d.ts +62 -0
- package/dist/plugin-host/PluginHostEventTarget.d.ts.map +1 -0
- package/dist/plugin-host/createPluginHost.d.ts +87 -0
- package/dist/plugin-host/createPluginHost.d.ts.map +1 -0
- package/dist/plugin-host/decorator.d.ts +177 -0
- package/dist/plugin-host/decorator.d.ts.map +1 -0
- package/dist/plugin-host/index.d.ts +7 -0
- package/dist/plugin-host/index.d.ts.map +1 -0
- package/dist/plugin-host/type.d.ts +52 -0
- package/dist/plugin-host/type.d.ts.map +1 -0
- package/dist/plugin-manager/IPlugin.d.ts +47 -0
- package/dist/plugin-manager/IPlugin.d.ts.map +1 -0
- package/dist/plugin-manager/PluginManager.d.ts +27 -80
- package/dist/plugin-manager/PluginManager.d.ts.map +1 -1
- package/dist/plugin-manager/index.d.ts +3 -0
- package/dist/plugin-manager/index.d.ts.map +1 -0
- package/dist/plugins/index.d.ts +3 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/tier-mode-options/decorator.d.ts +14 -0
- package/dist/plugins/tier-mode-options/decorator.d.ts.map +1 -0
- package/dist/plugins/tier-mode-options/plugin.d.ts +3 -0
- package/dist/plugins/tier-mode-options/plugin.d.ts.map +1 -0
- package/dist/plugins/tier-mode-options/type.d.ts +35 -0
- package/dist/plugins/tier-mode-options/type.d.ts.map +1 -0
- package/dist/plugins/tier-mode-options-plugin.d.ts +4 -0
- package/dist/plugins/tier-mode-options-plugin.d.ts.map +1 -0
- package/dist/plugins/tier-options/decorator.d.ts +14 -0
- package/dist/plugins/tier-options/decorator.d.ts.map +1 -0
- package/dist/plugins/tier-options/plugin.d.ts +11 -0
- package/dist/plugins/tier-options/plugin.d.ts.map +1 -0
- package/dist/plugins/tier-options/type.d.ts +36 -0
- package/dist/plugins/tier-options/type.d.ts.map +1 -0
- package/dist/plugins/tier-options-plugin.d.ts +4 -0
- package/dist/plugins/tier-options-plugin.d.ts.map +1 -0
- package/package.json +3 -3
- package/dist/plugin-host/TierModeOptionsPluginHost.d.ts +0 -167
- package/dist/plugin-host/TierModeOptionsPluginHost.d.ts.map +0 -1
- package/dist/plugin-host/TierOptionsPluginHost.d.ts +0 -153
- package/dist/plugin-host/TierOptionsPluginHost.d.ts.map +0 -1
- package/dist/plugin-manager/PluginManagerWithInit.d.ts +0 -36
- package/dist/plugin-manager/PluginManagerWithInit.d.ts.map +0 -1
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { PluginManager } from "../plugin-manager/PluginManager";
|
|
2
|
+
import type { IPlugin, PluginUseArgs } from "../plugin-manager/index";
|
|
3
|
+
import type { IPluginHost, IPluginHostClass } from "./type";
|
|
4
|
+
/**
|
|
5
|
+
* 将 HOST 变成插件宿主类型
|
|
6
|
+
*/
|
|
7
|
+
export type BecomePluginHost<HOST extends new (...args: any) => Object> = HOST & IPluginHostClass<InstanceType<HOST> & IPluginHost<InstanceType<HOST>, HOST>>;
|
|
8
|
+
/**
|
|
9
|
+
* 变成插件宿主
|
|
10
|
+
* @remarks
|
|
11
|
+
* 也可作为装饰器
|
|
12
|
+
*
|
|
13
|
+
* 子类需要在构建函数中调用 `this.pluginManager.created(this);`
|
|
14
|
+
*
|
|
15
|
+
* 之所以没写在该类中的函数中,是因为 `this.pluginManager.created(this)` 通常会在构建函数执行的最后时才调用;
|
|
16
|
+
* 如果像下面写在该类的构建函数中,然后子类通过 `super()` 来调用,这样就会导致 `this.pluginManager.created(this)` 不是在最后的执行;
|
|
17
|
+
* @param target
|
|
18
|
+
* @param context
|
|
19
|
+
* @returns
|
|
20
|
+
*/
|
|
21
|
+
export declare function becomePluginHost<HOST extends new (...args: any) => Object>(target: HOST): BecomePluginHost<HOST>;
|
|
22
|
+
/**
|
|
23
|
+
* 变成插件宿主,通过代理实现
|
|
24
|
+
* @remarks
|
|
25
|
+
* 也可作为装饰器
|
|
26
|
+
* @param target
|
|
27
|
+
* @param context
|
|
28
|
+
* @returns
|
|
29
|
+
*/
|
|
30
|
+
export declare function becomePluginHost_Proxy<HOST extends new (...args: any) => Object>(target: HOST): BecomePluginHost<HOST>;
|
|
31
|
+
/**
|
|
32
|
+
* 插件缩主类的装饰器(继承版)
|
|
33
|
+
* @remarks
|
|
34
|
+
* 通过继承实现
|
|
35
|
+
*/
|
|
36
|
+
export declare function becomePluginHost_Extends<HOST extends new (...args: any) => Object>(target: HOST): {
|
|
37
|
+
new (...args: any): {
|
|
38
|
+
/**
|
|
39
|
+
* 插件管理器 {@link PluginHostExtends.pluginManager}
|
|
40
|
+
*/
|
|
41
|
+
get pluginManager(): PluginManager</*elided*/ any, /*elided*/ any & HOST>;
|
|
42
|
+
/**
|
|
43
|
+
* 实例的注册插件的方法
|
|
44
|
+
* @param plugin
|
|
45
|
+
* @param args
|
|
46
|
+
* @returns
|
|
47
|
+
*/
|
|
48
|
+
use<P extends IPlugin</*elided*/ any, /*elided*/ any & HOST>>(plugin: P, ...args: PluginUseArgs<P>): ReturnType<P["onUse"]>;
|
|
49
|
+
/**
|
|
50
|
+
* 初始化实例
|
|
51
|
+
* @remarks
|
|
52
|
+
* 会调用 {@link PluginManager.onInit}
|
|
53
|
+
* @param args
|
|
54
|
+
*/
|
|
55
|
+
init(...args: any): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* 销毁实例
|
|
58
|
+
* @returns
|
|
59
|
+
*/
|
|
60
|
+
destroy(): Promise<any>;
|
|
61
|
+
constructor: Function;
|
|
62
|
+
toString(): string;
|
|
63
|
+
toLocaleString(): string;
|
|
64
|
+
valueOf(): Object;
|
|
65
|
+
hasOwnProperty(v: PropertyKey): boolean;
|
|
66
|
+
isPrototypeOf(v: Object): boolean;
|
|
67
|
+
propertyIsEnumerable(v: PropertyKey): boolean;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* 是否使用独立的插件管理器
|
|
71
|
+
* @defaultValue false
|
|
72
|
+
*/
|
|
73
|
+
isolatedPluginManager: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* 插件管理器
|
|
76
|
+
*/
|
|
77
|
+
get pluginManager(): PluginManager<{
|
|
78
|
+
/**
|
|
79
|
+
* 插件管理器 {@link PluginHostExtends.pluginManager}
|
|
80
|
+
*/
|
|
81
|
+
get pluginManager(): PluginManager</*elided*/ any, /*elided*/ any & HOST>;
|
|
82
|
+
/**
|
|
83
|
+
* 实例的注册插件的方法
|
|
84
|
+
* @param plugin
|
|
85
|
+
* @param args
|
|
86
|
+
* @returns
|
|
87
|
+
*/
|
|
88
|
+
use<P extends IPlugin</*elided*/ any, /*elided*/ any & HOST>>(plugin: P, ...args: PluginUseArgs<P>): ReturnType<P["onUse"]>;
|
|
89
|
+
/**
|
|
90
|
+
* 初始化实例
|
|
91
|
+
* @remarks
|
|
92
|
+
* 会调用 {@link PluginManager.onInit}
|
|
93
|
+
* @param args
|
|
94
|
+
*/
|
|
95
|
+
init(...args: any): Promise<void>;
|
|
96
|
+
/**
|
|
97
|
+
* 销毁实例
|
|
98
|
+
* @returns
|
|
99
|
+
*/
|
|
100
|
+
destroy(): Promise<any>;
|
|
101
|
+
constructor: Function;
|
|
102
|
+
toString(): string;
|
|
103
|
+
toLocaleString(): string;
|
|
104
|
+
valueOf(): Object;
|
|
105
|
+
hasOwnProperty(v: PropertyKey): boolean;
|
|
106
|
+
isPrototypeOf(v: Object): boolean;
|
|
107
|
+
propertyIsEnumerable(v: PropertyKey): boolean;
|
|
108
|
+
}, /*elided*/ any & HOST>;
|
|
109
|
+
_pluginManager: PluginManager<{
|
|
110
|
+
/**
|
|
111
|
+
* 插件管理器 {@link PluginHostExtends.pluginManager}
|
|
112
|
+
*/
|
|
113
|
+
get pluginManager(): PluginManager</*elided*/ any, /*elided*/ any & HOST>;
|
|
114
|
+
/**
|
|
115
|
+
* 实例的注册插件的方法
|
|
116
|
+
* @param plugin
|
|
117
|
+
* @param args
|
|
118
|
+
* @returns
|
|
119
|
+
*/
|
|
120
|
+
use<P extends IPlugin</*elided*/ any, /*elided*/ any & HOST>>(plugin: P, ...args: PluginUseArgs<P>): ReturnType<P["onUse"]>;
|
|
121
|
+
/**
|
|
122
|
+
* 初始化实例
|
|
123
|
+
* @remarks
|
|
124
|
+
* 会调用 {@link PluginManager.onInit}
|
|
125
|
+
* @param args
|
|
126
|
+
*/
|
|
127
|
+
init(...args: any): Promise<void>;
|
|
128
|
+
/**
|
|
129
|
+
* 销毁实例
|
|
130
|
+
* @returns
|
|
131
|
+
*/
|
|
132
|
+
destroy(): Promise<any>;
|
|
133
|
+
constructor: Function;
|
|
134
|
+
toString(): string;
|
|
135
|
+
toLocaleString(): string;
|
|
136
|
+
valueOf(): Object;
|
|
137
|
+
hasOwnProperty(v: PropertyKey): boolean;
|
|
138
|
+
isPrototypeOf(v: Object): boolean;
|
|
139
|
+
propertyIsEnumerable(v: PropertyKey): boolean;
|
|
140
|
+
}, /*elided*/ any & HOST>;
|
|
141
|
+
/**
|
|
142
|
+
* {@inheritDoc PluginManager.use}
|
|
143
|
+
*/
|
|
144
|
+
use<Plugin extends IPlugin<{
|
|
145
|
+
/**
|
|
146
|
+
* 插件管理器 {@link PluginHostExtends.pluginManager}
|
|
147
|
+
*/
|
|
148
|
+
get pluginManager(): PluginManager</*elided*/ any, /*elided*/ any & HOST>;
|
|
149
|
+
/**
|
|
150
|
+
* 实例的注册插件的方法
|
|
151
|
+
* @param plugin
|
|
152
|
+
* @param args
|
|
153
|
+
* @returns
|
|
154
|
+
*/
|
|
155
|
+
use<P extends IPlugin</*elided*/ any, /*elided*/ any & HOST>>(plugin: P, ...args: PluginUseArgs<P>): ReturnType<P["onUse"]>;
|
|
156
|
+
/**
|
|
157
|
+
* 初始化实例
|
|
158
|
+
* @remarks
|
|
159
|
+
* 会调用 {@link PluginManager.onInit}
|
|
160
|
+
* @param args
|
|
161
|
+
*/
|
|
162
|
+
init(...args: any): Promise<void>;
|
|
163
|
+
/**
|
|
164
|
+
* 销毁实例
|
|
165
|
+
* @returns
|
|
166
|
+
*/
|
|
167
|
+
destroy(): Promise<any>;
|
|
168
|
+
constructor: Function;
|
|
169
|
+
toString(): string;
|
|
170
|
+
toLocaleString(): string;
|
|
171
|
+
valueOf(): Object;
|
|
172
|
+
hasOwnProperty(v: PropertyKey): boolean;
|
|
173
|
+
isPrototypeOf(v: Object): boolean;
|
|
174
|
+
propertyIsEnumerable(v: PropertyKey): boolean;
|
|
175
|
+
}, /*elided*/ any & HOST>>(plugin: Plugin, ...args: PluginUseArgs<Plugin>): ReturnType<Plugin["onUse"]>;
|
|
176
|
+
} & HOST;
|
|
177
|
+
//# sourceMappingURL=decorator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorator.d.ts","sourceRoot":"","sources":["../../src/plugin-host/decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAmB,MAAM,yBAAyB,CAAC;AAEvF,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAG5D;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,IAAI,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,IAAI,IAAI,GAAG,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAG9J;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,GAiErE,gBAAgB,CAAC,IAAI,CAAC,CACxC;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,0BAS7F;AAGD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI;kBAkCvE,GAAG;QAdxB;;WAEG;6BACkB,aAAa,uCAA6C;QAgB/E;;;;;WAKG;YACC,CAAC,SAAS,OAAO,uCAA6C;QAKlE;;;;;WAKG;sBACiB,GAAG;QAMvB;;;WAGG;;;;;;;;;;IA9DH;;;OAGG;;IAGH;;OAEG;;QASH;;WAEG;6BACkB,aAAa,uCAA6C;QAgB/E;;;;;WAKG;YACC,CAAC,SAAS,OAAO,uCAA6C;QAKlE;;;;;WAKG;sBACiB,GAAG;QAMvB;;;WAGG;;;;;;;;;;;QA7CH;;WAEG;6BACkB,aAAa,uCAA6C;QAgB/E;;;;;WAKG;YACC,CAAC,SAAS,OAAO,uCAA6C;QAKlE;;;;;WAKG;sBACiB,GAAG;QAMvB;;;WAGG;;;;;;;;;;IAtCH;;OAEG;QACQ,MAAM,SAAS,OAAO;QAVjC;;WAEG;6BACkB,aAAa,uCAA6C;QAgB/E;;;;;WAKG;YACC,CAAC,SAAS,OAAO,uCAA6C;QAKlE;;;;;WAKG;sBACiB,GAAG;QAMvB;;;WAGG;;;;;;;;;6BAnC2E,UAAU,MAAM,WAAW,aAAa,CAAC,MAAM,CAAC;SA4CjI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin-host/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { ClassType } from "type-tls";
|
|
2
|
+
import type { PluginManager } from "../plugin-manager/index";
|
|
3
|
+
import type { IPlugin, PluginUseReturn, PluginUseArgs } from "../plugin-manager/index";
|
|
4
|
+
/**
|
|
5
|
+
* 插件宿主构造函数的接口
|
|
6
|
+
* @typeParam HostClassType 插件宿主类的类型
|
|
7
|
+
*/
|
|
8
|
+
export interface IPluginHostClass<HostInst> {
|
|
9
|
+
/**
|
|
10
|
+
* 构建函数
|
|
11
|
+
*/
|
|
12
|
+
new (...args: any): HostInst;
|
|
13
|
+
/**
|
|
14
|
+
* 插件宿主类的原型
|
|
15
|
+
*/
|
|
16
|
+
prototype: HostInst;
|
|
17
|
+
/**
|
|
18
|
+
* PluginHost 的插件管理器
|
|
19
|
+
*/
|
|
20
|
+
get pluginManager(): PluginManager<HostInst, this>;
|
|
21
|
+
/**
|
|
22
|
+
* 是否使用独立的插件管理器
|
|
23
|
+
* @defaultValue false
|
|
24
|
+
*/
|
|
25
|
+
readonly isolatedPluginManager?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* {@inheritDoc PluginManager.use}
|
|
28
|
+
*/
|
|
29
|
+
use<P extends IPlugin<HostInst, this>>(plugin: P, ...args: PluginUseArgs<P>): PluginUseReturn<P>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 插件宿主的实例类型
|
|
33
|
+
*/
|
|
34
|
+
export interface IPluginHost<Host, HostClass = ClassType<Host>> {
|
|
35
|
+
/**
|
|
36
|
+
* 插件管理器
|
|
37
|
+
*/
|
|
38
|
+
readonly pluginManager: PluginManager<Host, HostClass>;
|
|
39
|
+
/**
|
|
40
|
+
* 实例的注册插件的方法
|
|
41
|
+
* @param plugin
|
|
42
|
+
* @param args
|
|
43
|
+
* @returns
|
|
44
|
+
*/
|
|
45
|
+
use<P extends IPlugin<Host, HostClass>>(plugin: P, ...args: PluginUseArgs<P>): PluginUseReturn<P>;
|
|
46
|
+
/**
|
|
47
|
+
* 初始化实例
|
|
48
|
+
* @param args
|
|
49
|
+
*/
|
|
50
|
+
init(...args: any): any;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/plugin-host/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAIvF;;;GAGG;AACH,MAAM,WAAW,gBAAgB,CAAC,QAAQ;IAExC;;OAEG;IACH,KAAK,GAAG,IAAI,EAAE,GAAG,GAAG,QAAQ,CAAC;IAC7B;;OAEG;IACH,SAAS,EAAE,QAAQ,CAAC;IAEpB;;OAEG;IACH,IAAI,aAAa,IAAI,aAAa,CAAC,QAAQ,EAAC,IAAI,CAAC,CAAC;IAElD;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEzC;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,OAAO,CAAC,QAAQ,EAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;CACjG;AAID;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,IAAI,EAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;IAC3D;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,IAAI,EAAC,SAAS,CAAC,CAAC;IACtD;;;;;OAKG;IACH,GAAG,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,EAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IACjG;;;OAGG;IACH,IAAI,CAAC,GAAG,IAAI,EAAC,GAAG,GAAE,GAAG,CAAC;CACvB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { AnyFunction, ClassType } from "type-tls";
|
|
2
|
+
/**
|
|
3
|
+
* 插件宿主的实例类型
|
|
4
|
+
*/
|
|
5
|
+
export type HostInst<H> = H extends new (...args: any) => Object ? InstanceType<H> : H;
|
|
6
|
+
/**
|
|
7
|
+
* 插件的接口
|
|
8
|
+
*
|
|
9
|
+
* @typeParam HOST - 插件宿主的类类型
|
|
10
|
+
*/
|
|
11
|
+
export interface IPlugin<Host, HostClass = ClassType<Host>> {
|
|
12
|
+
/**
|
|
13
|
+
* 当插件被注册时调用
|
|
14
|
+
* @param hostClass - 宿主的类型
|
|
15
|
+
* @param args - 注册插件时的参数
|
|
16
|
+
*/
|
|
17
|
+
onUse(hostClass: HostClass, ...args: any): any;
|
|
18
|
+
/**
|
|
19
|
+
* 当宿主实例被创建时调用
|
|
20
|
+
* @param host - 新建的宿主实例
|
|
21
|
+
*/
|
|
22
|
+
onCreate?(host: Host, ...args: any): any;
|
|
23
|
+
/**
|
|
24
|
+
* 当宿主实例被初始化时调用
|
|
25
|
+
* @param host - 新建的宿主实例
|
|
26
|
+
* @param args - 初始化宿主实例时的参数
|
|
27
|
+
*/
|
|
28
|
+
onInit?(host: Host, ...args: any): any;
|
|
29
|
+
/**
|
|
30
|
+
* 当宿主实例被销毁时调用
|
|
31
|
+
* @param host - 被销毁的宿主实例
|
|
32
|
+
*/
|
|
33
|
+
onDestroy?(host: Host): any | Promise<any>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 获取插件的 used 方法的参数类型
|
|
37
|
+
*/
|
|
38
|
+
export type PluginUseArgs<Plugin extends IPlugin<any, any>> = Plugin["onUse"] extends (host: any, ...args: infer P) => any ? P : never;
|
|
39
|
+
/**
|
|
40
|
+
* 插件的 used 方法的返回值类型
|
|
41
|
+
*/
|
|
42
|
+
export type PluginUseReturn<P extends IPlugin<any, any>> = ReturnType<P["onUse"]>;
|
|
43
|
+
/**
|
|
44
|
+
* 插件的 created 方法的返回值类型
|
|
45
|
+
*/
|
|
46
|
+
export type PluginCreatedReturn<P extends IPlugin<any, any>> = P["onCreate"] extends AnyFunction ? ReturnType<P["onCreate"]> : never;
|
|
47
|
+
//# sourceMappingURL=IPlugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IPlugin.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/IPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAIvF;;;;GAIG;AACH,MAAM,WAAW,OAAO,CAAC,IAAI,EAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;IACrD;;;;OAIG;IACH,KAAK,CAAC,SAAS,EAAE,SAAS,EAAG,GAAG,IAAI,EAAC,GAAG,GAAG,GAAG,CAAC;IAE/C;;;OAGG;IACH,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAI,EAAG,GAAG,IAAI,EAAC,GAAG,GAAG,GAAG,CAAC;IAEzC;;;;OAIG;IACH,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAC,GAAG,IAAI,EAAC,GAAG,GAAG,GAAG,CAAC;IAErC;;;OAGG;IACH,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CAC9C;AAGD;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,MAAM,SAAS,OAAO,CAAC,GAAG,EAAC,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,GAAG,GAAI,CAAC,GAAG,KAAK,CAAC;AAGtI;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,EAAC,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAGjF;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC"}
|
|
@@ -1,119 +1,66 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
*/
|
|
5
|
-
export type HostInst<H> = H extends new (...args: any) => Object ? InstanceType<H> : H;
|
|
6
|
-
/**
|
|
7
|
-
* 格式化 use 方法的参数列表
|
|
8
|
-
*/
|
|
9
|
-
export type FormatUseParameters<Options> = Options extends never | void | undefined ? [] : [Options];
|
|
10
|
-
/**
|
|
11
|
-
* 格式化 use 方法的参数列表
|
|
12
|
-
*/
|
|
13
|
-
export type FormatUsePluginParameters<Plugin> = GetPluginOptions<Plugin> extends never | void | undefined ? [] : [GetPluginOptions<Plugin>];
|
|
14
|
-
/**
|
|
15
|
-
* 将选项格式成方法的参数类型
|
|
16
|
-
* @remarks
|
|
17
|
-
* 如果是 never|void|undefined 类型,则会被转为 void
|
|
18
|
-
*/
|
|
19
|
-
export type NormalizePluginOptions<Options> = Options extends never | void | undefined ? void : Options;
|
|
20
|
-
/**
|
|
21
|
-
* 插件的接口
|
|
22
|
-
*
|
|
23
|
-
* @typeParam HOST - 插件宿主的类类型
|
|
24
|
-
* @typeParam Options - 插件的选项类型
|
|
25
|
-
*/
|
|
26
|
-
export interface IPlugin<HOST, Options = void> {
|
|
27
|
-
/**
|
|
28
|
-
* 当插件被注册时调用
|
|
29
|
-
* @param Host - 宿主的类型
|
|
30
|
-
* @param options - 注册插件时的选项
|
|
31
|
-
*/
|
|
32
|
-
used(Host: HOST, ...options: FormatUseParameters<Options>): any;
|
|
33
|
-
/**
|
|
34
|
-
* 当宿主实例被创建时调用
|
|
35
|
-
* @param host - 新建的宿主实例
|
|
36
|
-
* @param options - 注册插件时的选项
|
|
37
|
-
*/
|
|
38
|
-
created?(host: HostInst<HOST>, ...options: FormatUseParameters<Options>): any;
|
|
39
|
-
/**
|
|
40
|
-
* 当宿主实例被销毁时调用
|
|
41
|
-
* @param host - 被销毁的宿主实例
|
|
42
|
-
* @param options - 注册插件时的选项
|
|
43
|
-
*/
|
|
44
|
-
destroyed?(host: HostInst<HOST>, ...options: FormatUseParameters<Options>): any;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* 获取插件的选项类型
|
|
48
|
-
*/
|
|
49
|
-
export type GetPluginOptions<Plugin> = Plugin extends IPlugin<any, infer Options> ? Options : never;
|
|
50
|
-
/**
|
|
51
|
-
* 获取规范化的插件选项
|
|
52
|
-
*/
|
|
53
|
-
export type GetNormalizePluginOptions<Plugin> = NormalizePluginOptions<GetPluginOptions<Plugin>>;
|
|
54
|
-
/**
|
|
55
|
-
* 插件的 used 方法的返回值类型
|
|
56
|
-
*/
|
|
57
|
-
export type PluginUseReturnType<P extends IPlugin<any, any>> = ReturnType<P["used"]>;
|
|
58
|
-
/**
|
|
59
|
-
* 插件的 created 方法的返回值类型
|
|
60
|
-
*/
|
|
61
|
-
export type PluginCreatedReturnType<P extends IPlugin<any, any>> = P["created"] extends AnyFunction ? ReturnType<P["created"]> : void;
|
|
1
|
+
import type { ClassType } from "type-tls";
|
|
2
|
+
import type { IPlugin, PluginUseArgs, PluginUseReturn } from "./IPlugin";
|
|
3
|
+
import { Destroyable } from "@gby/destroyable";
|
|
62
4
|
/**
|
|
63
5
|
* 插件管理者
|
|
64
6
|
*
|
|
65
7
|
* @remarks
|
|
66
8
|
* 负责管理插件的注册、应用 等
|
|
67
9
|
*
|
|
68
|
-
* @typeParam HostClassType 插件宿主类的类型
|
|
69
|
-
*
|
|
70
10
|
*/
|
|
71
|
-
export declare class PluginManager<
|
|
11
|
+
export declare class PluginManager<Host, HostClass = ClassType<Host>> extends Destroyable {
|
|
72
12
|
/**
|
|
73
13
|
* 插件的宿主
|
|
74
14
|
*/
|
|
75
|
-
host:
|
|
76
|
-
/**
|
|
77
|
-
* 插件与插件选项的映射
|
|
78
|
-
*/
|
|
79
|
-
readonly pluginOptsMap: Map<Plugin, any>;
|
|
15
|
+
host: HostClass;
|
|
80
16
|
/**
|
|
81
|
-
*
|
|
17
|
+
* 所有注册的插件
|
|
82
18
|
*/
|
|
83
|
-
readonly plugins:
|
|
19
|
+
readonly plugins: Map<IPlugin<Host, HostClass>, any>;
|
|
84
20
|
/**
|
|
85
21
|
* @param host - 插件的宿主
|
|
86
22
|
*/
|
|
87
|
-
constructor(host?:
|
|
23
|
+
constructor(host?: HostClass);
|
|
24
|
+
destroyThis(): void | Promise<void>;
|
|
88
25
|
/**
|
|
89
26
|
* 使用插件、注册插件
|
|
90
27
|
* @param plugin - 插件
|
|
91
|
-
* @param
|
|
28
|
+
* @param args - 传递给插件的选项
|
|
29
|
+
*/
|
|
30
|
+
use<P extends IPlugin<Host, HostClass>>(plugin: P, ...args: PluginUseArgs<P>): PluginUseReturn<P>;
|
|
31
|
+
/**
|
|
32
|
+
* 插件宿主创建实例时调用
|
|
33
|
+
*
|
|
34
|
+
* @remarks
|
|
35
|
+
* 会调用每个插件的 {@link IPlugin.onCreate} 方法
|
|
36
|
+
* 如果插件的 created 方法返回 Promise,则会等待 Promise resolve
|
|
37
|
+
* @param hostInst - 插件宿主的新实例
|
|
92
38
|
*/
|
|
93
|
-
|
|
39
|
+
onCreate(hostInst: Host, ...args: any): Promise<void>;
|
|
94
40
|
/**
|
|
95
41
|
* 插件宿主创建实例时调用
|
|
96
42
|
*
|
|
97
43
|
* @remarks
|
|
98
|
-
* 会调用每个插件的 {@link IPlugin.
|
|
44
|
+
* 会调用每个插件的 {@link IPlugin.onCreate } 方法
|
|
99
45
|
* @param hostInst - 插件宿主的新实例
|
|
46
|
+
* @param args - 初始化宿主实例时的参数
|
|
100
47
|
*/
|
|
101
|
-
|
|
48
|
+
onInit(hostInst: Host, ...args: any): Promise<void>;
|
|
102
49
|
/**
|
|
103
50
|
* 插件宿主被销毁时调用
|
|
104
51
|
*
|
|
105
52
|
* @remarks
|
|
106
|
-
* 会调用每个插件的 {@link IPlugin.
|
|
53
|
+
* 会调用每个插件的 {@link IPlugin.onDestroy} 方法
|
|
107
54
|
* @param hostInst - 被销毁的插件实例
|
|
108
55
|
*/
|
|
109
|
-
|
|
56
|
+
onDestroy(hostInst: Host): Promise<void>;
|
|
110
57
|
/**
|
|
111
58
|
* 插件宿主实例的注册插件的方法
|
|
112
59
|
*
|
|
113
60
|
* @remarks
|
|
114
|
-
* 会调用每个插件的 {@link IPlugin.use
|
|
61
|
+
* 会调用每个插件的 {@link IPlugin.use } 方法
|
|
115
62
|
* @param hostInst - 插件宿主的新实例
|
|
116
63
|
*/
|
|
117
|
-
instUse<P extends
|
|
64
|
+
instUse<P extends IPlugin<Host, HostClass>>(hostInst: Host, plugin: P, ...options: PluginUseArgs<P>): PluginUseReturn<P>;
|
|
118
65
|
}
|
|
119
66
|
//# 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,
|
|
1
|
+
{"version":3,"file":"PluginManager.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/PluginManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;;GAMG;AACH,qBAAa,aAAa,CAAC,IAAI,EAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAE,SAAQ,WAAW;IAE5E;;OAEG;IACH,IAAI,EAAG,SAAS,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,OAAO,qCAA0C;IAG1D;;OAEG;gBACS,IAAI,CAAC,EAAE,SAAS;IAOnB,WAAW;IAKpB;;;;OAIG;IACH,GAAG,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,EAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAQ/F;;;;;;;OAOG;IACG,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAG,GAAG,IAAI,EAAC,GAAG;IAQ3C;;;;;;;OAOG;IACG,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAC,GAAG,IAAI,EAAC,GAAG;IAQvC;;;;;;OAMG;IACG,SAAS,CAAC,QAAQ,EAAE,IAAI;IAO9B;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,SAAS,OAAO,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;CAO1H"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ReplaceConstructorReturn } from "../../extend";
|
|
2
|
+
import type { ITierModeOptionsHostClass, ITierModeOptionsHost } from "./type";
|
|
3
|
+
/**
|
|
4
|
+
* 使 HOST 变成 层级选项的宿主类型
|
|
5
|
+
*/
|
|
6
|
+
export type BecomeTierModeOptionsHost<HOST extends new (...args: any) => Object, Options extends {} = any, Mode extends string | number = string> = HOST & ITierModeOptionsHostClass<Options, Mode> & ReplaceConstructorReturn<HOST, InstanceType<HOST> & ITierModeOptionsHost<Options, Mode>>;
|
|
7
|
+
/**
|
|
8
|
+
* 使 host 变成 层级选项的宿主类型
|
|
9
|
+
* @param host
|
|
10
|
+
* @param context
|
|
11
|
+
* @returns
|
|
12
|
+
*/
|
|
13
|
+
export declare function becomeTierModeOptionsHost<HOST extends new (...args: any) => Object, Mode extends string | number, Options extends {}>(host: HOST, mode: Mode, options?: Options): BecomeTierModeOptionsHost<HOST, Options, Mode>;
|
|
14
|
+
//# sourceMappingURL=decorator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorator.d.ts","sourceRoot":"","sources":["../../../src/plugins/tier-mode-options/decorator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAE7D,OAAO,KAAK,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAG9E;;GAEG;AACH,MAAM,MAAM,yBAAyB,CAAC,IAAI,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,EAAE,OAAO,SAAS,EAAE,GAAG,GAAG,EAAE,IAAI,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,IAAI,GAAG,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,wBAAwB,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAI/R;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,EAAE,IAAI,SAAS,MAAM,GAAG,MAAM,EAAE,OAAO,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,GA4B/J,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAC9D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/tier-mode-options/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAM1D,eAAO,MAAM,qBAAqB,EAAE,OAAO,CAAC,GAAG,CA4C9C,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ClassType } from "type-tls";
|
|
2
|
+
import { TierModeOptions } from "../../options-manager/TierModeOptions";
|
|
3
|
+
import type { IPluginHost, IPluginHostClass } from "../../plugin-host";
|
|
4
|
+
export type WithTierModeOptions<C extends ClassType, Options extends {} = any, Mode extends string | number = string> = C & ITierModeOptionsHostClass<Options, Mode> & {
|
|
5
|
+
prototype: InstanceType<C> & ITierModeOptionsHost<Options, Mode>;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* 选项宿主接口
|
|
9
|
+
*/
|
|
10
|
+
export interface ITierModeOptionsHost<Options extends {} = any, Mode extends string | number = string> {
|
|
11
|
+
/**
|
|
12
|
+
* 实例级的默认选项
|
|
13
|
+
*/
|
|
14
|
+
readonly modeOptions: TierModeOptions<Mode, Options>;
|
|
15
|
+
mode: Mode;
|
|
16
|
+
get options(): Options;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 选项宿主的构建函数接口
|
|
20
|
+
*/
|
|
21
|
+
export interface ITierModeOptionsHostClass<Options extends {} = any, Mode extends string | number = string> {
|
|
22
|
+
/**
|
|
23
|
+
* 全局级别的默认选项
|
|
24
|
+
*/
|
|
25
|
+
readonly defaultOptions: TierModeOptions<Mode, Options>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 选项插件宿主接口
|
|
29
|
+
*/
|
|
30
|
+
export type ITierModeOptionsPluginHost<Host, HostClass = ITierModeOptionsPluginHostClass<Host>, Options extends {} = any, Mode extends string | number = string> = IPluginHost<Host & ITierModeOptionsHost<Options, Mode>, HostClass> & ITierModeOptionsHost<Options, Mode>;
|
|
31
|
+
/**
|
|
32
|
+
* 选项插件宿主的构建函数接口
|
|
33
|
+
*/
|
|
34
|
+
export type ITierModeOptionsPluginHostClass<Host, Options extends {} = any, Mode extends string | number = string> = IPluginHostClass<Host> & ITierModeOptionsHostClass<Options, Mode>;
|
|
35
|
+
//# sourceMappingURL=type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../src/plugins/tier-mode-options/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGvE,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,SAAS,EAAE,OAAO,SAAS,EAAE,GAAG,GAAG,EAAE,IAAI,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG;IACrK,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;CAClE,CAAC;AAKF;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,OAAO,SAAS,EAAE,GAAG,GAAG,EAAE,IAAI,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM;IACnG;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,OAAO,IAAI,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB,CAAC,OAAO,SAAS,EAAE,GAAG,GAAG,EAAE,IAAI,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM;IAExG;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;CACzD;AAGD;;GAEG;AACH,MAAM,MAAM,0BAA0B,CAAC,IAAI,EAAC,SAAS,GAAG,+BAA+B,CAAC,IAAI,CAAC,EAAE,OAAO,SAAS,EAAE,GAAG,GAAG,EAAE,IAAI,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,WAAW,CAAC,IAAI,GAAG,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAC,SAAS,CAAC,GAAG,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAE1Q;;GAEG;AACH,MAAM,MAAM,+BAA+B,CAAC,IAAI,EAAE,OAAO,SAAS,EAAE,GAAG,GAAG,EAAE,IAAI,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier-mode-options-plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/tier-mode-options-plugin.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ReplaceConstructorReturn } from "../../extend/mixin";
|
|
2
|
+
import type { ITierOptionsHost, ITierOptionsHostClass } from "./type";
|
|
3
|
+
/**
|
|
4
|
+
* 使 HOST 变成 层级选项的宿主类型
|
|
5
|
+
*/
|
|
6
|
+
export type BecomeTierOptionsHost<HOST extends new (...args: any) => Object, Options extends {} = any> = HOST & ITierOptionsHostClass<Options> & ReplaceConstructorReturn<HOST, InstanceType<HOST> & ITierOptionsHost<Options>>;
|
|
7
|
+
/**
|
|
8
|
+
* 使 host 变成 层级选项的宿主类型
|
|
9
|
+
* @param host
|
|
10
|
+
* @param context
|
|
11
|
+
* @returns
|
|
12
|
+
*/
|
|
13
|
+
export declare function becomeTierOptionsHost<HOST extends new (...args: any) => Object, Options extends {} = any>(host: HOST, option?: Options): BecomeTierOptionsHost<HOST>;
|
|
14
|
+
//# sourceMappingURL=decorator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorator.d.ts","sourceRoot":"","sources":["../../../src/plugins/tier-options/decorator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,wBAAwB,EAAe,MAAM,oBAAoB,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAItE;;GAEG;AACH,MAAM,MAAM,qBAAqB,CAAC,IAAI,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,EAAE,OAAO,SAAS,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG,wBAAwB,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;AAIhO;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,EAAE,OAAO,SAAS,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,CAAC,EAAC,OAAO,GAoBpH,qBAAqB,CAAC,IAAI,CAAC,CAC3C"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { IPlugin } from "../../plugin-manager/index";
|
|
2
|
+
/**
|
|
3
|
+
* 层级选项插件
|
|
4
|
+
* @remarks
|
|
5
|
+
*
|
|
6
|
+
* - Host 上增加静态 defaultOptions(全局默认选项)
|
|
7
|
+
* - Host 实例上通过 getter 提供 defaultOptions(实例默认选项,继承自静态 defaultOptions)
|
|
8
|
+
* - onCreate 时,把构造参数写入实例的 defaultOptions.option
|
|
9
|
+
*/
|
|
10
|
+
export declare const tierOptionsPlugin: IPlugin<any>;
|
|
11
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/tier-options/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAM1D;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAuB1C,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ClassType } from "type-tls";
|
|
2
|
+
import type { TierOptions } from "../../options-manager/index";
|
|
3
|
+
import type { IPluginHost, IPluginHostClass } from "../../plugin-host";
|
|
4
|
+
/**
|
|
5
|
+
* 类型辅助:为宿主类增加 TierOptions 能力后的类型
|
|
6
|
+
*/
|
|
7
|
+
export type WithTierOptions<C extends ClassType, Options extends {} = any> = C & ITierOptionsHostClass<Options> & {
|
|
8
|
+
prototype: InstanceType<C> & ITierOptionsHost<Options>;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* 选项插件宿主的构建函数接口
|
|
12
|
+
*/
|
|
13
|
+
export interface ITierOptionsHostClass<Options extends {} = any> {
|
|
14
|
+
/**
|
|
15
|
+
* 全局级别的默认选项
|
|
16
|
+
*/
|
|
17
|
+
get defaultOptions(): TierOptions<Options>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 选项插件宿主接口
|
|
21
|
+
*/
|
|
22
|
+
export interface ITierOptionsHost<Options extends {} = any> {
|
|
23
|
+
/**
|
|
24
|
+
* 实例级的默认选项
|
|
25
|
+
*/
|
|
26
|
+
readonly defaultOptions: TierOptions<Options>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 选项插件宿主接口
|
|
30
|
+
*/
|
|
31
|
+
export type ITierOptionsPluginHost<Host, HostClass = ITierOptionsPluginHostClass<Host>, Options extends {} = any> = IPluginHost<Host & ITierOptionsHost<Options>, HostClass> & ITierOptionsHost<Options>;
|
|
32
|
+
/**
|
|
33
|
+
* 选项插件宿主的构建函数接口
|
|
34
|
+
*/
|
|
35
|
+
export type ITierOptionsPluginHostClass<Host, Options extends {} = any> = IPluginHostClass<Host> & ITierOptionsHostClass<Options>;
|
|
36
|
+
//# sourceMappingURL=type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../src/plugins/tier-options/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAsBvE;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,SAAS,EAAE,OAAO,SAAS,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG;IAC9G,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;CAC1D,CAAC;AAMF;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,OAAO,SAAS,EAAE,GAAG,GAAG;IAC3D;;OAEG;IACH,IAAI,cAAc,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;CAC9C;AAGD;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,OAAO,SAAS,EAAE,GAAG,GAAG;IACtD;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CACjD;AAQD;;GAEG;AACH,MAAM,MAAM,sBAAsB,CAAC,IAAI,EAAC,SAAS,GAAG,2BAA2B,CAAC,IAAI,CAAC,EAAE,OAAO,SAAS,EAAE,GAAG,GAAG,IAAI,WAAW,CAAC,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,EAAC,SAAS,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAEvM;;GAEG;AACH,MAAM,MAAM,2BAA2B,CAAC,IAAI,EAAE,OAAO,SAAS,EAAE,GAAG,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC"}
|