plugin-tls 3.0.0 → 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 (123) hide show
  1. package/dist/index.d.ts +1 -4
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +632 -400
  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.map +1 -0
  13. package/dist/options/options-manager/tools.d.ts.map +1 -0
  14. package/dist/options/options-plugin-host/index.d.ts.map +1 -0
  15. package/dist/{options-plugin-host → options/options-plugin-host}/tier-mode-options/TierModeOptionsPluginHost.d.ts +3 -3
  16. package/dist/options/options-plugin-host/tier-mode-options/TierModeOptionsPluginHost.d.ts.map +1 -0
  17. package/dist/{options-plugin-host → options/options-plugin-host}/tier-mode-options/TierModeOptionsPluginHostEventEmitter.d.ts +4 -4
  18. package/dist/options/options-plugin-host/tier-mode-options/TierModeOptionsPluginHostEventEmitter.d.ts.map +1 -0
  19. package/dist/{options-plugin-host → options/options-plugin-host}/tier-mode-options/TierModeOptionsPluginHostEventTarget.d.ts +3 -3
  20. package/dist/options/options-plugin-host/tier-mode-options/TierModeOptionsPluginHostEventTarget.d.ts.map +1 -0
  21. package/dist/{options-plugin-host → options/options-plugin-host}/tier-mode-options/createTierModeOptionsPluginHost.d.ts +12 -10
  22. package/dist/options/options-plugin-host/tier-mode-options/createTierModeOptionsPluginHost.d.ts.map +1 -0
  23. package/dist/options/options-plugin-host/tier-mode-options/index.d.ts.map +1 -0
  24. package/dist/options/options-plugin-host/tier-mode-options/type.d.ts.map +1 -0
  25. package/dist/{options-plugin-host → options/options-plugin-host}/tier-options/TierOptionsPluginHost.d.ts +3 -3
  26. package/dist/options/options-plugin-host/tier-options/TierOptionsPluginHost.d.ts.map +1 -0
  27. package/dist/{options-plugin-host → options/options-plugin-host}/tier-options/TierOptionsPluginHostEventEmitter.d.ts +4 -4
  28. package/dist/options/options-plugin-host/tier-options/TierOptionsPluginHostEventEmitter.d.ts.map +1 -0
  29. package/dist/{options-plugin-host → options/options-plugin-host}/tier-options/TierOptionsPluginHostEventTarget.d.ts +3 -3
  30. package/dist/options/options-plugin-host/tier-options/TierOptionsPluginHostEventTarget.d.ts.map +1 -0
  31. package/dist/{options-plugin-host → options/options-plugin-host}/tier-options/createTierOptionsPluginHost.d.ts +12 -10
  32. package/dist/options/options-plugin-host/tier-options/createTierOptionsPluginHost.d.ts.map +1 -0
  33. package/dist/options/options-plugin-host/tier-options/index.d.ts.map +1 -0
  34. package/dist/options/plugins/index.d.ts.map +1 -0
  35. package/dist/{plugins → options/plugins}/tier-mode-options/decorator.d.ts +1 -1
  36. package/dist/options/plugins/tier-mode-options/decorator.d.ts.map +1 -0
  37. package/dist/options/plugins/tier-mode-options/plugin.d.ts +3 -0
  38. package/dist/options/plugins/tier-mode-options/plugin.d.ts.map +1 -0
  39. package/dist/{plugins → options/plugins}/tier-mode-options/type.d.ts +4 -4
  40. package/dist/options/plugins/tier-mode-options/type.d.ts.map +1 -0
  41. package/dist/options/plugins/tier-mode-options-plugin.d.ts.map +1 -0
  42. package/dist/{plugins → options/plugins}/tier-options/decorator.d.ts +1 -1
  43. package/dist/options/plugins/tier-options/decorator.d.ts.map +1 -0
  44. package/dist/{plugins → options/plugins}/tier-options/plugin.d.ts +1 -1
  45. package/dist/options/plugins/tier-options/plugin.d.ts.map +1 -0
  46. package/dist/{plugins → options/plugins}/tier-options/type.d.ts +4 -4
  47. package/dist/options/plugins/tier-options/type.d.ts.map +1 -0
  48. package/dist/options/plugins/tier-options-plugin.d.ts.map +1 -0
  49. package/dist/plugin-host/PluginHost.d.ts +21 -13
  50. package/dist/plugin-host/PluginHost.d.ts.map +1 -1
  51. package/dist/plugin-host/PluginHostEventEmitter.d.ts +21 -13
  52. package/dist/plugin-host/PluginHostEventEmitter.d.ts.map +1 -1
  53. package/dist/plugin-host/PluginHostEventTarget.d.ts +21 -13
  54. package/dist/plugin-host/PluginHostEventTarget.d.ts.map +1 -1
  55. package/dist/plugin-host/createPluginHost.d.ts +22 -14
  56. package/dist/plugin-host/createPluginHost.d.ts.map +1 -1
  57. package/dist/plugin-host/decorator.d.ts +59 -62
  58. package/dist/plugin-host/decorator.d.ts.map +1 -1
  59. package/dist/plugin-host/type.d.ts +21 -8
  60. package/dist/plugin-host/type.d.ts.map +1 -1
  61. package/dist/plugin-manager/ExtendManager.d.ts +66 -0
  62. package/dist/plugin-manager/ExtendManager.d.ts.map +1 -0
  63. package/dist/plugin-manager/IExtend.d.ts +64 -0
  64. package/dist/plugin-manager/IExtend.d.ts.map +1 -0
  65. package/dist/plugin-manager/IPlugin.d.ts +13 -4
  66. package/dist/plugin-manager/IPlugin.d.ts.map +1 -1
  67. package/dist/plugin-manager/PluginExtendManager.d.ts +92 -0
  68. package/dist/plugin-manager/PluginExtendManager.d.ts.map +1 -0
  69. package/dist/plugin-manager/PluginManager.d.ts +14 -14
  70. package/dist/plugin-manager/PluginManager.d.ts.map +1 -1
  71. package/dist/plugin-manager/index.d.ts +5 -1
  72. package/dist/plugin-manager/index.d.ts.map +1 -1
  73. package/dist/plugin-manager/mixin.d.ts.map +1 -0
  74. package/package.json +4 -3
  75. package/dist/extend/extend.d.ts +0 -214
  76. package/dist/extend/extend.d.ts.map +0 -1
  77. package/dist/extend/index.d.ts +0 -3
  78. package/dist/extend/index.d.ts.map +0 -1
  79. package/dist/extend/mixin.d.ts.map +0 -1
  80. package/dist/options-manager/ModeOptions.d.ts.map +0 -1
  81. package/dist/options-manager/OptionsManager.d.ts.map +0 -1
  82. package/dist/options-manager/TierModeOptions.d.ts.map +0 -1
  83. package/dist/options-manager/TierOptions.d.ts.map +0 -1
  84. package/dist/options-manager/defaultOptions.d.ts.map +0 -1
  85. package/dist/options-manager/index.d.ts.map +0 -1
  86. package/dist/options-manager/tools.d.ts.map +0 -1
  87. package/dist/options-plugin-host/index.d.ts.map +0 -1
  88. package/dist/options-plugin-host/tier-mode-options/TierModeOptionsPluginHost.d.ts.map +0 -1
  89. package/dist/options-plugin-host/tier-mode-options/TierModeOptionsPluginHostEventEmitter.d.ts.map +0 -1
  90. package/dist/options-plugin-host/tier-mode-options/TierModeOptionsPluginHostEventTarget.d.ts.map +0 -1
  91. package/dist/options-plugin-host/tier-mode-options/createTierModeOptionsPluginHost.d.ts.map +0 -1
  92. package/dist/options-plugin-host/tier-mode-options/index.d.ts.map +0 -1
  93. package/dist/options-plugin-host/tier-mode-options/type.d.ts.map +0 -1
  94. package/dist/options-plugin-host/tier-options/TierOptionsPluginHost.d.ts.map +0 -1
  95. package/dist/options-plugin-host/tier-options/TierOptionsPluginHostEventEmitter.d.ts.map +0 -1
  96. package/dist/options-plugin-host/tier-options/TierOptionsPluginHostEventTarget.d.ts.map +0 -1
  97. package/dist/options-plugin-host/tier-options/createTierOptionsPluginHost.d.ts.map +0 -1
  98. package/dist/options-plugin-host/tier-options/index.d.ts.map +0 -1
  99. package/dist/plugins/index.d.ts.map +0 -1
  100. package/dist/plugins/tier-mode-options/decorator.d.ts.map +0 -1
  101. package/dist/plugins/tier-mode-options/plugin.d.ts +0 -3
  102. package/dist/plugins/tier-mode-options/plugin.d.ts.map +0 -1
  103. package/dist/plugins/tier-mode-options/type.d.ts.map +0 -1
  104. package/dist/plugins/tier-mode-options-plugin.d.ts.map +0 -1
  105. package/dist/plugins/tier-options/decorator.d.ts.map +0 -1
  106. package/dist/plugins/tier-options/plugin.d.ts.map +0 -1
  107. package/dist/plugins/tier-options/type.d.ts.map +0 -1
  108. package/dist/plugins/tier-options-plugin.d.ts.map +0 -1
  109. /package/dist/{options-manager → options/options-manager}/ModeOptions.d.ts +0 -0
  110. /package/dist/{options-manager → options/options-manager}/OptionsManager.d.ts +0 -0
  111. /package/dist/{options-manager → options/options-manager}/TierModeOptions.d.ts +0 -0
  112. /package/dist/{options-manager → options/options-manager}/TierOptions.d.ts +0 -0
  113. /package/dist/{options-manager → options/options-manager}/defaultOptions.d.ts +0 -0
  114. /package/dist/{options-manager → options/options-manager}/index.d.ts +0 -0
  115. /package/dist/{options-manager → options/options-manager}/tools.d.ts +0 -0
  116. /package/dist/{options-plugin-host → options/options-plugin-host}/index.d.ts +0 -0
  117. /package/dist/{options-plugin-host → options/options-plugin-host}/tier-mode-options/index.d.ts +0 -0
  118. /package/dist/{options-plugin-host → options/options-plugin-host}/tier-mode-options/type.d.ts +0 -0
  119. /package/dist/{options-plugin-host → options/options-plugin-host}/tier-options/index.d.ts +0 -0
  120. /package/dist/{plugins → options/plugins}/index.d.ts +0 -0
  121. /package/dist/{plugins → options/plugins}/tier-mode-options-plugin.d.ts +0 -0
  122. /package/dist/{plugins → options/plugins}/tier-options-plugin.d.ts +0 -0
  123. /package/dist/{extend → plugin-manager}/mixin.d.ts +0 -0
@@ -1,5 +1,5 @@
1
- import type { ClassType } from "type-tls";
2
- import type { PluginManager } from "../plugin-manager/index";
1
+ import type { AbstractConstructor, ClassType } from "type-tls";
2
+ import type { ExtendOptions, PluginExtendManager } from "../plugin-manager/index";
3
3
  import type { IPlugin, PluginUseReturn, PluginUseArgs } from "../plugin-manager/index";
4
4
  /**
5
5
  * 插件宿主构造函数的接口
@@ -17,36 +17,49 @@ export interface IPluginHostClass<HostInst> {
17
17
  /**
18
18
  * PluginHost 的插件管理器
19
19
  */
20
- get pluginManager(): PluginManager<HostInst, this>;
20
+ get pluginManager(): PluginExtendManager<HostInst, this>;
21
21
  /**
22
22
  * 是否使用独立的插件管理器
23
23
  * @defaultValue false
24
24
  */
25
25
  readonly isolatedPluginManager?: boolean;
26
26
  /**
27
- * {@inheritDoc PluginManager.use}
27
+ * {@inheritDoc PluginExtendManager.usePlugin}
28
28
  */
29
- use<P extends IPlugin<HostInst, this>>(plugin: P, ...args: PluginUseArgs<P>): PluginUseReturn<P>;
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;
30
34
  }
31
35
  /**
32
36
  * 插件宿主的实例类型
33
37
  */
34
- export interface IPluginHost<Host, HostClass = ClassType<Host>> {
38
+ export interface IPluginHost<Host, HostClass extends AbstractConstructor<Host> = ClassType<Host>> {
35
39
  /**
36
40
  * 插件管理器
37
41
  */
38
- readonly pluginManager: PluginManager<Host, HostClass>;
42
+ readonly pluginManager: PluginExtendManager<Host, HostClass>;
39
43
  /**
40
44
  * 实例的注册插件的方法
41
45
  * @param plugin
42
46
  * @param args
43
47
  * @returns
44
48
  */
45
- use<P extends IPlugin<Host, HostClass>>(plugin: P, ...args: PluginUseArgs<P>): PluginUseReturn<P>;
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;
46
54
  /**
47
55
  * 初始化实例
48
56
  * @param args
49
57
  */
50
58
  init(...args: any): any;
59
+ /**
60
+ * 销毁实例
61
+ * @returns
62
+ */
63
+ destroy(): any;
51
64
  }
52
65
  //# sourceMappingURL=type.d.ts.map
@@ -1 +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"}
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"}
@@ -1,14 +1,17 @@
1
- import type { AnyFunction, ClassType } from "type-tls";
1
+ import type { AnyFunction, AbstractClassType } from "type-tls";
2
2
  /**
3
3
  * 插件宿主的实例类型
4
4
  */
5
5
  export type HostInst<H> = H extends new (...args: any) => Object ? InstanceType<H> : H;
6
6
  /**
7
7
  * 插件的接口
8
- *
8
+ * @remarks
9
+ * 插件 与 扩展的接口很像,他们的区别是:
10
+ * - 插件中的方法的 this 值是插件对象本身,而扩展中方法的 this 值是宿主实例
11
+ * - 插件的成员不会被直接添加到宿主类的原型 prototype 上,而扩展的成员会
9
12
  * @typeParam HOST - 插件宿主的类类型
10
13
  */
11
- export interface IPlugin<Host, HostClass = ClassType<Host>> {
14
+ export interface IPlugin<Host, HostClass = AbstractClassType<Host>> {
12
15
  /**
13
16
  * 当插件被注册时调用
14
17
  * @param hostClass - 宿主的类型
@@ -30,7 +33,7 @@ export interface IPlugin<Host, HostClass = ClassType<Host>> {
30
33
  * 当宿主实例被销毁时调用
31
34
  * @param host - 被销毁的宿主实例
32
35
  */
33
- onDestroy?(host: Host): any | Promise<any>;
36
+ onDestroy?(host: Host): any;
34
37
  }
35
38
  /**
36
39
  * 获取插件的 used 方法的参数类型
@@ -44,4 +47,10 @@ export type PluginUseReturn<P extends IPlugin<any, any>> = ReturnType<P["onUse"]
44
47
  * 插件的 created 方法的返回值类型
45
48
  */
46
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>;
47
56
  //# sourceMappingURL=IPlugin.d.ts.map
@@ -1 +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
+ {"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"}
@@ -1,4 +1,4 @@
1
- import type { ClassType } from "type-tls";
1
+ import type { AnyFunction, AbstractClassType } from "type-tls";
2
2
  import type { IPlugin, PluginUseArgs, PluginUseReturn } from "./IPlugin";
3
3
  import { Destroyable } from "@gby/destroyable";
4
4
  /**
@@ -8,7 +8,7 @@ import { Destroyable } from "@gby/destroyable";
8
8
  * 负责管理插件的注册、应用 等
9
9
  *
10
10
  */
11
- export declare class PluginManager<Host, HostClass = ClassType<Host>> extends Destroyable {
11
+ export declare class PluginManager<Host, HostClass = AbstractClassType<Host>> extends Destroyable {
12
12
  /**
13
13
  * 插件的宿主
14
14
  */
@@ -21,13 +21,21 @@ export declare class PluginManager<Host, HostClass = ClassType<Host>> extends De
21
21
  * @param host - 插件的宿主
22
22
  */
23
23
  constructor(host?: HostClass);
24
- destroyThis(): void | Promise<void>;
24
+ destroyThis(): any;
25
25
  /**
26
26
  * 使用插件、注册插件
27
27
  * @param plugin - 插件
28
28
  * @param args - 传递给插件的选项
29
29
  */
30
30
  use<P extends IPlugin<Host, HostClass>>(plugin: P, ...args: PluginUseArgs<P>): PluginUseReturn<P>;
31
+ /**
32
+ * 插件宿主实例的注册插件的方法
33
+ *
34
+ * @remarks
35
+ * 会调用每个插件的 {@link IPlugin.use } 方法
36
+ * @param hostInst - 插件宿主的新实例
37
+ */
38
+ instUse<P extends IPlugin<Host, HostClass>>(hostInst: Host, plugin: P, ...options: PluginUseArgs<P>): PluginUseReturn<P>;
31
39
  /**
32
40
  * 插件宿主创建实例时调用
33
41
  *
@@ -36,7 +44,7 @@ export declare class PluginManager<Host, HostClass = ClassType<Host>> extends De
36
44
  * 如果插件的 created 方法返回 Promise,则会等待 Promise resolve
37
45
  * @param hostInst - 插件宿主的新实例
38
46
  */
39
- onCreate(hostInst: Host, ...args: any): Promise<void>;
47
+ onCreate(hostInst: Host, ...args: any): import("com-tools").SerialCallFunsReturn<AnyFunction>;
40
48
  /**
41
49
  * 插件宿主创建实例时调用
42
50
  *
@@ -45,7 +53,7 @@ export declare class PluginManager<Host, HostClass = ClassType<Host>> extends De
45
53
  * @param hostInst - 插件宿主的新实例
46
54
  * @param args - 初始化宿主实例时的参数
47
55
  */
48
- onInit(hostInst: Host, ...args: any): Promise<void>;
56
+ onInit(hostInst: Host, ...args: any): import("com-tools").SerialCallFunsReturn<AnyFunction>;
49
57
  /**
50
58
  * 插件宿主被销毁时调用
51
59
  *
@@ -53,14 +61,6 @@ export declare class PluginManager<Host, HostClass = ClassType<Host>> extends De
53
61
  * 会调用每个插件的 {@link IPlugin.onDestroy} 方法
54
62
  * @param hostInst - 被销毁的插件实例
55
63
  */
56
- onDestroy(hostInst: Host): Promise<void>;
57
- /**
58
- * 插件宿主实例的注册插件的方法
59
- *
60
- * @remarks
61
- * 会调用每个插件的 {@link IPlugin.use } 方法
62
- * @param hostInst - 插件宿主的新实例
63
- */
64
- instUse<P extends IPlugin<Host, HostClass>>(hostInst: Host, plugin: P, ...options: PluginUseArgs<P>): PluginUseReturn<P>;
64
+ onDestroy(hostInst: Host): import("com-tools").SerialCallFunsReturn<AnyFunction>;
65
65
  }
66
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,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"}
1
+ {"version":3,"file":"PluginManager.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/PluginManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C;;;;;;GAMG;AACH,qBAAa,aAAa,CAAC,IAAI,EAAC,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAE,SAAQ,WAAW;IAEpF;;OAEG;IACH,IAAI,EAAG,SAAS,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,OAAO,qCAA0C;IAG1D;;OAEG;gBACS,IAAI,CAAC,EAAE,SAAS;IAOnB,WAAW;IAMpB;;;;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;;;;;;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;IAQvH;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAG,GAAG,IAAI,EAAC,GAAG;IAWrC;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAC,GAAG,IAAI,EAAC,GAAG;IAWjC;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,EAAE,IAAI;CAY3B"}
@@ -1,3 +1,7 @@
1
- export * from "./PluginManager";
1
+ export * from "./mixin";
2
+ export * from "./IExtend";
2
3
  export * from "./IPlugin";
4
+ export * from "./PluginManager";
5
+ export * from "./ExtendManager";
6
+ export * from "./PluginExtendManager";
3
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mixin.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/mixin.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "plugin-tls",
3
- "version": "3.0.0",
3
+ "version": "3.1.0",
4
4
  "description": "plugin-tls 是插件系统相应的工具,可快速地让任何模块具备插件机制",
5
5
  "main": "./dist/index.umd.cjs",
6
6
  "module": "./dist/index.js",
@@ -52,9 +52,10 @@
52
52
  "vite-node": "latest"
53
53
  },
54
54
  "dependencies": {
55
- "@gby/destroyable": "^3.4.1",
55
+ "@gby/destroyable": "^3.6.0",
56
+ "com-tools": "^2.21.0",
56
57
  "deepmerge-ts": "^7.1.5",
57
- "type-tls": "^3.9.0"
58
+ "type-tls": "^3.10.0"
58
59
  },
59
60
  "scripts": {
60
61
  "serve": "vite",