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.
Files changed (106) hide show
  1. package/dist/index.d.ts +3 -12
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +927 -372
  4. package/dist/index.umd.cjs +1 -1
  5. package/dist/options/index.d.ts +4 -0
  6. package/dist/options/index.d.ts.map +1 -0
  7. package/dist/options/options-manager/ModeOptions.d.ts.map +1 -0
  8. package/dist/options/options-manager/OptionsManager.d.ts.map +1 -0
  9. package/dist/options/options-manager/TierModeOptions.d.ts.map +1 -0
  10. package/dist/options/options-manager/TierOptions.d.ts.map +1 -0
  11. package/dist/options/options-manager/defaultOptions.d.ts.map +1 -0
  12. package/dist/options/options-manager/index.d.ts +6 -0
  13. package/dist/options/options-manager/index.d.ts.map +1 -0
  14. package/dist/options/options-manager/tools.d.ts.map +1 -0
  15. package/dist/options/options-plugin-host/index.d.ts +3 -0
  16. package/dist/options/options-plugin-host/index.d.ts.map +1 -0
  17. package/dist/options/options-plugin-host/tier-mode-options/TierModeOptionsPluginHost.d.ts +28 -0
  18. package/dist/options/options-plugin-host/tier-mode-options/TierModeOptionsPluginHost.d.ts.map +1 -0
  19. package/dist/options/options-plugin-host/tier-mode-options/TierModeOptionsPluginHostEventEmitter.d.ts +29 -0
  20. package/dist/options/options-plugin-host/tier-mode-options/TierModeOptionsPluginHostEventEmitter.d.ts.map +1 -0
  21. package/dist/options/options-plugin-host/tier-mode-options/TierModeOptionsPluginHostEventTarget.d.ts +28 -0
  22. package/dist/options/options-plugin-host/tier-mode-options/TierModeOptionsPluginHostEventTarget.d.ts.map +1 -0
  23. package/dist/options/options-plugin-host/tier-mode-options/createTierModeOptionsPluginHost.d.ts +60 -0
  24. package/dist/options/options-plugin-host/tier-mode-options/createTierModeOptionsPluginHost.d.ts.map +1 -0
  25. package/dist/options/options-plugin-host/tier-mode-options/index.d.ts +6 -0
  26. package/dist/options/options-plugin-host/tier-mode-options/index.d.ts.map +1 -0
  27. package/dist/options/options-plugin-host/tier-mode-options/type.d.ts +7 -0
  28. package/dist/options/options-plugin-host/tier-mode-options/type.d.ts.map +1 -0
  29. package/dist/options/options-plugin-host/tier-options/TierOptionsPluginHost.d.ts +25 -0
  30. package/dist/options/options-plugin-host/tier-options/TierOptionsPluginHost.d.ts.map +1 -0
  31. package/dist/options/options-plugin-host/tier-options/TierOptionsPluginHostEventEmitter.d.ts +26 -0
  32. package/dist/options/options-plugin-host/tier-options/TierOptionsPluginHostEventEmitter.d.ts.map +1 -0
  33. package/dist/options/options-plugin-host/tier-options/TierOptionsPluginHostEventTarget.d.ts +25 -0
  34. package/dist/options/options-plugin-host/tier-options/TierOptionsPluginHostEventTarget.d.ts.map +1 -0
  35. package/dist/options/options-plugin-host/tier-options/createTierOptionsPluginHost.d.ts +57 -0
  36. package/dist/options/options-plugin-host/tier-options/createTierOptionsPluginHost.d.ts.map +1 -0
  37. package/dist/options/options-plugin-host/tier-options/index.d.ts +5 -0
  38. package/dist/options/options-plugin-host/tier-options/index.d.ts.map +1 -0
  39. package/dist/options/plugins/index.d.ts +3 -0
  40. package/dist/options/plugins/index.d.ts.map +1 -0
  41. package/dist/options/plugins/tier-mode-options/decorator.d.ts +14 -0
  42. package/dist/options/plugins/tier-mode-options/decorator.d.ts.map +1 -0
  43. package/dist/options/plugins/tier-mode-options/plugin.d.ts +3 -0
  44. package/dist/options/plugins/tier-mode-options/plugin.d.ts.map +1 -0
  45. package/dist/options/plugins/tier-mode-options/type.d.ts +35 -0
  46. package/dist/options/plugins/tier-mode-options/type.d.ts.map +1 -0
  47. package/dist/options/plugins/tier-mode-options-plugin.d.ts +4 -0
  48. package/dist/options/plugins/tier-mode-options-plugin.d.ts.map +1 -0
  49. package/dist/options/plugins/tier-options/decorator.d.ts +14 -0
  50. package/dist/options/plugins/tier-options/decorator.d.ts.map +1 -0
  51. package/dist/options/plugins/tier-options/plugin.d.ts +11 -0
  52. package/dist/options/plugins/tier-options/plugin.d.ts.map +1 -0
  53. package/dist/options/plugins/tier-options/type.d.ts +36 -0
  54. package/dist/options/plugins/tier-options/type.d.ts.map +1 -0
  55. package/dist/options/plugins/tier-options-plugin.d.ts +4 -0
  56. package/dist/options/plugins/tier-options-plugin.d.ts.map +1 -0
  57. package/dist/plugin-host/PluginHost.d.ts +50 -227
  58. package/dist/plugin-host/PluginHost.d.ts.map +1 -1
  59. package/dist/plugin-host/PluginHostEventEmitter.d.ts +72 -0
  60. package/dist/plugin-host/PluginHostEventEmitter.d.ts.map +1 -0
  61. package/dist/plugin-host/PluginHostEventTarget.d.ts +70 -0
  62. package/dist/plugin-host/PluginHostEventTarget.d.ts.map +1 -0
  63. package/dist/plugin-host/createPluginHost.d.ts +95 -0
  64. package/dist/plugin-host/createPluginHost.d.ts.map +1 -0
  65. package/dist/plugin-host/decorator.d.ts +174 -0
  66. package/dist/plugin-host/decorator.d.ts.map +1 -0
  67. package/dist/plugin-host/index.d.ts +7 -0
  68. package/dist/plugin-host/index.d.ts.map +1 -0
  69. package/dist/plugin-host/type.d.ts +65 -0
  70. package/dist/plugin-host/type.d.ts.map +1 -0
  71. package/dist/plugin-manager/ExtendManager.d.ts +66 -0
  72. package/dist/plugin-manager/ExtendManager.d.ts.map +1 -0
  73. package/dist/plugin-manager/IExtend.d.ts +64 -0
  74. package/dist/plugin-manager/IExtend.d.ts.map +1 -0
  75. package/dist/plugin-manager/IPlugin.d.ts +56 -0
  76. package/dist/plugin-manager/IPlugin.d.ts.map +1 -0
  77. package/dist/plugin-manager/PluginExtendManager.d.ts +92 -0
  78. package/dist/plugin-manager/PluginExtendManager.d.ts.map +1 -0
  79. package/dist/plugin-manager/PluginManager.d.ts +31 -84
  80. package/dist/plugin-manager/PluginManager.d.ts.map +1 -1
  81. package/dist/plugin-manager/index.d.ts +7 -0
  82. package/dist/plugin-manager/index.d.ts.map +1 -0
  83. package/dist/plugin-manager/mixin.d.ts.map +1 -0
  84. package/package.json +4 -3
  85. package/dist/extend/extend.d.ts +0 -222
  86. package/dist/extend/extend.d.ts.map +0 -1
  87. package/dist/extend/mixin.d.ts.map +0 -1
  88. package/dist/options-manager/ModeOptions.d.ts.map +0 -1
  89. package/dist/options-manager/OptionsManager.d.ts.map +0 -1
  90. package/dist/options-manager/TierModeOptions.d.ts.map +0 -1
  91. package/dist/options-manager/TierOptions.d.ts.map +0 -1
  92. package/dist/options-manager/defaultOptions.d.ts.map +0 -1
  93. package/dist/options-manager/tools.d.ts.map +0 -1
  94. package/dist/plugin-host/TierModeOptionsPluginHost.d.ts +0 -167
  95. package/dist/plugin-host/TierModeOptionsPluginHost.d.ts.map +0 -1
  96. package/dist/plugin-host/TierOptionsPluginHost.d.ts +0 -153
  97. package/dist/plugin-host/TierOptionsPluginHost.d.ts.map +0 -1
  98. package/dist/plugin-manager/PluginManagerWithInit.d.ts +0 -36
  99. package/dist/plugin-manager/PluginManagerWithInit.d.ts.map +0 -1
  100. /package/dist/{options-manager → options/options-manager}/ModeOptions.d.ts +0 -0
  101. /package/dist/{options-manager → options/options-manager}/OptionsManager.d.ts +0 -0
  102. /package/dist/{options-manager → options/options-manager}/TierModeOptions.d.ts +0 -0
  103. /package/dist/{options-manager → options/options-manager}/TierOptions.d.ts +0 -0
  104. /package/dist/{options-manager → options/options-manager}/defaultOptions.d.ts +0 -0
  105. /package/dist/{options-manager → options/options-manager}/tools.d.ts +0 -0
  106. /package/dist/{extend → plugin-manager}/mixin.d.ts +0 -0
@@ -0,0 +1,95 @@
1
+ import { PluginExtendManager } from "../plugin-manager";
2
+ import type { ExtendOptions, IPlugin, PluginUseArgs, PluginUseReturn } from "../plugin-manager/index";
3
+ import type { AbstractConstructor, ClassType } from "type-tls";
4
+ /**
5
+ * 创建插件的缩主类
6
+ *
7
+ * @remarks
8
+ * 比 直接使用 PluginHost 提供了完善的类型推导
9
+ *
10
+ * 子类需要在构建函数中调用 `this.pluginManager.created(this);`
11
+ *
12
+ * 之所以没写在该类中的函数中,是因为 `this.pluginManager.created(this)` 通常会在构建函数执行的最后时才调用;
13
+ * 如果像下面写在该类的构建函数中,然后子类通过 `super()` 来调用,这样就会导致 `this.pluginManager.created(this)` 不是在最后的执行;
14
+ * @returns
15
+ */
16
+ export declare function createPluginHost<P extends new (...args: any) => Object>(ParentClass: P): {
17
+ new <Host, HostClass extends AbstractConstructor<Host> = ClassType<Host, any>>(...args: any): {
18
+ /**
19
+ * 插件管理器 {@link PluginHostSub.pluginManager}
20
+ */
21
+ get pluginManager(): PluginExtendManager<Host, HostClass>;
22
+ /**
23
+ * 需要在子类中调用
24
+ *
25
+ * 之所以没写在该类中的函数中,是因为 `this.pluginManager.onCreate(this)` 通常会在构建函数执行的最后时才调用;
26
+ * 如果像下面写在该类的构建函数中,然后子类通过 `super()` 来调用,这样就会导致 `this.pluginManager.onCreate(this)` 不是在最后的执行;
27
+ */
28
+ /**
29
+ * 实例的注册插件的方法
30
+ * @param plugin
31
+ * @param args
32
+ * @returns
33
+ */
34
+ usePlugin<P_1 extends IPlugin<Host, HostClass>>(plugin: P_1, ...args: PluginUseArgs<P_1>): PluginUseReturn<P_1>;
35
+ /**
36
+ * {@inheritDoc PluginExtendManager.useExtend}
37
+ */
38
+ useExtend<E>(ext: ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): boolean;
39
+ /**
40
+ * 初始化实例
41
+ * @remarks
42
+ * 会调用 {@link PluginExtendManager.onInit}
43
+ * @param args
44
+ */
45
+ init(...args: any): any;
46
+ /**
47
+ * 销毁实例
48
+ * @returns
49
+ */
50
+ destroyThis(): any;
51
+ refCount: number;
52
+ readonly isDestroyed: boolean;
53
+ _isDestroyed: boolean;
54
+ readonly canDestroy: boolean;
55
+ _destroyers: import("@gby/destroyable").FunDestroyer[];
56
+ disposeFun<T extends import("@gby/destroyable").FunDestroyer>(fun: T): T;
57
+ cancelDisposeFun<T extends import("@gby/destroyable").FunDestroyer>(fun: T): T;
58
+ disposeObj<T extends import("@gby/destroyable").IDestroyable>(obj: T, sync?: boolean): T;
59
+ cancelDisposeObj<T extends import("@gby/destroyable").IDestroyable>(obj: T): T;
60
+ dispose<T extends import("@gby/destroyable").FunDestroyer>(fun: T): T;
61
+ dispose<T extends import("@gby/destroyable").IDestroyable>(obj: T, asyncDestroy?: boolean): T;
62
+ dispose<T extends import("@gby/destroyable").IDestroyable | import("@gby/destroyable").FunDestroyer>(objOrFun: T, asyncDestroy?: boolean): T;
63
+ cancelDispose<T extends import("@gby/destroyable").FunDestroyer>(fun: T): T;
64
+ cancelDispose<T extends import("@gby/destroyable").IDestroyable>(obj: T): T;
65
+ cancelDispose<T extends import("@gby/destroyable").IDestroyable | import("@gby/destroyable").FunDestroyer>(objOrFun: T): T;
66
+ destroySync(): boolean;
67
+ destroy(): boolean | Promise<boolean>;
68
+ constructor: Function;
69
+ toString: (() => string) & (() => string);
70
+ toLocaleString: (() => string) & (() => string);
71
+ valueOf: (() => Object) & (() => Object);
72
+ hasOwnProperty: ((v: PropertyKey) => boolean) & ((v: PropertyKey) => boolean);
73
+ isPrototypeOf: ((v: Object) => boolean) & ((v: Object) => boolean);
74
+ propertyIsEnumerable: ((v: PropertyKey) => boolean) & ((v: PropertyKey) => boolean);
75
+ };
76
+ /**
77
+ * 是否使用独立的插件管理器
78
+ * @defaultValue false
79
+ */
80
+ isolatedPluginManager: boolean;
81
+ /**
82
+ * 插件管理器
83
+ */
84
+ get pluginManager(): PluginExtendManager<any, any>;
85
+ _pluginManager: PluginExtendManager<any, any>;
86
+ /**
87
+ * {@inheritDoc PluginExtendManager.usePlugin}
88
+ */
89
+ usePlugin<Plugin extends IPlugin<any, any>>(plugin: Plugin, ...args: PluginUseArgs<Plugin>): ReturnType<Plugin["onUse"]>;
90
+ /**
91
+ * {@inheritDoc PluginExtendManager.useExtend}
92
+ */
93
+ useExtend<HostClass extends AbstractConstructor, E>(ext: ExtendOptions<HostClass, E>): boolean;
94
+ } & P;
95
+ //# sourceMappingURL=createPluginHost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPluginHost.d.ts","sourceRoot":"","sources":["../../src/plugin-host/createPluginHost.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;AAGtG,OAAO,KAAK,EAAE,mBAAmB,EAAG,SAAS,EAAC,MAAM,UAAU,CAAC;AAG/D;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,EAAE,WAAW,EAAE,CAAC;SAS1D,IAAI,EAAE,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC;QAkB1E;;WAEG;6BACkB,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC;QAkBzD;;;;;WAKG;QAMH;;;;;WAKG;8BACiB,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,GAAC,WAAW,aAAa,CAAC,GAAC,CAAC,GAAG,eAAe,CAAC,GAAC,CAAC;QAKvG;;WAEG;kBACO,CAAC,6CAA2C,qBAAqB,CAAC,SAAS,CAAC;QAKtF;;;;;WAKG;sBACW,GAAG,GAAE,GAAG;QAItB;;;WAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;IAjFH;;;OAGG;;IAGH;;OAEG;;;IAgBH;;OAEG;cACc,MAAM,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,MAAM,WAAW,aAAa,CAAC,MAAM,CAAC;IAIjG;;OAEG;cACc,SAAS,SAAS,mBAAmB,EAAC,CAAC,OAAO,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;MAyD7F"}
@@ -0,0 +1,174 @@
1
+ import { PluginExtendManager } from "../plugin-manager";
2
+ import type { ExtendOptions, IPlugin, PluginUseArgs } from "../plugin-manager/index";
3
+ import type { IPluginHost, IPluginHostClass } from "./type";
4
+ import type { AbstractConstructor, Constructor } from "type-tls";
5
+ /**
6
+ * 将 HOST 变成插件宿主类型
7
+ */
8
+ export type BecomePluginHost<HostClass extends AbstractConstructor<any>> = HostClass & IPluginHostClass<InstanceType<HostClass> & IPluginHost<InstanceType<HostClass>, HostClass>>;
9
+ /**
10
+ * 变成插件宿主
11
+ * @remarks
12
+ * 也可作为装饰器
13
+ *
14
+ * 子类需要在构建函数中调用 `this.pluginManager.created(this);`
15
+ *
16
+ * 之所以没写在该类中的函数中,是因为 `this.pluginManager.created(this)` 通常会在构建函数执行的最后时才调用;
17
+ * 如果像下面写在该类的构建函数中,然后子类通过 `super()` 来调用,这样就会导致 `this.pluginManager.created(this)` 不是在最后的执行;
18
+ * @param target
19
+ * @param context
20
+ * @returns
21
+ */
22
+ export declare function becomePluginHost<HostClass extends AbstractConstructor>(target: HostClass): BecomePluginHost<HostClass>;
23
+ /**
24
+ * 变成插件宿主,通过代理实现
25
+ * @remarks
26
+ * 也可作为装饰器
27
+ * @param target
28
+ * @param context
29
+ * @returns
30
+ */
31
+ export declare function becomePluginHost_Proxy<HOST extends Constructor<any>>(target: HOST): BecomePluginHost<HOST>;
32
+ /**
33
+ * 插件缩主类的装饰器(继承版)
34
+ * @remarks
35
+ * 通过继承实现
36
+ */
37
+ export declare function becomePluginHost_Extends<HostClass extends Constructor>(target: HostClass): {
38
+ new (...args: any): {
39
+ [x: string]: any;
40
+ /**
41
+ * 插件管理器 {@link PluginHostExtends.pluginManager}
42
+ */
43
+ get pluginManager(): PluginExtendManager</*elided*/ any, /*elided*/ any & HostClass>;
44
+ /**
45
+ * 实例的注册插件的方法
46
+ * @param plugin
47
+ * @param args
48
+ * @returns
49
+ */
50
+ usePlugin<P extends IPlugin</*elided*/ any, /*elided*/ any & HostClass>>(plugin: P, ...args: PluginUseArgs<P>): ReturnType<P["onUse"]>;
51
+ /**
52
+ * {@inheritDoc PluginExtendManager.useExtend}
53
+ */
54
+ useExtend<E>(ext: ExtendOptions</*elided*/ any & HostClass, E>, ...args: ConstructorParameters</*elided*/ any & HostClass>): boolean;
55
+ /**
56
+ * 初始化实例
57
+ * @remarks
58
+ * 会调用 {@link PluginExtendManager.onInit}
59
+ * @param args
60
+ */
61
+ init(...args: any): any;
62
+ /**
63
+ * 销毁实例
64
+ * @returns
65
+ */
66
+ destroy(): any;
67
+ };
68
+ /**
69
+ * 是否使用独立的插件管理器
70
+ * @defaultValue false
71
+ */
72
+ isolatedPluginManager: boolean;
73
+ /**
74
+ * 插件管理器
75
+ */
76
+ get pluginManager(): PluginExtendManager<{
77
+ [x: string]: any;
78
+ /**
79
+ * 插件管理器 {@link PluginHostExtends.pluginManager}
80
+ */
81
+ get pluginManager(): PluginExtendManager</*elided*/ any, /*elided*/ any & HostClass>;
82
+ /**
83
+ * 实例的注册插件的方法
84
+ * @param plugin
85
+ * @param args
86
+ * @returns
87
+ */
88
+ usePlugin<P extends IPlugin</*elided*/ any, /*elided*/ any & HostClass>>(plugin: P, ...args: PluginUseArgs<P>): ReturnType<P["onUse"]>;
89
+ /**
90
+ * {@inheritDoc PluginExtendManager.useExtend}
91
+ */
92
+ useExtend<E>(ext: ExtendOptions</*elided*/ any & HostClass, E>, ...args: ConstructorParameters</*elided*/ any & HostClass>): boolean;
93
+ /**
94
+ * 初始化实例
95
+ * @remarks
96
+ * 会调用 {@link PluginExtendManager.onInit}
97
+ * @param args
98
+ */
99
+ init(...args: any): any;
100
+ /**
101
+ * 销毁实例
102
+ * @returns
103
+ */
104
+ destroy(): any;
105
+ }, /*elided*/ any & HostClass>;
106
+ _pluginManager: PluginExtendManager<{
107
+ [x: string]: any;
108
+ /**
109
+ * 插件管理器 {@link PluginHostExtends.pluginManager}
110
+ */
111
+ get pluginManager(): PluginExtendManager</*elided*/ any, /*elided*/ any & HostClass>;
112
+ /**
113
+ * 实例的注册插件的方法
114
+ * @param plugin
115
+ * @param args
116
+ * @returns
117
+ */
118
+ usePlugin<P extends IPlugin</*elided*/ any, /*elided*/ any & HostClass>>(plugin: P, ...args: PluginUseArgs<P>): ReturnType<P["onUse"]>;
119
+ /**
120
+ * {@inheritDoc PluginExtendManager.useExtend}
121
+ */
122
+ useExtend<E>(ext: ExtendOptions</*elided*/ any & HostClass, E>, ...args: ConstructorParameters</*elided*/ any & HostClass>): boolean;
123
+ /**
124
+ * 初始化实例
125
+ * @remarks
126
+ * 会调用 {@link PluginExtendManager.onInit}
127
+ * @param args
128
+ */
129
+ init(...args: any): any;
130
+ /**
131
+ * 销毁实例
132
+ * @returns
133
+ */
134
+ destroy(): any;
135
+ }, /*elided*/ any & HostClass>;
136
+ /**
137
+ * {@inheritDoc PluginExtendManager.usePlugin}
138
+ */
139
+ usePlugin<Plugin extends IPlugin<{
140
+ [x: string]: any;
141
+ /**
142
+ * 插件管理器 {@link PluginHostExtends.pluginManager}
143
+ */
144
+ get pluginManager(): PluginExtendManager</*elided*/ any, /*elided*/ any & HostClass>;
145
+ /**
146
+ * 实例的注册插件的方法
147
+ * @param plugin
148
+ * @param args
149
+ * @returns
150
+ */
151
+ usePlugin<P extends IPlugin</*elided*/ any, /*elided*/ any & HostClass>>(plugin: P, ...args: PluginUseArgs<P>): ReturnType<P["onUse"]>;
152
+ /**
153
+ * {@inheritDoc PluginExtendManager.useExtend}
154
+ */
155
+ useExtend<E>(ext: ExtendOptions</*elided*/ any & HostClass, E>, ...args: ConstructorParameters</*elided*/ any & HostClass>): boolean;
156
+ /**
157
+ * 初始化实例
158
+ * @remarks
159
+ * 会调用 {@link PluginExtendManager.onInit}
160
+ * @param args
161
+ */
162
+ init(...args: any): any;
163
+ /**
164
+ * 销毁实例
165
+ * @returns
166
+ */
167
+ destroy(): any;
168
+ }, /*elided*/ any & HostClass>>(plugin: Plugin, ...args: PluginUseArgs<Plugin>): ReturnType<Plugin["onUse"]>;
169
+ /**
170
+ * {@inheritDoc PluginExtendManager.useExtend}
171
+ */
172
+ useExtend<E>(ext: ExtendOptions</*elided*/ any & HostClass, E>): boolean;
173
+ } & HostClass;
174
+ //# 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,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAmB,MAAM,yBAAyB,CAAC;AAEtG,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAC,MAAM,UAAU,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,SAAS,SAAS,mBAAmB,CAAC,GAAG,CAAC,IAAI,SAAS,GAAG,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AAGnL;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,SAAS,mBAAmB,EAAE,MAAM,EAAE,SAAS,GA+EtE,gBAAgB,CAAC,SAAS,CAAC,CAC7C;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,SAAS,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,0BASjF;AAGD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,SAAS,WAAW,EAAE,MAAM,EAAE,SAAS;kBAyChE,GAAG;;QArBxB;;WAEG;6BACkB,mBAAmB,4CAA6C;QAuBrF;;;;;WAKG;kBACO,CAAC,SAAS,OAAO,4CAA6C;QAIxE;;WAEG;kBACO,CAAC,8DAA0D,qBAAqB,4BAA0B;QAKpH;;;;;WAKG;sBACW,GAAG,GAAE,GAAG;QAYtB;;;WAGG;;;IAlFH;;;OAGG;;IAGH;;OAEG;;;QASH;;WAEG;6BACkB,mBAAmB,4CAA6C;QAuBrF;;;;;WAKG;kBACO,CAAC,SAAS,OAAO,4CAA6C;QAIxE;;WAEG;kBACO,CAAC,8DAA0D,qBAAqB,4BAA0B;QAKpH;;;;;WAKG;sBACW,GAAG,GAAE,GAAG;QAYtB;;;WAGG;;;;;QAjEH;;WAEG;6BACkB,mBAAmB,4CAA6C;QAuBrF;;;;;WAKG;kBACO,CAAC,SAAS,OAAO,4CAA6C;QAIxE;;WAEG;kBACO,CAAC,8DAA0D,qBAAqB,4BAA0B;QAKpH;;;;;WAKG;sBACW,GAAG,GAAE,GAAG;QAYtB;;;WAGG;;;IA1DH;;OAEG;cACc,MAAM,SAAS,OAAO;;QAVvC;;WAEG;6BACkB,mBAAmB,4CAA6C;QAuBrF;;;;;WAKG;kBACO,CAAC,SAAS,OAAO,4CAA6C;QAIxE;;WAEG;kBACO,CAAC,8DAA0D,qBAAqB,4BAA0B;QAKpH;;;;;WAKG;sBACW,GAAG,GAAE,GAAG;QAYtB;;;WAGG;;kCAvDiF,UAAU,MAAM,WAAW,aAAa,CAAC,MAAM,CAAC;IAIpI;;OAEG;cACc,CAAC,OAAO,aAAa,6BAA2B,CAAC,CAAC,GAAE,OAAO;cAiE/E"}
@@ -0,0 +1,7 @@
1
+ export * from "./type";
2
+ export * from "./PluginHost";
3
+ export * from "./PluginHostEventEmitter";
4
+ export * from "./PluginHostEventTarget";
5
+ export * from "./createPluginHost";
6
+ export * from "./decorator";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -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,65 @@
1
+ import type { AbstractConstructor, ClassType } from "type-tls";
2
+ import type { ExtendOptions, PluginExtendManager } 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(): PluginExtendManager<HostInst, this>;
21
+ /**
22
+ * 是否使用独立的插件管理器
23
+ * @defaultValue false
24
+ */
25
+ readonly isolatedPluginManager?: boolean;
26
+ /**
27
+ * {@inheritDoc PluginExtendManager.usePlugin}
28
+ */
29
+ usePlugin<P extends IPlugin<HostInst, this>>(plugin: P, ...args: PluginUseArgs<P>): PluginUseReturn<P>;
30
+ /**
31
+ * {@inheritDoc PluginExtendManager.useExtend}
32
+ */
33
+ useExtend<HostClass extends AbstractConstructor, E>(ext: ExtendOptions<HostClass, E>): boolean;
34
+ }
35
+ /**
36
+ * 插件宿主的实例类型
37
+ */
38
+ export interface IPluginHost<Host, HostClass extends AbstractConstructor<Host> = ClassType<Host>> {
39
+ /**
40
+ * 插件管理器
41
+ */
42
+ readonly pluginManager: PluginExtendManager<Host, HostClass>;
43
+ /**
44
+ * 实例的注册插件的方法
45
+ * @param plugin
46
+ * @param args
47
+ * @returns
48
+ */
49
+ usePlugin<P extends IPlugin<Host, HostClass>>(plugin: P, ...args: PluginUseArgs<P>): PluginUseReturn<P>;
50
+ /**
51
+ * {@inheritDoc PluginExtendManager.useExtend}
52
+ */
53
+ useExtend<E>(ext: ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): boolean;
54
+ /**
55
+ * 初始化实例
56
+ * @param args
57
+ */
58
+ init(...args: any): any;
59
+ /**
60
+ * 销毁实例
61
+ * @returns
62
+ */
63
+ destroy(): any;
64
+ }
65
+ //# 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,mBAAmB,EAAC,SAAS,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGvF;;;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,mBAAmB,CAAC,QAAQ,EAAC,IAAI,CAAC,CAAC;IAExD;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEzC;;OAEG;IACH,SAAS,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;IAEtG;;OAEG;IACH,SAAS,CAAC,SAAS,SAAS,mBAAmB,EAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC;CAC/F;AAID;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,IAAI,EAAC,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC;IAC7F;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC,IAAI,EAAC,SAAS,CAAC,CAAC;IAC5D;;;;;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,CAAC;IAEvG;;OAEG;IACH,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,EAAC,GAAG,IAAI,EAAC,qBAAqB,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;IAEjG;;;OAGG;IACH,IAAI,CAAC,GAAG,IAAI,EAAC,GAAG,GAAE,GAAG,CAAC;IAEtB;;;OAGG;IACH,OAAO,IAAG,GAAG,CAAC;CACf"}
@@ -0,0 +1,66 @@
1
+ import type { AnyFunction, AbstractConstructor } from "type-tls";
2
+ import { Destroyable } from "@gby/destroyable";
3
+ import { type ExtendOptions, type IExtend } from "./IExtend";
4
+ /**
5
+ * 插件管理者
6
+ *
7
+ * @remarks
8
+ * 负责管理插件的注册、应用 等
9
+ *
10
+ */
11
+ export declare class ExtendManager<HostClass extends AbstractConstructor> extends Destroyable {
12
+ /**
13
+ * 插件的宿主
14
+ */
15
+ host: HostClass;
16
+ /**
17
+ * 所有注册的插件
18
+ */
19
+ readonly plugins: Set<IExtend<HostClass>>;
20
+ /**
21
+ * @param host - 插件的宿主
22
+ */
23
+ constructor(host?: HostClass);
24
+ destroyThis(): any;
25
+ /**
26
+ * 使用插件、注册插件
27
+ * @param plugin - 插件
28
+ * @param args - 传递给插件的选项
29
+ */
30
+ use<E>(plugin: ExtendOptions<HostClass, E>): boolean;
31
+ /**
32
+ * 插件宿主实例的注册插件的方法
33
+ *
34
+ * @remarks
35
+ * 会调用每个插件的 {@link IExtend.use } 方法
36
+ * @param hostInst - 插件宿主的新实例
37
+ */
38
+ instUse<E>(hostInst: InstanceType<HostClass>, plugin: ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): boolean;
39
+ /**
40
+ * 插件宿主创建实例时调用
41
+ *
42
+ * @remarks
43
+ * 会调用每个插件的 {@link IExtend.onCreate} 方法
44
+ * 如果插件的 created 方法返回 Promise,则会等待 Promise resolve
45
+ * @param hostInst - 插件宿主的新实例
46
+ */
47
+ onCreate(hostInst: InstanceType<HostClass>, ...args: ConstructorParameters<HostClass>): import("com-tools").SerialCallFunsReturn<AnyFunction>;
48
+ /**
49
+ * 插件宿主创建实例时调用
50
+ *
51
+ * @remarks
52
+ * 会调用每个插件的 {@link IExtend.onCreate } 方法
53
+ * @param hostInst - 插件宿主的新实例
54
+ * @param args - 初始化宿主实例时的参数
55
+ */
56
+ onInit(hostInst: InstanceType<HostClass>, ...args: any): import("com-tools").SerialCallFunsReturn<AnyFunction>;
57
+ /**
58
+ * 插件宿主被销毁时调用
59
+ *
60
+ * @remarks
61
+ * 会调用每个插件的 {@link IExtend.onDestroy} 方法
62
+ * @param hostInst - 被销毁的插件实例
63
+ */
64
+ onDestroy(hostInst: InstanceType<HostClass>): import("com-tools").SerialCallFunsReturn<AnyFunction>;
65
+ }
66
+ //# sourceMappingURL=ExtendManager.d.ts.map
@@ -0,0 +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;AAE/C,OAAO,EAAyB,KAAK,aAAa,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpF;;;;;;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,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;IAQ1C;;;;;;OAMG;IACH,OAAO,CAAC,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;IAQ5H;;;;;;;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"}
@@ -0,0 +1,64 @@
1
+ import type { AbstractConstructor, ClassType } from "type-tls";
2
+ /**
3
+ * 扩展选项接口
4
+ * @remarks
5
+ * 扩展 与 插件的接口很像,他们的区别是:
6
+ * - 扩展中的方法的 this 值是被扩展的类的实例,而插件中方法的 this 值是插件对象本身
7
+ * - 扩展中除接口中定义的成员之外,其他成员都会被直接添加到宿主类的原型 prototype 上,而插件的成员不会
8
+ */
9
+ export interface IExtend<HostClass extends AbstractConstructor> {
10
+ /**
11
+ * 当宿主实例被创建时调用
12
+ * @param host - 新建的宿主实例
13
+ */
14
+ onCreate?(host: InstanceType<HostClass>, ...args: ConstructorParameters<HostClass>): any;
15
+ /**
16
+ * 当宿主实例被初始化时调用
17
+ * @param host - 新建的宿主实例
18
+ * @param args - 初始化宿主实例时的参数
19
+ */
20
+ onInit?(host: InstanceType<HostClass>, ...args: any): any;
21
+ /**
22
+ * 当宿主实例被销毁时调用
23
+ * @param host - 被销毁的宿主实例
24
+ */
25
+ onDestroy?(host: InstanceType<HostClass>): any;
26
+ }
27
+ /**
28
+ * 从扩展选项中提取需要设置给宿主类的成员
29
+ * @param extendOptions
30
+ * @returns
31
+ */
32
+ export declare function pickHostExtendMembers<Ext>(extendOptions: Ext): Omit<Ext, keyof IExtend<any>>;
33
+ /**
34
+ * 扩展目标的选项类型
35
+ *
36
+ * @remarks
37
+ * 它是一个对象类型,它的属性是 E 的属性,并且会自动更改其this的类型为 InstanceType<C> & E
38
+ *
39
+ * @param HostClass - 扩展的目标类类型
40
+ * @param E - 扩展的对象类型
41
+ */
42
+ export type ExtendOptions<HostClass extends AbstractConstructor, E> = E & ThisType<InstanceType<HostClass> & E> & IExtend<HostClass>;
43
+ /**
44
+ * 扩展目标的类类型
45
+ *
46
+ * @remarks
47
+ * 它是一个类类型,它的实例类型是 InstanceType<C> & E,构造函数参数是 ConstructorParameters<C>
48
+ *
49
+ * @param HostClass - 扩展的目标类类型
50
+ * @param E - 扩展的对象类型
51
+ */
52
+ export type ExtendClassType<HostClass extends AbstractConstructor, E> = ClassType<InstanceType<HostClass> & E, ConstructorParameters<HostClass>>;
53
+ /**
54
+ * 定义扩展的类型便利函数
55
+ *
56
+ * @remarks
57
+ * 它会更改 ext 中方法的this指向为 cla & ext,不会真的执行扩展操作。
58
+ *
59
+ * @param hostClass - 扩展的目标,用作 this 的类型
60
+ * @param ext - 描述扩展内容的对象,会自动更改其this的类型
61
+ * @returns 返回注入了 this 类型的 ext 对象本身
62
+ */
63
+ export declare function defineExtend<HostClass extends AbstractConstructor, E>(hostClass: HostClass, ext: ExtendOptions<HostClass, E>): E & ThisType<HostClass & E>;
64
+ //# sourceMappingURL=IExtend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IExtend.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/IExtend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAC,SAAS,EAAE,MAAM,UAAU,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,WAAW,OAAO,CAAC,SAAS,SAAS,mBAAmB;IAC1D;;;OAGG;IACH,QAAQ,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,EAAG,GAAG,IAAI,EAAC,qBAAqB,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;IAEzF;;;;OAIG;IACH,MAAM,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,EAAC,GAAG,IAAI,EAAC,GAAG,GAAG,GAAG,CAAC;IAExD;;;OAGG;IACH,SAAS,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;CAClD;AAMD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,aAAa,EAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAU1F;AASD;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,CAAC,SAAS,SAAS,mBAAmB,EAAE,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAMrI;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,CAAC,SAAS,SAAS,mBAAmB,EAAE,CAAC,IAAI,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,EAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;AAQhJ;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,SAAS,SAAS,mBAAmB,EAAE,CAAC,EAAG,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,CAE3J"}
@@ -0,0 +1,56 @@
1
+ import type { AnyFunction, AbstractClassType } from "type-tls";
2
+ /**
3
+ * 插件宿主的实例类型
4
+ */
5
+ export type HostInst<H> = H extends new (...args: any) => Object ? InstanceType<H> : H;
6
+ /**
7
+ * 插件的接口
8
+ * @remarks
9
+ * 插件 与 扩展的接口很像,他们的区别是:
10
+ * - 插件中的方法的 this 值是插件对象本身,而扩展中方法的 this 值是宿主实例
11
+ * - 插件的成员不会被直接添加到宿主类的原型 prototype 上,而扩展的成员会
12
+ * @typeParam HOST - 插件宿主的类类型
13
+ */
14
+ export interface IPlugin<Host, HostClass = AbstractClassType<Host>> {
15
+ /**
16
+ * 当插件被注册时调用
17
+ * @param hostClass - 宿主的类型
18
+ * @param args - 注册插件时的参数
19
+ */
20
+ onUse(hostClass: HostClass, ...args: any): any;
21
+ /**
22
+ * 当宿主实例被创建时调用
23
+ * @param host - 新建的宿主实例
24
+ */
25
+ onCreate?(host: Host, ...args: any): any;
26
+ /**
27
+ * 当宿主实例被初始化时调用
28
+ * @param host - 新建的宿主实例
29
+ * @param args - 初始化宿主实例时的参数
30
+ */
31
+ onInit?(host: Host, ...args: any): any;
32
+ /**
33
+ * 当宿主实例被销毁时调用
34
+ * @param host - 被销毁的宿主实例
35
+ */
36
+ onDestroy?(host: Host): any;
37
+ }
38
+ /**
39
+ * 获取插件的 used 方法的参数类型
40
+ */
41
+ export type PluginUseArgs<Plugin extends IPlugin<any, any>> = Plugin["onUse"] extends (host: any, ...args: infer P) => any ? P : never;
42
+ /**
43
+ * 插件的 used 方法的返回值类型
44
+ */
45
+ export type PluginUseReturn<P extends IPlugin<any, any>> = ReturnType<P["onUse"]>;
46
+ /**
47
+ * 插件的 created 方法的返回值类型
48
+ */
49
+ export type PluginCreatedReturn<P extends IPlugin<any, any>> = P["onCreate"] extends AnyFunction ? ReturnType<P["onCreate"]> : never;
50
+ /**
51
+ * 判断一个对象是否是插件
52
+ * @param target
53
+ * @returns
54
+ */
55
+ export declare function isPlugin(target: any): target is IPlugin<any, any>;
56
+ //# 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,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE/D;;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;;;;;;;GAOG;AACH,MAAM,WAAW,OAAO,CAAC,IAAI,EAAC,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC;IAC7D;;;;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,CAAC;CAC/B;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;AAIpI;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,EAAC,GAAG,CAAC,CAEhE"}
@@ -0,0 +1,92 @@
1
+ import type { AnyFunction, AbstractConstructor, ClassType } from "type-tls";
2
+ import { Destroyable } from "@gby/destroyable";
3
+ import { type ExtendOptions, type IExtend } from "./IExtend";
4
+ import { type IPlugin, type PluginUseArgs, type PluginUseReturn } from "./IPlugin";
5
+ /**
6
+ * 用于标识是扩展的标记
7
+ */
8
+ export declare const extendMark: unique symbol;
9
+ /**
10
+ * 插件扩展管理者
11
+ *
12
+ * @remarks
13
+ * 负责管理插件 和 扩展的注册、应用 等
14
+ * 相当于 PluginManager + ExtendManager
15
+ *
16
+ */
17
+ export declare class PluginExtendManager<Host, HostClass extends AbstractConstructor<Host> = ClassType<Host>> extends Destroyable {
18
+ /**
19
+ * 插件的宿主
20
+ */
21
+ host: HostClass;
22
+ /**
23
+ * 所有注册的插件
24
+ */
25
+ readonly plugins: Map<IPlugin<Host, HostClass> | IExtend<HostClass>, any>;
26
+ /**
27
+ * @param host - 插件的宿主
28
+ */
29
+ constructor(host?: HostClass);
30
+ destroyThis(): any;
31
+ /**
32
+ * 判断一个对象是否是插件
33
+ * @param target
34
+ * @returns
35
+ */
36
+ isPlugin(target: any): target is IPlugin<Host, HostClass>;
37
+ /**
38
+ * 使用插件、注册插件
39
+ * @param ext - 插件
40
+ * @param args - 传递给插件的选项
41
+ */
42
+ useExtend<E>(ext: ExtendOptions<HostClass, E>): boolean;
43
+ /**
44
+ * 插件宿主实例的注册插件的方法
45
+ *
46
+ * @remarks
47
+ * 会调用每个插件的 {@link IExtend.use } 方法
48
+ * @param hostInst - 插件宿主的新实例
49
+ */
50
+ instUseExtend<E>(hostInst: InstanceType<HostClass>, ext: ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): boolean;
51
+ /**
52
+ * 使用插件、注册插件
53
+ * @param plugin - 插件
54
+ * @param args - 传递给插件的选项
55
+ */
56
+ usePlugin<P extends IPlugin<Host, HostClass>>(plugin: P, ...args: PluginUseArgs<P>): PluginUseReturn<P>;
57
+ /**
58
+ * 插件宿主实例的注册插件的方法
59
+ *
60
+ * @remarks
61
+ * 会调用每个插件的 {@link IPlugin.use } 方法
62
+ * @param hostInst - 插件宿主的新实例
63
+ */
64
+ instUsePlugin<P extends IPlugin<Host, HostClass>>(hostInst: Host, plugin: P, ...options: PluginUseArgs<P>): PluginUseReturn<P>;
65
+ /**
66
+ * 插件宿主创建实例时调用
67
+ *
68
+ * @remarks
69
+ * 会调用每个插件的 {@link IPlugin.onCreate} 方法
70
+ * 如果插件的 created 方法返回 Promise,则会等待 Promise resolve
71
+ * @param hostInst - 插件宿主的新实例
72
+ */
73
+ onCreate(hostInst: Host, ...args: any): import("com-tools").SerialCallFunsReturn<AnyFunction>;
74
+ /**
75
+ * 插件宿主创建实例时调用
76
+ *
77
+ * @remarks
78
+ * 会调用每个插件的 {@link IPlugin.onCreate } 方法
79
+ * @param hostInst - 插件宿主的新实例
80
+ * @param args - 初始化宿主实例时的参数
81
+ */
82
+ onInit(hostInst: Host, ...args: any): import("com-tools").SerialCallFunsReturn<AnyFunction>;
83
+ /**
84
+ * 插件宿主被销毁时调用
85
+ *
86
+ * @remarks
87
+ * 会调用每个插件的 {@link IPlugin.onDestroy} 方法
88
+ * @param hostInst - 被销毁的插件实例
89
+ */
90
+ onDestroy(hostInst: Host): import("com-tools").SerialCallFunsReturn<AnyFunction>;
91
+ }
92
+ //# sourceMappingURL=PluginExtendManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginExtendManager.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/PluginExtendManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAC,SAAS,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,OAAO,EAAyB,MAAM,WAAW,CAAC;AACpF,OAAO,EAAY,KAAK,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAI7F;;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,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,IAAI,EAAC,SAAS,CAAC;IAQxD;;;;OAIG;IACH,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;IAQ7C;;;;;;OAMG;IACH,aAAa,CAAC,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;IAQ/H;;;;OAIG;IACH,SAAS,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;IAQrG;;;;;;OAMG;IACH,aAAa,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;IAU7H;;;;;;;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"}