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,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,4 @@
1
+ export * from "./tier-options/plugin";
2
+ export * from "./tier-options/decorator";
3
+ export * from "./tier-options/type";
4
+ //# sourceMappingURL=tier-options-plugin.d.ts.map
@@ -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 { PluginManager } from "../plugin-manager/PluginManager";
2
- import type { IPlugin, PluginCreatedReturnType, PluginUseReturnType, GetNormalizePluginOptions, FormatUsePluginParameters } from "../plugin-manager/PluginManager";
3
- import type { ReplaceConstructorReturn } from "../extend/mixin";
4
- import { WebDestroyable } from "@gby/destroyable";
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<Plugin extends IPlugin<typeof PluginHost, any> = IPlugin<typeof PluginHost, any>> extends WebDestroyable {
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(): PluginManager<any, IPlugin<any, any>>;
53
- protected static _pluginManager: PluginManager<any>;
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(): PluginManager<any, IPlugin<any, any>>;
45
+ get pluginManager(): PluginExtendManager<Host, HostClass>;
58
46
  /**
59
- * {@inheritDoc PluginManager.use}
47
+ * {@inheritDoc PluginExtendManager.usePlugin}
60
48
  */
61
- static use<Plugin extends IPlugin<typeof PluginHost, any>>(plugin: Plugin, ...options: FormatUsePluginParameters<Plugin>): void | ReturnType<Plugin["used"]>;
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.created(this)` 通常会在构建函数执行的最后时才调用;
66
- * 如果像下面写在该类的构建函数中,然后子类通过 `super()` 来调用,这样就会导致 `this.pluginManager.created(this)` 不是在最后的执行;
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 options
63
+ * @param args
72
64
  * @returns
73
65
  */
74
- use<P extends Plugin>(plugin: P, ...options: FormatUsePluginParameters<P>): PluginCreatedReturnType<P> | void;
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 PluginManager.use}
68
+ * {@inheritDoc PluginExtendManager.useExtend}
190
69
  */
191
- use<P_1 extends Plugin>(plugin: P_1, ...options: FormatUsePluginParameters<P_1>): void | ReturnType<P_1["used"]>;
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
- get pluginManager(): PluginManager</*elided*/ any & HOST, IPlugin</*elided*/ any & HOST, any>>;
255
- _pluginManager: PluginManager</*elided*/ any & HOST>;
77
+ init(...args: any): any;
256
78
  /**
257
- * {@inheritDoc PluginManager.use}
79
+ * 销毁实例
80
+ * @returns
258
81
  */
259
- use<Plugin extends IPlugin</*elided*/ any & HOST, any>>(plugin: Plugin, ...options: FormatUsePluginParameters<Plugin>): void | ReturnType<Plugin["used"]>;
260
- } & HOST;
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":"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"}
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"}