source: frontend/node_modules/es-abstract/2025/GetIteratorFlattenable.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
Line 
1'use strict';
2
3var $TypeError = require('es-errors/type');
4var isObject = require('es-object-atoms/isObject');
5
6var AdvanceStringIndex = require('./AdvanceStringIndex');
7var Call = require('./Call');
8var GetIteratorDirect = require('./GetIteratorDirect');
9var GetMethod = require('./GetMethod');
10var IsArray = require('./IsArray');
11
12var getIteratorMethod = require('../helpers/getIteratorMethod');
13
14// https://262.ecma-international.org/16.0/#sec-getiteratorflattenable
15
16module.exports = function GetIteratorFlattenable(obj, primitiveHandling) {
17 if (primitiveHandling !== 'REJECT-PRIMITIVES' && primitiveHandling !== 'ITERATE-STRING-PRIMITIVES') {
18 throw new $TypeError('Assertion failed: `stringHandling` must be "REJECT-PRIMITIVES" or "ITERATE-STRING-PRIMITIVES"');
19 }
20
21 if (!isObject(obj)) {
22 if (primitiveHandling === 'REJECT-PRIMITIVES' || typeof obj !== 'string') {
23 throw new $TypeError('obj must be an Object'); // step 1.a
24 }
25 }
26
27 // var method = GetMethod(obj, Symbol.iterator); // step 2
28 var method = getIteratorMethod(
29 {
30 AdvanceStringIndex: AdvanceStringIndex,
31 GetMethod: GetMethod,
32 IsArray: IsArray
33 },
34 obj
35 );
36
37 var iterator;
38 if (typeof method === 'undefined') { // step 3
39 iterator = obj; // step 3.a
40 } else { // step 4
41 iterator = Call(method, obj); // step 4.a
42 }
43
44 if (!isObject(iterator)) {
45 throw new $TypeError('iterator must be an Object'); // step 5
46 }
47 return GetIteratorDirect(iterator); // step 6
48};
Note: See TracBrowser for help on using the repository browser.