core-js 0.8.0 → 0.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/README.md +61 -25
  2. package/bower.json +1 -1
  3. package/build/build.ls +22 -12
  4. package/client/core.js +3376 -2951
  5. package/client/core.min.js +3 -3
  6. package/client/core.min.js.map +1 -1
  7. package/client/library.js +3294 -2877
  8. package/client/library.min.js +3 -4
  9. package/client/library.min.js.map +1 -1
  10. package/client/shim.js +2775 -2402
  11. package/client/shim.min.js +3 -3
  12. package/client/shim.min.js.map +1 -1
  13. package/es7/index.js +1 -0
  14. package/es7/set.js +2 -0
  15. package/fn/set.js +1 -0
  16. package/library/es7/index.js +1 -0
  17. package/library/es7/set.js +2 -0
  18. package/library/fn/set.js +1 -0
  19. package/library/modules/$.assign.js +3 -1
  20. package/library/modules/$.collection-strong.js +3 -3
  21. package/library/modules/$.collection-weak.js +5 -5
  22. package/library/modules/$.collection.js +1 -3
  23. package/library/modules/$.iter-detect.js +19 -0
  24. package/library/modules/$.iter.js +0 -26
  25. package/library/modules/$.own-keys.js +1 -1
  26. package/library/modules/$.set-proto.js +22 -16
  27. package/library/modules/$.task.js +9 -6
  28. package/library/modules/es5.js +2 -1
  29. package/library/modules/es6.array.copy-within.js +1 -1
  30. package/library/modules/es6.array.fill.js +1 -1
  31. package/library/modules/es6.array.from.js +2 -2
  32. package/library/modules/es6.array.of.js +1 -1
  33. package/library/modules/es6.map.js +2 -2
  34. package/library/modules/es6.math.js +34 -20
  35. package/library/modules/es6.number.statics.js +6 -5
  36. package/library/modules/es6.object.is.js +1 -1
  37. package/library/modules/es6.object.set-prototype-of.js +1 -1
  38. package/library/modules/es6.object.statics-accept-primitives.js +2 -2
  39. package/library/modules/es6.object.to-string.js +1 -1
  40. package/library/modules/es6.promise.js +113 -107
  41. package/library/modules/es6.reflect.js +24 -19
  42. package/library/modules/es6.set.js +1 -1
  43. package/library/modules/es6.string.ends-with.js +1 -1
  44. package/library/modules/es6.string.from-code-point.js +1 -1
  45. package/library/modules/es6.string.includes.js +1 -1
  46. package/library/modules/es6.string.raw.js +4 -4
  47. package/library/modules/es6.string.repeat.js +1 -1
  48. package/library/modules/es6.string.starts-with.js +1 -1
  49. package/library/modules/es6.symbol.js +7 -4
  50. package/library/modules/es6.weak-map.js +2 -2
  51. package/library/modules/es6.weak-set.js +1 -1
  52. package/library/modules/es7.object.get-own-property-descriptors.js +1 -1
  53. package/library/modules/es7.object.to-array.js +1 -1
  54. package/library/modules/es7.set.to-json.js +10 -0
  55. package/library/modules/js.array.statics.js +2 -2
  56. package/library/modules/web.dom.iterable.js +7 -6
  57. package/library/modules/web.timers.js +8 -7
  58. package/library/shim.js +1 -0
  59. package/modules/$.assign.js +3 -1
  60. package/modules/$.collection-strong.js +3 -3
  61. package/modules/$.collection-weak.js +5 -5
  62. package/modules/$.collection.js +1 -3
  63. package/modules/$.iter-detect.js +19 -0
  64. package/modules/$.iter.js +0 -26
  65. package/modules/$.own-keys.js +1 -1
  66. package/modules/$.set-proto.js +22 -16
  67. package/modules/$.task.js +9 -6
  68. package/modules/es5.js +2 -1
  69. package/modules/es6.array.copy-within.js +1 -1
  70. package/modules/es6.array.fill.js +1 -1
  71. package/modules/es6.array.from.js +2 -2
  72. package/modules/es6.array.of.js +1 -1
  73. package/modules/es6.map.js +2 -2
  74. package/modules/es6.math.js +34 -20
  75. package/modules/es6.number.statics.js +6 -5
  76. package/modules/es6.object.is.js +1 -1
  77. package/modules/es6.object.set-prototype-of.js +1 -1
  78. package/modules/es6.object.statics-accept-primitives.js +2 -2
  79. package/modules/es6.object.to-string.js +1 -1
  80. package/modules/es6.promise.js +113 -107
  81. package/modules/es6.reflect.js +24 -19
  82. package/modules/es6.set.js +1 -1
  83. package/modules/es6.string.ends-with.js +1 -1
  84. package/modules/es6.string.from-code-point.js +1 -1
  85. package/modules/es6.string.includes.js +1 -1
  86. package/modules/es6.string.raw.js +4 -4
  87. package/modules/es6.string.repeat.js +1 -1
  88. package/modules/es6.string.starts-with.js +1 -1
  89. package/modules/es6.symbol.js +7 -4
  90. package/modules/es6.weak-map.js +2 -2
  91. package/modules/es6.weak-set.js +1 -1
  92. package/modules/es7.object.get-own-property-descriptors.js +1 -1
  93. package/modules/es7.object.to-array.js +1 -1
  94. package/modules/es7.set.to-json.js +10 -0
  95. package/modules/js.array.statics.js +2 -2
  96. package/modules/web.dom.iterable.js +7 -6
  97. package/modules/web.timers.js +8 -7
  98. package/package.json +8 -6
  99. package/shim.js +1 -0
  100. package/library/modules/core.iterator.js +0 -146
  101. package/modules/core.iterator.js +0 -146
@@ -12,106 +12,108 @@ var $ = require('./$')
12
12
  , global = $.g
13
13
  , process = global.process
14
14
  , asap = process && process.nextTick || require('./$.task').set
15
- , Promise = global[PROMISE]
16
- , Base = Promise
15
+ , P = global[PROMISE]
16
+ , Base = P
17
17
  , isFunction = $.isFunction
18
18
  , isObject = $.isObject
19
19
  , assertFunction = assert.fn
20
20
  , assertObject = assert.obj
21
21
  , test;
22
+
23
+ // helpers
22
24
  function getConstructor(C){
23
25
  var S = assertObject(C)[SPECIES];
24
26
  return S != undefined ? S : C;
25
27
  }
26
- isFunction(Promise) && isFunction(Promise.resolve)
27
- && Promise.resolve(test = new Promise(function(){})) == test
28
- || function(){
29
- function isThenable(it){
30
- var then;
31
- if(isObject(it))then = it.then;
32
- return isFunction(then) ? then : false;
33
- }
34
- function handledRejectionOrHasOnRejected(promise){
35
- var record = promise[RECORD]
36
- , chain = record.c
37
- , i = 0
38
- , react;
39
- if(record.h)return true;
40
- while(chain.length > i){
41
- react = chain[i++];
42
- if(react.fail || handledRejectionOrHasOnRejected(react.P))return true;
43
- }
44
- }
45
- function notify(record, isReject){
46
- var chain = record.c;
47
- if(isReject || chain.length)asap(function(){
48
- var promise = record.p
49
- , value = record.v
50
- , ok = record.s == 1
51
- , i = 0;
52
- if(isReject && !handledRejectionOrHasOnRejected(promise)){
53
- setTimeout(function(){
54
- if(!handledRejectionOrHasOnRejected(promise)){
55
- if(cof(process) == 'process'){
56
- process.emit('unhandledRejection', value, promise);
57
- } else if(global.console && isFunction(console.error)){
58
- console.error('Unhandled promise rejection', value);
59
- }
28
+ function isThenable(it){
29
+ var then;
30
+ if(isObject(it))then = it.then;
31
+ return isFunction(then) ? then : false;
32
+ }
33
+ function isUnhandled(promise){
34
+ var record = promise[RECORD]
35
+ , chain = record.c
36
+ , i = 0
37
+ , react;
38
+ if(record.h)return false;
39
+ while(chain.length > i){
40
+ react = chain[i++];
41
+ if(react.fail || !isUnhandled(react.P))return false;
42
+ } return true;
43
+ }
44
+ function notify(record, isReject){
45
+ var chain = record.c;
46
+ if(isReject || chain.length)asap(function(){
47
+ var promise = record.p
48
+ , value = record.v
49
+ , ok = record.s == 1
50
+ , i = 0;
51
+ if(isReject && isUnhandled(promise)){
52
+ setTimeout(function(){
53
+ if(isUnhandled(promise)){
54
+ if(cof(process) == 'process'){
55
+ process.emit('unhandledRejection', value, promise);
56
+ } else if(global.console && isFunction(console.error)){
57
+ console.error('Unhandled promise rejection', value);
60
58
  }
61
- }, 1e3);
62
- } else while(chain.length > i)!function(react){
63
- var cb = ok ? react.ok : react.fail
64
- , ret, then;
65
- try {
66
- if(cb){
67
- if(!ok)record.h = true;
68
- ret = cb === true ? value : cb(value);
69
- if(ret === react.P){
70
- react.rej(TypeError(PROMISE + '-chain cycle'));
71
- } else if(then = isThenable(ret)){
72
- then.call(ret, react.res, react.rej);
73
- } else react.res(ret);
74
- } else react.rej(value);
75
- } catch(err){
76
- react.rej(err);
77
59
  }
78
- }(chain[i++]);
79
- chain.length = 0;
80
- });
81
- }
82
- function reject(value){
83
- var record = this;
84
- if(record.d)return;
85
- record.d = true;
86
- record = record.r || record; // unwrap
87
- record.v = value;
88
- record.s = 2;
89
- notify(record, true);
90
- }
91
- function resolve(value){
92
- var record = this
93
- , then, wrapper;
94
- if(record.d)return;
95
- record.d = true;
96
- record = record.r || record; // unwrap
97
- try {
98
- if(then = isThenable(value)){
99
- wrapper = {r: record, d: false}; // wrap
100
- then.call(value, ctx(resolve, wrapper, 1), ctx(reject, wrapper, 1));
101
- } else {
102
- record.v = value;
103
- record.s = 1;
104
- notify(record);
60
+ }, 1e3);
61
+ } else while(chain.length > i)!function(react){
62
+ var cb = ok ? react.ok : react.fail
63
+ , ret, then;
64
+ try {
65
+ if(cb){
66
+ if(!ok)record.h = true;
67
+ ret = cb === true ? value : cb(value);
68
+ if(ret === react.P){
69
+ react.rej(TypeError(PROMISE + '-chain cycle'));
70
+ } else if(then = isThenable(ret)){
71
+ then.call(ret, react.res, react.rej);
72
+ } else react.res(ret);
73
+ } else react.rej(value);
74
+ } catch(err){
75
+ react.rej(err);
105
76
  }
106
- } catch(err){
107
- reject.call(wrapper || {r: record, d: false}, err); // wrap
77
+ }(chain[i++]);
78
+ chain.length = 0;
79
+ });
80
+ }
81
+ function $reject(value){
82
+ var record = this;
83
+ if(record.d)return;
84
+ record.d = true;
85
+ record = record.r || record; // unwrap
86
+ record.v = value;
87
+ record.s = 2;
88
+ notify(record, true);
89
+ }
90
+ function $resolve(value){
91
+ var record = this
92
+ , then, wrapper;
93
+ if(record.d)return;
94
+ record.d = true;
95
+ record = record.r || record; // unwrap
96
+ try {
97
+ if(then = isThenable(value)){
98
+ wrapper = {r: record, d: false}; // wrap
99
+ then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
100
+ } else {
101
+ record.v = value;
102
+ record.s = 1;
103
+ notify(record);
108
104
  }
105
+ } catch(err){
106
+ $reject.call(wrapper || {r: record, d: false}, err); // wrap
109
107
  }
108
+ }
109
+
110
+ // constructor polyfill
111
+ if(!(isFunction(P) && isFunction(P.resolve) && P.resolve(test = new P(function(){})) == test)){
110
112
  // 25.4.3.1 Promise(executor)
111
- Promise = function(executor){
113
+ P = function Promise(executor){
112
114
  assertFunction(executor);
113
115
  var record = {
114
- p: assert.inst(this, Promise, PROMISE), // <- promise
116
+ p: assert.inst(this, P, PROMISE), // <- promise
115
117
  c: [], // <- chain
116
118
  s: 0, // <- state
117
119
  d: false, // <- done
@@ -120,79 +122,83 @@ isFunction(Promise) && isFunction(Promise.resolve)
120
122
  };
121
123
  $.hide(this, RECORD, record);
122
124
  try {
123
- executor(ctx(resolve, record, 1), ctx(reject, record, 1));
125
+ executor(ctx($resolve, record, 1), ctx($reject, record, 1));
124
126
  } catch(err){
125
- reject.call(record, err);
127
+ $reject.call(record, err);
126
128
  }
127
129
  };
128
- $.mix(Promise.prototype, {
130
+ $.mix(P.prototype, {
129
131
  // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
130
- then: function(onFulfilled, onRejected){
132
+ then: function then(onFulfilled, onRejected){
131
133
  var S = assertObject(assertObject(this).constructor)[SPECIES];
132
134
  var react = {
133
135
  ok: isFunction(onFulfilled) ? onFulfilled : true,
134
136
  fail: isFunction(onRejected) ? onRejected : false
135
137
  };
136
- var P = react.P = new (S != undefined ? S : Promise)(function(res, rej){
138
+ var promise = react.P = new (S != undefined ? S : P)(function(res, rej){
137
139
  react.res = assertFunction(res);
138
140
  react.rej = assertFunction(rej);
139
141
  });
140
142
  var record = this[RECORD];
141
143
  record.c.push(react);
142
144
  record.s && notify(record);
143
- return P;
145
+ return promise;
144
146
  },
145
147
  // 25.4.5.1 Promise.prototype.catch(onRejected)
146
148
  'catch': function(onRejected){
147
149
  return this.then(undefined, onRejected);
148
150
  }
149
151
  });
150
- }();
151
- $def($def.G + $def.W + $def.F * (Promise != Base), {Promise: Promise});
152
+ }
153
+
154
+ // export
155
+ $def($def.G + $def.W + $def.F * (P != Base), {Promise: P});
156
+ cof.set(P, PROMISE);
157
+ require('./$.species')(P);
158
+
159
+ // statics
152
160
  $def($def.S, PROMISE, {
153
161
  // 25.4.4.5 Promise.reject(r)
154
- reject: function(r){
162
+ reject: function reject(r){
155
163
  return new (getConstructor(this))(function(res, rej){
156
164
  rej(r);
157
165
  });
158
166
  },
159
167
  // 25.4.4.6 Promise.resolve(x)
160
- resolve: function(x){
168
+ resolve: function resolve(x){
161
169
  return isObject(x) && RECORD in x && $.getProto(x) === this.prototype
162
170
  ? x : new (getConstructor(this))(function(res){
163
171
  res(x);
164
172
  });
165
173
  }
166
174
  });
167
- $def($def.S + $def.F * ($iter.fail(function(iter){
168
- Promise.all(iter)['catch'](function(){});
169
- }) || $iter.DANGER_CLOSING), PROMISE, {
175
+ $def($def.S + $def.F * !require('./$.iter-detect')(function(iter){
176
+ P.all(iter)['catch'](function(){});
177
+ }), PROMISE, {
170
178
  // 25.4.4.1 Promise.all(iterable)
171
- all: function(iterable){
179
+ all: function all(iterable){
172
180
  var C = getConstructor(this)
173
181
  , values = [];
174
- return new C(function(resolve, reject){
182
+ return new C(function(res, rej){
175
183
  forOf(iterable, false, values.push, values);
176
184
  var remaining = values.length
177
185
  , results = Array(remaining);
178
186
  if(remaining)$.each.call(values, function(promise, index){
179
187
  C.resolve(promise).then(function(value){
180
188
  results[index] = value;
181
- --remaining || resolve(results);
182
- }, reject);
189
+ --remaining || res(results);
190
+ }, rej);
183
191
  });
184
- else resolve(results);
192
+ else res(results);
185
193
  });
186
194
  },
187
195
  // 25.4.4.4 Promise.race(iterable)
188
- race: function(iterable){
196
+ race: function race(iterable){
189
197
  var C = getConstructor(this);
190
- return new C(function(resolve, reject){
198
+ return new C(function(res, rej){
191
199
  forOf(iterable, false, function(promise){
192
- C.resolve(promise).then(resolve, reject);
200
+ C.resolve(promise).then(res, rej);
193
201
  });
194
202
  });
195
203
  }
196
- });
197
- cof.set(Promise, PROMISE);
198
- require('./$.species')(Promise);
204
+ });
@@ -10,8 +10,8 @@ var $ = require('./$')
10
10
  , setDesc = $.setDesc
11
11
  , getProto = $.getProto
12
12
  , apply = Function.apply
13
- , assertObject = assert.obj
14
- , isExtensible = Object.isExtensible || $.it;
13
+ , assertObject = assert.obj
14
+ , _isExtensible = Object.isExtensible || $.it;
15
15
  function Enumerate(iterated){
16
16
  var keys = [], key;
17
17
  for(key in iterated)keys.push(key);
@@ -39,7 +39,7 @@ function wrap(fn){
39
39
  };
40
40
  }
41
41
 
42
- function reflectGet(target, propertyKey/*, receiver*/){
42
+ function get(target, propertyKey/*, receiver*/){
43
43
  var receiver = arguments.length < 3 ? target : arguments[2]
44
44
  , desc = getDesc(assertObject(target), propertyKey), proto;
45
45
  if(desc)return $.has(desc, 'value')
@@ -48,16 +48,16 @@ function reflectGet(target, propertyKey/*, receiver*/){
48
48
  ? undefined
49
49
  : desc.get.call(receiver);
50
50
  return isObject(proto = getProto(target))
51
- ? reflectGet(proto, propertyKey, receiver)
51
+ ? get(proto, propertyKey, receiver)
52
52
  : undefined;
53
53
  }
54
- function reflectSet(target, propertyKey, V/*, receiver*/){
54
+ function set(target, propertyKey, V/*, receiver*/){
55
55
  var receiver = arguments.length < 4 ? target : arguments[3]
56
56
  , ownDesc = getDesc(assertObject(target), propertyKey)
57
57
  , existingDescriptor, proto;
58
58
  if(!ownDesc){
59
59
  if(isObject(proto = getProto(target))){
60
- return reflectSet(proto, propertyKey, V, receiver);
60
+ return set(proto, propertyKey, V, receiver);
61
61
  }
62
62
  ownDesc = $.desc(0);
63
63
  }
@@ -75,7 +75,7 @@ var reflect = {
75
75
  // 26.1.1 Reflect.apply(target, thisArgument, argumentsList)
76
76
  apply: require('./$.ctx')(Function.call, apply, 3),
77
77
  // 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
78
- construct: function(target, argumentsList /*, newTarget*/){
78
+ construct: function construct(target, argumentsList /*, newTarget*/){
79
79
  var proto = assert.fn(arguments.length < 3 ? target : arguments[2]).prototype
80
80
  , instance = $.create(isObject(proto) ? proto : Object.prototype)
81
81
  , result = apply.call(target, instance, argumentsList);
@@ -84,43 +84,48 @@ var reflect = {
84
84
  // 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)
85
85
  defineProperty: wrap(setDesc),
86
86
  // 26.1.4 Reflect.deleteProperty(target, propertyKey)
87
- deleteProperty: function(target, propertyKey){
87
+ deleteProperty: function deleteProperty(target, propertyKey){
88
88
  var desc = getDesc(assertObject(target), propertyKey);
89
89
  return desc && !desc.configurable ? false : delete target[propertyKey];
90
90
  },
91
91
  // 26.1.5 Reflect.enumerate(target)
92
- enumerate: function(target){
92
+ enumerate: function enumerate(target){
93
93
  return new Enumerate(assertObject(target));
94
94
  },
95
95
  // 26.1.6 Reflect.get(target, propertyKey [, receiver])
96
- get: reflectGet,
96
+ get: get,
97
97
  // 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)
98
- getOwnPropertyDescriptor: function(target, propertyKey){
98
+ getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey){
99
99
  return getDesc(assertObject(target), propertyKey);
100
100
  },
101
101
  // 26.1.8 Reflect.getPrototypeOf(target)
102
- getPrototypeOf: function(target){
102
+ getPrototypeOf: function getPrototypeOf(target){
103
103
  return getProto(assertObject(target));
104
104
  },
105
105
  // 26.1.9 Reflect.has(target, propertyKey)
106
- has: function(target, propertyKey){
106
+ has: function has(target, propertyKey){
107
107
  return propertyKey in target;
108
108
  },
109
109
  // 26.1.10 Reflect.isExtensible(target)
110
- isExtensible: function(target){
111
- return !!isExtensible(assertObject(target));
110
+ isExtensible: function isExtensible(target){
111
+ return !!_isExtensible(assertObject(target));
112
112
  },
113
113
  // 26.1.11 Reflect.ownKeys(target)
114
114
  ownKeys: require('./$.own-keys'),
115
115
  // 26.1.12 Reflect.preventExtensions(target)
116
116
  preventExtensions: wrap(Object.preventExtensions || $.it),
117
117
  // 26.1.13 Reflect.set(target, propertyKey, V [, receiver])
118
- set: reflectSet
118
+ set: set
119
119
  };
120
120
  // 26.1.14 Reflect.setPrototypeOf(target, proto)
121
- if(setProto)reflect.setPrototypeOf = function(target, proto){
122
- setProto(assertObject(target), proto);
123
- return true;
121
+ if(setProto)reflect.setPrototypeOf = function setPrototypeOf(target, proto){
122
+ setProto.check(target, proto);
123
+ try {
124
+ setProto.set(target, proto);
125
+ return true;
126
+ } catch(e){
127
+ return false;
128
+ }
124
129
  };
125
130
 
126
131
  $def($def.G, {Reflect: {}});
@@ -4,7 +4,7 @@ var strong = require('./$.collection-strong');
4
4
  // 23.2 Set Objects
5
5
  require('./$.collection')('Set', {
6
6
  // 23.2.3.1 Set.prototype.add(value)
7
- add: function(value){
7
+ add: function add(value){
8
8
  return strong.def(this, value = value === 0 ? 0 : value, value);
9
9
  }
10
10
  }, strong);
@@ -6,7 +6,7 @@ var $ = require('./$')
6
6
 
7
7
  $def($def.P, 'String', {
8
8
  // 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])
9
- endsWith: function(searchString /*, endPosition = @length */){
9
+ endsWith: function endsWith(searchString /*, endPosition = @length */){
10
10
  if(cof(searchString) == 'RegExp')throw TypeError();
11
11
  var that = String($.assertDefined(this))
12
12
  , endPosition = arguments[1]
@@ -4,7 +4,7 @@ var $def = require('./$.def')
4
4
 
5
5
  $def($def.S, 'String', {
6
6
  // 21.1.2.2 String.fromCodePoint(...codePoints)
7
- fromCodePoint: function(x){ // eslint-disable-line no-unused-vars
7
+ fromCodePoint: function fromCodePoint(x){ // eslint-disable-line no-unused-vars
8
8
  var res = []
9
9
  , len = arguments.length
10
10
  , i = 0
@@ -5,7 +5,7 @@ var $ = require('./$')
5
5
 
6
6
  $def($def.P, 'String', {
7
7
  // 21.1.3.7 String.prototype.includes(searchString, position = 0)
8
- includes: function(searchString /*, position = 0 */){
8
+ includes: function includes(searchString /*, position = 0 */){
9
9
  if(cof(searchString) == 'RegExp')throw TypeError();
10
10
  return !!~String($.assertDefined(this)).indexOf(searchString, arguments[1]);
11
11
  }
@@ -3,14 +3,14 @@ var $ = require('./$')
3
3
 
4
4
  $def($def.S, 'String', {
5
5
  // 21.1.2.4 String.raw(callSite, ...substitutions)
6
- raw: function(callSite){
7
- var raw = $.toObject(callSite.raw)
8
- , len = $.toLength(raw.length)
6
+ raw: function raw(callSite){
7
+ var tpl = $.toObject(callSite.raw)
8
+ , len = $.toLength(tpl.length)
9
9
  , sln = arguments.length
10
10
  , res = []
11
11
  , i = 0;
12
12
  while(len > i){
13
- res.push(String(raw[i++]));
13
+ res.push(String(tpl[i++]));
14
14
  if(i < sln)res.push(String(arguments[i]));
15
15
  } return res.join('');
16
16
  }
@@ -4,7 +4,7 @@ var $ = require('./$')
4
4
 
5
5
  $def($def.P, 'String', {
6
6
  // 21.1.3.13 String.prototype.repeat(count)
7
- repeat: function(count){
7
+ repeat: function repeat(count){
8
8
  var str = String($.assertDefined(this))
9
9
  , res = ''
10
10
  , n = $.toInteger(count);
@@ -5,7 +5,7 @@ var $ = require('./$')
5
5
 
6
6
  $def($def.P, 'String', {
7
7
  // 21.1.3.18 String.prototype.startsWith(searchString [, position ])
8
- startsWith: function(searchString /*, position = 0 */){
8
+ startsWith: function startsWith(searchString /*, position = 0 */){
9
9
  if(cof(searchString) == 'RegExp')throw TypeError();
10
10
  var that = String($.assertDefined(this))
11
11
  , index = $.toLength(Math.min(arguments[1], that.length));
@@ -4,6 +4,7 @@ var $ = require('./$')
4
4
  , setTag = require('./$.cof').set
5
5
  , uid = require('./$.uid')
6
6
  , $def = require('./$.def')
7
+ , keyOf = require('./$.keyof')
7
8
  , has = $.has
8
9
  , hide = $.hide
9
10
  , getNames = $.getNames
@@ -28,7 +29,7 @@ function wrap(tag){
28
29
 
29
30
  // 19.4.1.1 Symbol([description])
30
31
  if(!$.isFunction(Symbol)){
31
- Symbol = function(description){
32
+ Symbol = function Symbol(description){
32
33
  if(this instanceof Symbol)throw TypeError('Symbol is not a constructor');
33
34
  return wrap(uid(description));
34
35
  };
@@ -46,7 +47,9 @@ var symbolStatics = {
46
47
  : SymbolRegistry[key] = Symbol(key);
47
48
  },
48
49
  // 19.4.2.5 Symbol.keyFor(sym)
49
- keyFor: require('./$.partial').call(require('./$.keyof'), SymbolRegistry, 0),
50
+ keyFor: function keyFor(key){
51
+ return keyOf(SymbolRegistry, key);
52
+ },
50
53
  pure: uid.safe,
51
54
  set: $.set,
52
55
  useSetter: function(){ setter = true; },
@@ -78,13 +81,13 @@ $def($def.S, 'Symbol', symbolStatics);
78
81
 
79
82
  $def($def.S + $def.F * (Symbol != Base), 'Object', {
80
83
  // 19.1.2.7 Object.getOwnPropertyNames(O)
81
- getOwnPropertyNames: function(it){
84
+ getOwnPropertyNames: function getOwnPropertyNames(it){
82
85
  var names = getNames(toObject(it)), result = [], key, i = 0;
83
86
  while(names.length > i)has(AllSymbols, key = names[i++]) || result.push(key);
84
87
  return result;
85
88
  },
86
89
  // 19.1.2.8 Object.getOwnPropertySymbols(O)
87
- getOwnPropertySymbols: function(it){
90
+ getOwnPropertySymbols: function getOwnPropertySymbols(it){
88
91
  var names = getNames(toObject(it)), result = [], key, i = 0;
89
92
  while(names.length > i)has(AllSymbols, key = names[i++]) && result.push(AllSymbols[key]);
90
93
  return result;
@@ -12,14 +12,14 @@ var $ = require('./$')
12
12
  // 23.3 WeakMap Objects
13
13
  var WeakMap = require('./$.collection')('WeakMap', {
14
14
  // 23.3.3.3 WeakMap.prototype.get(key)
15
- get: function(key){
15
+ get: function get(key){
16
16
  if(isObject(key)){
17
17
  if(isFrozen(key))return leakStore(this).get(key);
18
18
  if(has(key, WEAK))return key[WEAK][this[ID]];
19
19
  }
20
20
  },
21
21
  // 23.3.3.5 WeakMap.prototype.set(key, value)
22
- set: function(key, value){
22
+ set: function set(key, value){
23
23
  return weak.def(this, key, value);
24
24
  }
25
25
  }, weak, true, true);
@@ -4,7 +4,7 @@ var weak = require('./$.collection-weak');
4
4
  // 23.4 WeakSet Objects
5
5
  require('./$.collection')('WeakSet', {
6
6
  // 23.4.3.1 WeakSet.prototype.add(value)
7
- add: function(value){
7
+ add: function add(value){
8
8
  return weak.def(this, value, true);
9
9
  }
10
10
  }, weak, false, true);
@@ -4,7 +4,7 @@ var $ = require('./$')
4
4
  , ownKeys = require('./$.own-keys');
5
5
 
6
6
  $def($def.S, 'Object', {
7
- getOwnPropertyDescriptors: function(object){
7
+ getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object){
8
8
  var O = $.toObject(object)
9
9
  , result = {};
10
10
  $.each.call(ownKeys(O), function(key){
@@ -4,7 +4,7 @@ var $ = require('./$')
4
4
  function createObjectToArray(isEntries){
5
5
  return function(object){
6
6
  var O = $.toObject(object)
7
- , keys = $.getKeys(object)
7
+ , keys = $.getKeys(O)
8
8
  , length = keys.length
9
9
  , i = 0
10
10
  , result = Array(length)
@@ -0,0 +1,10 @@
1
+ // https://github.com/DavidBruant/Map-Set.prototype.toJSON
2
+ var $def = require('./$.def')
3
+ , forOf = require('./$.iter').forOf;
4
+ $def($def.P, 'Set', {
5
+ toJSON: function(){
6
+ var arr = [];
7
+ forOf(this, false, arr.push, arr);
8
+ return arr;
9
+ }
10
+ });
@@ -1,11 +1,11 @@
1
1
  // JavaScript 1.6 / Strawman array statics shim
2
2
  var $ = require('./$')
3
3
  , $def = require('./$.def')
4
- , core = $.core
4
+ , $Array = $.core.Array || Array
5
5
  , statics = {};
6
6
  function setStatics(keys, length){
7
7
  $.each.call(keys.split(','), function(key){
8
- if(length == undefined && key in core.Array)statics[key] = core.Array[key];
8
+ if(length == undefined && key in $Array)statics[key] = $Array[key];
9
9
  else if(key in [])statics[key] = require('./$.ctx')(Function.call, [][key], length);
10
10
  });
11
11
  }
@@ -1,9 +1,10 @@
1
1
  require('./es6.array.iterator');
2
- var $ = require('./$')
3
- , Iterators = require('./$.iter').Iterators
4
- , ITERATOR = require('./$.wks')('iterator')
5
- , NodeList = $.g.NodeList;
2
+ var $ = require('./$')
3
+ , Iterators = require('./$.iter').Iterators
4
+ , ITERATOR = require('./$.wks')('iterator')
5
+ , ArrayValues = Iterators.Array
6
+ , NodeList = $.g.NodeList;
6
7
  if($.FW && NodeList && !(ITERATOR in NodeList.prototype)){
7
- $.hide(NodeList.prototype, ITERATOR, Iterators.Array);
8
+ $.hide(NodeList.prototype, ITERATOR, ArrayValues);
8
9
  }
9
- Iterators.NodeList = Iterators.Array;
10
+ Iterators.NodeList = ArrayValues;
@@ -1,9 +1,10 @@
1
1
  // ie9- setTimeout & setInterval additional parameters fix
2
- var $ = require('./$')
3
- , $def = require('./$.def')
4
- , invoke = require('./$.invoke')
5
- , partial = require('./$.partial')
6
- , MSIE = !!$.g.navigator && /MSIE .\./.test(navigator.userAgent); // <- dirty ie9- check
2
+ var $ = require('./$')
3
+ , $def = require('./$.def')
4
+ , invoke = require('./$.invoke')
5
+ , partial = require('./$.partial')
6
+ , navigator = $.g.navigator
7
+ , MSIE = !!navigator && /MSIE .\./.test(navigator.userAgent); // <- dirty ie9- check
7
8
  function wrap(set){
8
9
  return MSIE ? function(fn, time /*, ...args */){
9
10
  return set(invoke(
@@ -14,6 +15,6 @@ function wrap(set){
14
15
  } : set;
15
16
  }
16
17
  $def($def.G + $def.B + $def.F * MSIE, {
17
- setTimeout: wrap(setTimeout),
18
- setInterval: wrap(setInterval)
18
+ setTimeout: wrap($.g.setTimeout),
19
+ setInterval: wrap($.g.setInterval)
19
20
  });
package/library/shim.js CHANGED
@@ -37,6 +37,7 @@ require('./modules/es7.string.at');
37
37
  require('./modules/es7.regexp.escape');
38
38
  require('./modules/es7.object.get-own-property-descriptors');
39
39
  require('./modules/es7.object.to-array');
40
+ require('./modules/es7.set.to-json');
40
41
  require('./modules/js.array.statics');
41
42
  require('./modules/web.timers');
42
43
  require('./modules/web.immediate');