Socket
Socket
Sign inDemoInstall

es-iterator-helpers

Package Overview
Dependencies
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

es-iterator-helpers - npm Package Compare versions

Comparing version 1.0.2 to 1.0.3

2

aos/CreateIteratorFromClosure.js

@@ -23,2 +23,4 @@ 'use strict';

SLOT.set(generator, '[[Sentinel]]'); // our userland slot
SLOT.assert(closure, '[[CloseIfAbrupt]]'); // our second userland slot
SLOT.set(generator, '[[CloseIfAbrupt]]', SLOT.get(closure, '[[CloseIfAbrupt]]')); // our second userland slot

@@ -25,0 +27,0 @@ GeneratorStart(generator, closure); // step 13

2

aos/GeneratorResumeAbrupt.js

@@ -38,3 +38,3 @@ 'use strict';

// 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);
return CreateIterResultObject(SLOT.get(generator, '[[CloseIfAbrupt]]')(abruptCompletion), true);
}

@@ -41,0 +41,0 @@

@@ -18,2 +18,3 @@ 'use strict';

SLOT.assert(generator, '[[Sentinel]]'); // our userland slot
SLOT.assert(generator, '[[CloseIfAbrupt]]'); // our second userland slot

@@ -20,0 +21,0 @@ if (!IsCallable(closure) || closure.length !== 0) {

@@ -10,3 +10,2 @@ 'use strict';

var GetMethod = require('es-abstract/2022/GetMethod');
var IsCallable = require('es-abstract/2022/IsCallable');
var Type = require('es-abstract/2022/Type');

@@ -24,8 +23,12 @@

if (!IsCallable(completion) && !(completion instanceof CompletionRecord)) { // step 2
throw new $TypeError('Assertion failed: completion is not a thunk representing a Completion Record, nor a Completion Record instance');
if (!(completion instanceof CompletionRecord)) { // step 2
throw new $TypeError('Assertion failed: completion is not a Completion Record instance');
}
var completionThunk = completion instanceof CompletionRecord ? function () {
return completion['?']();
} : completion;
var completionThunk = function () {
var value = completion.value();
if (completion.type() === 'throw') {
throw value;
}
return value;
};

@@ -32,0 +35,0 @@ var iterator = iteratorRecord['[[Iterator]]']; // step 3

@@ -8,2 +8,15 @@ # Changelog

## [v1.0.3](https://github.com/es-shims/iterator-helpers/compare/v1.0.2...v1.0.3) - 2023-03-17
### Commits
- [Fix] `drop`/`filter`/`flatMap`/`map`/`take`: properly IfAbruptCloseIterator [`ff643a0`](https://github.com/es-shims/iterator-helpers/commit/ff643a0b7c4e5c2b00e794ba9b988b47e783f235)
- [Refactor] use `NormalCompletion`/`ThrowCompletion` instead of thunks [`68fd937`](https://github.com/es-shims/iterator-helpers/commit/68fd937b53c107481a9f868bda5b2bd5cbc00142)
- [Fix] `filter`: IteratorClose needs to rethrow the error [`200474f`](https://github.com/es-shims/iterator-helpers/commit/200474ff289dea77c696c0c025f4602405cf3fff)
- [Fix] `filter`: properly increment the counter [`14aa2d8`](https://github.com/es-shims/iterator-helpers/commit/14aa2d8b75fd16378c2be183fd5b008712547ed4)
- [Fix] `Iterator` can not be `new`ed or invoked directly [`6fbd68e`](https://github.com/es-shims/iterator-helpers/commit/6fbd68e778dd455c4aa63f4e1f39e0b583610509)
- [Fix] `Iterator.prototype` should be non-writable [`1080288`](https://github.com/es-shims/iterator-helpers/commit/108028858067e40ea56dca9a68dd6cea4966e904)
- [Deps] update `es-abstract` [`b7913da`](https://github.com/es-shims/iterator-helpers/commit/b7913da9cddef1ec40b4827821c6069019b79093)
- [Dev Deps] update `@es-shims/api` [`0071bed`](https://github.com/es-shims/iterator-helpers/commit/0071bed9e13231317d2cdb9ae0ecb6603784ad1f)
## [v1.0.2](https://github.com/es-shims/iterator-helpers/compare/v1.0.1...v1.0.2) - 2023-02-09

@@ -10,0 +23,0 @@

@@ -6,12 +6,14 @@ 'use strict';

var $RangeError = GetIntrinsic('%RangeError%');
var $TypeError = GetIntrinsic('%TypeError%');
var CompletionRecord = require('es-abstract/2022/CompletionRecord');
var CreateIteratorFromClosure = require('../aos/CreateIteratorFromClosure');
var GetIteratorDirect = require('../aos/GetIteratorDirect');
var IteratorClose = require('../aos/IteratorClose');
var IteratorStep = require('../aos/IteratorStep');
var IteratorValue = require('es-abstract/2022/IteratorValue');
var ThrowCompletion = require('es-abstract/2022/ThrowCompletion');
var ToIntegerOrInfinity = require('es-abstract/2022/ToIntegerOrInfinity');
var ToNumber = require('es-abstract/2022/ToNumber');
var GetIteratorDirect = require('../aos/GetIteratorDirect');
var CreateIteratorFromClosure = require('../aos/CreateIteratorFromClosure');
var iterHelperProto = require('../IteratorHelperPrototype');

@@ -36,2 +38,12 @@

var closeIfAbrupt = function (abruptCompletion) {
if (!(abruptCompletion instanceof CompletionRecord)) {
throw new $TypeError('`abruptCompletion` must be a Completion Record');
}
IteratorClose(
iterated,
abruptCompletion
);
};
var sentinel = {};

@@ -63,13 +75,12 @@ var remaining = integerLimit; // step 6.a

// close iterator // step 6.c.icv
IteratorClose(
iterated,
function () { throw e; }
);
closeIfAbrupt(ThrowCompletion(e));
throw e;
}
// }
return void undefined;
// return void undefined;
};
SLOT.set(closure, '[[Sentinel]]', sentinel); // for the userland implementation
SLOT.set(closure, '[[CloseIfAbrupt]]', closeIfAbrupt); // for the userland implementation
return CreateIteratorFromClosure(closure, 'Iterator Helper', iterHelperProto); // step 4
};

@@ -8,2 +8,3 @@ 'use strict';

var Call = require('es-abstract/2022/Call');
var GetIteratorDirect = require('../aos/GetIteratorDirect');
var IsCallable = require('es-abstract/2022/IsCallable');

@@ -13,6 +14,6 @@ var IteratorClose = require('../aos/IteratorClose');

var IteratorValue = require('es-abstract/2022/IteratorValue');
var NormalCompletion = require('es-abstract/2022/NormalCompletion');
var ThrowCompletion = require('es-abstract/2022/ThrowCompletion');
var ToBoolean = require('es-abstract/2022/ToBoolean');
var GetIteratorDirect = require('../aos/GetIteratorDirect');
module.exports = function every(predicate) {

@@ -41,3 +42,3 @@ var iterated = GetIteratorDirect(this); // step 1

iterated,
function () { throw e; }
ThrowCompletion(e)
);

@@ -50,3 +51,3 @@ } finally {

iterated,
function () { return false; }
NormalCompletion(false)
); // step 4.f

@@ -53,0 +54,0 @@ }

@@ -8,2 +8,5 @@ 'use strict';

var Call = require('es-abstract/2022/Call');
var CompletionRecord = require('es-abstract/2022/CompletionRecord');
var CreateIteratorFromClosure = require('../aos/CreateIteratorFromClosure');
var GetIteratorDirect = require('../aos/GetIteratorDirect');
var IsCallable = require('es-abstract/2022/IsCallable');

@@ -13,7 +16,5 @@ var IteratorClose = require('../aos/IteratorClose');

var IteratorValue = require('es-abstract/2022/IteratorValue');
var ThrowCompletion = require('es-abstract/2022/ThrowCompletion');
var ToBoolean = require('es-abstract/2022/ToBoolean');
var GetIteratorDirect = require('../aos/GetIteratorDirect');
var CreateIteratorFromClosure = require('../aos/CreateIteratorFromClosure');
var iterHelperProto = require('../IteratorHelperPrototype');

@@ -30,5 +31,15 @@

var closeIfAbrupt = function (abruptCompletion) {
if (!(abruptCompletion instanceof CompletionRecord)) {
throw new $TypeError('`abruptCompletion` must be a Completion Record');
}
IteratorClose(
iterated,
abruptCompletion
);
};
var sentinel = {};
var counter = 0; // step 3.a
var closure = function () {
var counter = 0; // step 3.a
// eslint-disable-next-line no-constant-condition

@@ -51,3 +62,3 @@ while (true) { // step 3.b

// close iterator // step 3.b.v, 3.b.vii
IteratorClose(iterated, true);
closeIfAbrupt(ThrowCompletion(e));
throw e;

@@ -60,4 +71,5 @@ } finally {

SLOT.set(closure, '[[Sentinel]]', sentinel); // for the userland implementation
SLOT.set(closure, '[[CloseIfAbrupt]]', closeIfAbrupt); // for the userland implementation
return CreateIteratorFromClosure(closure, 'Iterator Helper', iterHelperProto); // step 4
};

@@ -8,2 +8,3 @@ 'use strict';

var Call = require('es-abstract/2022/Call');
var GetIteratorDirect = require('../aos/GetIteratorDirect');
var IsCallable = require('es-abstract/2022/IsCallable');

@@ -13,6 +14,6 @@ var IteratorClose = require('../aos/IteratorClose');

var IteratorValue = require('es-abstract/2022/IteratorValue');
var NormalCompletion = require('es-abstract/2022/NormalCompletion');
var ThrowCompletion = require('es-abstract/2022/ThrowCompletion');
var ToBoolean = require('es-abstract/2022/ToBoolean');
var GetIteratorDirect = require('../aos/GetIteratorDirect');
module.exports = function find(predicate) {

@@ -41,3 +42,3 @@ var iterated = GetIteratorDirect(this); // step 1

iterated,
function () { throw e; }
ThrowCompletion(e)
);

@@ -50,3 +51,3 @@ } finally {

iterated,
function () { return value; } // eslint-disable-line no-loop-func
NormalCompletion(value)
); // step 4.f

@@ -53,0 +54,0 @@ }

@@ -8,2 +8,6 @@ 'use strict';

var Call = require('es-abstract/2022/Call');
var CompletionRecord = require('es-abstract/2022/CompletionRecord');
var CreateIteratorFromClosure = require('../aos/CreateIteratorFromClosure');
var GetIteratorDirect = require('../aos/GetIteratorDirect');
var GetIteratorFlattenable = require('../aos/GetIteratorFlattenable');
var IsCallable = require('es-abstract/2022/IsCallable');

@@ -13,7 +17,4 @@ var IteratorClose = require('../aos/IteratorClose');

var IteratorValue = require('es-abstract/2022/IteratorValue');
var ThrowCompletion = require('es-abstract/2022/ThrowCompletion');
var GetIteratorDirect = require('../aos/GetIteratorDirect');
var CreateIteratorFromClosure = require('../aos/CreateIteratorFromClosure');
var GetIteratorFlattenable = require('../aos/GetIteratorFlattenable');
var iterHelperProto = require('../IteratorHelperPrototype');

@@ -30,2 +31,12 @@

var closeIfAbrupt = function (abruptCompletion) {
if (!(abruptCompletion instanceof CompletionRecord)) {
throw new $TypeError('`abruptCompletion` must be a Completion Record');
}
IteratorClose(
iterated,
abruptCompletion
);
};
var sentinel = {};

@@ -49,6 +60,3 @@ var counter = 0; // step 3.a

} catch (e) {
IteratorClose(
iterated,
function () { throw e; }
); // steps 3.b.v, 3.b.vii
closeIfAbrupt(ThrowCompletion(e)); // steps 3.b.v, 3.b.vii
}

@@ -60,6 +68,3 @@ var innerAlive = true; // step 3.b.viii

} catch (e) {
IteratorClose(
iterated,
function () { throw e; }
); // step 3.b.ix.2
closeIfAbrupt(ThrowCompletion(e)); // step 3.b.ix.2
}

@@ -73,6 +78,3 @@ if (!innerNext) {

} catch (e) {
IteratorClose(
iterated,
function () { throw e; }
); // step 3.b.ix.4.b
closeIfAbrupt(ThrowCompletion(e)); // step 3.b.ix.4.b
}

@@ -89,4 +91,5 @@ return innerValue; // step 3.b.ix.4.c

SLOT.set(closure, '[[Sentinel]]', sentinel); // for the userland implementation
SLOT.set(closure, '[[CloseIfAbrupt]]', closeIfAbrupt); // for the userland implementation
return CreateIteratorFromClosure(closure, 'Iterator Helper', iterHelperProto); // step 4
};

@@ -8,2 +8,3 @@ 'use strict';

var Call = require('es-abstract/2022/Call');
var GetIteratorDirect = require('../aos/GetIteratorDirect');
var IsCallable = require('es-abstract/2022/IsCallable');

@@ -13,5 +14,4 @@ var IteratorClose = require('../aos/IteratorClose');

var IteratorValue = require('es-abstract/2022/IteratorValue');
var ThrowCompletion = require('es-abstract/2022/ThrowCompletion');
var GetIteratorDirect = require('../aos/GetIteratorDirect');
module.exports = function forEach(fn) {

@@ -38,3 +38,3 @@ var iterated = GetIteratorDirect(this); // step 1

iterated,
function () { throw e; }
ThrowCompletion(e)
); // steps 4.e

@@ -41,0 +41,0 @@ throw e;

@@ -8,2 +8,5 @@ 'use strict';

var Call = require('es-abstract/2022/Call');
var CompletionRecord = require('es-abstract/2022/CompletionRecord');
var CreateIteratorFromClosure = require('../aos/CreateIteratorFromClosure');
var GetIteratorDirect = require('../aos/GetIteratorDirect');
var IsCallable = require('es-abstract/2022/IsCallable');

@@ -13,6 +16,4 @@ var IteratorClose = require('../aos/IteratorClose');

var IteratorValue = require('es-abstract/2022/IteratorValue');
var ThrowCompletion = require('es-abstract/2022/ThrowCompletion');
var GetIteratorDirect = require('../aos/GetIteratorDirect');
var CreateIteratorFromClosure = require('../aos/CreateIteratorFromClosure');
var iterHelperProto = require('../IteratorHelperPrototype');

@@ -29,2 +30,12 @@

var closeIfAbrupt = function (abruptCompletion) {
if (!(abruptCompletion instanceof CompletionRecord)) {
throw new $TypeError('`abruptCompletion` must be a Completion Record');
}
IteratorClose(
iterated,
abruptCompletion
);
};
var sentinel = {};

@@ -36,3 +47,2 @@ var counter = 0; // step 3.a

// console.log({counter, next})
if (!next) {

@@ -50,6 +60,3 @@ // return void undefined; // step 3.b.ii

// close iterator // step 3.b.v, 3.b.vii
IteratorClose(
iterated,
function () { throw e; }
);
closeIfAbrupt(ThrowCompletion(e));
throw e;

@@ -62,4 +69,5 @@ } finally {

SLOT.set(closure, '[[Sentinel]]', sentinel); // for the userland implementation
SLOT.set(closure, '[[CloseIfAbrupt]]', closeIfAbrupt); // for the userland implementation
return CreateIteratorFromClosure(closure, 'Iterator Helper', iterHelperProto); // step 4
};

@@ -8,2 +8,3 @@ 'use strict';

var Call = require('es-abstract/2022/Call');
var GetIteratorDirect = require('../aos/GetIteratorDirect');
var IsCallable = require('es-abstract/2022/IsCallable');

@@ -13,5 +14,4 @@ var IteratorClose = require('../aos/IteratorClose');

var IteratorValue = require('es-abstract/2022/IteratorValue');
var ThrowCompletion = require('es-abstract/2022/ThrowCompletion');
var GetIteratorDirect = require('../aos/GetIteratorDirect');
module.exports = function reduce(reducer) {

@@ -53,3 +53,3 @@ var iterated = GetIteratorDirect(this); // step 1

iterated,
function () { throw e; }
ThrowCompletion(e)
);

@@ -56,0 +56,0 @@ }

@@ -8,2 +8,3 @@ 'use strict';

var Call = require('es-abstract/2022/Call');
var GetIteratorDirect = require('../aos/GetIteratorDirect');
var IsCallable = require('es-abstract/2022/IsCallable');

@@ -13,6 +14,6 @@ var IteratorClose = require('../aos/IteratorClose');

var IteratorValue = require('es-abstract/2022/IteratorValue');
var NormalCompletion = require('es-abstract/2022/NormalCompletion');
var ThrowCompletion = require('es-abstract/2022/ThrowCompletion');
var ToBoolean = require('es-abstract/2022/ToBoolean');
var GetIteratorDirect = require('../aos/GetIteratorDirect');
module.exports = function some(predicate) {

@@ -41,3 +42,3 @@ var iterated = GetIteratorDirect(this); // step 1

iterated,
function () { throw e; }
ThrowCompletion(e)
);

@@ -50,3 +51,3 @@ } finally {

iterated,
function () { return true; }
NormalCompletion(true)
); // step 4.f

@@ -53,0 +54,0 @@ }

@@ -6,12 +6,14 @@ 'use strict';

var $RangeError = GetIntrinsic('%RangeError%');
var $TypeError = GetIntrinsic('%TypeError%');
var CompletionRecord = require('es-abstract/2022/CompletionRecord');
var CreateIteratorFromClosure = require('../aos/CreateIteratorFromClosure');
var GetIteratorDirect = require('../aos/GetIteratorDirect');
var IteratorClose = require('../aos/IteratorClose');
var IteratorStep = require('../aos/IteratorStep');
var IteratorValue = require('es-abstract/2022/IteratorValue');
var NormalCompletion = require('es-abstract/2022/NormalCompletion');
var ToIntegerOrInfinity = require('es-abstract/2022/ToIntegerOrInfinity');
var ToNumber = require('es-abstract/2022/ToNumber');
var GetIteratorDirect = require('../aos/GetIteratorDirect');
var CreateIteratorFromClosure = require('../aos/CreateIteratorFromClosure');
var iterHelperProto = require('../IteratorHelperPrototype');

@@ -36,2 +38,12 @@

var closeIfAbrupt = function (abruptCompletion) {
if (!(abruptCompletion instanceof CompletionRecord)) {
throw new $TypeError('`abruptCompletion` must be a Completion Record');
}
IteratorClose(
iterated,
abruptCompletion
);
};
var sentinel = {};

@@ -44,3 +56,3 @@ var remaining = integerLimit; // step 6.a

iterated,
function () { return sentinel; }
NormalCompletion(sentinel)
);

@@ -63,4 +75,5 @@ }

SLOT.set(closure, '[[Sentinel]]', sentinel); // for the userland implementation
SLOT.set(closure, '[[CloseIfAbrupt]]', closeIfAbrupt); // for the userland implementation
return CreateIteratorFromClosure(closure, 'Iterator Helper', iterHelperProto); // step 4
};
'use strict';
var GetIntrinsic = require('get-intrinsic');
var hasPropertyDescriptors = require('has-property-descriptors')();
var $TypeError = GetIntrinsic('%TypeError%');
var $defineProperty = hasPropertyDescriptors && GetIntrinsic('%Object.defineProperty%', true);

@@ -10,5 +12,3 @@ var iterProto = require('iterator.prototype');

var $Iterator = typeof Iterator === 'function' ? Iterator : function Iterator() {
if (!(this instanceof Iterator)) {
throw new $TypeError('`Iterator` can only be called with new');
}
throw new $TypeError('`Iterator` can not be called directly');
};

@@ -19,3 +19,4 @@

}
$defineProperty($Iterator, 'prototype', { writable: false });
module.exports = $Iterator;

@@ -34,3 +34,3 @@ 'use strict';

implementation['return'] = function () {
var C = function () {}; // step 1
var C = new CompletionRecord('return', void undefined); // step 1
return GeneratorResumeAbrupt(this, C, 'Iterator Helper');

@@ -37,0 +37,0 @@ };

{
"name": "es-iterator-helpers",
"version": "1.0.2",
"version": "1.0.3",
"description": "An ESnext spec-compliant iterator helpers shim/polyfill/replacement that works as far down as ES3.",

@@ -130,3 +130,3 @@ "main": "index.json",

"asynciterator.prototype": "^1.0.0",
"es-abstract": "^1.21.1",
"es-abstract": "^1.21.2",
"es-set-tostringtag": "^2.0.1",

@@ -141,3 +141,3 @@ "function-bind": "^1.1.1",

"devDependencies": {
"@es-shims/api": "^2.3.0",
"@es-shims/api": "^2.3.1",
"@ljharb/eslint-config": "^21.0.1",

@@ -144,0 +144,0 @@ "aud": "^2.0.2",

@@ -22,2 +22,8 @@ 'use strict';

);
t['throws'](
function () { return new Iter(); },
TypeError,
name + ' throws when Construct-ed'
);
},

@@ -50,2 +56,17 @@ index: function () {

t.test('prototype descriptor', { skip: !defineProperties.supportsDescriptors }, function (pt) {
var desc = Object.getOwnPropertyDescriptor(Iterator, 'prototype');
pt.deepEqual(
desc,
{
configurable: false,
enumerable: false,
value: Iterator.prototype,
writable: false
}
);
pt.end();
});
module.exports.tests(Iterator, 'Iterator', t);

@@ -52,0 +73,0 @@

@@ -22,4 +22,14 @@ 'use strict';

t.ok(new Index() instanceof $Iterator, 'new index() instanceof Iterator');
t['throws'](
function () { Index(); }, // eslint-disable-line new-cap
TypeError,
'index throws when Call-ed'
);
t['throws'](
function () { return new Index(); },
TypeError,
'index throws when Construct-ed'
);
t.end();

@@ -26,0 +36,0 @@ });

@@ -12,2 +12,3 @@ 'use strict';

var hasSymbols = require('has-symbols/shams')();
var hasPropertyDescriptors = require('has-property-descriptors')();

@@ -58,2 +59,30 @@ var index = require('../Iterator.prototype.drop');

});
t.test('262: test/built-ins/Iterator/prototype/drop/get-return-method-throws', { skip: !hasPropertyDescriptors }, function (st) {
var badIterator = {
next: function next() {
return {
done: false,
value: 1
};
}
};
Object.defineProperty(badIterator, 'return', {
configurable: true,
enumerable: true,
get: function () { throw new SyntaxError(); }
});
var iter = drop(badIterator, 1);
iter.next();
st['throws'](
function () { iter['return'](); },
SyntaxError,
'gets the `return` method, whose getter throws'
);
st.end();
});
},

@@ -60,0 +89,0 @@ index: function () {

@@ -12,2 +12,3 @@ 'use strict';

var hasSymbols = require('has-symbols/shams')();
var hasPropertyDescriptors = require('has-property-descriptors')();

@@ -59,2 +60,126 @@ var index = require('../Iterator.prototype.filter');

});
t.test('262: test/built-ins/Iterator/prototype/filter/predicate-args', function (st) {
var g = function g() {
var arr = ['a', 'b', 'c'];
var i = 0;
return {
next: function () {
try {
return {
value: arr[i],
done: i >= arr.length
};
} finally {
i += 1;
}
}
};
};
var assertionCount = 0;
var iter = filter(
g(),
function (value, count) {
if (value === 'a') {
st.equal(count, 0, 'first iteration');
} else if (value === 'b') {
st.equal(count, 1, 'second iteration');
} else if (value === 'c') {
st.equal(count, 2, 'third iteration');
} else {
st.fail('unexpected iteration');
}
assertionCount += 1;
return true;
}
);
st.equal(assertionCount, 0, 'prior to iteration');
testIterator(iter, ['a', 'b', 'c'], st, 'iteration');
st.equal(assertionCount, 3);
st.end();
});
t.test('262: test/built-ins/Iterator/prototype/filter/predicate-throws', function (st) {
var returnCalls = 0;
var iter = {
next: function () {
return {
done: false,
value: 1
};
},
'return': function () {
returnCalls += 1;
return {};
}
};
var callbackCalls = 0;
var iterator = filter(iter, function () {
callbackCalls += 1;
throw new SyntaxError();
});
st['throws'](function () { iterator.next(); }, SyntaxError, 'next() throws');
st.equal(callbackCalls, 1);
st.equal(returnCalls, 1);
st.end();
});
t.test('262: test/built-ins/Iterator/prototype/filter/predicate-throws-then-closing-iterator-also-throws', function (st) {
var iter = {
next: function next() {
return {
done: false,
value: 1
};
},
'return': function () {
throw new EvalError();
}
};
var iterator = filter(iter, function () {
throw new SyntaxError();
});
st['throws'](
function () { iterator.next(); },
SyntaxError,
'when the predicate and return() both throw, the predicate’s exception wins'
);
st.end();
});
t.test('262: test/built-ins/Iterator/prototype/filter/get-return-method-throws', { skip: !hasPropertyDescriptors }, function (st) {
var badIterator = {
next: function next() {
return {
done: false,
value: 1
};
}
};
Object.defineProperty(badIterator, 'return', { get: function () { throw new SyntaxError(); } });
var iter = filter(badIterator, function () { return true; });
iter.next();
st['throws'](
function () { iter['return'](); },
SyntaxError,
'gets the `return` method, whose getter throws'
);
st.end();
});
},

@@ -61,0 +186,0 @@ index: function () {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc