@gby/destroyable 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +101 -0
  3. package/dist/Destroyable.d.ts +257 -0
  4. package/dist/Destroyable.d.ts.map +1 -0
  5. package/dist/DestroyableSub.d.ts +67 -0
  6. package/dist/DestroyableSub.d.ts.map +1 -0
  7. package/dist/createDestroyableSubClass.d.ts +82 -0
  8. package/dist/createDestroyableSubClass.d.ts.map +1 -0
  9. package/dist/index.d.ts +12 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +229 -0
  12. package/dist/index.umd.cjs +1 -0
  13. package/dist/tsdoc-metadata.json +11 -0
  14. package/doc/api/destroyable.createdestroyablesubclass.md +76 -0
  15. package/doc/api/destroyable.destroyable._destroyers.md +13 -0
  16. package/doc/api/destroyable.destroyable._isdestroyed.md +11 -0
  17. package/doc/api/destroyable.destroyable.canceldispose.md +49 -0
  18. package/doc/api/destroyable.destroyable.canceldispose_1.md +49 -0
  19. package/doc/api/destroyable.destroyable.canceldispose_2.md +49 -0
  20. package/doc/api/destroyable.destroyable.canceldisposefun.md +52 -0
  21. package/doc/api/destroyable.destroyable.canceldisposeobj.md +52 -0
  22. package/doc/api/destroyable.destroyable.destroy.md +17 -0
  23. package/doc/api/destroyable.destroyable.destroyasync.md +21 -0
  24. package/doc/api/destroyable.destroyable.destroythis.md +21 -0
  25. package/doc/api/destroyable.destroyable.dispose.md +51 -0
  26. package/doc/api/destroyable.destroyable.dispose_1.md +65 -0
  27. package/doc/api/destroyable.destroyable.dispose_2.md +65 -0
  28. package/doc/api/destroyable.destroyable.disposefun.md +53 -0
  29. package/doc/api/destroyable.destroyable.disposeobj.md +68 -0
  30. package/doc/api/destroyable.destroyable.isdestroyed.md +13 -0
  31. package/doc/api/destroyable.destroyable.md +287 -0
  32. package/doc/api/destroyable.destroyablesub.md +15 -0
  33. package/doc/api/destroyable.destroyablesubclass.md +13 -0
  34. package/doc/api/destroyable.destroydestroyable.md +52 -0
  35. package/doc/api/destroyable.destroyobject.md +52 -0
  36. package/doc/api/destroyable.fundestroyer.md +13 -0
  37. package/doc/api/destroyable.md +225 -0
  38. package/doc/api/destroyable.nodedestroyable.md +33 -0
  39. package/doc/api/destroyable.nodedestroyableclass.md +15 -0
  40. package/doc/api/destroyable.throwondestroyed.md +17 -0
  41. package/doc/api/destroyable.webdestroyable.md +33 -0
  42. package/doc/api/destroyable.webdestroyableclass.md +15 -0
  43. package/doc/api/index.md +31 -0
  44. package/doc//346/225/231/347/250/213.md +7 -0
  45. package/package.json +72 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2020 郭斌勇
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,101 @@
1
+ [教程]: ./doc/教程.md
2
+ [API接口文档]: ./doc/api/index.md
3
+
4
+ [GitHub仓库]: https://github.com/GuoBinyong/destroyable
5
+ [发行地址]: https://github.com/GuoBinyong/destroyable/releases
6
+ [issues]: https://github.com/GuoBinyong/destroyable/issues
7
+
8
+ [码云仓库]: https://gitee.com/guobinyong/destroyable
9
+
10
+
11
+
12
+ **目录**
13
+
14
+ <!-- @import "[TOC]" {cmd="toc" depthFrom=1 depthTo=6 orderedList=false} -->
15
+
16
+ <!-- code_chunk_output -->
17
+
18
+ - [1. 背景](#1-背景)
19
+ - [2. 简介](#2-简介)
20
+ - [3. 安装方式](#3-安装方式)
21
+ - [3.1. 方式1:通过 npm 安装](#31-方式1通过-npm-安装)
22
+ - [3.2. 方式3:通过`<script>`标签引入](#32-方式3通过script标签引入)
23
+ - [4. 教程](#4-教程)
24
+ - [5. API接口文档](#5-api接口文档)
25
+
26
+ <!-- /code_chunk_output -->
27
+
28
+
29
+ ---------------------
30
+
31
+
32
+ # 1. 背景
33
+
34
+ # 2. 简介
35
+ 库的简单介绍
36
+
37
+ **具有以下特性:**
38
+ - 特性1
39
+ - 特性2
40
+ - 特性3
41
+
42
+ **详情请看:**
43
+ - 主页:<https://github.com/GuoBinyong/destroyable>
44
+ - [GitHub仓库][]
45
+ - [码云仓库][]
46
+ - [教程][]
47
+ - [API接口文档][]
48
+
49
+
50
+ **如果您在使用的过程中遇到了问题,或者有好的建议和想法,您都可以通过以下方式联系我,期待与您的交流:**
51
+ - 给该仓库提交 [issues][]
52
+ - 给我 Pull requests
53
+ - 邮箱:<guobinyong@qq.com>
54
+ - 微信:keyanzhe
55
+
56
+
57
+
58
+
59
+
60
+ # 3. 安装方式
61
+ 目前,安装方式有以下几种:
62
+
63
+
64
+ ## 3.1. 方式1:通过 npm 安装
65
+ 通过 npm (或 yarn、pnpm 等包管理器)安装
66
+ ```shell
67
+ npm install destroyable
68
+ ```
69
+
70
+
71
+
72
+
73
+ ## 3.2. 方式3:通过`<script>`标签引入
74
+ 您可直接从项目的 [发行地址][] 中下载以 `.iife.js` 作为缀的文件,然后使用如下代码引用 和 使用 destroyable:
75
+
76
+
77
+ 1. 引用 destroyable
78
+ ```html
79
+ <script src="path/to/package/destroyable.iife.js"></script>
80
+ ```
81
+
82
+ 2. 使用全局的 `LibraryViteTemplate`
83
+ ```html
84
+ <script>
85
+ // 使用全局的 LibraryViteTemplate
86
+ </script>
87
+ ```
88
+
89
+ # 4. 教程
90
+ 详情跳转至[教程][]
91
+
92
+ # 5. API接口文档
93
+ 详情跳转至[API接口文档][]
94
+
95
+
96
+
97
+ --------------------
98
+
99
+ > 有您的支持,我会在开源的道路上,越走越远
100
+
101
+ ![赞赏码](https://i.loli.net/2020/04/08/PGsAEqdJCin1oQL.jpg)
@@ -0,0 +1,257 @@
1
+ /**
2
+ * 可销毁的
3
+ *
4
+ * @remarks
5
+ * @gby/destroyable 提供了用于构建可销毁对象的类的基类,用于使得地管理可销毁对象的生命周期
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+
10
+ import { EventBus } from '@gby/event-bus';
11
+ import { EventEmitter } from 'node:events';
12
+ import { FunDestroyer as FunDestroyer_2 } from './Destroyable';
13
+
14
+ /**
15
+ * 创建可销毁的子类
16
+ * @remarks
17
+ * 用于根据传入的父类 动态生成可可销毁的子类
18
+ * @param ParentClass
19
+ * @returns
20
+ */
21
+ export declare function createDestroyableSubClass<P extends new (...args: any) => any>(ParentClass: P): {
22
+ new (...args: any): {
23
+ [x: string]: any;
24
+ /**
25
+ * 是否已经销毁
26
+ */
27
+ readonly isDestroyed: boolean;
28
+ _isDestroyed: boolean;
29
+ /**
30
+ * 销毁者
31
+ */
32
+ _destroyers: FunDestroyer[];
33
+ /**
34
+ * 添加销毁者
35
+ * @param fun
36
+ * @returns 返回销毁者的顺序
37
+ */
38
+ disposeFun<T extends FunDestroyer>(fun: T): T;
39
+ /**
40
+ * 取消销毁者函数
41
+ * @param fun
42
+ * @returns
43
+ */
44
+ cancelDisposeFun<T extends FunDestroyer>(fun: T): T;
45
+ /**
46
+ * 添加销毁对象
47
+ * @param obj
48
+ * @param sync - 表示是否使用 `obj.destroy()` 方法进行销毁;默认使用 `obj.destroyAsync()` 方法进行销毁
49
+ * @returns
50
+ */
51
+ disposeObj<T extends /*elided*/ any>(obj: T, sync?: boolean): T;
52
+ /**
53
+ * 取消销毁者函数
54
+ * @param fun
55
+ * @returns
56
+ */
57
+ cancelDisposeObj<T extends /*elided*/ any>(obj: T): T;
58
+ /**
59
+ * 添加销毁函数或销毁对象
60
+ * @param fun
61
+ */
62
+ dispose<T extends FunDestroyer>(fun: T): T;
63
+ dispose<T extends /*elided*/ any>(obj: T, asyncDestroy?: boolean): T;
64
+ dispose<T extends /*elided*/ any | FunDestroyer>(objOrFun: T, asyncDestroy?: boolean): T;
65
+ cancelDispose<T extends FunDestroyer>(fun: T): T;
66
+ cancelDispose<T extends /*elided*/ any>(obj: T): T;
67
+ cancelDispose<T extends /*elided*/ any | FunDestroyer>(objOrFun: T): T;
68
+ /**
69
+ * 自己的销毁方法
70
+ * @remarks
71
+ * 子类根据需要进行重载
72
+ */
73
+ destroyThis(): void;
74
+ /**
75
+ * 销毁
76
+ */
77
+ destroy(): true | undefined;
78
+ /**
79
+ * 异步销毁
80
+ * @remarks
81
+ * 会依次执行销毁,并且只有上一个销毁完成之后才会执行下一个销毁
82
+ */
83
+ destroyAsync(): Promise<true | undefined>;
84
+ };
85
+ } & P;
86
+
87
+ /**
88
+ * 可销毁的对象
89
+ */
90
+ export declare class Destroyable {
91
+ /**
92
+ * 是否已经销毁
93
+ */
94
+ get isDestroyed(): boolean;
95
+ _isDestroyed: boolean;
96
+ /**
97
+ * 销毁者
98
+ */
99
+ _destroyers: FunDestroyer[];
100
+ /**
101
+ * 添加销毁者
102
+ * @param fun
103
+ * @returns 返回销毁者的顺序
104
+ */
105
+ disposeFun<T extends FunDestroyer>(fun: T): T;
106
+ /**
107
+ * 取消销毁者函数
108
+ * @param fun
109
+ * @returns
110
+ */
111
+ cancelDisposeFun<T extends FunDestroyer>(fun: T): T;
112
+ /**
113
+ * 添加销毁对象
114
+ * @param obj
115
+ * @param sync - 表示是否使用 `obj.destroy()` 方法进行销毁;默认使用 `obj.destroyAsync()` 方法进行销毁
116
+ * @returns
117
+ */
118
+ disposeObj<T extends Destroyable>(obj: T, sync?: boolean): T;
119
+ /**
120
+ * 取消销毁者函数
121
+ * @param fun
122
+ * @returns
123
+ */
124
+ cancelDisposeObj<T extends Destroyable>(obj: T): T;
125
+ /**
126
+ * 添加销毁函数或销毁对象
127
+ * @param fun
128
+ */
129
+ dispose<T extends FunDestroyer>(fun: T): T;
130
+ dispose<T extends Destroyable>(obj: T, asyncDestroy?: boolean): T;
131
+ dispose<T extends Destroyable | FunDestroyer>(objOrFun: T, asyncDestroy?: boolean): T;
132
+ cancelDispose<T extends FunDestroyer>(fun: T): T;
133
+ cancelDispose<T extends Destroyable>(obj: T): T;
134
+ cancelDispose<T extends Destroyable | FunDestroyer>(objOrFun: T): T;
135
+ /**
136
+ * 自己的销毁方法
137
+ * @remarks
138
+ * 子类根据需要进行重载
139
+ */
140
+ destroyThis(): void;
141
+ /**
142
+ * 销毁
143
+ */
144
+ destroy(): true | undefined;
145
+ /**
146
+ * 异步销毁
147
+ * @remarks
148
+ * 会依次执行销毁,并且只有上一个销毁完成之后才会执行下一个销毁
149
+ */
150
+ destroyAsync(): Promise<true | undefined>;
151
+ }
152
+
153
+ /**
154
+ * createDestroyableSubClass 创建的类的实例类型
155
+ */
156
+ export declare type DestroyableSub<ParentClass extends new (...args: any) => any> = InstanceType<DestroyableSubClass<ParentClass>>;
157
+
158
+ /**
159
+ * createDestroyableSubClass 创建的类的类型
160
+ */
161
+ export declare type DestroyableSubClass<ParentClass extends new (...args: any) => any> = ReturnType<typeof createDestroyableSubClass<ParentClass>>;
162
+
163
+ /**
164
+ * 销毁 Destroyable 对象
165
+ * @param object
166
+ * @returns
167
+ */
168
+ export declare function destroyDestroyable(object: Destroyable): boolean;
169
+
170
+ /**
171
+ * 销毁对象
172
+ * @param object
173
+ * @returns
174
+ */
175
+ export declare function destroyObject(object: any): boolean;
176
+
177
+ /**
178
+ * 函数销毁者
179
+ */
180
+ export declare type FunDestroyer = () => void;
181
+
182
+ /**
183
+ * NodeDestroyable 类对象
184
+ */
185
+ export declare const NodeDestroyable: {
186
+ new (...args: any): {
187
+ [x: string]: any;
188
+ readonly isDestroyed: boolean;
189
+ _isDestroyed: boolean;
190
+ _destroyers: FunDestroyer_2[];
191
+ disposeFun<T extends FunDestroyer_2>(fun: T): T;
192
+ cancelDisposeFun<T extends FunDestroyer_2>(fun: T): T;
193
+ disposeObj<T extends /*elided*/ any>(obj: T, sync?: boolean): T;
194
+ cancelDisposeObj<T extends /*elided*/ any>(obj: T): T;
195
+ dispose<T extends FunDestroyer_2>(fun: T): T;
196
+ dispose<T extends /*elided*/ any>(obj: T, asyncDestroy?: boolean): T;
197
+ dispose<T extends FunDestroyer_2 | /*elided*/ any>(objOrFun: T, asyncDestroy?: boolean): T;
198
+ cancelDispose<T extends FunDestroyer_2>(fun: T): T;
199
+ cancelDispose<T extends /*elided*/ any>(obj: T): T;
200
+ cancelDispose<T extends FunDestroyer_2 | /*elided*/ any>(objOrFun: T): T;
201
+ destroyThis(): void;
202
+ destroy(): true | undefined;
203
+ destroyAsync(): Promise<true | undefined>;
204
+ };
205
+ } & typeof EventEmitter;
206
+
207
+ /**
208
+ * NodeDestroyable 实例的类型
209
+ */
210
+ export declare type NodeDestroyable = InstanceType<NodeDestroyableClass>;
211
+
212
+ /**
213
+ * NodeDestroyable 类的类型
214
+ */
215
+ export declare type NodeDestroyableClass = typeof NodeDestroyable;
216
+
217
+ /**
218
+ * 调用已销对象的时抛出错误
219
+ */
220
+ export declare function throwOnDestroyed(): void;
221
+
222
+ /**
223
+ * WebDestroyable 类对象
224
+ */
225
+ export declare const WebDestroyable: {
226
+ new (...args: any): {
227
+ [x: string]: any;
228
+ readonly isDestroyed: boolean;
229
+ _isDestroyed: boolean;
230
+ _destroyers: FunDestroyer_2[];
231
+ disposeFun<T extends FunDestroyer_2>(fun: T): T;
232
+ cancelDisposeFun<T extends FunDestroyer_2>(fun: T): T;
233
+ disposeObj<T extends /*elided*/ any>(obj: T, sync?: boolean): T;
234
+ cancelDisposeObj<T extends /*elided*/ any>(obj: T): T;
235
+ dispose<T extends FunDestroyer_2>(fun: T): T;
236
+ dispose<T extends /*elided*/ any>(obj: T, asyncDestroy?: boolean): T;
237
+ dispose<T extends FunDestroyer_2 | /*elided*/ any>(objOrFun: T, asyncDestroy?: boolean): T;
238
+ cancelDispose<T extends FunDestroyer_2>(fun: T): T;
239
+ cancelDispose<T extends /*elided*/ any>(obj: T): T;
240
+ cancelDispose<T extends FunDestroyer_2 | /*elided*/ any>(objOrFun: T): T;
241
+ destroyThis(): void;
242
+ destroy(): true | undefined;
243
+ destroyAsync(): Promise<true | undefined>;
244
+ };
245
+ } & typeof EventBus;
246
+
247
+ /**
248
+ * WebDestroyable 实例的类型
249
+ */
250
+ export declare type WebDestroyable = InstanceType<WebDestroyableClass>;
251
+
252
+ /**
253
+ * WebDestroyable 类的类型
254
+ */
255
+ export declare type WebDestroyableClass = typeof WebDestroyable;
256
+
257
+ export { }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Destroyable.d.ts","sourceRoot":"","sources":["../src/Destroyable.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC;AAGtC;;GAEG;AACH,qBAAa,WAAW;IAEpB;;OAEG;IACH,IAAI,WAAW,YAEd;IACD,YAAY,UAAS;IAErB;;OAEG;IACH,WAAW,EAAE,YAAY,EAAE,CAAM;IAEjC;;;;OAIG;IACH,UAAU,CAAC,CAAC,SAAS,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;IAK7C;;;;OAIG;IACH,gBAAgB,CAAC,CAAC,SAAS,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;IAMnD;;;;;OAKG;IACH,UAAU,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC,EAAC,IAAI,CAAC,EAAC,OAAO,GAAG,CAAC;IAQ1D;;;;OAIG;IACH,gBAAgB,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;IASlD;;;OAGG;IACH,OAAO,CAAC,CAAC,SAAS,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;IAC1C,OAAO,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC,EAAC,YAAY,CAAC,EAAC,OAAO,GAAG,CAAC;IAC/D,OAAO,CAAC,CAAC,SAAS,WAAW,GAAG,YAAY,EAAE,QAAQ,EAAE,CAAC,EAAC,YAAY,CAAC,EAAC,OAAO,GAAG,CAAC;IASnF,aAAa,CAAC,CAAC,SAAS,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;IAChD,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;IAC/C,aAAa,CAAC,CAAC,SAAS,WAAW,GAAG,YAAY,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC;IAcnE;;;;OAIG;IACH,WAAW;IAKX;;OAEG;IACH,OAAO;IAiBP;;;;OAIG;IACG,YAAY;CAmBrB;AAOD;;GAEG;AACH,wBAAgB,gBAAgB,SAE/B;AAKD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,WASxC;AAKD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,WAYrD"}
@@ -0,0 +1,67 @@
1
+ import { EventBus } from "@gby/event-bus";
2
+ import { EventEmitter } from "node:events";
3
+ /**
4
+ * WebDestroyable 类对象
5
+ */
6
+ export declare const WebDestroyable: {
7
+ new (...args: any): {
8
+ [x: string]: any;
9
+ readonly isDestroyed: boolean;
10
+ _isDestroyed: boolean;
11
+ _destroyers: import("./Destroyable").FunDestroyer[];
12
+ disposeFun<T extends import("./Destroyable").FunDestroyer>(fun: T): T;
13
+ cancelDisposeFun<T extends import("./Destroyable").FunDestroyer>(fun: T): T;
14
+ disposeObj<T extends /*elided*/ any>(obj: T, sync?: boolean): T;
15
+ cancelDisposeObj<T extends /*elided*/ any>(obj: T): T;
16
+ dispose<T extends import("./Destroyable").FunDestroyer>(fun: T): T;
17
+ dispose<T extends /*elided*/ any>(obj: T, asyncDestroy?: boolean): T;
18
+ dispose<T extends import("./Destroyable").FunDestroyer | /*elided*/ any>(objOrFun: T, asyncDestroy?: boolean): T;
19
+ cancelDispose<T extends import("./Destroyable").FunDestroyer>(fun: T): T;
20
+ cancelDispose<T extends /*elided*/ any>(obj: T): T;
21
+ cancelDispose<T extends import("./Destroyable").FunDestroyer | /*elided*/ any>(objOrFun: T): T;
22
+ destroyThis(): void;
23
+ destroy(): true | undefined;
24
+ destroyAsync(): Promise<true | undefined>;
25
+ };
26
+ } & typeof EventBus;
27
+ /**
28
+ * WebDestroyable 类的类型
29
+ */
30
+ export type WebDestroyableClass = typeof WebDestroyable;
31
+ /**
32
+ * WebDestroyable 实例的类型
33
+ */
34
+ export type WebDestroyable = InstanceType<WebDestroyableClass>;
35
+ /**
36
+ * NodeDestroyable 类对象
37
+ */
38
+ export declare const NodeDestroyable: {
39
+ new (...args: any): {
40
+ [x: string]: any;
41
+ readonly isDestroyed: boolean;
42
+ _isDestroyed: boolean;
43
+ _destroyers: import("./Destroyable").FunDestroyer[];
44
+ disposeFun<T extends import("./Destroyable").FunDestroyer>(fun: T): T;
45
+ cancelDisposeFun<T extends import("./Destroyable").FunDestroyer>(fun: T): T;
46
+ disposeObj<T extends /*elided*/ any>(obj: T, sync?: boolean): T;
47
+ cancelDisposeObj<T extends /*elided*/ any>(obj: T): T;
48
+ dispose<T extends import("./Destroyable").FunDestroyer>(fun: T): T;
49
+ dispose<T extends /*elided*/ any>(obj: T, asyncDestroy?: boolean): T;
50
+ dispose<T extends import("./Destroyable").FunDestroyer | /*elided*/ any>(objOrFun: T, asyncDestroy?: boolean): T;
51
+ cancelDispose<T extends import("./Destroyable").FunDestroyer>(fun: T): T;
52
+ cancelDispose<T extends /*elided*/ any>(obj: T): T;
53
+ cancelDispose<T extends import("./Destroyable").FunDestroyer | /*elided*/ any>(objOrFun: T): T;
54
+ destroyThis(): void;
55
+ destroy(): true | undefined;
56
+ destroyAsync(): Promise<true | undefined>;
57
+ };
58
+ } & typeof EventEmitter;
59
+ /**
60
+ * NodeDestroyable 类的类型
61
+ */
62
+ export type NodeDestroyableClass = typeof NodeDestroyable;
63
+ /**
64
+ * NodeDestroyable 实例的类型
65
+ */
66
+ export type NodeDestroyable = InstanceType<NodeDestroyableClass>;
67
+ //# sourceMappingURL=DestroyableSub.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DestroyableSub.d.ts","sourceRoot":"","sources":["../src/DestroyableSub.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;mBAAsC,CAAC;AAElE;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,cAAc,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC,mBAAmB,CAAC,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;uBAA0C,CAAC;AAEvE;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,eAAe,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,82 @@
1
+ import type { FunDestroyer } from "./Destroyable";
2
+ /**
3
+ * 创建可销毁的子类
4
+ * @remarks
5
+ * 用于根据传入的父类 动态生成可可销毁的子类
6
+ * @param ParentClass
7
+ * @returns
8
+ */
9
+ export declare function createDestroyableSubClass<P extends new (...args: any) => any>(ParentClass: P): {
10
+ new (...args: any): {
11
+ [x: string]: any;
12
+ /**
13
+ * 是否已经销毁
14
+ */
15
+ readonly isDestroyed: boolean;
16
+ _isDestroyed: boolean;
17
+ /**
18
+ * 销毁者
19
+ */
20
+ _destroyers: FunDestroyer[];
21
+ /**
22
+ * 添加销毁者
23
+ * @param fun
24
+ * @returns 返回销毁者的顺序
25
+ */
26
+ disposeFun<T extends FunDestroyer>(fun: T): T;
27
+ /**
28
+ * 取消销毁者函数
29
+ * @param fun
30
+ * @returns
31
+ */
32
+ cancelDisposeFun<T extends FunDestroyer>(fun: T): T;
33
+ /**
34
+ * 添加销毁对象
35
+ * @param obj
36
+ * @param sync - 表示是否使用 `obj.destroy()` 方法进行销毁;默认使用 `obj.destroyAsync()` 方法进行销毁
37
+ * @returns
38
+ */
39
+ disposeObj<T extends /*elided*/ any>(obj: T, sync?: boolean): T;
40
+ /**
41
+ * 取消销毁者函数
42
+ * @param fun
43
+ * @returns
44
+ */
45
+ cancelDisposeObj<T extends /*elided*/ any>(obj: T): T;
46
+ /**
47
+ * 添加销毁函数或销毁对象
48
+ * @param fun
49
+ */
50
+ dispose<T extends FunDestroyer>(fun: T): T;
51
+ dispose<T extends /*elided*/ any>(obj: T, asyncDestroy?: boolean): T;
52
+ dispose<T extends /*elided*/ any | FunDestroyer>(objOrFun: T, asyncDestroy?: boolean): T;
53
+ cancelDispose<T extends FunDestroyer>(fun: T): T;
54
+ cancelDispose<T extends /*elided*/ any>(obj: T): T;
55
+ cancelDispose<T extends /*elided*/ any | FunDestroyer>(objOrFun: T): T;
56
+ /**
57
+ * 自己的销毁方法
58
+ * @remarks
59
+ * 子类根据需要进行重载
60
+ */
61
+ destroyThis(): void;
62
+ /**
63
+ * 销毁
64
+ */
65
+ destroy(): true | undefined;
66
+ /**
67
+ * 异步销毁
68
+ * @remarks
69
+ * 会依次执行销毁,并且只有上一个销毁完成之后才会执行下一个销毁
70
+ */
71
+ destroyAsync(): Promise<true | undefined>;
72
+ };
73
+ } & P;
74
+ /**
75
+ * createDestroyableSubClass 创建的类的类型
76
+ */
77
+ export type DestroyableSubClass<ParentClass extends new (...args: any) => any> = ReturnType<typeof createDestroyableSubClass<ParentClass>>;
78
+ /**
79
+ * createDestroyableSubClass 创建的类的实例类型
80
+ */
81
+ export type DestroyableSub<ParentClass extends new (...args: any) => any> = InstanceType<DestroyableSubClass<ParentClass>>;
82
+ //# sourceMappingURL=createDestroyableSubClass.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createDestroyableSubClass.d.ts","sourceRoot":"","sources":["../src/createDestroyableSubClass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,EAAE,WAAW,EAAE,CAAC;kBAA3B,GAAG;;QAM7D;;WAEG;;;QAMH;;WAEG;qBACU,YAAY,EAAE;QAE3B;;;;WAIG;mBACQ,CAAC,SAAS,YAAY,OAAO,CAAC,GAAG,CAAC;QAK7C;;;;WAIG;yBACc,CAAC,SAAS,YAAY,OAAO,CAAC,GAAG,CAAC;QAMnD;;;;;WAKG;mBACQ,CAAC,8BAA8B,CAAC,SAAS,OAAO,GAAG,CAAC;QAQ/D;;;;WAIG;yBACc,CAAC,8BAA8B,CAAC,GAAG,CAAC;QASrD;;;WAGG;gBACK,CAAC,SAAS,YAAY,OAAO,CAAC,GAAG,CAAC;gBAClC,CAAC,8BAA8B,CAAC,iBAAiB,OAAO,GAAG,CAAC;gBAC5D,CAAC,SAAS,iBAAiB,YAAY,YAAY,CAAC,iBAAiB,OAAO,GAAG,CAAC;sBAS1E,CAAC,SAAS,YAAY,OAAO,CAAC,GAAG,CAAC;sBAClC,CAAC,8BAA8B,CAAC,GAAG,CAAC;sBACpC,CAAC,SAAS,iBAAiB,YAAY,YAAY,CAAC,GAAG,CAAC;QActE;;;;WAIG;;QAMH;;WAEG;;QAkBH;;;;WAIG;;;MA+CV;AAMD;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,WAAW,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,yBAAyB,CAAC,WAAW,CAAC,CAAC,CAAC;AAE3I;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,WAAW,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,IAAI,YAAY,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * 可销毁的
3
+ *
4
+ * @remarks
5
+ * @gby/destroyable 提供了用于构建可销毁对象的类的基类,用于使得地管理可销毁对象的生命周期
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ export * from './Destroyable';
10
+ export * from "./createDestroyableSubClass";
11
+ export * from "./DestroyableSub";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA"}