source: frontend/node_modules/core-js/internals/iterator-window.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: 2.1 KB
Line 
1'use strict';
2var anObject = require('../internals/an-object');
3var call = require('../internals/function-call');
4var createIteratorProxy = require('../internals/iterator-create-proxy');
5var createIterResultObject = require('../internals/create-iter-result-object');
6var getIteratorDirect = require('../internals/get-iterator-direct');
7var iteratorClose = require('../internals/iterator-close');
8var uncurryThis = require('../internals/function-uncurry-this');
9
10var $RangeError = RangeError;
11var $TypeError = TypeError;
12var push = uncurryThis([].push);
13var slice = uncurryThis([].slice);
14var ALLOW_PARTIAL = 'allow-partial';
15
16var IteratorProxy = createIteratorProxy(function () {
17 var iterator = this.iterator;
18 var next = this.next;
19 var buffer = this.buffer;
20 var windowSize = this.windowSize;
21 var allowPartial = this.allowPartial;
22 var result, done;
23 while (true) {
24 result = anObject(call(next, iterator));
25 done = this.done = !!result.done;
26 if (allowPartial && done && buffer.length && buffer.length < windowSize) return createIterResultObject(slice(buffer, 0), false);
27 if (done) return createIterResultObject(undefined, true);
28
29 if (buffer.length === windowSize) this.buffer = buffer = slice(buffer, 1);
30 push(buffer, result.value);
31 if (buffer.length === windowSize) return createIterResultObject(slice(buffer, 0), false);
32 }
33}, false, true);
34
35// `Iterator.prototype.windows` and obsolete `Iterator.prototype.sliding` methods
36// https://github.com/tc39/proposal-iterator-chunking
37module.exports = function (O, windowSize, undersized) {
38 anObject(O);
39 if (typeof windowSize != 'number' || !windowSize || windowSize >>> 0 !== windowSize) {
40 return iteratorClose(O, 'throw', new $RangeError('`windowSize` must be integer in [1, 2^32-1]'));
41 }
42 if (undersized !== undefined && undersized !== 'only-full' && undersized !== ALLOW_PARTIAL) {
43 return iteratorClose(O, 'throw', new $TypeError('Incorrect `undersized` argument'));
44 }
45 return new IteratorProxy(getIteratorDirect(O), {
46 windowSize: windowSize,
47 buffer: [],
48 allowPartial: undersized === ALLOW_PARTIAL
49 });
50};
Note: See TracBrowser for help on using the repository browser.