node_modules/es-abstract/2020/CreateAsyncFromSyncIterator.js in immosquare-cleaner-0.1.32 vs node_modules/es-abstract/2020/CreateAsyncFromSyncIterator.js in immosquare-cleaner-0.1.38

- old
+ new

@@ -1,33 +1,39 @@ 'use strict'; var GetIntrinsic = require('get-intrinsic'); -var $TypeError = GetIntrinsic('%TypeError%'); +var $SyntaxError = require('es-errors/syntax'); +var $TypeError = require('es-errors/type'); +var $Promise = GetIntrinsic('%Promise%', true); var AsyncFromSyncIteratorContinuation = require('./AsyncFromSyncIteratorContinuation'); var Call = require('./Call'); var CreateIterResultObject = require('./CreateIterResultObject'); var Get = require('./Get'); var GetMethod = require('./GetMethod'); var IteratorNext = require('./IteratorNext'); var OrdinaryObjectCreate = require('./OrdinaryObjectCreate'); var Type = require('./Type'); +var isIteratorRecord = require('../helpers/records/iterator-record'); + var SLOT = require('internal-slot'); -var assertRecord = require('../helpers/assertRecord'); - var $AsyncFromSyncIteratorPrototype = GetIntrinsic('%AsyncFromSyncIteratorPrototype%', true) || { next: function next(value) { + if (!$Promise) { + throw new $SyntaxError('This environment does not support Promises.'); + } + var O = this; // step 1 SLOT.assert(O, '[[SyncIteratorRecord]]'); // step 2 var argsLength = arguments.length; - return new Promise(function (resolve) { // step 3 + return new $Promise(function (resolve) { // step 3 var syncIteratorRecord = SLOT.get(O, '[[SyncIteratorRecord]]'); // step 4 var result; if (argsLength > 0) { result = IteratorNext(syncIteratorRecord['[[Iterator]]'], value); // step 5.a } else { // step 6 @@ -35,18 +41,22 @@ } resolve(AsyncFromSyncIteratorContinuation(result)); // step 8 }); }, 'return': function () { + if (!$Promise) { + throw new $SyntaxError('This environment does not support Promises.'); + } + var O = this; // step 1 SLOT.assert(O, '[[SyncIteratorRecord]]'); // step 2 var valueIsPresent = arguments.length > 0; var value = valueIsPresent ? arguments[0] : void undefined; - return new Promise(function (resolve, reject) { // step 3 + return new $Promise(function (resolve, reject) { // step 3 var syncIterator = SLOT.get(O, '[[SyncIteratorRecord]]')['[[Iterator]]']; // step 4 var iteratorReturn = GetMethod(syncIterator, 'return'); // step 5 if (typeof iteratorReturn === 'undefined') { // step 7 var iterResult = CreateIterResultObject(value, true); // step 7.a @@ -66,18 +76,22 @@ resolve(AsyncFromSyncIteratorContinuation(result)); // step 12 }); }, 'throw': function () { + if (!$Promise) { + throw new $SyntaxError('This environment does not support Promises.'); + } + var O = this; // step 1 SLOT.assert(O, '[[SyncIteratorRecord]]'); // step 2 var valueIsPresent = arguments.length > 0; var value = valueIsPresent ? arguments[0] : void undefined; - return new Promise(function (resolve, reject) { // step 3 + return new $Promise(function (resolve, reject) { // step 3 var syncIterator = SLOT.get(O, '[[SyncIteratorRecord]]')['[[Iterator]]']; // step 4 var throwMethod = GetMethod(syncIterator, 'throw'); // step 5 if (typeof throwMethod === 'undefined') { // step 7 @@ -102,10 +116,12 @@ }; // https://262.ecma-international.org/11.0/#sec-createasyncfromsynciterator module.exports = function CreateAsyncFromSyncIterator(syncIteratorRecord) { - assertRecord(Type, 'Iterator Record', 'syncIteratorRecord', syncIteratorRecord); + if (!isIteratorRecord(syncIteratorRecord)) { + throw new $TypeError('Assertion failed: `syncIteratorRecord` must be an Iterator Record'); + } // var asyncIterator = OrdinaryObjectCreate(%AsyncFromSyncIteratorPrototype%, « [[SyncIteratorRecord]] »); // step 1 var asyncIterator = OrdinaryObjectCreate($AsyncFromSyncIteratorPrototype); SLOT.set(asyncIterator, '[[SyncIteratorRecord]]', syncIteratorRecord); // step 2