source: frontend/node_modules/es-abstract/2024/GetIterator.js

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

Fix frontend appearance

  • Property mode set to 100644
File size: 1.7 KB
Line 
1'use strict';
2
3var GetIntrinsic = require('get-intrinsic');
4
5var $TypeError = require('es-errors/type');
6var $asyncIterator = GetIntrinsic('%Symbol.asyncIterator%', true);
7
8var inspect = require('object-inspect');
9var hasSymbols = require('has-symbols')();
10
11var AdvanceStringIndex = require('./AdvanceStringIndex');
12var CreateAsyncFromSyncIterator = require('./CreateAsyncFromSyncIterator');
13var GetIteratorFromMethod = require('./GetIteratorFromMethod');
14var GetMethod = require('./GetMethod');
15
16var ES = {
17 AdvanceStringIndex: AdvanceStringIndex,
18 GetMethod: GetMethod
19};
20
21var getIteratorMethod = require('../helpers/getIteratorMethod');
22
23// https://262.ecma-international.org/14.0/#sec-getiterator
24
25module.exports = function GetIterator(obj, kind) {
26 if (kind !== 'SYNC' && kind !== 'ASYNC') {
27 throw new $TypeError("Assertion failed: `kind` must be one of 'sync' or 'async', got " + inspect(kind));
28 }
29
30 var method;
31 if (kind === 'ASYNC') { // step 1
32 if (hasSymbols && $asyncIterator) {
33 method = GetMethod(obj, $asyncIterator); // step 1.a
34 }
35 }
36 if (typeof method === 'undefined') { // step 1.b
37 // var syncMethod = GetMethod(obj, $iterator); // step 1.b.i
38 var syncMethod = getIteratorMethod(ES, obj);
39 if (kind === 'ASYNC') {
40 if (typeof syncMethod === 'undefined') {
41 throw new $TypeError('iterator method is `undefined`'); // step 1.b.ii
42 }
43 var syncIteratorRecord = GetIteratorFromMethod(obj, syncMethod); // step 1.b.iii
44 return CreateAsyncFromSyncIterator(syncIteratorRecord); // step 1.b.iv
45 }
46 method = syncMethod; // step 2, kind of
47 }
48
49 if (typeof method === 'undefined') {
50 throw new $TypeError('iterator method is `undefined`'); // step 3
51 }
52 return GetIteratorFromMethod(obj, method); // step 4
53};
Note: See TracBrowser for help on using the repository browser.