source: frontend/node_modules/core-js-pure/modules/esnext.iterator.zip-keyed.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.6 KB
Line 
1'use strict';
2var $ = require('../internals/export');
3var anObject = require('../internals/an-object');
4var anObjectOrUndefined = require('../internals/an-object-or-undefined');
5var createProperty = require('../internals/create-property');
6var call = require('../internals/function-call');
7var uncurryThis = require('../internals/function-uncurry-this');
8var getBuiltIn = require('../internals/get-built-in');
9var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');
10var getIteratorFlattenable = require('../internals/get-iterator-flattenable');
11var getModeOption = require('../internals/get-mode-option');
12var iteratorCloseAll = require('../internals/iterator-close-all');
13var iteratorZip = require('../internals/iterator-zip');
14var IS_PURE = require('../internals/is-pure');
15
16var create = getBuiltIn('Object', 'create');
17var ownKeys = getBuiltIn('Reflect', 'ownKeys');
18var push = uncurryThis([].push);
19var THROW = 'throw';
20
21// `Iterator.zipKeyed` method
22// https://github.com/tc39/proposal-joint-iteration
23$({ target: 'Iterator', stat: true, forced: IS_PURE }, {
24 zipKeyed: function zipKeyed(iterables /* , options */) {
25 anObject(iterables);
26 var options = arguments.length > 1 ? anObjectOrUndefined(arguments[1]) : undefined;
27 var mode = getModeOption(options);
28 var paddingOption = mode === 'longest' ? anObjectOrUndefined(options && options.padding) : undefined;
29
30 var iters = [];
31 var padding = [];
32 var allKeys = ownKeys(iterables);
33 var keys = [];
34 var propertyIsEnumerable = propertyIsEnumerableModule.f;
35 var i, key, value;
36 for (i = 0; i < allKeys.length; i++) try {
37 key = allKeys[i];
38 if (!call(propertyIsEnumerable, iterables, key)) continue;
39 value = iterables[key];
40 if (value !== undefined) {
41 push(keys, key);
42 push(iters, getIteratorFlattenable(value, false));
43 }
44 } catch (error) {
45 return iteratorCloseAll(iters, THROW, error);
46 }
47
48 var iterCount = iters.length;
49 if (mode === 'longest') {
50 if (paddingOption === undefined) {
51 for (i = 0; i < iterCount; i++) push(padding, undefined);
52 } else {
53 for (i = 0; i < keys.length; i++) {
54 try {
55 value = paddingOption[keys[i]];
56 } catch (error) {
57 return iteratorCloseAll(iters, THROW, error);
58 }
59 push(padding, value);
60 }
61 }
62 }
63
64 return iteratorZip(iters, mode, padding, function (results) {
65 var obj = create(null);
66 for (var j = 0; j < iterCount; j++) {
67 createProperty(obj, keys[j], results[j]);
68 }
69 return obj;
70 });
71 }
72});
Note: See TracBrowser for help on using the repository browser.