]>
git.r.bdr.sh - rbdr/dotfiles/blob - atom/packages/vim-mode/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/polyfill.js
735eb676b23c9b51032f95c2ae7c5aac6363c79d
4 , validateSymbol
= require('./validate-symbol')
6 , create
= Object
.create
, defineProperties
= Object
.defineProperties
7 , defineProperty
= Object
.defineProperty
, objPrototype
= Object
.prototype
8 , Symbol
, HiddenSymbol
, globalSymbols
= create(null);
10 var generateName
= (function () {
11 var created
= create(null);
12 return function (desc
) {
13 var postfix
= 0, name
;
14 while (created
[desc
+ (postfix
|| '')]) ++postfix
;
15 desc
+= (postfix
|| '');
18 defineProperty(objPrototype
, name
, d
.gs(null, function (value
) {
19 defineProperty(this, name
, d(value
));
25 HiddenSymbol
= function Symbol(description
) {
26 if (this instanceof HiddenSymbol
) throw new TypeError('TypeError: Symbol is not a constructor');
27 return Symbol(description
);
29 module
.exports
= Symbol
= function Symbol(description
) {
31 if (this instanceof Symbol
) throw new TypeError('TypeError: Symbol is not a constructor');
32 symbol
= create(HiddenSymbol
.prototype);
33 description
= (description
=== undefined ? '' : String(description
));
34 return defineProperties(symbol
, {
35 __description__: d('', description
),
36 __name__: d('', generateName(description
))
39 defineProperties(Symbol
, {
40 for: d(function (key
) {
41 if (globalSymbols
[key
]) return globalSymbols
[key
];
42 return (globalSymbols
[key
] = Symbol(String(key
)));
44 keyFor: d(function (s
) {
47 for (key
in globalSymbols
) if (globalSymbols
[key
] === s
) return key
;
49 hasInstance: d('', Symbol('hasInstance')),
50 isConcatSpreadable: d('', Symbol('isConcatSpreadable')),
51 iterator: d('', Symbol('iterator')),
52 match: d('', Symbol('match')),
53 replace: d('', Symbol('replace')),
54 search: d('', Symbol('search')),
55 species: d('', Symbol('species')),
56 split: d('', Symbol('split')),
57 toPrimitive: d('', Symbol('toPrimitive')),
58 toStringTag: d('', Symbol('toStringTag')),
59 unscopables: d('', Symbol('unscopables'))
61 defineProperties(HiddenSymbol
.prototype, {
62 constructor: d(Symbol
),
63 toString: d('', function () { return this.__name__
; })
66 defineProperties(Symbol
.prototype, {
67 toString: d(function () { return 'Symbol (' + validateSymbol(this).__description__
+ ')'; }),
68 valueOf: d(function () { return validateSymbol(this); })
70 defineProperty(Symbol
.prototype, Symbol
.toPrimitive
, d('',
71 function () { return validateSymbol(this); }));
72 defineProperty(Symbol
.prototype, Symbol
.toStringTag
, d('c', 'Symbol'));
74 defineProperty(HiddenSymbol
.prototype, Symbol
.toPrimitive
,
75 d('c', Symbol
.prototype[Symbol
.toPrimitive
]));
76 defineProperty(HiddenSymbol
.prototype, Symbol
.toStringTag
,
77 d('c', Symbol
.prototype[Symbol
.toStringTag
]));