mergeiterator
Advanced tools
Comparing version 1.4.1 to 1.4.3
@@ -49,20 +49,14 @@ "use strict"; | ||
let normalReturn = true; | ||
readRoot(); | ||
countIterator(readRoot()); | ||
try { | ||
while (iteratorsCount > 0 || values.length > 0) { | ||
if (values.length > 0) { | ||
const value = values.shift(); | ||
while (iteratorsCount > 0) { | ||
const oldOnDataNeeded = onDataNeeded; | ||
dataNeeded = new Promise(setOnDataNeeded); | ||
const stateChanged = new Promise(setOnStateChanged); | ||
oldOnDataNeeded(); | ||
yield _awaitAsyncGenerator(stateChanged); | ||
if (typeof value === "object" && value && "then" in value && typeof value.then === "function") { | ||
yield value; | ||
} else { | ||
yield value; | ||
} | ||
} else { | ||
const oldOnDataNeeded = onDataNeeded; | ||
dataNeeded = new Promise(setOnDataNeeded); | ||
const stateChanged = new Promise(setOnStateChanged); | ||
oldOnDataNeeded(); | ||
yield _awaitAsyncGenerator(stateChanged); | ||
while (values.length > 0) { | ||
yield values.shift(); | ||
} | ||
@@ -84,3 +78,5 @@ } | ||
// Raise possible exceptions on iterators interruption. | ||
while (values.length > 0) yield _awaitAsyncGenerator(values.shift()); | ||
while (values.length > 0) { | ||
yield _awaitAsyncGenerator(values.shift()); | ||
} | ||
} | ||
@@ -90,50 +86,38 @@ } | ||
async function readRoot() { | ||
try { | ||
iteratorsCount++; | ||
var _iteratorNormalCompletion = true; | ||
var _didIteratorError = false; | ||
var _iteratorNormalCompletion = true; | ||
var _didIteratorError = false; | ||
var _iteratorError; | ||
var _iteratorError; | ||
try { | ||
for (var _iterator = _asyncIterator((0, _asyncFromSync.forAwaitOfSyncWrapper)((await sequences))), _step, _value; _step = await _iterator.next(), _iteratorNormalCompletion = _step.done, _value = await _step.value, !_iteratorNormalCompletion; _iteratorNormalCompletion = true) { | ||
const sequence = _value; | ||
try { | ||
for (var _iterator = _asyncIterator((0, _asyncFromSync.forAwaitOfSyncWrapper)((await sequences))), _step, _value; _step = await _iterator.next(), _iteratorNormalCompletion = _step.done, _value = await _step.value, !_iteratorNormalCompletion; _iteratorNormalCompletion = true) { | ||
const sequence = _value; | ||
if (mergeDone) { | ||
break; | ||
} | ||
if (mergeDone) { | ||
break; | ||
} | ||
readChild(sequence); | ||
countIterator(readChild(sequence)); | ||
if (values.length > 0) { | ||
await dataNeeded; | ||
} | ||
if (values.length > 0) { | ||
await dataNeeded; | ||
} | ||
if (mergeDone) { | ||
break; | ||
} | ||
if (mergeDone) { | ||
break; | ||
} | ||
} catch (err) { | ||
_didIteratorError = true; | ||
_iteratorError = err; | ||
} | ||
} catch (err) { | ||
_didIteratorError = true; | ||
_iteratorError = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion && _iterator.return != null) { | ||
await _iterator.return(); | ||
} | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion && _iterator.return != null) { | ||
await _iterator.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError) { | ||
throw _iteratorError; | ||
} | ||
if (_didIteratorError) { | ||
throw _iteratorError; | ||
} | ||
} | ||
} catch (error) { | ||
values.push(getError(error)); | ||
onStateChanged(); | ||
} finally { | ||
iteratorsCount--; | ||
if (iteratorsCount === 0) { | ||
onStateChanged(); | ||
} | ||
} | ||
@@ -143,38 +127,37 @@ } | ||
async function readChild(sequence) { | ||
try { | ||
iteratorsCount++; | ||
var _iteratorNormalCompletion2 = true; | ||
var _didIteratorError2 = false; | ||
var _iteratorNormalCompletion2 = true; | ||
var _didIteratorError2 = false; | ||
var _iteratorError2; | ||
var _iteratorError2; | ||
try { | ||
for (var _iterator2 = _asyncIterator((0, _asyncFromSync.forAwaitOfSyncWrapper)(sequence)), _step2, _value2; _step2 = await _iterator2.next(), _iteratorNormalCompletion2 = _step2.done, _value2 = await _step2.value, !_iteratorNormalCompletion2; _iteratorNormalCompletion2 = true) { | ||
const value = _value2; | ||
values.push(value); | ||
onStateChanged(); | ||
await dataNeeded; | ||
try { | ||
for (var _iterator2 = _asyncIterator((0, _asyncFromSync.forAwaitOfSyncWrapper)(sequence)), _step2, _value2; _step2 = await _iterator2.next(), _iteratorNormalCompletion2 = _step2.done, _value2 = await _step2.value, !_iteratorNormalCompletion2; _iteratorNormalCompletion2 = true) { | ||
const value = _value2; | ||
values.push(value); | ||
onStateChanged(); | ||
await dataNeeded; | ||
if (mergeDone) { | ||
break; | ||
} | ||
if (mergeDone) { | ||
break; | ||
} | ||
} catch (err) { | ||
_didIteratorError2 = true; | ||
_iteratorError2 = err; | ||
} | ||
} catch (err) { | ||
_didIteratorError2 = true; | ||
_iteratorError2 = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion2 && _iterator2.return != null) { | ||
await _iterator2.return(); | ||
} | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion2 && _iterator2.return != null) { | ||
await _iterator2.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError2) { | ||
throw _iteratorError2; | ||
} | ||
if (_didIteratorError2) { | ||
throw _iteratorError2; | ||
} | ||
} | ||
} catch (error) { | ||
values.push(getError(error)); | ||
onStateChanged(); | ||
} finally { | ||
} | ||
} | ||
function countIterator(reader) { | ||
iteratorsCount++; | ||
reader.then(() => { | ||
iteratorsCount--; | ||
@@ -185,3 +168,7 @@ | ||
} | ||
} | ||
}, error => { | ||
iteratorsCount--; | ||
values.push(getError(error)); | ||
onStateChanged(); | ||
}); | ||
} | ||
@@ -188,0 +175,0 @@ |
{ | ||
"name": "mergeiterator", | ||
"version": "1.4.1", | ||
"version": "1.4.3", | ||
"description": "merges async iterators", | ||
@@ -53,31 +53,31 @@ "license": "MIT", | ||
"devDependencies": { | ||
"@babel/cli": "^7.8.3", | ||
"@babel/core": "^7.8.3", | ||
"@babel/cli": "^7.8.4", | ||
"@babel/core": "^7.8.7", | ||
"@babel/plugin-proposal-class-properties": "^7.8.3", | ||
"@babel/preset-env": "^7.8.3", | ||
"@babel/preset-env": "^7.8.7", | ||
"@babel/preset-flow": "^7.8.3", | ||
"@babel/preset-typescript": "^7.8.3", | ||
"@types/jest": "^24.9.0", | ||
"@typescript-eslint/eslint-plugin": "^2.17.0", | ||
"@typescript-eslint/parser": "^2.17.0", | ||
"babel-eslint": "^10.0.3", | ||
"babel-jest": "^24.9.0", | ||
"@types/jest": "^25.1.4", | ||
"@typescript-eslint/eslint-plugin": "^2.23.0", | ||
"@typescript-eslint/parser": "^2.23.0", | ||
"babel-eslint": "^10.1.0", | ||
"babel-jest": "^25.1.0", | ||
"babel-plugin-add-module-exports": "^1.0.2", | ||
"codecov": "^3.6.1", | ||
"codecov": "^3.6.5", | ||
"eslint": "^6.8.0", | ||
"eslint-config-airbnb-base": "^14.0.0", | ||
"eslint-config-prettier": "^6.9.0", | ||
"eslint-config-airbnb-base": "^14.1.0", | ||
"eslint-config-prettier": "^6.10.0", | ||
"eslint-plugin-flowtype": "^4.6.0", | ||
"eslint-plugin-flowtype-errors": "^4.1.0", | ||
"eslint-plugin-import": "^2.20.0", | ||
"eslint-plugin-flowtype-errors": "^4.2.0", | ||
"eslint-plugin-import": "^2.20.1", | ||
"eslint-plugin-prettier": "^3.1.2", | ||
"flow-bin": "^0.116.1", | ||
"flow-bin": "^0.120.1", | ||
"flow-copy-source": "^2.0.9", | ||
"flow-typed": "^2.6.2", | ||
"jest": "^24.9.0", | ||
"flow-typed": "^3.0.0", | ||
"jest": "^25.1.0", | ||
"lint-changed": "0.0.0-development", | ||
"prettier": "^1.19.1", | ||
"rimraf": "^3.0.0", | ||
"typescript": "^3.7.5" | ||
"rimraf": "^3.0.2", | ||
"typescript": "^3.8.3" | ||
} | ||
} |
@@ -18,21 +18,16 @@ import { AnyIterable } from "type-any-iterable" | ||
readRoot() | ||
countIterator(readRoot()) | ||
try { | ||
while (iteratorsCount > 0 || values.length > 0) { | ||
if (values.length > 0) { | ||
const value = values.shift() | ||
if (typeof value === "object" && value && "then" in value && typeof value.then === "function") { | ||
yield await value | ||
} else { | ||
yield value as T | ||
} | ||
} else { | ||
const oldOnDataNeeded = onDataNeeded | ||
while (iteratorsCount > 0) { | ||
const oldOnDataNeeded = onDataNeeded | ||
dataNeeded = new Promise(setOnDataNeeded) | ||
const stateChanged = new Promise(setOnStateChanged) | ||
dataNeeded = new Promise(setOnDataNeeded) | ||
const stateChanged = new Promise(setOnStateChanged) | ||
oldOnDataNeeded() | ||
await stateChanged | ||
oldOnDataNeeded() | ||
await stateChanged | ||
while (values.length > 0) { | ||
yield values.shift() as T | ||
} | ||
@@ -52,3 +47,5 @@ } | ||
// Raise possible exceptions on iterators interruption. | ||
while (values.length > 0) await values.shift() | ||
while (values.length > 0) { | ||
await values.shift() | ||
} | ||
} | ||
@@ -58,24 +55,13 @@ } | ||
async function readRoot() { | ||
try { | ||
iteratorsCount++ | ||
for await (const sequence of forAwaitOfSyncWrapper(await sequences)) { | ||
if (mergeDone) { | ||
break | ||
} | ||
readChild(sequence as Iterable<T | PromiseLike<T>> | AsyncIterable<T>) | ||
if (values.length > 0) { | ||
await dataNeeded | ||
} | ||
if (mergeDone) { | ||
break | ||
} | ||
for await (const sequence of forAwaitOfSyncWrapper(await sequences)) { | ||
if (mergeDone) { | ||
break | ||
} | ||
} catch (error) { | ||
values.push(getError(error)) | ||
onStateChanged() | ||
} finally { | ||
iteratorsCount-- | ||
if (iteratorsCount === 0) { | ||
onStateChanged() | ||
countIterator(readChild(sequence as Iterable<T | PromiseLike<T>> | AsyncIterable<T>)) | ||
if (values.length > 0) { | ||
await dataNeeded | ||
} | ||
if (mergeDone) { | ||
break | ||
} | ||
} | ||
@@ -85,19 +71,8 @@ } | ||
async function readChild(sequence: Iterable<T | PromiseLike<T>> | AsyncIterable<T>) { | ||
try { | ||
iteratorsCount++ | ||
for await (const value of forAwaitOfSyncWrapper(sequence)) { | ||
values.push(value) | ||
onStateChanged() | ||
await dataNeeded | ||
if (mergeDone) { | ||
break | ||
} | ||
} | ||
} catch (error) { | ||
values.push(getError(error)) | ||
for await (const value of forAwaitOfSyncWrapper(sequence)) { | ||
values.push(value) | ||
onStateChanged() | ||
} finally { | ||
iteratorsCount-- | ||
if (iteratorsCount === 0) { | ||
onStateChanged() | ||
await dataNeeded | ||
if (mergeDone) { | ||
break | ||
} | ||
@@ -107,2 +82,19 @@ } | ||
function countIterator(reader: Promise<void>) { | ||
iteratorsCount++ | ||
reader.then( | ||
() => { | ||
iteratorsCount-- | ||
if (iteratorsCount === 0) { | ||
onStateChanged() | ||
} | ||
}, | ||
(error: unknown) => { | ||
iteratorsCount-- | ||
values.push(getError(error)) | ||
onStateChanged() | ||
}, | ||
) | ||
} | ||
function setOnStateChanged(resolve: () => void) { | ||
@@ -109,0 +101,0 @@ onStateChanged = resolve |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
0
26983
528