source: frontend/node_modules/core-js/internals/async-from-sync-iterator.js

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

Fix frontend appearance

  • Property mode set to 100644
File size: 3.3 KB
Line 
1'use strict';
2var call = require('../internals/function-call');
3var anObject = require('../internals/an-object');
4var create = require('../internals/object-create');
5var getMethod = require('../internals/get-method');
6var defineBuiltIns = require('../internals/define-built-ins');
7var InternalStateModule = require('../internals/internal-state');
8var iteratorClose = require('../internals/iterator-close');
9var getBuiltIn = require('../internals/get-built-in');
10var AsyncIteratorPrototype = require('../internals/async-iterator-prototype');
11var createIterResultObject = require('../internals/create-iter-result-object');
12
13var Promise = getBuiltIn('Promise');
14
15var ASYNC_FROM_SYNC_ITERATOR = 'AsyncFromSyncIterator';
16var setInternalState = InternalStateModule.set;
17var getInternalState = InternalStateModule.getterFor(ASYNC_FROM_SYNC_ITERATOR);
18
19var asyncFromSyncIteratorContinuation = function (result, resolve, reject, syncIterator, closeOnRejection) {
20 var done = result.done;
21 Promise.resolve(result.value).then(function (value) {
22 resolve(createIterResultObject(value, done));
23 }, function (error) {
24 if (!done && closeOnRejection) {
25 try {
26 iteratorClose(syncIterator, 'throw', error);
27 } catch (error2) {
28 error = error2;
29 }
30 }
31
32 reject(error);
33 });
34};
35
36var AsyncFromSyncIterator = function AsyncIterator(iteratorRecord) {
37 iteratorRecord.type = ASYNC_FROM_SYNC_ITERATOR;
38 setInternalState(this, iteratorRecord);
39};
40
41AsyncFromSyncIterator.prototype = defineBuiltIns(create(AsyncIteratorPrototype), {
42 next: function next() {
43 var state = getInternalState(this);
44 var hasValue = arguments.length > 0;
45 var value = hasValue ? arguments[0] : undefined;
46 return new Promise(function (resolve, reject) {
47 var result = anObject(hasValue ? call(state.next, state.iterator, value) : call(state.next, state.iterator));
48 asyncFromSyncIteratorContinuation(result, resolve, reject, state.iterator, true);
49 });
50 },
51 'return': function () {
52 var state = getInternalState(this);
53 var iterator = state.iterator;
54 var hasValue = arguments.length > 0;
55 var value = hasValue ? arguments[0] : undefined;
56 return new Promise(function (resolve, reject) {
57 var $return = getMethod(iterator, 'return');
58 if ($return === undefined) return resolve(createIterResultObject(value, true));
59 var result = anObject(hasValue ? call($return, iterator, value) : call($return, iterator));
60 asyncFromSyncIteratorContinuation(result, resolve, reject, iterator);
61 });
62 },
63 'throw': function () {
64 var state = getInternalState(this);
65 var iterator = state.iterator;
66 var hasValue = arguments.length > 0;
67 var value = hasValue ? arguments[0] : undefined;
68 return new Promise(function (resolve, reject) {
69 var $throw = getMethod(iterator, 'throw');
70 if ($throw === undefined) {
71 try {
72 iteratorClose(iterator, 'normal');
73 } catch (error) {
74 return reject(error);
75 }
76 return reject(new TypeError('The iterator does not provide a throw method'));
77 }
78 var result = anObject(hasValue ? call($throw, iterator, value) : call($throw, iterator));
79 asyncFromSyncIteratorContinuation(result, resolve, reject, iterator, true);
80 });
81 }
82});
83
84module.exports = AsyncFromSyncIterator;
Note: See TracBrowser for help on using the repository browser.