@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.
- package/LICENSE +21 -0
- package/README.md +101 -0
- package/dist/Destroyable.d.ts +257 -0
- package/dist/Destroyable.d.ts.map +1 -0
- package/dist/DestroyableSub.d.ts +67 -0
- package/dist/DestroyableSub.d.ts.map +1 -0
- package/dist/createDestroyableSubClass.d.ts +82 -0
- package/dist/createDestroyableSubClass.d.ts.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +229 -0
- package/dist/index.umd.cjs +1 -0
- package/dist/tsdoc-metadata.json +11 -0
- package/doc/api/destroyable.createdestroyablesubclass.md +76 -0
- package/doc/api/destroyable.destroyable._destroyers.md +13 -0
- package/doc/api/destroyable.destroyable._isdestroyed.md +11 -0
- package/doc/api/destroyable.destroyable.canceldispose.md +49 -0
- package/doc/api/destroyable.destroyable.canceldispose_1.md +49 -0
- package/doc/api/destroyable.destroyable.canceldispose_2.md +49 -0
- package/doc/api/destroyable.destroyable.canceldisposefun.md +52 -0
- package/doc/api/destroyable.destroyable.canceldisposeobj.md +52 -0
- package/doc/api/destroyable.destroyable.destroy.md +17 -0
- package/doc/api/destroyable.destroyable.destroyasync.md +21 -0
- package/doc/api/destroyable.destroyable.destroythis.md +21 -0
- package/doc/api/destroyable.destroyable.dispose.md +51 -0
- package/doc/api/destroyable.destroyable.dispose_1.md +65 -0
- package/doc/api/destroyable.destroyable.dispose_2.md +65 -0
- package/doc/api/destroyable.destroyable.disposefun.md +53 -0
- package/doc/api/destroyable.destroyable.disposeobj.md +68 -0
- package/doc/api/destroyable.destroyable.isdestroyed.md +13 -0
- package/doc/api/destroyable.destroyable.md +287 -0
- package/doc/api/destroyable.destroyablesub.md +15 -0
- package/doc/api/destroyable.destroyablesubclass.md +13 -0
- package/doc/api/destroyable.destroydestroyable.md +52 -0
- package/doc/api/destroyable.destroyobject.md +52 -0
- package/doc/api/destroyable.fundestroyer.md +13 -0
- package/doc/api/destroyable.md +225 -0
- package/doc/api/destroyable.nodedestroyable.md +33 -0
- package/doc/api/destroyable.nodedestroyableclass.md +15 -0
- package/doc/api/destroyable.throwondestroyed.md +17 -0
- package/doc/api/destroyable.webdestroyable.md +33 -0
- package/doc/api/destroyable.webdestroyableclass.md +15 -0
- package/doc/api/index.md +31 -0
- package/doc//346/225/231/347/250/213.md +7 -0
- 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
|
+

|
|
@@ -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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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"}
|