@atlaspack/events 2.14.2-typescript-c10a7ae7b.0 → 2.14.2-typescript-8e1995d58.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/lib/Disposable.js +6 -7
- package/package.json +2 -2
- package/src/Disposable.ts +7 -7
package/lib/Disposable.js
CHANGED
|
@@ -20,17 +20,16 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
20
20
|
*/
|
|
21
21
|
class Disposable {
|
|
22
22
|
disposed = false;
|
|
23
|
-
#disposables;
|
|
24
23
|
constructor(...disposables) {
|
|
25
|
-
this
|
|
24
|
+
this.disposables = new Set(disposables);
|
|
26
25
|
}
|
|
27
26
|
add(...disposables) {
|
|
28
27
|
if (this.disposed) {
|
|
29
28
|
throw new _errors.AlreadyDisposedError('Cannot add new disposables after disposable has been disposed');
|
|
30
29
|
}
|
|
31
|
-
(0, _assert().default)(this
|
|
30
|
+
(0, _assert().default)(this.disposables != null);
|
|
32
31
|
for (let disposable of disposables) {
|
|
33
|
-
this
|
|
32
|
+
this.disposables.add(disposable);
|
|
34
33
|
}
|
|
35
34
|
}
|
|
36
35
|
async dispose() {
|
|
@@ -38,9 +37,9 @@ class Disposable {
|
|
|
38
37
|
return;
|
|
39
38
|
}
|
|
40
39
|
this.disposed = true;
|
|
41
|
-
(0, _assert().default)(this
|
|
42
|
-
await Promise.all([...this
|
|
43
|
-
this
|
|
40
|
+
(0, _assert().default)(this.disposables != null);
|
|
41
|
+
await Promise.all([...this.disposables].map(disposable => typeof disposable === 'function' ? disposable() : disposable.dispose()));
|
|
42
|
+
this.disposables = null;
|
|
44
43
|
}
|
|
45
44
|
}
|
|
46
45
|
exports.default = Disposable;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaspack/events",
|
|
3
|
-
"version": "2.14.2-typescript-
|
|
3
|
+
"version": "2.14.2-typescript-8e1995d58.0",
|
|
4
4
|
"license": "(MIT OR Apache-2.0)",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -19,5 +19,5 @@
|
|
|
19
19
|
"check-ts": "tsc --noEmit"
|
|
20
20
|
},
|
|
21
21
|
"types": "src/index.ts",
|
|
22
|
-
"gitHead": "
|
|
22
|
+
"gitHead": "8e1995d58c0a542dffa3b1fa0da3381be69fe125"
|
|
23
23
|
}
|
package/src/Disposable.ts
CHANGED
|
@@ -12,10 +12,10 @@ type DisposableLike = IDisposable | (() => unknown);
|
|
|
12
12
|
*/
|
|
13
13
|
export default class Disposable implements IDisposable {
|
|
14
14
|
disposed: boolean = false;
|
|
15
|
-
|
|
15
|
+
disposables: Set<DisposableLike> | null | undefined;
|
|
16
16
|
|
|
17
17
|
constructor(...disposables: Array<DisposableLike>) {
|
|
18
|
-
this
|
|
18
|
+
this.disposables = new Set(disposables);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
add(...disposables: Array<DisposableLike>): void {
|
|
@@ -25,9 +25,9 @@ export default class Disposable implements IDisposable {
|
|
|
25
25
|
);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
invariant(this
|
|
28
|
+
invariant(this.disposables != null);
|
|
29
29
|
for (let disposable of disposables) {
|
|
30
|
-
this
|
|
30
|
+
this.disposables.add(disposable);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
|
|
@@ -38,13 +38,13 @@ export default class Disposable implements IDisposable {
|
|
|
38
38
|
|
|
39
39
|
this.disposed = true;
|
|
40
40
|
|
|
41
|
-
invariant(this
|
|
41
|
+
invariant(this.disposables != null);
|
|
42
42
|
await Promise.all(
|
|
43
|
-
[...this
|
|
43
|
+
[...this.disposables].map((disposable) =>
|
|
44
44
|
typeof disposable === 'function' ? disposable() : disposable.dispose(),
|
|
45
45
|
),
|
|
46
46
|
);
|
|
47
47
|
|
|
48
|
-
this
|
|
48
|
+
this.disposables = null;
|
|
49
49
|
}
|
|
50
50
|
}
|