massive update, probably broken
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / core-js / internals / async-from-sync-iterator.js
1 'use strict';
2 var apply = require('../internals/function-apply');
3 var anObject = require('../internals/an-object');
4 var create = require('../internals/object-create');
5 var getMethod = require('../internals/get-method');
6 var redefineAll = require('../internals/redefine-all');
7 var InternalStateModule = require('../internals/internal-state');
8 var getBuiltIn = require('../internals/get-built-in');
9 var AsyncIteratorPrototype = require('../internals/async-iterator-prototype');
10
11 var Promise = getBuiltIn('Promise');
12
13 var setInternalState = InternalStateModule.set;
14 var getInternalState = InternalStateModule.get;
15
16 var asyncFromSyncIteratorContinuation = function (result, resolve, reject) {
17   var done = result.done;
18   Promise.resolve(result.value).then(function (value) {
19     resolve({ done: done, value: value });
20   }, reject);
21 };
22
23 var AsyncFromSyncIterator = function AsyncIterator(iterator) {
24   setInternalState(this, {
25     iterator: anObject(iterator),
26     next: iterator.next
27   });
28 };
29
30 AsyncFromSyncIterator.prototype = redefineAll(create(AsyncIteratorPrototype), {
31   next: function next(arg) {
32     var state = getInternalState(this);
33     var hasArg = !!arguments.length;
34     return new Promise(function (resolve, reject) {
35       var result = anObject(apply(state.next, state.iterator, hasArg ? [arg] : []));
36       asyncFromSyncIteratorContinuation(result, resolve, reject);
37     });
38   },
39   'return': function (arg) {
40     var iterator = getInternalState(this).iterator;
41     var hasArg = !!arguments.length;
42     return new Promise(function (resolve, reject) {
43       var $return = getMethod(iterator, 'return');
44       if ($return === undefined) return resolve({ done: true, value: arg });
45       var result = anObject(apply($return, iterator, hasArg ? [arg] : []));
46       asyncFromSyncIteratorContinuation(result, resolve, reject);
47     });
48   },
49   'throw': function (arg) {
50     var iterator = getInternalState(this).iterator;
51     var hasArg = !!arguments.length;
52     return new Promise(function (resolve, reject) {
53       var $throw = getMethod(iterator, 'throw');
54       if ($throw === undefined) return reject(arg);
55       var result = anObject(apply($throw, iterator, hasArg ? [arg] : []));
56       asyncFromSyncIteratorContinuation(result, resolve, reject);
57     });
58   }
59 });
60
61 module.exports = AsyncFromSyncIterator;