Sha256: 7865ece7e5b577baebea18226b6f4dbc82e41661f435fd1252c981c3d9790124
Contents?: true
Size: 1.46 KB
Versions: 108
Compression:
Stored size: 1.46 KB
Contents
'use strict'; var inspect = require('object-inspect'); var GetIntrinsic = require('get-intrinsic'); var $TypeError = GetIntrinsic('%TypeError%'); var Call = require('./Call'); var Get = require('./Get'); var GetIterator = require('./GetIterator'); var IsCallable = require('./IsCallable'); var IteratorClose = require('./IteratorClose'); var IteratorStep = require('./IteratorStep'); var IteratorValue = require('./IteratorValue'); var ThrowCompletion = require('./ThrowCompletion'); var Type = require('./Type'); // https://262.ecma-international.org/10.0/#sec-add-entries-from-iterable module.exports = function AddEntriesFromIterable(target, iterable, adder) { if (!IsCallable(adder)) { throw new $TypeError('Assertion failed: `adder` is not callable'); } if (iterable == null) { throw new $TypeError('Assertion failed: `iterable` is present, and not nullish'); } var iteratorRecord = GetIterator(iterable); while (true) { // eslint-disable-line no-constant-condition var next = IteratorStep(iteratorRecord); if (!next) { return target; } var nextItem = IteratorValue(next); if (Type(nextItem) !== 'Object') { var error = ThrowCompletion(new $TypeError('iterator next must return an Object, got ' + inspect(nextItem))); return IteratorClose(iteratorRecord, error); } try { var k = Get(nextItem, '0'); var v = Get(nextItem, '1'); Call(adder, target, [k, v]); } catch (e) { return IteratorClose(iteratorRecord, ThrowCompletion(e)); } } };
Version data entries
108 entries across 27 versions & 2 rubygems