asynciterator
Advanced tools
Comparing version 3.8.1 to 3.9.0
@@ -61,3 +61,3 @@ /** | ||
*/ | ||
export declare class AsyncIterator<T> extends EventEmitter { | ||
export declare class AsyncIterator<T> extends EventEmitter implements AsyncIterable<T> { | ||
protected _state: number; | ||
@@ -346,2 +346,13 @@ private _readable; | ||
clone(): ClonedIterator<T>; | ||
/** | ||
* An AsyncIterator is async iterable. | ||
* This allows iterators to be used via the for-await syntax. | ||
* | ||
* In cases where the returned EcmaScript AsyncIterator will not be fully consumed, | ||
* it is recommended to manually listen for error events on the main AsyncIterator | ||
* to avoid uncaught error messages. | ||
* | ||
* @returns {ESAsyncIterator<T>} An EcmaScript AsyncIterator | ||
*/ | ||
[Symbol.asyncIterator](): ESAsyncIterator<T>; | ||
} | ||
@@ -828,2 +839,8 @@ /** | ||
} | ||
/** | ||
* Copy of the EcmaScript AsyncIterator interface, which we can not use directly due to the name conflict. | ||
*/ | ||
interface ESAsyncIterator<T> { | ||
next(value?: any): Promise<IteratorResult<T>>; | ||
} | ||
declare type MaybePromise<T> = T | Promise<T>; | ||
@@ -830,0 +847,0 @@ declare type AsyncIteratorOrArray<T> = T[] | AsyncIterator<T>; |
{ | ||
"name": "asynciterator", | ||
"version": "3.8.1", | ||
"version": "3.9.0", | ||
"description": "An asynchronous iterator library for advanced object pipelines.", | ||
@@ -18,4 +18,10 @@ "author": "Ruben Verborgh <ruben@verborgh.org> (https://ruben.verborgh.org/)", | ||
".": { | ||
"require": "./dist/asynciterator.js", | ||
"import": "./dist/asynciterator.mjs" | ||
"require": { | ||
"types": "./dist/asynciterator.d.ts", | ||
"default": "./dist/asynciterator.js" | ||
}, | ||
"import": { | ||
"types": "./dist/asynciterator.d.mts", | ||
"default": "./dist/asynciterator.mjs" | ||
} | ||
} | ||
@@ -30,9 +36,8 @@ }, | ||
"scripts": { | ||
"build": "npm run build:clean && npm run build:module && npm run build:commonjs && npm run build:types", | ||
"build": "npm run build:clean && npm run build:module && npm run build:commonjs", | ||
"build:clean": "rm -rf dist", | ||
"build:module": " tsc --module es2015 && ./.change-extension mjs dist/ts-out/*.js && mv dist/ts-out/*.mjs dist && rm -r dist/ts-out && npm run build:module:import", | ||
"build:commonjs": "tsc --module commonjs && mv dist/ts-out/*.js dist && rm -r dist/ts-out && npm run build:commonjs:import", | ||
"build:module:import": " sed -i'.bak' -e 's/\\.\\/linkedlist/.\\/linkedlist.mjs/' -e 's/\\.\\/taskscheduler/.\\/taskscheduler.mjs/' dist/asynciterator.mjs && rm dist/*.bak", | ||
"build:commonjs:import": "sed -i'.bak' -e 's/\\.\\/linkedlist/.\\/linkedlist.js/' -e 's/\\.\\/taskscheduler/.\\/taskscheduler.js/' dist/asynciterator.js && rm dist/*.bak", | ||
"build:types": "tsc -d && rm dist/ts-out/*.js && mv dist/ts-out/*.d.ts dist && rm -r dist/ts-out", | ||
"build:module": "tsc -d --module es2015 && ./.change-extension mjs dist/ts-out/*.js && ./.change-extension d.mts dist/ts-out/*.d.ts && mv dist/ts-out/*.mjs dist/ts-out/*.d.mts dist && rm -r dist/ts-out && npm run build:module:import", | ||
"build:commonjs": "tsc -d --module commonjs && mv dist/ts-out/*.js dist/ts-out/*.d.ts dist && rm -r dist/ts-out && npm run build:commonjs:import", | ||
"build:module:import": "sed -i'.bak' -e 's/\\.\\/linkedlist/.\\/linkedlist.mjs/' -e 's/\\.\\/taskscheduler/.\\/taskscheduler.mjs/' dist/asynciterator.mjs dist/asynciterator.d.mts && rm dist/*.bak", | ||
"build:commonjs:import": "sed -i'.bak' -e 's/\\.\\/linkedlist/.\\/linkedlist.js/' -e 's/\\.\\/taskscheduler/.\\/taskscheduler.js/' dist/asynciterator.js && rm dist/*.bak", | ||
"prepare": "npm run build", | ||
@@ -59,4 +64,3 @@ "test": "npm run build:commonjs && npm run test:microtask", | ||
"husky": "^4.2.5", | ||
"jaguarjs-jsdoc": "^1.1.0", | ||
"jsdoc": "^3.5.5", | ||
"jsdoc": "^4.0.2", | ||
"mocha": "^9.0.0", | ||
@@ -63,0 +67,0 @@ "sinon": "^7.2.7", |
@@ -177,4 +177,23 @@ # Asynchronous iterators for JavaScript | ||
### Consuming an AsyncIterator as EcmaScript-AsyncIterator | ||
Due to the syntactical sugar [EcmaScript's AsyncIterator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncIterator) | ||
provides, our iterators can also be consumed as such. | ||
If high performance over large iterators is required, this method of consumption not recommended. | ||
```JavaScript | ||
const numbers = new IntegerIterator({ start: 1, end: 100 }); | ||
for await (const number of numbers) | ||
console.log('number', number); | ||
console.log('all done!'); | ||
``` | ||
Error events emitted within the iterator can be caught by wrapping the for-await-block in a try-catch. | ||
In cases where the returned EcmaScript AsyncIterator will not be fully consumed, | ||
it is recommended to manually listen for error events on the main AsyncIterator | ||
to avoid uncaught error messages. | ||
## License | ||
The asynciterator library is copyrighted by [Ruben Verborgh](http://ruben.verborgh.org/) | ||
and released under the [MIT License](http://opensource.org/licenses/MIT). |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
258069
16
15
5108
199