massive update, probably broken
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / core-js / internals / iterator-create-proxy.js
index 951db73219c4adf0cfe1d29feee040891fd73e50..9f0c5d2a67ad45b996d9868b3ef386c22b3b0482 100644 (file)
@@ -1,46 +1,51 @@
 'use strict';
-var path = require('../internals/path');
-var aFunction = require('../internals/a-function');
+var call = require('../internals/function-call');
+var aCallable = require('../internals/a-callable');
 var anObject = require('../internals/an-object');
 var create = require('../internals/object-create');
 var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
 var redefineAll = require('../internals/redefine-all');
 var wellKnownSymbol = require('../internals/well-known-symbol');
 var InternalStateModule = require('../internals/internal-state');
+var getMethod = require('../internals/get-method');
+var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;
 
 var setInternalState = InternalStateModule.set;
 var getInternalState = InternalStateModule.get;
 
 var TO_STRING_TAG = wellKnownSymbol('toStringTag');
 
-var $return = function (value) {
-  var iterator = getInternalState(this).iterator;
-  var $$return = iterator['return'];
-  return $$return === undefined ? { done: true, value: value } : anObject($$return.call(iterator, value));
-};
-
-var $throw = function (value) {
-  var iterator = getInternalState(this).iterator;
-  var $$throw = iterator['throw'];
-  if ($$throw === undefined) throw value;
-  return $$throw.call(iterator, value);
-};
-
 module.exports = function (nextHandler, IS_ITERATOR) {
   var IteratorProxy = function Iterator(state) {
-    state.next = aFunction(state.iterator.next);
+    state.next = aCallable(state.iterator.next);
     state.done = false;
+    state.ignoreArg = !IS_ITERATOR;
     setInternalState(this, state);
   };
 
-  IteratorProxy.prototype = redefineAll(create(path.Iterator.prototype), {
-    next: function next() {
+  IteratorProxy.prototype = redefineAll(create(IteratorPrototype), {
+    next: function next(arg) {
       var state = getInternalState(this);
-      var result = state.done ? undefined : nextHandler.apply(state, arguments);
+      var args = arguments.length ? [state.ignoreArg ? undefined : arg] : IS_ITERATOR ? [] : [undefined];
+      state.ignoreArg = false;
+      var result = state.done ? undefined : call(nextHandler, state, args);
       return { done: state.done, value: result };
     },
-    'return': $return,
-    'throw': $throw
+    'return': function (value) {
+      var state = getInternalState(this);
+      var iterator = state.iterator;
+      state.done = true;
+      var $$return = getMethod(iterator, 'return');
+      return { done: true, value: $$return ? anObject(call($$return, iterator, value)).value : value };
+    },
+    'throw': function (value) {
+      var state = getInternalState(this);
+      var iterator = state.iterator;
+      state.done = true;
+      var $$throw = getMethod(iterator, 'throw');
+      if ($$throw) return call($$throw, iterator, value);
+      throw value;
+    }
   });
 
   if (!IS_ITERATOR) {