Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e0836a9

Browse files
committed
move Async explicit resource management proposal to stage 3
1 parent ab5f025 commit e0836a9

File tree

19 files changed

+86
-66
lines changed

19 files changed

+86
-66
lines changed

CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,19 @@
88
- Added `/actual/` namespaces entries, unconditional forced replacement changed to feature detection
99
- [Iterator Helpers stage 3 proposal](https://github.com/tc39/proposal-iterator-helpers):
1010
- Avoid creating observable `String` wrapper objects, [proposal-iterator-helpers/281](https://github.com/tc39/proposal-iterator-helpers/pull/281)
11+
- Async explicit resource management:
12+
- Built-ins:
13+
- `Symbol.asyncDispose`
14+
- `AsyncDisposableStack`
15+
- `AsyncDisposableStack.prototype.disposeAsync`
16+
- `AsyncDisposableStack.prototype.use`
17+
- `AsyncDisposableStack.prototype.adopt`
18+
- `AsyncDisposableStack.prototype.defer`
19+
- `AsyncDisposableStack.prototype.move`
20+
- `AsyncDisposableStack.prototype[@@asyncDispose]`
21+
- `AsyncIterator.prototype[@@asyncDispose]`
22+
- Moved back into [the initial proposal](https://github.com/tc39/proposal-explicit-resource-management) -> moved to stage 3, [proposal-explicit-resource-management/154](https://github.com/tc39/proposal-explicit-resource-management/pull/154)
23+
- Added `/actual/` namespace entries, disabled forced replacement
1124
- Used strict mode in some missed cases, [#1269](https://github.com/zloirock/core-js/issues/1269)
1225
- Compat data improvements:
1326
- [NodeJS 20.4.0 add `Symbol.{ dispose, asyncDispose }`](https://github.com/nodejs/node/pull/48518), but [with incorrect property descriptors](https://github.com/nodejs/node/issues/48699)

README.md

Lines changed: 19 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,6 @@ structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])
167167
- [`Map.prototype.emplace`](#mapprototypeemplace)
168168
- [`Array.isTemplateObject`](#arrayistemplateobject)
169169
- [`String.dedent`](#stringdedent)
170-
- [Async explicit resource management](#async-explicit-resource-management)
171170
- [`Symbol` predicates](#symbol-predicates)
172171
- [Stage 1 proposals](#stage-1-proposals)
173172
- [`Observable`](#observable)
@@ -2392,9 +2391,10 @@ console.log([...new Int8Array(newBuffer)]); // => [1, 2, 3, 4]
23922391
##### [Explicit Resource Management](https://github.com/tc39/proposal-explicit-resource-management)[⬆](#index)
23932392
Note: **This is only built-ins for this proposal, `using` syntax support requires transpiler support.**
23942393
2395-
Modules [`esnext.symbol.dispose`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.symbol.dispose.js), [`esnext.disposable-stack.constructor`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.disposable-stack.constructor.js), [`esnext.suppressed-error.constructor`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.suppressed-error.constructor.js), [`esnext.iterator.dispose`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.iterator.dispose.js).
2394+
Modules [`esnext.symbol.dispose`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.symbol.dispose.js), [`esnext.disposable-stack.constructor`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.disposable-stack.constructor.js), [`esnext.suppressed-error.constructor`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.suppressed-error.constructor.js), [`esnext.iterator.dispose`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.iterator.dispose.js), [`esnext.symbol.async-dispose`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.symbol.async-dispose.js), [`esnext.async-disposable-stack.constructor`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.async-disposable-stack.constructor.js), [`esnext.async-iterator.async-dispose`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.async-iterator.async-dispose.js).
23962395
```js
23972396
class Symbol {
2397+
static asyncDispose: @@asyncDispose;
23982398
static dispose: @@dispose;
23992399
}
24002400

@@ -2408,6 +2408,16 @@ class DisposableStack {
24082408
@@toStringTag: 'DisposableStack';
24092409
}
24102410

2411+
class AsyncDisposableStack {
2412+
constructor(): AsyncDisposableStack;
2413+
disposeAsync(): Promise<undefined>;
2414+
use(value: AsyncDisposable | Disposable): value;
2415+
adopt(value: object, onDispose: Function): value;
2416+
defer(onDispose: Function): undefined;
2417+
@@asyncDispose(): Promise<undefined>;
2418+
@@toStringTag: 'AsyncDisposableStack';
2419+
}
2420+
24112421
class SuppressedError extends Error {
24122422
constructor(error: any, suppressed: any, message?: string): SuppressedError;
24132423
error: any;
@@ -2419,14 +2429,21 @@ class SuppressedError extends Error {
24192429
class Iterator {
24202430
@@dispose(): undefined;
24212431
}
2432+
2433+
class AsyncIterator {
2434+
@@asyncDispose(): Promise<undefined>;
2435+
}
24222436
```
24232437
[*CommonJS entry points:*](#commonjs-api)
24242438
```js
24252439
core-js/proposals/explicit-resource-management
2440+
core-js(-pure)/actual|full/symbol/async-dispose
24262441
core-js(-pure)/actual|full/symbol/dispose
24272442
core-js(-pure)/actual|full/disposable-stack
2443+
core-js(-pure)/actual|full/async-disposable-stack
24282444
core-js(-pure)/actual|full/suppressed-error
24292445
core-js(-pure)/actual|full/iterator/dispose
2446+
core-js(-pure)/actual|full/async-iterator/async-dispose
24302447
```
24312448
##### [`Symbol.metadata` for decorators metadata proposal](https://github.com/tc39/proposal-decorator-metadata)[⬆](#index)
24322449
Modules [`esnext.symbol.metadata`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.symbol.metadata.js) and [`esnext.function.metadata`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.function.metadata.js).
@@ -2617,36 +2634,6 @@ String.dedent(console.log)`
26172634
print('${ message }')
26182635
`; // => ["print('", "')", raw: Array(2)], 42
26192636
```
2620-
##### [Async Explicit Resource Management](https://github.com/tc39/proposal-async-explicit-resource-management)[⬆](#index)
2621-
Note: **This is only built-ins for this proposal, `using` syntax support requires transpiler support.**
2622-
2623-
Modules [`esnext.symbol.async-dispose`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.symbol.async-dispose.js), [`esnext.async-disposable-stack.constructor`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.async-disposable-stack.constructor.js), [`esnext.async-iterator.async-dispose`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.async-iterator.async-dispose.js).
2624-
```js
2625-
class Symbol {
2626-
static asyncDispose: @@asyncDispose;
2627-
}
2628-
2629-
class AsyncDisposableStack {
2630-
constructor(): AsyncDisposableStack;
2631-
disposeAsync(): Promise<undefined>;
2632-
use(value: AsyncDisposable | Disposable): value;
2633-
adopt(value: object, onDispose: Function): value;
2634-
defer(onDispose: Function): undefined;
2635-
@@asyncDispose(): Promise<undefined>;
2636-
@@toStringTag: 'AsyncDisposableStack';
2637-
}
2638-
2639-
class AsyncIterator {
2640-
@@asyncDispose(): Promise<undefined>;
2641-
}
2642-
```
2643-
[*CommonJS entry points:*](#commonjs-api)
2644-
```js
2645-
core-js/proposals/async-explicit-resource-management
2646-
core-js(-pure)/full/symbol/async-dispose
2647-
core-js(-pure)/full/async-disposable-stack
2648-
core-js(-pure)/full/async-iterator/async-dispose
2649-
```
26502637
##### [`Symbol` predicates](https://github.com/tc39/proposal-symbol-predicates)[⬆](#index)
26512638
Modules [`esnext.symbol.is-registered-symbol`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.symbol.is-registered-symbol.js), [`esnext.symbol.is-well-known-symbol`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.symbol.is-well-known-symbol.js).
26522639
```js
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
'use strict';
2+
require('../../modules/es.error.cause');
3+
require('../../modules/es.error.to-string');
4+
require('../../modules/es.object.to-string');
5+
require('../../modules/es.promise');
6+
require('../../modules/esnext.suppressed-error.constructor');
7+
require('../../modules/esnext.async-disposable-stack.constructor');
8+
require('../../modules/esnext.async-iterator.async-dispose');
9+
require('../../modules/esnext.iterator.dispose');
10+
var path = require('../../internals/path');
11+
12+
module.exports = path.AsyncDisposableStack;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
'use strict';
2+
require('../../modules/es.error.cause');
3+
require('../../modules/es.error.to-string');
4+
require('../../modules/es.object.to-string');
5+
require('../../modules/es.promise');
6+
require('../../modules/esnext.suppressed-error.constructor');
7+
require('../../modules/esnext.async-disposable-stack.constructor');
8+
require('../../modules/esnext.async-iterator.async-dispose');
9+
require('../../modules/esnext.iterator.dispose');
10+
var path = require('../../internals/path');
11+
12+
module.exports = path.AsyncDisposableStack;
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
'use strict';
2+
require('../../modules/es.object.to-string');
3+
require('../../modules/es.promise');
4+
require('../../modules/esnext.async-iterator.async-dispose');

packages/core-js/actual/async-iterator/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ require('../../modules/es.object.to-string');
44
require('../../modules/es.promise');
55
require('../../modules/es.string.iterator');
66
require('../../modules/esnext.async-iterator.constructor');
7+
require('../../modules/esnext.async-iterator.async-dispose');
78
require('../../modules/esnext.async-iterator.drop');
89
require('../../modules/esnext.async-iterator.every');
910
require('../../modules/esnext.async-iterator.filter');
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
'use strict';
2+
require('../../modules/esnext.symbol.async-dispose');
3+
var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
4+
5+
module.exports = WrappedWellKnownSymbolModule.f('asyncDispose');

packages/core-js/actual/symbol/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
var parent = require('../../stable/symbol');
33

44
require('../../modules/esnext.function.metadata');
5+
require('../../modules/esnext.symbol.async-dispose');
56
require('../../modules/esnext.symbol.dispose');
67
require('../../modules/esnext.symbol.metadata');
78

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,4 @@
11
'use strict';
2-
require('../../modules/es.error.cause');
3-
require('../../modules/es.error.to-string');
4-
require('../../modules/es.object.to-string');
5-
require('../../modules/es.promise');
6-
require('../../modules/esnext.suppressed-error.constructor');
7-
require('../../modules/esnext.async-disposable-stack.constructor');
8-
require('../../modules/esnext.async-iterator.async-dispose');
9-
require('../../modules/esnext.iterator.dispose');
10-
var path = require('../../internals/path');
2+
var parent = require('../../actual/async-disposable-stack/constructor');
113

12-
module.exports = path.AsyncDisposableStack;
4+
module.exports = parent;
Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,4 @@
11
'use strict';
2-
require('../../modules/es.error.cause');
3-
require('../../modules/es.error.to-string');
4-
require('../../modules/es.object.to-string');
5-
require('../../modules/es.promise');
6-
require('../../modules/esnext.suppressed-error.constructor');
7-
require('../../modules/esnext.async-disposable-stack.constructor');
8-
require('../../modules/esnext.async-iterator.async-dispose');
9-
require('../../modules/esnext.iterator.dispose');
10-
var path = require('../../internals/path');
2+
var parent = require('../../actual/async-disposable-stack');
113

12-
module.exports = path.AsyncDisposableStack;
4+
module.exports = parent;

0 commit comments

Comments
 (0)