aboutsummaryrefslogtreecommitdiff
path: root/node_modules/core-js/modules/_for-of.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/core-js/modules/_for-of.js')
-rw-r--r--node_modules/core-js/modules/_for-of.js25
1 files changed, 25 insertions, 0 deletions
diff --git a/node_modules/core-js/modules/_for-of.js b/node_modules/core-js/modules/_for-of.js
new file mode 100644
index 00000000..9ed22818
--- /dev/null
+++ b/node_modules/core-js/modules/_for-of.js
@@ -0,0 +1,25 @@
+var ctx = require('./_ctx');
+var call = require('./_iter-call');
+var isArrayIter = require('./_is-array-iter');
+var anObject = require('./_an-object');
+var toLength = require('./_to-length');
+var getIterFn = require('./core.get-iterator-method');
+var BREAK = {};
+var RETURN = {};
+var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
+ var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
+ var f = ctx(fn, that, entries ? 2 : 1);
+ var index = 0;
+ var length, step, iterator, result;
+ if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
+ // fast case for arrays with default iterator
+ if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
+ result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
+ if (result === BREAK || result === RETURN) return result;
+ } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
+ result = call(iterator, f, step.value, entries);
+ if (result === BREAK || result === RETURN) return result;
+ }
+};
+exports.BREAK = BREAK;
+exports.RETURN = RETURN;