source: frontend/node_modules/core-js-pure/internals/collection.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.3 KB
Line 
1'use strict';
2var $ = require('../internals/export');
3var globalThis = require('../internals/global-this');
4var InternalMetadataModule = require('../internals/internal-metadata');
5var call = require('../internals/function-call');
6var fails = require('../internals/fails');
7var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
8var iterate = require('../internals/iterate');
9var anInstance = require('../internals/an-instance');
10var isCallable = require('../internals/is-callable');
11var isObject = require('../internals/is-object');
12var isNullOrUndefined = require('../internals/is-null-or-undefined');
13var setToStringTag = require('../internals/set-to-string-tag');
14var defineProperty = require('../internals/object-define-property').f;
15var forEach = require('../internals/array-iteration').forEach;
16var DESCRIPTORS = require('../internals/descriptors');
17var InternalStateModule = require('../internals/internal-state');
18
19var setInternalState = InternalStateModule.set;
20var internalStateGetterFor = InternalStateModule.getterFor;
21
22module.exports = function (CONSTRUCTOR_NAME, wrapper, common) {
23 var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;
24 var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;
25 var ADDER = IS_MAP ? 'set' : 'add';
26 var NativeConstructor = globalThis[CONSTRUCTOR_NAME];
27 var NativePrototype = NativeConstructor && NativeConstructor.prototype;
28 var exported = {};
29 var Constructor;
30
31 if (!DESCRIPTORS || !isCallable(NativeConstructor)
32 || !(IS_WEAK || NativePrototype.forEach && !fails(function () { new NativeConstructor().entries().next(); }))
33 ) {
34 // create collection constructor
35 Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);
36 InternalMetadataModule.enable();
37 } else {
38 Constructor = wrapper(function (target, iterable) {
39 setInternalState(anInstance(target, Prototype), {
40 type: CONSTRUCTOR_NAME,
41 collection: new NativeConstructor()
42 });
43 if (!isNullOrUndefined(iterable)) iterate(iterable, target[ADDER], { that: target, AS_ENTRIES: IS_MAP });
44 });
45
46 var Prototype = Constructor.prototype;
47
48 var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);
49
50 forEach(['add', 'clear', 'delete', 'forEach', 'get', 'has', 'set', 'keys', 'values', 'entries'], function (KEY) {
51 var IS_ADDER = KEY === 'add' || KEY === 'set';
52 if (KEY in NativePrototype && !(IS_WEAK && KEY === 'clear')) {
53 createNonEnumerableProperty(Prototype, KEY, function (a, b) {
54 var that = this;
55 var collection = getInternalState(that).collection;
56 if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY === 'get' ? undefined : false;
57 var result = collection[KEY](KEY === 'forEach' ? function (value, key) {
58 call(a, b, value, key, that);
59 } : a === 0 ? 0 : a, b);
60 return IS_ADDER ? that : result;
61 });
62 }
63 });
64
65 IS_WEAK || defineProperty(Prototype, 'size', {
66 configurable: true,
67 get: function () {
68 return getInternalState(this).collection.size;
69 }
70 });
71 }
72
73 setToStringTag(Constructor, CONSTRUCTOR_NAME, false, true);
74
75 exported[CONSTRUCTOR_NAME] = Constructor;
76 $({ global: true, forced: true }, exported);
77
78 if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);
79
80 return Constructor;
81};
Note: See TracBrowser for help on using the repository browser.