plugin-tls 2.0.1 → 3.1.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/index.d.ts +3 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +927 -372
- package/dist/index.umd.cjs +1 -1
- package/dist/options/index.d.ts +4 -0
- package/dist/options/index.d.ts.map +1 -0
- package/dist/options/options-manager/ModeOptions.d.ts.map +1 -0
- package/dist/options/options-manager/OptionsManager.d.ts.map +1 -0
- package/dist/options/options-manager/TierModeOptions.d.ts.map +1 -0
- package/dist/options/options-manager/TierOptions.d.ts.map +1 -0
- package/dist/options/options-manager/defaultOptions.d.ts.map +1 -0
- package/dist/options/options-manager/index.d.ts +6 -0
- package/dist/options/options-manager/index.d.ts.map +1 -0
- package/dist/options/options-manager/tools.d.ts.map +1 -0
- package/dist/options/options-plugin-host/index.d.ts +3 -0
- package/dist/options/options-plugin-host/index.d.ts.map +1 -0
- package/dist/options/options-plugin-host/tier-mode-options/TierModeOptionsPluginHost.d.ts +28 -0
- package/dist/options/options-plugin-host/tier-mode-options/TierModeOptionsPluginHost.d.ts.map +1 -0
- package/dist/options/options-plugin-host/tier-mode-options/TierModeOptionsPluginHostEventEmitter.d.ts +29 -0
- package/dist/options/options-plugin-host/tier-mode-options/TierModeOptionsPluginHostEventEmitter.d.ts.map +1 -0
- package/dist/options/options-plugin-host/tier-mode-options/TierModeOptionsPluginHostEventTarget.d.ts +28 -0
- package/dist/options/options-plugin-host/tier-mode-options/TierModeOptionsPluginHostEventTarget.d.ts.map +1 -0
- package/dist/options/options-plugin-host/tier-mode-options/createTierModeOptionsPluginHost.d.ts +60 -0
- package/dist/options/options-plugin-host/tier-mode-options/createTierModeOptionsPluginHost.d.ts.map +1 -0
- package/dist/options/options-plugin-host/tier-mode-options/index.d.ts +6 -0
- package/dist/options/options-plugin-host/tier-mode-options/index.d.ts.map +1 -0
- package/dist/options/options-plugin-host/tier-mode-options/type.d.ts +7 -0
- package/dist/options/options-plugin-host/tier-mode-options/type.d.ts.map +1 -0
- package/dist/options/options-plugin-host/tier-options/TierOptionsPluginHost.d.ts +25 -0
- package/dist/options/options-plugin-host/tier-options/TierOptionsPluginHost.d.ts.map +1 -0
- package/dist/options/options-plugin-host/tier-options/TierOptionsPluginHostEventEmitter.d.ts +26 -0
- package/dist/options/options-plugin-host/tier-options/TierOptionsPluginHostEventEmitter.d.ts.map +1 -0
- package/dist/options/options-plugin-host/tier-options/TierOptionsPluginHostEventTarget.d.ts +25 -0
- package/dist/options/options-plugin-host/tier-options/TierOptionsPluginHostEventTarget.d.ts.map +1 -0
- package/dist/options/options-plugin-host/tier-options/createTierOptionsPluginHost.d.ts +57 -0
- package/dist/options/options-plugin-host/tier-options/createTierOptionsPluginHost.d.ts.map +1 -0
- package/dist/options/options-plugin-host/tier-options/index.d.ts +5 -0
- package/dist/options/options-plugin-host/tier-options/index.d.ts.map +1 -0
- package/dist/options/plugins/index.d.ts +3 -0
- package/dist/options/plugins/index.d.ts.map +1 -0
- package/dist/options/plugins/tier-mode-options/decorator.d.ts +14 -0
- package/dist/options/plugins/tier-mode-options/decorator.d.ts.map +1 -0
- package/dist/options/plugins/tier-mode-options/plugin.d.ts +3 -0
- package/dist/options/plugins/tier-mode-options/plugin.d.ts.map +1 -0
- package/dist/options/plugins/tier-mode-options/type.d.ts +35 -0
- package/dist/options/plugins/tier-mode-options/type.d.ts.map +1 -0
- package/dist/options/plugins/tier-mode-options-plugin.d.ts +4 -0
- package/dist/options/plugins/tier-mode-options-plugin.d.ts.map +1 -0
- package/dist/options/plugins/tier-options/decorator.d.ts +14 -0
- package/dist/options/plugins/tier-options/decorator.d.ts.map +1 -0
- package/dist/options/plugins/tier-options/plugin.d.ts +11 -0
- package/dist/options/plugins/tier-options/plugin.d.ts.map +1 -0
- package/dist/options/plugins/tier-options/type.d.ts +36 -0
- package/dist/options/plugins/tier-options/type.d.ts.map +1 -0
- package/dist/options/plugins/tier-options-plugin.d.ts +4 -0
- package/dist/options/plugins/tier-options-plugin.d.ts.map +1 -0
- package/dist/plugin-host/PluginHost.d.ts +50 -227
- package/dist/plugin-host/PluginHost.d.ts.map +1 -1
- package/dist/plugin-host/PluginHostEventEmitter.d.ts +72 -0
- package/dist/plugin-host/PluginHostEventEmitter.d.ts.map +1 -0
- package/dist/plugin-host/PluginHostEventTarget.d.ts +70 -0
- package/dist/plugin-host/PluginHostEventTarget.d.ts.map +1 -0
- package/dist/plugin-host/createPluginHost.d.ts +95 -0
- package/dist/plugin-host/createPluginHost.d.ts.map +1 -0
- package/dist/plugin-host/decorator.d.ts +174 -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 +65 -0
- package/dist/plugin-host/type.d.ts.map +1 -0
- package/dist/plugin-manager/ExtendManager.d.ts +66 -0
- package/dist/plugin-manager/ExtendManager.d.ts.map +1 -0
- package/dist/plugin-manager/IExtend.d.ts +64 -0
- package/dist/plugin-manager/IExtend.d.ts.map +1 -0
- package/dist/plugin-manager/IPlugin.d.ts +56 -0
- package/dist/plugin-manager/IPlugin.d.ts.map +1 -0
- package/dist/plugin-manager/PluginExtendManager.d.ts +92 -0
- package/dist/plugin-manager/PluginExtendManager.d.ts.map +1 -0
- package/dist/plugin-manager/PluginManager.d.ts +31 -84
- package/dist/plugin-manager/PluginManager.d.ts.map +1 -1
- package/dist/plugin-manager/index.d.ts +7 -0
- package/dist/plugin-manager/index.d.ts.map +1 -0
- package/dist/plugin-manager/mixin.d.ts.map +1 -0
- package/package.json +4 -3
- package/dist/extend/extend.d.ts +0 -222
- package/dist/extend/extend.d.ts.map +0 -1
- package/dist/extend/mixin.d.ts.map +0 -1
- package/dist/options-manager/ModeOptions.d.ts.map +0 -1
- package/dist/options-manager/OptionsManager.d.ts.map +0 -1
- package/dist/options-manager/TierModeOptions.d.ts.map +0 -1
- package/dist/options-manager/TierOptions.d.ts.map +0 -1
- package/dist/options-manager/defaultOptions.d.ts.map +0 -1
- package/dist/options-manager/tools.d.ts.map +0 -1
- 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
- /package/dist/{options-manager → options/options-manager}/ModeOptions.d.ts +0 -0
- /package/dist/{options-manager → options/options-manager}/OptionsManager.d.ts +0 -0
- /package/dist/{options-manager → options/options-manager}/TierModeOptions.d.ts +0 -0
- /package/dist/{options-manager → options/options-manager}/TierOptions.d.ts +0 -0
- /package/dist/{options-manager → options/options-manager}/defaultOptions.d.ts +0 -0
- /package/dist/{options-manager → options/options-manager}/tools.d.ts +0 -0
- /package/dist/{extend → plugin-manager}/mixin.d.ts +0 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ReplaceConstructorReturn } from "../../../plugin-manager/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/options/plugins/tier-options/decorator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,wBAAwB,EAAe,MAAM,+BAA+B,CAAC;AAC3F,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/options/plugins/tier-options/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAIpE;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAuB1C,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { AbstractConstructor } 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 AbstractConstructor, 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 extends AbstractConstructor = 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/options/plugins/tier-options/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAsB1E;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,mBAAmB,EAAE,OAAO,SAAS,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG;IACxH,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,SAAS,mBAAmB,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;AAEnO;;GAEG;AACH,MAAM,MAAM,2BAA2B,CAAC,IAAI,EAAE,OAAO,SAAS,EAAE,GAAG,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier-options-plugin.d.ts","sourceRoot":"","sources":["../../../src/options/plugins/tier-options-plugin.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA"}
|
|
@@ -1,261 +1,84 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type {
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
* 插件宿主的接口
|
|
7
|
-
*
|
|
8
|
-
* @typeParam HostClassType 插件宿主类的类型
|
|
9
|
-
*/
|
|
10
|
-
export interface IPluginHost<HostClassType extends IPluginHostConstructor<any, Plugin>, Plugin extends IPlugin<HostClassType, any> = IPlugin<HostClassType, any>> {
|
|
11
|
-
/**
|
|
12
|
-
* PluginHost 的插件管理器
|
|
13
|
-
*/
|
|
14
|
-
get pluginManager(): HostClassType["pluginManager"];
|
|
15
|
-
/**
|
|
16
|
-
* 实例的注册插件的方法
|
|
17
|
-
* @param plugin
|
|
18
|
-
* @param options
|
|
19
|
-
* @returns
|
|
20
|
-
*/
|
|
21
|
-
use<P extends Plugin>(plugin: P, options: GetNormalizePluginOptions<P>): PluginCreatedReturnType<P> | void;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* 插件宿主构造函数的接口
|
|
25
|
-
* @typeParam HostClassType 插件宿主类的类型
|
|
26
|
-
*/
|
|
27
|
-
export interface IPluginHostConstructor<HostClassType, Plugin extends IPlugin<HostClassType, any> = IPlugin<HostClassType, any>> {
|
|
28
|
-
/**
|
|
29
|
-
* PluginHost 的插件管理器
|
|
30
|
-
*/
|
|
31
|
-
get pluginManager(): PluginManager<HostClassType, Plugin>;
|
|
32
|
-
/**
|
|
33
|
-
* {@inheritDoc PluginManager.use}
|
|
34
|
-
*/
|
|
35
|
-
use<P extends Plugin>(plugin: P, options: GetNormalizePluginOptions<P>): PluginUseReturnType<P> | void;
|
|
36
|
-
}
|
|
1
|
+
import { PluginExtendManager } from "../plugin-manager";
|
|
2
|
+
import type { ExtendOptions, IPlugin, PluginUseArgs, PluginUseReturn } from "../plugin-manager/index";
|
|
3
|
+
import { Destroyable } from "@gby/destroyable";
|
|
4
|
+
import type { IPluginHost } from "./type";
|
|
5
|
+
import type { AbstractConstructor, ClassType } from "type-tls";
|
|
37
6
|
/**
|
|
38
7
|
* 插件的宿主
|
|
39
8
|
*
|
|
40
9
|
* @remarks
|
|
41
|
-
* 插件宿主 就是 拥有插件机制的宿主
|
|
42
10
|
*
|
|
43
11
|
* 子类需要在构建函数中调用 `this.pluginManager.created(this);`
|
|
44
12
|
*
|
|
45
13
|
* 之所以没写在该类中的函数中,是因为 `this.pluginManager.created(this)` 通常会在构建函数执行的最后时才调用;
|
|
46
14
|
* 如果像下面写在该类的构建函数中,然后子类通过 `super()` 来调用,这样就会导致 `this.pluginManager.created(this)` 不是在最后的执行;
|
|
15
|
+
*
|
|
16
|
+
*
|
|
17
|
+
* 将泛型设计成 <Host,HostClass = ClassType<Host>> 而不是 <HostClass> 的原因是:
|
|
18
|
+
* 如果设计为 <HostClass> ,则在子类中需要
|
|
19
|
+
* ```ts
|
|
20
|
+
* class SubPluginHost extends PluginHost<typeof SubPluginHost> {}
|
|
21
|
+
* ```
|
|
22
|
+
* 而这种写法 ts 会报循环引用自身的错误;
|
|
23
|
+
* 改成 <Host,HostClass = ClassType<Host>> 后,子类中只需像下面这样写,就不会报错了;
|
|
24
|
+
* ```ts
|
|
25
|
+
* class SubPluginHost extends PluginHost<SubPluginHost> {}
|
|
26
|
+
* ```
|
|
27
|
+
* 而且这样
|
|
28
|
+
* 1. 子类可以通过继承来实现自定义的 Host
|
|
29
|
+
* 2. 子类可以通过继承来实现自定义的 HostClass
|
|
47
30
|
*/
|
|
48
|
-
export declare class PluginHost<
|
|
31
|
+
export declare class PluginHost<Host, HostClass extends AbstractConstructor<Host> = ClassType<Host>> extends Destroyable implements IPluginHost<Host, HostClass> {
|
|
32
|
+
/**
|
|
33
|
+
* 是否使用独立的插件管理器
|
|
34
|
+
* @defaultValue false
|
|
35
|
+
*/
|
|
36
|
+
static isolatedPluginManager: boolean;
|
|
49
37
|
/**
|
|
50
38
|
* 插件管理器
|
|
51
39
|
*/
|
|
52
|
-
static get pluginManager():
|
|
53
|
-
|
|
40
|
+
static get pluginManager(): PluginExtendManager<any, any>;
|
|
41
|
+
static _pluginManager: PluginExtendManager<any, any>;
|
|
54
42
|
/**
|
|
55
43
|
* 插件管理器 {@link PluginHost.pluginManager}
|
|
56
44
|
*/
|
|
57
|
-
get pluginManager():
|
|
45
|
+
get pluginManager(): PluginExtendManager<Host, HostClass>;
|
|
58
46
|
/**
|
|
59
|
-
* {@inheritDoc
|
|
47
|
+
* {@inheritDoc PluginExtendManager.usePlugin}
|
|
60
48
|
*/
|
|
61
|
-
static
|
|
49
|
+
static usePlugin<Plugin extends IPlugin<any, any>>(plugin: Plugin, ...args: PluginUseArgs<Plugin>): ReturnType<Plugin["onUse"]>;
|
|
50
|
+
/**
|
|
51
|
+
* {@inheritDoc PluginExtendManager.useExtend}
|
|
52
|
+
*/
|
|
53
|
+
static useExtend<HostClass extends AbstractConstructor, E>(ext: ExtendOptions<HostClass, E>): boolean;
|
|
62
54
|
/**
|
|
63
55
|
* 需要在子类中调用
|
|
64
56
|
*
|
|
65
|
-
* 之所以没写在该类中的函数中,是因为 `this.pluginManager.
|
|
66
|
-
* 如果像下面写在该类的构建函数中,然后子类通过 `super()` 来调用,这样就会导致 `this.pluginManager.
|
|
57
|
+
* 之所以没写在该类中的函数中,是因为 `this.pluginManager.onCreate(this,...args)` 通常会在构建函数执行的最后时才调用;
|
|
58
|
+
* 如果像下面写在该类的构建函数中,然后子类通过 `super()` 来调用,这样就会导致 `this.pluginManager.onCreate(this,...args)` 不是在最后的执行;
|
|
67
59
|
*/
|
|
68
60
|
/**
|
|
69
61
|
* 实例的注册插件的方法
|
|
70
62
|
* @param plugin
|
|
71
|
-
* @param
|
|
63
|
+
* @param args
|
|
72
64
|
* @returns
|
|
73
65
|
*/
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* 销毁实例
|
|
77
|
-
* @returns
|
|
78
|
-
*/
|
|
79
|
-
destroyThis(): void;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* 创建插件的缩主类
|
|
83
|
-
*
|
|
84
|
-
* @remarks
|
|
85
|
-
* 比 直接使用 PluginHost 提供了完善的类型推导
|
|
86
|
-
*
|
|
87
|
-
* 子类需要在构建函数中调用 `this.pluginManager.created(this);`
|
|
88
|
-
*
|
|
89
|
-
* 之所以没写在该类中的函数中,是因为 `this.pluginManager.created(this)` 通常会在构建函数执行的最后时才调用;
|
|
90
|
-
* 如果像下面写在该类的构建函数中,然后子类通过 `super()` 来调用,这样就会导致 `this.pluginManager.created(this)` 不是在最后的执行;
|
|
91
|
-
* @returns
|
|
92
|
-
*/
|
|
93
|
-
export declare function createPluginHost<HOST, P extends new (...args: any) => Object, Plugin extends IPlugin<HOST, any> = IPlugin<HOST, any>>(ParentClass: P): {
|
|
94
|
-
new (...args: any): {
|
|
95
|
-
/**
|
|
96
|
-
* 插件管理器 {@link CEarth.pluginManager}
|
|
97
|
-
*/
|
|
98
|
-
get pluginManager(): PluginManager<any, IPlugin<any, any>>;
|
|
99
|
-
/**
|
|
100
|
-
/**
|
|
101
|
-
* 实例的注册插件的方法
|
|
102
|
-
* @param plugin
|
|
103
|
-
* @param options
|
|
104
|
-
* @returns
|
|
105
|
-
*/
|
|
106
|
-
use<P_1 extends Plugin>(plugin: P_1, ...options: FormatUsePluginParameters<P_1>): PluginCreatedReturnType<P_1> | void;
|
|
107
|
-
/**
|
|
108
|
-
* 销毁实例
|
|
109
|
-
* @returns
|
|
110
|
-
*/
|
|
111
|
-
destroyThis(): void;
|
|
112
|
-
readonly isDestroyed: boolean;
|
|
113
|
-
_isDestroyed: boolean;
|
|
114
|
-
_destroyers: import("@gby/destroyable").FunDestroyer[];
|
|
115
|
-
disposeFun<T extends import("@gby/destroyable").FunDestroyer>(fun: T): T;
|
|
116
|
-
cancelDisposeFun<T extends import("@gby/destroyable").FunDestroyer>(fun: T): T;
|
|
117
|
-
disposeObj<T extends unknown>(obj: T, sync?: boolean): T;
|
|
118
|
-
cancelDisposeObj<T extends unknown>(obj: T): T;
|
|
119
|
-
dispose<T extends import("@gby/destroyable").FunDestroyer>(fun: T): T;
|
|
120
|
-
dispose<T extends unknown>(obj: T, asyncDestroy?: boolean): T;
|
|
121
|
-
dispose<T extends unknown>(objOrFun: T, asyncDestroy?: boolean): T;
|
|
122
|
-
cancelDispose<T extends import("@gby/destroyable").FunDestroyer>(fun: T): T;
|
|
123
|
-
cancelDispose<T extends unknown>(obj: T): T;
|
|
124
|
-
cancelDispose<T extends unknown>(objOrFun: T): T;
|
|
125
|
-
destroy(): true | undefined;
|
|
126
|
-
destroyAsync(): Promise<true | undefined>;
|
|
127
|
-
constructor: Function;
|
|
128
|
-
toString: (() => string) & (() => string);
|
|
129
|
-
toLocaleString: (() => string) & (() => string);
|
|
130
|
-
valueOf: (() => Object) & (() => Object);
|
|
131
|
-
hasOwnProperty: ((v: PropertyKey) => boolean) & ((v: PropertyKey) => boolean);
|
|
132
|
-
isPrototypeOf: ((v: Object) => boolean) & ((v: Object) => boolean);
|
|
133
|
-
propertyIsEnumerable: ((v: PropertyKey) => boolean) & ((v: PropertyKey) => boolean);
|
|
134
|
-
};
|
|
135
|
-
/**
|
|
136
|
-
* PluginHost 的插件管理器
|
|
137
|
-
*/
|
|
138
|
-
get pluginManager(): PluginManager<typeof PluginHost & HOST & (new (...args: any) => {
|
|
139
|
-
readonly isDestroyed: boolean;
|
|
140
|
-
_isDestroyed: boolean;
|
|
141
|
-
_destroyers: import("@gby/destroyable").FunDestroyer[];
|
|
142
|
-
disposeFun<T extends import("@gby/destroyable").FunDestroyer>(fun: T): T;
|
|
143
|
-
cancelDisposeFun<T extends import("@gby/destroyable").FunDestroyer>(fun: T): T;
|
|
144
|
-
disposeObj<T extends any>(obj: T, sync?: boolean): T;
|
|
145
|
-
cancelDisposeObj<T extends any>(obj: T): T;
|
|
146
|
-
dispose<T extends import("@gby/destroyable").FunDestroyer>(fun: T): T;
|
|
147
|
-
dispose<T extends any>(obj: T, asyncDestroy?: boolean): T;
|
|
148
|
-
dispose<T extends any | import("@gby/destroyable").FunDestroyer>(objOrFun: T, asyncDestroy?: boolean): T;
|
|
149
|
-
cancelDispose<T extends import("@gby/destroyable").FunDestroyer>(fun: T): T;
|
|
150
|
-
cancelDispose<T extends any>(obj: T): T;
|
|
151
|
-
cancelDispose<T extends any | import("@gby/destroyable").FunDestroyer>(objOrFun: T): T;
|
|
152
|
-
destroyThis(): void;
|
|
153
|
-
destroy(): true | undefined;
|
|
154
|
-
destroyAsync(): Promise<true | undefined>;
|
|
155
|
-
constructor: Function;
|
|
156
|
-
toString(): string;
|
|
157
|
-
toLocaleString(): string;
|
|
158
|
-
valueOf(): Object;
|
|
159
|
-
hasOwnProperty(v: PropertyKey): boolean;
|
|
160
|
-
isPrototypeOf(v: Object): boolean;
|
|
161
|
-
propertyIsEnumerable(v: PropertyKey): boolean;
|
|
162
|
-
}) & P, Plugin>;
|
|
163
|
-
_pluginManager: PluginManager<typeof PluginHost & HOST & (new (...args: any) => {
|
|
164
|
-
readonly isDestroyed: boolean;
|
|
165
|
-
_isDestroyed: boolean;
|
|
166
|
-
_destroyers: import("@gby/destroyable").FunDestroyer[];
|
|
167
|
-
disposeFun<T extends import("@gby/destroyable").FunDestroyer>(fun: T): T;
|
|
168
|
-
cancelDisposeFun<T extends import("@gby/destroyable").FunDestroyer>(fun: T): T;
|
|
169
|
-
disposeObj<T extends any>(obj: T, sync?: boolean): T;
|
|
170
|
-
cancelDisposeObj<T extends any>(obj: T): T;
|
|
171
|
-
dispose<T extends import("@gby/destroyable").FunDestroyer>(fun: T): T;
|
|
172
|
-
dispose<T extends any>(obj: T, asyncDestroy?: boolean): T;
|
|
173
|
-
dispose<T extends any | import("@gby/destroyable").FunDestroyer>(objOrFun: T, asyncDestroy?: boolean): T;
|
|
174
|
-
cancelDispose<T extends import("@gby/destroyable").FunDestroyer>(fun: T): T;
|
|
175
|
-
cancelDispose<T extends any>(obj: T): T;
|
|
176
|
-
cancelDispose<T extends any | import("@gby/destroyable").FunDestroyer>(objOrFun: T): T;
|
|
177
|
-
destroyThis(): void;
|
|
178
|
-
destroy(): true | undefined;
|
|
179
|
-
destroyAsync(): Promise<true | undefined>;
|
|
180
|
-
constructor: Function;
|
|
181
|
-
toString(): string;
|
|
182
|
-
toLocaleString(): string;
|
|
183
|
-
valueOf(): Object;
|
|
184
|
-
hasOwnProperty(v: PropertyKey): boolean;
|
|
185
|
-
isPrototypeOf(v: Object): boolean;
|
|
186
|
-
propertyIsEnumerable(v: PropertyKey): boolean;
|
|
187
|
-
}) & P, Plugin>;
|
|
66
|
+
usePlugin<P extends IPlugin<Host, HostClass>>(plugin: P, ...args: PluginUseArgs<P>): PluginUseReturn<P>;
|
|
188
67
|
/**
|
|
189
|
-
* {@inheritDoc
|
|
68
|
+
* {@inheritDoc PluginExtendManager.useExtend}
|
|
190
69
|
*/
|
|
191
|
-
|
|
192
|
-
} & P;
|
|
193
|
-
/**
|
|
194
|
-
* 将 HOST 变成插件宿主类型
|
|
195
|
-
*/
|
|
196
|
-
export type BecomePluginHost<HOST extends new (...args: any) => Object, Plugin extends IPlugin<HOST, any> = IPlugin<HOST, any>> = HOST & IPluginHostConstructor<HOST & IPluginHostConstructor<HOST, Plugin>, Plugin> & ReplaceConstructorReturn<HOST, InstanceType<HOST> & IPluginHost<HOST & IPluginHostConstructor<HOST & IPluginHostConstructor<HOST, Plugin>, Plugin>>>;
|
|
197
|
-
/**
|
|
198
|
-
* 变成插件宿主
|
|
199
|
-
* @remarks
|
|
200
|
-
* 也可作为装饰器
|
|
201
|
-
*
|
|
202
|
-
* 子类需要在构建函数中调用 `this.pluginManager.created(this);`
|
|
203
|
-
*
|
|
204
|
-
* 之所以没写在该类中的函数中,是因为 `this.pluginManager.created(this)` 通常会在构建函数执行的最后时才调用;
|
|
205
|
-
* 如果像下面写在该类的构建函数中,然后子类通过 `super()` 来调用,这样就会导致 `this.pluginManager.created(this)` 不是在最后的执行;
|
|
206
|
-
* @param target
|
|
207
|
-
* @param context
|
|
208
|
-
* @returns
|
|
209
|
-
*/
|
|
210
|
-
export declare function becomePluginHost<HOST extends new (...args: any) => Object, Plugin extends IPlugin<HOST, any> = IPlugin<HOST, any>>(target: HOST): BecomePluginHost<HOST, Plugin>;
|
|
211
|
-
/**
|
|
212
|
-
* 变成插件宿主
|
|
213
|
-
* @remarks
|
|
214
|
-
* 也可作为装饰器
|
|
215
|
-
* @param target
|
|
216
|
-
* @param context
|
|
217
|
-
* @returns
|
|
218
|
-
*/
|
|
219
|
-
export declare function becomePluginHost_Proxy<HOST extends new (...args: any) => Object, Plugin extends IPlugin<HOST, any> = IPlugin<HOST, any>>(target: HOST): HOST;
|
|
220
|
-
/**
|
|
221
|
-
* 插件缩主类的装饰器(继承版)
|
|
222
|
-
* @remarks
|
|
223
|
-
* 通过继承实现
|
|
224
|
-
*/
|
|
225
|
-
export declare function becomePluginHost_Extends<HOST extends new (...args: any) => Object>(target: HOST): {
|
|
226
|
-
new (...args: any): {
|
|
227
|
-
/**
|
|
228
|
-
* 插件管理器 {@link PluginHost.pluginManager}
|
|
229
|
-
*/
|
|
230
|
-
get pluginManager(): PluginManager</*elided*/ any & HOST, IPlugin</*elided*/ any & HOST, any>>;
|
|
231
|
-
/**
|
|
232
|
-
* 实例的注册插件的方法
|
|
233
|
-
* @param plugin
|
|
234
|
-
* @param options
|
|
235
|
-
* @returns
|
|
236
|
-
*/
|
|
237
|
-
use<Plugin extends IPlugin</*elided*/ any & HOST, any>>(plugin: Plugin, ...options: FormatUsePluginParameters<Plugin>): void | PluginCreatedReturnType<Plugin>;
|
|
238
|
-
/**
|
|
239
|
-
* 销毁实例
|
|
240
|
-
* @returns
|
|
241
|
-
*/
|
|
242
|
-
destroy(): void;
|
|
243
|
-
constructor: Function;
|
|
244
|
-
toString(): string;
|
|
245
|
-
toLocaleString(): string;
|
|
246
|
-
valueOf(): Object;
|
|
247
|
-
hasOwnProperty(v: PropertyKey): boolean;
|
|
248
|
-
isPrototypeOf(v: Object): boolean;
|
|
249
|
-
propertyIsEnumerable(v: PropertyKey): boolean;
|
|
250
|
-
};
|
|
70
|
+
useExtend<E>(ext: ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): boolean;
|
|
251
71
|
/**
|
|
252
|
-
*
|
|
72
|
+
* 初始化实例
|
|
73
|
+
* @remarks
|
|
74
|
+
* 会调用 {@link PluginExtendManager.onInit}
|
|
75
|
+
* @param args
|
|
253
76
|
*/
|
|
254
|
-
|
|
255
|
-
_pluginManager: PluginManager</*elided*/ any & HOST>;
|
|
77
|
+
init(...args: any): any;
|
|
256
78
|
/**
|
|
257
|
-
*
|
|
79
|
+
* 销毁实例
|
|
80
|
+
* @returns
|
|
258
81
|
*/
|
|
259
|
-
|
|
260
|
-
}
|
|
82
|
+
destroyThis(): any;
|
|
83
|
+
}
|
|
261
84
|
//# sourceMappingURL=PluginHost.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginHost.d.ts","sourceRoot":"","sources":["../../src/plugin-host/PluginHost.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"PluginHost.d.ts","sourceRoot":"","sources":["../../src/plugin-host/PluginHost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEtG,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAC,SAAS,EAAE,MAAM,UAAU,CAAC;AAG9D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,UAAU,CAAC,IAAI,EAAC,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAE,SAAQ,WAAY,YAAW,WAAW,CAAC,IAAI,EAAC,SAAS,CAAC;IACpJ;;;OAGG;IACH,MAAM,CAAC,qBAAqB,UAAS;IAErC;;OAEG;IACH,MAAM,KAAK,aAAa,kCAKvB;IACD,MAAM,CAAC,cAAc,gCAA0C;IAE/D;;OAEG;IACH,IAAI,aAAa,IAAI,mBAAmB,CAAC,IAAI,EAAC,SAAS,CAAC,CAEvD;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,SAAS,OAAO,CAAC,GAAG,EAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC;IAIhG;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,SAAS,SAAS,mBAAmB,EAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;IAI1F;;;;;OAKG;IAOH;;;;;OAKG;IACH,SAAS,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;IAItG;;OAEG;IACH,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,EAAC,GAAG,IAAI,EAAC,qBAAqB,CAAC,SAAS,CAAC;IAKtF;;;;;OAKG;IACH,IAAI,CAAC,GAAG,IAAI,EAAC,GAAG,GAAE,GAAG;IAIrB;;;OAGG;IACM,WAAW;CAQrB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { PluginExtendManager } from "../plugin-manager";
|
|
2
|
+
import type { ExtendOptions, IPlugin, PluginUseArgs, PluginUseReturn } from "../plugin-manager/index";
|
|
3
|
+
import { DestroyableEventEmitter } from "@gby/destroyable";
|
|
4
|
+
import type { DefaultEventMap, EventMap } from "@gby/destroyable";
|
|
5
|
+
import type { IPluginHost } from "./type";
|
|
6
|
+
import type { AbstractConstructor, ClassType } from "type-tls";
|
|
7
|
+
export type { DefaultEventMap, EventMap };
|
|
8
|
+
/**
|
|
9
|
+
* 插件的宿主
|
|
10
|
+
*
|
|
11
|
+
* @remarks
|
|
12
|
+
* 插件宿主 就是 拥有插件机制的宿主
|
|
13
|
+
*
|
|
14
|
+
* 子类需要在构建函数中调用 `this.pluginManager.created(this);`
|
|
15
|
+
*
|
|
16
|
+
* 之所以没写在该类中的函数中,是因为 `this.pluginManager.created(this)` 通常会在构建函数执行的最后时才调用;
|
|
17
|
+
* 如果像下面写在该类的构建函数中,然后子类通过 `super()` 来调用,这样就会导致 `this.pluginManager.created(this)` 不是在最后的执行;
|
|
18
|
+
*/
|
|
19
|
+
export declare class PluginHostEventEmitter<Host, HostClass extends AbstractConstructor<Host> = ClassType<Host>, EM extends EventMap<EM> = DefaultEventMap> extends DestroyableEventEmitter<EM> implements IPluginHost<Host, HostClass> {
|
|
20
|
+
/**
|
|
21
|
+
* 是否使用独立的插件管理器
|
|
22
|
+
* @defaultValue false
|
|
23
|
+
*/
|
|
24
|
+
static isolatedPluginManager: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* 插件管理器
|
|
27
|
+
*/
|
|
28
|
+
static get pluginManager(): PluginExtendManager<any, any>;
|
|
29
|
+
static _pluginManager: PluginExtendManager<any, any>;
|
|
30
|
+
/**
|
|
31
|
+
* 插件管理器 {@link PluginHost.pluginManager}
|
|
32
|
+
*/
|
|
33
|
+
get pluginManager(): PluginExtendManager<Host, HostClass>;
|
|
34
|
+
/**
|
|
35
|
+
* {@inheritDoc PluginExtendManager.usePlugin}
|
|
36
|
+
*/
|
|
37
|
+
static usePlugin<Plugin extends IPlugin<any, any>>(plugin: Plugin, ...args: PluginUseArgs<Plugin>): ReturnType<Plugin["onUse"]>;
|
|
38
|
+
/**
|
|
39
|
+
* {@inheritDoc PluginExtendManager.useExtend}
|
|
40
|
+
*/
|
|
41
|
+
static useExtend<HostClass extends AbstractConstructor, E>(ext: ExtendOptions<HostClass, E>): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* 需要在子类中调用
|
|
44
|
+
*
|
|
45
|
+
* 之所以没写在该类中的函数中,是因为 `this.pluginManager.onCreate(this,...args)` 通常会在构建函数执行的最后时才调用;
|
|
46
|
+
* 如果像下面写在该类的构建函数中,然后子类通过 `super()` 来调用,这样就会导致 `this.pluginManager.onCreate(this,...args)` 不是在最后的执行;
|
|
47
|
+
*/
|
|
48
|
+
/**
|
|
49
|
+
* 实例的注册插件的方法
|
|
50
|
+
* @param plugin
|
|
51
|
+
* @param args
|
|
52
|
+
* @returns
|
|
53
|
+
*/
|
|
54
|
+
usePlugin<P extends IPlugin<Host, HostClass>>(plugin: P, ...args: PluginUseArgs<P>): PluginUseReturn<P>;
|
|
55
|
+
/**
|
|
56
|
+
* {@inheritDoc PluginExtendManager.useExtend}
|
|
57
|
+
*/
|
|
58
|
+
useExtend<E>(ext: ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* 初始化实例
|
|
61
|
+
* @remarks
|
|
62
|
+
* 会调用 {@link PluginExtendManager.onInit}
|
|
63
|
+
* @param args
|
|
64
|
+
*/
|
|
65
|
+
init(...args: any): any;
|
|
66
|
+
/**
|
|
67
|
+
* 销毁实例
|
|
68
|
+
* @returns
|
|
69
|
+
*/
|
|
70
|
+
destroyThis(): any;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=PluginHostEventEmitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginHostEventEmitter.d.ts","sourceRoot":"","sources":["../../src/plugin-host/PluginHostEventEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEtG,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE/D,YAAY,EAAE,eAAe,EAAC,QAAQ,EAAC,CAAA;AAGvC;;;;;;;;;;GAUG;AACH,qBAAa,sBAAsB,CAAC,IAAI,EAAE,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,QAAQ,CAAC,EAAE,CAAC,GAAG,eAAe,CAAE,SAAQ,uBAAuB,CAAC,EAAE,CAAE,YAAW,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC;IAC7N;;;OAGG;IACH,MAAM,CAAC,qBAAqB,UAAS;IAErC;;OAEG;IACH,MAAM,KAAK,aAAa,kCAKvB;IACD,MAAM,CAAC,cAAc,gCAA0C;IAE/D;;OAEG;IACH,IAAI,aAAa,IAAI,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAExD;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC;IAIjG;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,SAAS,SAAS,mBAAmB,EAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;IAI1F;;;;;OAKG;IAOH;;;;;OAKG;IACH,SAAS,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAIvG;;OAEG;IACH,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,EAAC,GAAG,IAAI,EAAC,qBAAqB,CAAC,SAAS,CAAC;IAKtF;;;;;OAKG;IACH,IAAI,CAAC,GAAG,IAAI,EAAC,GAAG,GAAG,GAAG;IAItB;;;OAGG;IACM,WAAW;CAQrB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { PluginExtendManager } from "../plugin-manager";
|
|
2
|
+
import type { ExtendOptions, IPlugin, PluginUseArgs, PluginUseReturn } from "../plugin-manager/index";
|
|
3
|
+
import { DestroyableEventTarget } from "@gby/destroyable";
|
|
4
|
+
import type { IPluginHost } from "./type";
|
|
5
|
+
import type { AbstractConstructor, ClassType } from "type-tls";
|
|
6
|
+
/**
|
|
7
|
+
* 插件的宿主
|
|
8
|
+
*
|
|
9
|
+
* @remarks
|
|
10
|
+
* 插件宿主 就是 拥有插件机制的宿主
|
|
11
|
+
*
|
|
12
|
+
* 子类需要在构建函数中调用 `this.pluginManager.created(this);`
|
|
13
|
+
*
|
|
14
|
+
* 之所以没写在该类中的函数中,是因为 `this.pluginManager.created(this)` 通常会在构建函数执行的最后时才调用;
|
|
15
|
+
* 如果像下面写在该类的构建函数中,然后子类通过 `super()` 来调用,这样就会导致 `this.pluginManager.created(this)` 不是在最后的执行;
|
|
16
|
+
*/
|
|
17
|
+
export declare class PluginHostEventTarget<Host, HostClass extends AbstractConstructor<Host> = ClassType<Host>, EM extends Record<string, any> = Record<string, any>> extends DestroyableEventTarget<EM> implements IPluginHost<Host, HostClass> {
|
|
18
|
+
/**
|
|
19
|
+
* 是否使用独立的插件管理器
|
|
20
|
+
* @defaultValue false
|
|
21
|
+
*/
|
|
22
|
+
static isolatedPluginManager: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* 插件管理器
|
|
25
|
+
*/
|
|
26
|
+
static get pluginManager(): PluginExtendManager<any, any>;
|
|
27
|
+
static _pluginManager: PluginExtendManager<any, any>;
|
|
28
|
+
/**
|
|
29
|
+
* 插件管理器 {@link PluginHost.pluginManager}
|
|
30
|
+
*/
|
|
31
|
+
get pluginManager(): PluginExtendManager<Host, HostClass>;
|
|
32
|
+
/**
|
|
33
|
+
* {@inheritDoc PluginExtendManager.usePlugin}
|
|
34
|
+
*/
|
|
35
|
+
static usePlugin<Plugin extends IPlugin<any, any>>(plugin: Plugin, ...args: PluginUseArgs<Plugin>): ReturnType<Plugin["onUse"]>;
|
|
36
|
+
/**
|
|
37
|
+
* {@inheritDoc PluginExtendManager.useExtend}
|
|
38
|
+
*/
|
|
39
|
+
static useExtend<HostClass extends AbstractConstructor, E>(ext: ExtendOptions<HostClass, E>): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* 需要在子类中调用
|
|
42
|
+
*
|
|
43
|
+
* 之所以没写在该类中的函数中,是因为 `this.pluginManager.onCreate(this,...args)` 通常会在构建函数执行的最后时才调用;
|
|
44
|
+
* 如果像下面写在该类的构建函数中,然后子类通过 `super()` 来调用,这样就会导致 `this.pluginManager.onCreate(this,...args)` 不是在最后的执行;
|
|
45
|
+
*/
|
|
46
|
+
/**
|
|
47
|
+
* 实例的注册插件的方法
|
|
48
|
+
* @param plugin
|
|
49
|
+
* @param args
|
|
50
|
+
* @returns
|
|
51
|
+
*/
|
|
52
|
+
usePlugin<P extends IPlugin<Host, HostClass>>(plugin: P, ...args: PluginUseArgs<P>): PluginUseReturn<P>;
|
|
53
|
+
/**
|
|
54
|
+
* {@inheritDoc PluginExtendManager.useExtend}
|
|
55
|
+
*/
|
|
56
|
+
useExtend<E>(ext: ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* 初始化实例
|
|
59
|
+
* @remarks
|
|
60
|
+
* 会调用 {@link PluginExtendManager.onInit}
|
|
61
|
+
* @param args
|
|
62
|
+
*/
|
|
63
|
+
init(...args: any): any;
|
|
64
|
+
/**
|
|
65
|
+
* 销毁实例
|
|
66
|
+
* @returns
|
|
67
|
+
*/
|
|
68
|
+
destroyThis(): any;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=PluginHostEventTarget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginHostEventTarget.d.ts","sourceRoot":"","sources":["../../src/plugin-host/PluginHostEventTarget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEtG,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAC,SAAS,EAAE,MAAM,UAAU,CAAC;AAK9D;;;;;;;;;;GAUG;AACH,qBAAa,qBAAqB,CAAC,IAAI,EAAE,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAE,SAAQ,sBAAsB,CAAC,EAAE,CAAE,YAAW,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC;IACtO;;;OAGG;IACH,MAAM,CAAC,qBAAqB,UAAS;IAErC;;OAEG;IACH,MAAM,KAAK,aAAa,kCAKvB;IACD,MAAM,CAAC,cAAc,gCAA0C;IAE/D;;OAEG;IACH,IAAI,aAAa,IAAI,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAExD;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC;IAIjG;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,SAAS,SAAS,mBAAmB,EAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;IAI1F;;;;;OAKG;IAOH;;;;;OAKG;IACH,SAAS,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAIvG;;OAEG;IACH,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,EAAC,GAAG,IAAI,EAAC,qBAAqB,CAAC,SAAS,CAAC;IAKtF;;;;;OAKG;IACH,IAAI,CAAC,GAAG,IAAI,EAAC,GAAG,GAAG,GAAG;IAItB;;;OAGG;IACM,WAAW;CAQrB"}
|