es-iterator-helpers
Advanced tools
Comparing version 1.0.1 to 1.0.2
@@ -36,2 +36,6 @@ 'use strict'; | ||
} | ||
if (abruptCompletion.type() === 'return') { | ||
// due to representing `GeneratorContext` as a function, we can't safely re-invoke it, so we can't support sending it a return completion | ||
return CreateIterResultObject(value, true); | ||
} | ||
@@ -38,0 +42,0 @@ var genContext = SLOT.get(generator, '[[GeneratorContext]]'); // step 5 |
@@ -8,2 +8,11 @@ # Changelog | ||
## [v1.0.2](https://github.com/es-shims/iterator-helpers/compare/v1.0.1...v1.0.2) - 2023-02-09 | ||
### Commits | ||
- [Refactor] inline 2023 impls of Iterator AOs until es-abstract is published with them [`b9c80c5`](https://github.com/es-shims/iterator-helpers/commit/b9c80c5aba0deaaabef7e650fe7ec231fdc695e3) | ||
- [Fix] ensure calling `.return` does not invoke the next iteration [`9e28ed5`](https://github.com/es-shims/iterator-helpers/commit/9e28ed5af44a660a0d2e80684cb9a4bf3d86e09a) | ||
- [Fix] `map`: pass the proper index argument to the mapper [`125e3ca`](https://github.com/es-shims/iterator-helpers/commit/125e3cac192ef650a88f774a5a2dd9afe395a5b8) | ||
- [Deps] update `internal-slot` [`43351b6`](https://github.com/es-shims/iterator-helpers/commit/43351b63545e3698f54daf5dc0652a7b2fb7cb28) | ||
## [v1.0.1](https://github.com/es-shims/iterator-helpers/compare/v1.0.0...v1.0.1) - 2023-02-07 | ||
@@ -10,0 +19,0 @@ |
@@ -7,4 +7,4 @@ 'use strict'; | ||
var IteratorClose = require('es-abstract/2022/IteratorClose'); | ||
var IteratorStep = require('es-abstract/2022/IteratorStep'); | ||
var IteratorClose = require('../aos/IteratorClose'); | ||
var IteratorStep = require('../aos/IteratorStep'); | ||
var IteratorValue = require('es-abstract/2022/IteratorValue'); | ||
@@ -45,3 +45,3 @@ var ToIntegerOrInfinity = require('es-abstract/2022/ToIntegerOrInfinity'); | ||
next = IteratorStep(iterated['[[Iterator]]']); // step 6.b.ii | ||
next = IteratorStep(iterated); // step 6.b.ii | ||
if (!next) { | ||
@@ -53,3 +53,3 @@ // return void undefined; // step 6.b.iii | ||
// while (true) { // step 6.c | ||
next = IteratorStep(iterated['[[Iterator]]']); // step 6.c.i | ||
next = IteratorStep(iterated); // step 6.c.i | ||
if (!next) { | ||
@@ -65,3 +65,3 @@ // return void undefined; // step 6.c.ii | ||
IteratorClose( | ||
iterated['[[Iterator]]'], | ||
iterated, | ||
function () { throw e; } | ||
@@ -68,0 +68,0 @@ ); |
@@ -9,4 +9,4 @@ 'use strict'; | ||
var IsCallable = require('es-abstract/2022/IsCallable'); | ||
var IteratorClose = require('es-abstract/2022/IteratorClose'); | ||
var IteratorStep = require('es-abstract/2022/IteratorStep'); | ||
var IteratorClose = require('../aos/IteratorClose'); | ||
var IteratorStep = require('../aos/IteratorStep'); | ||
var IteratorValue = require('es-abstract/2022/IteratorValue'); | ||
@@ -28,3 +28,3 @@ var ToBoolean = require('es-abstract/2022/ToBoolean'); | ||
while (true) { // step 4 | ||
var next = IteratorStep(iterated['[[Iterator]]']); // step 4.a | ||
var next = IteratorStep(iterated); // step 4.a | ||
if (!next) { | ||
@@ -40,3 +40,3 @@ return true; // step 4.b | ||
IteratorClose( | ||
iterated['[[Iterator]]'], | ||
iterated, | ||
function () { throw e; } | ||
@@ -49,3 +49,3 @@ ); | ||
return IteratorClose( | ||
iterated['[[Iterator]]'], | ||
iterated, | ||
function () { return false; } | ||
@@ -52,0 +52,0 @@ ); // step 4.f |
@@ -9,4 +9,4 @@ 'use strict'; | ||
var IsCallable = require('es-abstract/2022/IsCallable'); | ||
var IteratorClose = require('es-abstract/2022/IteratorClose'); | ||
var IteratorStep = require('es-abstract/2022/IteratorStep'); | ||
var IteratorClose = require('../aos/IteratorClose'); | ||
var IteratorStep = require('../aos/IteratorStep'); | ||
var IteratorValue = require('es-abstract/2022/IteratorValue'); | ||
@@ -34,3 +34,3 @@ var ToBoolean = require('es-abstract/2022/ToBoolean'); | ||
while (true) { // step 3.b | ||
var next = IteratorStep(iterated['[[Iterator]]']); // step 3.b.i | ||
var next = IteratorStep(iterated); // step 3.b.i | ||
if (!next) { | ||
@@ -50,3 +50,3 @@ // return void undefined; // step 3.b.ii | ||
// close iterator // step 3.b.v, 3.b.vii | ||
IteratorClose(iterated['[[Iterator]]'], true); | ||
IteratorClose(iterated, true); | ||
throw e; | ||
@@ -53,0 +53,0 @@ } finally { |
@@ -9,4 +9,4 @@ 'use strict'; | ||
var IsCallable = require('es-abstract/2022/IsCallable'); | ||
var IteratorClose = require('es-abstract/2022/IteratorClose'); | ||
var IteratorStep = require('es-abstract/2022/IteratorStep'); | ||
var IteratorClose = require('../aos/IteratorClose'); | ||
var IteratorStep = require('../aos/IteratorStep'); | ||
var IteratorValue = require('es-abstract/2022/IteratorValue'); | ||
@@ -28,3 +28,3 @@ var ToBoolean = require('es-abstract/2022/ToBoolean'); | ||
while (true) { // step 4 | ||
var next = IteratorStep(iterated['[[Iterator]]']); // step 4.a | ||
var next = IteratorStep(iterated); // step 4.a | ||
if (!next) { | ||
@@ -40,3 +40,3 @@ return void undefined; // step 4.b | ||
IteratorClose( | ||
iterated['[[Iterator]]'], | ||
iterated, | ||
function () { throw e; } | ||
@@ -49,3 +49,3 @@ ); | ||
return IteratorClose( | ||
iterated['[[Iterator]]'], | ||
iterated, | ||
function () { return value; } // eslint-disable-line no-loop-func | ||
@@ -52,0 +52,0 @@ ); // step 4.f |
@@ -9,4 +9,4 @@ 'use strict'; | ||
var IsCallable = require('es-abstract/2022/IsCallable'); | ||
var IteratorClose = require('es-abstract/2022/IteratorClose'); | ||
var IteratorStep = require('es-abstract/2022/IteratorStep'); | ||
var IteratorClose = require('../aos/IteratorClose'); | ||
var IteratorStep = require('../aos/IteratorStep'); | ||
var IteratorValue = require('es-abstract/2022/IteratorValue'); | ||
@@ -33,3 +33,3 @@ | ||
// while (true) { // step 3.b | ||
var next = IteratorStep(iterated['[[Iterator]]']); // step 3.b.i | ||
var next = IteratorStep(iterated); // step 3.b.i | ||
if (!next) { | ||
@@ -49,3 +49,3 @@ // return void undefined; // step 3.b.ii | ||
IteratorClose( | ||
iterated['[[Iterator]]'], | ||
iterated, | ||
function () { throw e; } | ||
@@ -57,6 +57,6 @@ ); // steps 3.b.v, 3.b.vii | ||
try { | ||
var innerNext = IteratorStep(innerIterator['[[Iterator]]']); // step 3.b.ix.1 | ||
var innerNext = IteratorStep(innerIterator); // step 3.b.ix.1 | ||
} catch (e) { | ||
IteratorClose( | ||
iterated['[[Iterator]]'], | ||
iterated, | ||
function () { throw e; } | ||
@@ -73,3 +73,3 @@ ); // step 3.b.ix.2 | ||
IteratorClose( | ||
iterated['[[Iterator]]'], | ||
iterated, | ||
function () { throw e; } | ||
@@ -76,0 +76,0 @@ ); // step 3.b.ix.4.b |
@@ -9,4 +9,4 @@ 'use strict'; | ||
var IsCallable = require('es-abstract/2022/IsCallable'); | ||
var IteratorClose = require('es-abstract/2022/IteratorClose'); | ||
var IteratorStep = require('es-abstract/2022/IteratorStep'); | ||
var IteratorClose = require('../aos/IteratorClose'); | ||
var IteratorStep = require('../aos/IteratorStep'); | ||
var IteratorValue = require('es-abstract/2022/IteratorValue'); | ||
@@ -27,3 +27,3 @@ | ||
while (true) { // step 4 | ||
var next = IteratorStep(iterated['[[Iterator]]']); // step 4.a | ||
var next = IteratorStep(iterated); // step 4.a | ||
if (!next) { | ||
@@ -37,3 +37,3 @@ return void undefined; // step 4.b | ||
IteratorClose( | ||
iterated['[[Iterator]]'], | ||
iterated, | ||
function () { throw e; } | ||
@@ -40,0 +40,0 @@ ); // steps 4.e |
@@ -9,4 +9,4 @@ 'use strict'; | ||
var IsCallable = require('es-abstract/2022/IsCallable'); | ||
var IteratorClose = require('es-abstract/2022/IteratorClose'); | ||
var IteratorStep = require('es-abstract/2022/IteratorStep'); | ||
var IteratorClose = require('../aos/IteratorClose'); | ||
var IteratorStep = require('../aos/IteratorStep'); | ||
var IteratorValue = require('es-abstract/2022/IteratorValue'); | ||
@@ -29,6 +29,8 @@ | ||
var sentinel = {}; | ||
var counter = 0; // step 3.a | ||
var closure = function () { | ||
var counter = 0; // step 3.a | ||
// while (true) { // step 3.b | ||
var next = IteratorStep(iterated['[[Iterator]]']); // step 3.b.i | ||
var next = IteratorStep(iterated); // step 3.b.i | ||
// console.log({counter, next}) | ||
if (!next) { | ||
@@ -47,3 +49,3 @@ // return void undefined; // step 3.b.ii | ||
IteratorClose( | ||
iterated['[[Iterator]]'], | ||
iterated, | ||
function () { throw e; } | ||
@@ -50,0 +52,0 @@ ); |
@@ -9,4 +9,4 @@ 'use strict'; | ||
var IsCallable = require('es-abstract/2022/IsCallable'); | ||
var IteratorClose = require('es-abstract/2022/IteratorClose'); | ||
var IteratorStep = require('es-abstract/2022/IteratorStep'); | ||
var IteratorClose = require('../aos/IteratorClose'); | ||
var IteratorStep = require('../aos/IteratorStep'); | ||
var IteratorValue = require('es-abstract/2022/IteratorValue'); | ||
@@ -27,3 +27,3 @@ | ||
if (arguments.length < 2) { // step 3 | ||
next = IteratorStep(iterated['[[Iterator]]']); // step 3.a | ||
next = IteratorStep(iterated); // step 3.a | ||
if (!next) { | ||
@@ -41,3 +41,3 @@ throw new $TypeError('Reduce of empty iterator with no initial value'); // step 3.b | ||
while (true) { // step 5 | ||
next = IteratorStep(iterated['[[Iterator]]']); // step 5.a | ||
next = IteratorStep(iterated); // step 5.a | ||
if (!next) { | ||
@@ -53,3 +53,3 @@ return accumulator; // step 5.b | ||
IteratorClose( | ||
iterated['[[Iterator]]'], | ||
iterated, | ||
function () { throw e; } | ||
@@ -56,0 +56,0 @@ ); |
@@ -9,4 +9,4 @@ 'use strict'; | ||
var IsCallable = require('es-abstract/2022/IsCallable'); | ||
var IteratorClose = require('es-abstract/2022/IteratorClose'); | ||
var IteratorStep = require('es-abstract/2022/IteratorStep'); | ||
var IteratorClose = require('../aos/IteratorClose'); | ||
var IteratorStep = require('../aos/IteratorStep'); | ||
var IteratorValue = require('es-abstract/2022/IteratorValue'); | ||
@@ -28,3 +28,3 @@ var ToBoolean = require('es-abstract/2022/ToBoolean'); | ||
while (true) { // step 4 | ||
var next = IteratorStep(iterated['[[Iterator]]']); // step 4.a | ||
var next = IteratorStep(iterated); // step 4.a | ||
if (!next) { | ||
@@ -40,3 +40,3 @@ return false; // step 4.b | ||
IteratorClose( | ||
iterated['[[Iterator]]'], | ||
iterated, | ||
function () { throw e; } | ||
@@ -49,3 +49,3 @@ ); | ||
return IteratorClose( | ||
iterated['[[Iterator]]'], | ||
iterated, | ||
function () { return true; } | ||
@@ -52,0 +52,0 @@ ); // step 4.f |
@@ -7,4 +7,4 @@ 'use strict'; | ||
var IteratorClose = require('es-abstract/2022/IteratorClose'); | ||
var IteratorStep = require('es-abstract/2022/IteratorStep'); | ||
var IteratorClose = require('../aos/IteratorClose'); | ||
var IteratorStep = require('../aos/IteratorStep'); | ||
var IteratorValue = require('es-abstract/2022/IteratorValue'); | ||
@@ -50,3 +50,3 @@ var ToIntegerOrInfinity = require('es-abstract/2022/ToIntegerOrInfinity'); | ||
var next = IteratorStep(iterated['[[Iterator]]']); // step 6.b.iii | ||
var next = IteratorStep(iterated); // step 6.b.iii | ||
if (!next) { | ||
@@ -53,0 +53,0 @@ // return void undefined; // step 6.b.iv |
'use strict'; | ||
var IteratorStep = require('es-abstract/2022/IteratorStep'); | ||
var IteratorStep = require('../aos/IteratorStep'); | ||
var IteratorValue = require('es-abstract/2022/IteratorValue'); | ||
@@ -19,3 +19,3 @@ | ||
while (true) { // step 3 | ||
var next = IteratorStep(iterated['[[Iterator]]']); // step 3.a | ||
var next = IteratorStep(iterated); // step 3.a | ||
if (!next) { | ||
@@ -22,0 +22,0 @@ return items; // step 3.b |
{ | ||
"name": "es-iterator-helpers", | ||
"version": "1.0.1", | ||
"version": "1.0.2", | ||
"description": "An ESnext spec-compliant iterator helpers shim/polyfill/replacement that works as far down as ES3.", | ||
@@ -136,3 +136,3 @@ "main": "index.json", | ||
"has-symbols": "^1.0.3", | ||
"internal-slot": "^1.0.4", | ||
"internal-slot": "^1.0.5", | ||
"iterator.prototype": "^1.1.0" | ||
@@ -139,0 +139,0 @@ }, |
@@ -53,7 +53,7 @@ 'use strict'; | ||
return { | ||
done: done, | ||
done: !!done, | ||
value: sentinel | ||
}; | ||
} finally { | ||
done = true; | ||
done = done === false ? null : true; | ||
} | ||
@@ -71,3 +71,3 @@ } | ||
}), | ||
[fakeIterator], | ||
[fakeIterator, fakeIterator], | ||
t, | ||
@@ -78,3 +78,3 @@ 'fake iterator, mapped, runs as expected' | ||
result, | ||
{ value: sentinel, counter: 0, receiver: undefined, args: 2 }, | ||
{ value: sentinel, counter: 1, receiver: undefined, args: 2 }, | ||
'callback is called with the correct arguments' | ||
@@ -81,0 +81,0 @@ ); |
@@ -21,1 +21,51 @@ 'use strict'; | ||
}); | ||
test('integration', function (t) { | ||
var seenMapEveryMap = []; | ||
var seenMapEveryEvery = []; | ||
var mapEveryResult = Iterator.from([1, 2, 3, 4, 5]).map(function (x) { | ||
seenMapEveryMap.push(x); | ||
return x * x; | ||
}).every(function (x) { | ||
seenMapEveryEvery.push(x); | ||
return x < 10; | ||
}); | ||
t.equal(mapEveryResult, false, 'map + every: every predicate returned false nonzero times'); | ||
t.deepEqual(seenMapEveryMap, [1, 2, 3, 4], 'map + every, map: all values are seen until after the first one that is > 10 when squared'); | ||
t.deepEqual(seenMapEveryEvery, [1, 4, 9, 16], 'map + every, every: all values are seen until after the first one that is > 10 when squared'); | ||
var seenMapSomeMap = []; | ||
var seenMapSomeSome = []; | ||
var mapSomeResult = Iterator.from([1, 2, 3, 4, 5]).map(function (x) { | ||
seenMapSomeMap.push(x); | ||
return x * x; | ||
}).some(function (x) { | ||
seenMapSomeSome.push(x); | ||
return x > 10; | ||
}); | ||
t.equal(mapSomeResult, true, 'map + some: some predicate returned true nonzero times'); | ||
t.deepEqual(seenMapSomeMap, [1, 2, 3, 4], 'map + some, map: all values are seen until after the first one that is > 10 when squared'); | ||
t.deepEqual(seenMapSomeSome, [1, 4, 9, 16], 'map + some, some: all values are seen until after the first one that is > 10 when squared'); | ||
var seenMapFind = []; | ||
var mapFindResult = Iterator.from([1, 2, 3, 4, 5]).map(function (x) { | ||
seenMapFind.push(x); | ||
return x * x; | ||
}).find(function (x) { | ||
return x > 10; | ||
}); | ||
t.equal(mapFindResult, 16, 'map + find: find found the first mapped value over 10'); | ||
t.deepEqual(seenMapFind, [1, 2, 3, 4], 'map + find: all values are seen until after the first one that is > 10 when squared'); | ||
var seenFilterEvery = []; | ||
var filterEveryResult = Iterator.from([1, 2, 3, 4, 5]).filter(function (x) { | ||
seenFilterEvery.push(x); | ||
return x; | ||
}).every(function (x) { | ||
return x <= 3; | ||
}); | ||
t.equal(filterEveryResult, false, 'filter + every: every predicate returned false nonzero times'); | ||
t.deepEqual(seenMapFind, [1, 2, 3, 4], 'filter + every: all values are seen until after the first one that is > 10 when squared'); | ||
t.end(); | ||
}); |
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
115721
111
2674
Updatedinternal-slot@^1.0.5