source: frontend/node_modules/core-js/internals/iterator-zip.js

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

Fix frontend appearance

  • Property mode set to 100644
File size: 3.0 KB
Line 
1'use strict';
2var call = require('../internals/function-call');
3var uncurryThis = require('../internals/function-uncurry-this');
4var anObject = require('../internals/an-object');
5var createIteratorProxy = require('../internals/iterator-create-proxy');
6var iteratorCloseAll = require('../internals/iterator-close-all');
7
8var $TypeError = TypeError;
9var slice = uncurryThis([].slice);
10var push = uncurryThis([].push);
11var ITERATOR_IS_EXHAUSTED = 'Iterator is exhausted';
12var THROW = 'throw';
13
14// eslint-disable-next-line max-statements -- specification case
15var IteratorProxy = createIteratorProxy(function () {
16 var iterCount = this.iterCount;
17 if (!iterCount) {
18 this.done = true;
19 return;
20 }
21 var openIters = this.openIters;
22 var iters = this.iters;
23 var padding = this.padding;
24 var mode = this.mode;
25 var finishResults = this.finishResults;
26
27 var results = [];
28 var result, done;
29 for (var i = 0; i < iterCount; i++) {
30 var iter = iters[i];
31 if (iter === null) {
32 result = padding[i];
33 } else {
34 try {
35 result = anObject(call(iter.next, iter.iterator));
36 done = result.done;
37 result = result.value;
38 } catch (error) {
39 openIters[i] = undefined;
40 return iteratorCloseAll(openIters, THROW, error);
41 }
42 if (done) {
43 openIters[i] = undefined;
44 this.openItersCount--;
45 if (mode === 'shortest') {
46 this.done = true;
47 return iteratorCloseAll(openIters, 'normal', undefined);
48 }
49 if (mode === 'strict') {
50 if (i) {
51 return iteratorCloseAll(openIters, THROW, new $TypeError(ITERATOR_IS_EXHAUSTED));
52 }
53
54 var open, openDone;
55 for (var k = 1; k < iterCount; k++) {
56 // eslint-disable-next-line max-depth -- specification case
57 try {
58 open = anObject(call(iters[k].next, iters[k].iterator));
59 openDone = open.done;
60 open = open.value;
61 } catch (error) {
62 openIters[k] = undefined;
63 return iteratorCloseAll(openIters, THROW, error);
64 }
65 // eslint-disable-next-line max-depth -- specification case
66 if (openDone) {
67 openIters[k] = undefined;
68 this.openItersCount--;
69 } else {
70 return iteratorCloseAll(openIters, THROW, new $TypeError(ITERATOR_IS_EXHAUSTED));
71 }
72 }
73 this.done = true;
74 return;
75 }
76 if (!this.openItersCount) {
77 this.done = true;
78 return;
79 }
80 iters[i] = null;
81 result = padding[i];
82 }
83 }
84 push(results, result);
85 }
86
87 return finishResults ? finishResults(results) : results;
88});
89
90module.exports = function (iters, mode, padding, finishResults) {
91 var iterCount = iters.length;
92 return new IteratorProxy({
93 iters: iters,
94 iterCount: iterCount,
95 openIters: slice(iters, 0),
96 openItersCount: iterCount,
97 mode: mode,
98 padding: padding,
99 finishResults: finishResults
100 });
101};
Note: See TracBrowser for help on using the repository browser.