/
drndsv
/
react
Обзор
Документация
Войти
/
drndsv
/
react
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
node_modules/es-abstract/2023/GetIterator.js
56 строк
2 KB
drndsv
Initial commit
14 апр 2025, 22:53
14 апр 2025, 22:53
641ac8a
Код
Авторство
О чём код?
'use strict'; var GetIntrinsic = require('get-intrinsic'); var $TypeError = GetIntrinsic('%TypeError%'); var $asyncIterator = GetIntrinsic('%Symbol.asyncIterator%', true); var inspect = require('object-inspect'); var hasSymbols = require('has-symbols')(); var AdvanceStringIndex = require('./AdvanceStringIndex'); var CreateAsyncFromSyncIterator = require('./CreateAsyncFromSyncIterator'); var GetIteratorFromMethod = require('./GetIteratorFromMethod'); var GetMethod = require('./GetMethod'); var IsArray = require('./IsArray'); var getIteratorMethod = require('../helpers/getIteratorMethod'); // https://262.ecma-international.org/14.0/#sec-getiterator module.exports = function GetIterator(obj, kind) { if (kind !== 'sync' && kind !== 'async') { throw new $TypeError("Assertion failed: `kind` must be one of 'sync' or 'async', got " + inspect(kind)); } var method; if (kind === 'async') { // step 1 if (hasSymbols && $asyncIterator) { method = GetMethod(obj, $asyncIterator); // step 1.a } } if (typeof method === 'undefined') { // step 1.b // var syncMethod = GetMethod(obj, $iterator); // step 1.b.i var syncMethod = getIteratorMethod( { AdvanceStringIndex: AdvanceStringIndex, GetMethod: GetMethod, IsArray: IsArray }, obj ); if (kind === 'async') { if (typeof syncMethod === 'undefined') { throw new $TypeError('iterator method is `undefined`'); // step 1.b.ii } var syncIteratorRecord = GetIteratorFromMethod(obj, syncMethod); // step 1.b.iii return CreateAsyncFromSyncIterator(syncIteratorRecord); // step 1.b.iv } method = syncMethod; // step 2, kind of } if (typeof method === 'undefined') { throw new $TypeError('iterator method is `undefined`'); // step 3 } return GetIteratorFromMethod(obj, method); // step 4 };