source: frontend/node_modules/es-abstract/2020/AddEntriesFromIterable.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 1.4 KB
RevLine 
[9af201e]1'use strict';
2
3var $TypeError = require('es-errors/type');
4var isObject = require('es-object-atoms/isObject');
5var inspect = require('object-inspect');
6
7var Call = require('./Call');
8var Get = require('./Get');
9var GetIterator = require('./GetIterator');
10var IsCallable = require('./IsCallable');
11var IteratorClose = require('./IteratorClose');
12var IteratorStep = require('./IteratorStep');
13var IteratorValue = require('./IteratorValue');
14var ThrowCompletion = require('./ThrowCompletion');
15
16// https://262.ecma-international.org/10.0/#sec-add-entries-from-iterable
17
18module.exports = function AddEntriesFromIterable(target, iterable, adder) {
19 if (!IsCallable(adder)) {
20 throw new $TypeError('Assertion failed: `adder` is not callable');
21 }
22 if (iterable == null) {
23 throw new $TypeError('Assertion failed: `iterable` is present, and not nullish');
24 }
25 var iteratorRecord = GetIterator(iterable);
26 while (true) {
27 var next = IteratorStep(iteratorRecord);
28 if (!next) {
29 return target;
30 }
31 var nextItem = IteratorValue(next);
32 if (!isObject(nextItem)) {
33 var error = ThrowCompletion(new $TypeError('iterator next must return an Object, got ' + inspect(nextItem)));
34 return IteratorClose(iteratorRecord, error);
35 }
36 try {
37 var k = Get(nextItem, '0');
38 var v = Get(nextItem, '1');
39 Call(adder, target, [k, v]);
40 } catch (e) {
41 return IteratorClose(iteratorRecord, ThrowCompletion(e));
42 }
43 }
44};
Note: See TracBrowser for help on using the repository browser.