core-js 2.2.0 → 2.4.0
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.
- package/CHANGELOG.md +25 -0
- package/bower.json +1 -1
- package/build/config.js +7 -3
- package/client/core.js +1463 -1128
- package/client/core.min.js +4 -4
- package/client/core.min.js.map +1 -1
- package/client/library.js +1400 -1074
- package/client/library.min.js +4 -4
- package/client/library.min.js.map +1 -1
- package/client/shim.js +1406 -1071
- package/client/shim.min.js +4 -4
- package/client/shim.min.js.map +1 -1
- package/es7/asap.js +2 -0
- package/es7/index.js +4 -0
- package/es7/observable.js +7 -0
- package/es7/symbol.js +3 -0
- package/fn/asap.js +2 -0
- package/fn/observable.js +7 -0
- package/fn/symbol/async-iterator.js +2 -0
- package/fn/symbol/has-instance.js +2 -1
- package/fn/symbol/index.js +2 -0
- package/fn/symbol/is-concat-spreadable.js +1 -1
- package/fn/symbol/iterator.js +1 -1
- package/fn/symbol/match.js +1 -1
- package/fn/symbol/observable.js +2 -0
- package/fn/symbol/replace.js +1 -1
- package/fn/symbol/search.js +1 -1
- package/fn/symbol/species.js +1 -1
- package/fn/symbol/split.js +1 -1
- package/fn/symbol/to-primitive.js +1 -1
- package/fn/symbol/to-string-tag.js +1 -1
- package/fn/symbol/unscopables.js +1 -1
- package/library/es7/asap.js +2 -0
- package/library/es7/index.js +4 -0
- package/library/es7/observable.js +7 -0
- package/library/es7/symbol.js +3 -0
- package/library/fn/asap.js +2 -0
- package/library/fn/observable.js +7 -0
- package/library/fn/symbol/async-iterator.js +2 -0
- package/library/fn/symbol/has-instance.js +2 -1
- package/library/fn/symbol/index.js +2 -0
- package/library/fn/symbol/is-concat-spreadable.js +1 -1
- package/library/fn/symbol/iterator.js +1 -1
- package/library/fn/symbol/match.js +1 -1
- package/library/fn/symbol/observable.js +2 -0
- package/library/fn/symbol/replace.js +1 -1
- package/library/fn/symbol/search.js +1 -1
- package/library/fn/symbol/species.js +1 -1
- package/library/fn/symbol/split.js +1 -1
- package/library/fn/symbol/to-primitive.js +1 -1
- package/library/fn/symbol/to-string-tag.js +1 -1
- package/library/fn/symbol/unscopables.js +1 -1
- package/library/modules/_array-includes.js +1 -1
- package/library/modules/_array-species-constructor.js +16 -0
- package/library/modules/_array-species-create.js +3 -13
- package/library/modules/_core.js +1 -1
- package/library/modules/_create-property.js +8 -0
- package/library/modules/_for-of.js +12 -6
- package/library/modules/_iter-detect.js +1 -1
- package/library/modules/_math-expm1.js +8 -2
- package/library/modules/_microtask.js +58 -48
- package/library/modules/_object-gopn-ext.js +2 -2
- package/library/modules/_string-pad.js +1 -2
- package/library/modules/_wks-define.js +9 -0
- package/library/modules/_wks-ext.js +1 -0
- package/library/modules/_wks.js +5 -2
- package/library/modules/es6.array.filter.js +9 -9
- package/library/modules/es6.array.from.js +11 -9
- package/library/modules/es6.array.index-of.js +9 -4
- package/library/modules/es6.array.last-index-of.js +10 -6
- package/library/modules/es6.array.of.js +3 -2
- package/library/modules/es6.math.acosh.js +6 -2
- package/library/modules/es6.math.asinh.js +4 -2
- package/library/modules/es6.math.atanh.js +4 -2
- package/library/modules/es6.math.expm1.js +3 -2
- package/library/modules/es6.promise.js +1 -1
- package/library/modules/es6.reflect.apply.js +5 -3
- package/library/modules/es6.reflect.construct.js +2 -1
- package/library/modules/es6.symbol.js +59 -59
- package/library/modules/es7.asap.js +12 -0
- package/library/modules/es7.object.get-own-property-descriptors.js +7 -11
- package/library/modules/es7.observable.js +199 -0
- package/library/modules/es7.symbol.async-iterator.js +1 -0
- package/library/modules/es7.symbol.observable.js +1 -0
- package/library/shim.js +4 -0
- package/library/stage/0.js +1 -0
- package/library/stage/1.js +3 -2
- package/library/stage/2.js +3 -1
- package/library/stage/3.js +1 -3
- package/library/stage/4.js +3 -1
- package/modules/_array-includes.js +1 -1
- package/modules/_array-species-constructor.js +16 -0
- package/modules/_array-species-create.js +3 -13
- package/modules/_core.js +1 -1
- package/modules/_create-property.js +8 -0
- package/modules/_for-of.js +12 -6
- package/modules/_iter-detect.js +1 -1
- package/modules/_math-expm1.js +8 -2
- package/modules/_microtask.js +58 -48
- package/modules/_object-gopn-ext.js +2 -2
- package/modules/_string-pad.js +1 -2
- package/modules/_wks-define.js +9 -0
- package/modules/_wks-ext.js +1 -0
- package/modules/_wks.js +5 -2
- package/modules/es6.array.filter.js +9 -9
- package/modules/es6.array.from.js +11 -9
- package/modules/es6.array.index-of.js +9 -4
- package/modules/es6.array.last-index-of.js +10 -6
- package/modules/es6.array.of.js +3 -2
- package/modules/es6.function.name.js +13 -4
- package/modules/es6.math.acosh.js +6 -2
- package/modules/es6.math.asinh.js +4 -2
- package/modules/es6.math.atanh.js +4 -2
- package/modules/es6.math.expm1.js +3 -2
- package/modules/es6.promise.js +1 -1
- package/modules/es6.reflect.apply.js +5 -3
- package/modules/es6.reflect.construct.js +2 -1
- package/modules/es6.symbol.js +59 -59
- package/modules/es7.asap.js +12 -0
- package/modules/es7.object.get-own-property-descriptors.js +7 -11
- package/modules/es7.observable.js +199 -0
- package/modules/es7.symbol.async-iterator.js +1 -0
- package/modules/es7.symbol.observable.js +1 -0
- package/package.json +14 -12
- package/shim.js +4 -0
- package/stage/0.js +1 -0
- package/stage/1.js +3 -2
- package/stage/2.js +3 -1
- package/stage/3.js +1 -3
- package/stage/4.js +3 -1
- package/README.md +0 -1981
package/modules/es6.symbol.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
// ECMAScript 6 symbols shim
|
|
3
3
|
var global = require('./_global')
|
|
4
|
-
, core = require('./_core')
|
|
5
4
|
, has = require('./_has')
|
|
6
5
|
, DESCRIPTORS = require('./_descriptors')
|
|
7
6
|
, $export = require('./_export')
|
|
@@ -12,6 +11,8 @@ var global = require('./_global')
|
|
|
12
11
|
, setToStringTag = require('./_set-to-string-tag')
|
|
13
12
|
, uid = require('./_uid')
|
|
14
13
|
, wks = require('./_wks')
|
|
14
|
+
, wksExt = require('./_wks-ext')
|
|
15
|
+
, wksDefine = require('./_wks-define')
|
|
15
16
|
, keyOf = require('./_keyof')
|
|
16
17
|
, enumKeys = require('./_enum-keys')
|
|
17
18
|
, isArray = require('./_is-array')
|
|
@@ -23,22 +24,25 @@ var global = require('./_global')
|
|
|
23
24
|
, gOPNExt = require('./_object-gopn-ext')
|
|
24
25
|
, $GOPD = require('./_object-gopd')
|
|
25
26
|
, $DP = require('./_object-dp')
|
|
27
|
+
, $keys = require('./_object-keys')
|
|
26
28
|
, gOPD = $GOPD.f
|
|
27
29
|
, dP = $DP.f
|
|
28
30
|
, gOPN = gOPNExt.f
|
|
29
31
|
, $Symbol = global.Symbol
|
|
30
32
|
, $JSON = global.JSON
|
|
31
33
|
, _stringify = $JSON && $JSON.stringify
|
|
32
|
-
, setter = false
|
|
33
34
|
, PROTOTYPE = 'prototype'
|
|
34
35
|
, HIDDEN = wks('_hidden')
|
|
35
36
|
, TO_PRIMITIVE = wks('toPrimitive')
|
|
36
37
|
, isEnum = {}.propertyIsEnumerable
|
|
37
38
|
, SymbolRegistry = shared('symbol-registry')
|
|
38
39
|
, AllSymbols = shared('symbols')
|
|
40
|
+
, OPSymbols = shared('op-symbols')
|
|
39
41
|
, ObjectProto = Object[PROTOTYPE]
|
|
40
42
|
, USE_NATIVE = typeof $Symbol == 'function'
|
|
41
43
|
, QObject = global.QObject;
|
|
44
|
+
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
|
|
45
|
+
var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
|
|
42
46
|
|
|
43
47
|
// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
|
|
44
48
|
var setSymbolDesc = DESCRIPTORS && $fails(function(){
|
|
@@ -55,13 +59,6 @@ var setSymbolDesc = DESCRIPTORS && $fails(function(){
|
|
|
55
59
|
var wrap = function(tag){
|
|
56
60
|
var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
|
|
57
61
|
sym._k = tag;
|
|
58
|
-
DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, {
|
|
59
|
-
configurable: true,
|
|
60
|
-
set: function(value){
|
|
61
|
-
if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;
|
|
62
|
-
setSymbolDesc(this, tag, createDesc(1, value));
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
62
|
return sym;
|
|
66
63
|
};
|
|
67
64
|
|
|
@@ -72,6 +69,7 @@ var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){
|
|
|
72
69
|
};
|
|
73
70
|
|
|
74
71
|
var $defineProperty = function defineProperty(it, key, D){
|
|
72
|
+
if(it === ObjectProto)$defineProperty(OPSymbols, key, D);
|
|
75
73
|
anObject(it);
|
|
76
74
|
key = toPrimitive(key, true);
|
|
77
75
|
anObject(D);
|
|
@@ -99,10 +97,14 @@ var $create = function create(it, P){
|
|
|
99
97
|
};
|
|
100
98
|
var $propertyIsEnumerable = function propertyIsEnumerable(key){
|
|
101
99
|
var E = isEnum.call(this, key = toPrimitive(key, true));
|
|
100
|
+
if(this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return false;
|
|
102
101
|
return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
|
|
103
102
|
};
|
|
104
103
|
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){
|
|
105
|
-
|
|
104
|
+
it = toIObject(it);
|
|
105
|
+
key = toPrimitive(key, true);
|
|
106
|
+
if(it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return;
|
|
107
|
+
var D = gOPD(it, key);
|
|
106
108
|
if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;
|
|
107
109
|
return D;
|
|
108
110
|
};
|
|
@@ -111,45 +113,33 @@ var $getOwnPropertyNames = function getOwnPropertyNames(it){
|
|
|
111
113
|
, result = []
|
|
112
114
|
, i = 0
|
|
113
115
|
, key;
|
|
114
|
-
while(names.length > i)
|
|
115
|
-
|
|
116
|
+
while(names.length > i){
|
|
117
|
+
if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key);
|
|
118
|
+
} return result;
|
|
116
119
|
};
|
|
117
120
|
var $getOwnPropertySymbols = function getOwnPropertySymbols(it){
|
|
118
|
-
var
|
|
121
|
+
var IS_OP = it === ObjectProto
|
|
122
|
+
, names = gOPN(IS_OP ? OPSymbols : toIObject(it))
|
|
119
123
|
, result = []
|
|
120
124
|
, i = 0
|
|
121
125
|
, key;
|
|
122
|
-
while(names.length > i)
|
|
123
|
-
|
|
124
|
-
};
|
|
125
|
-
var $stringify = function stringify(it){
|
|
126
|
-
if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined
|
|
127
|
-
var args = [it]
|
|
128
|
-
, i = 1
|
|
129
|
-
, replacer, $replacer;
|
|
130
|
-
while(arguments.length > i)args.push(arguments[i++]);
|
|
131
|
-
replacer = args[1];
|
|
132
|
-
if(typeof replacer == 'function')$replacer = replacer;
|
|
133
|
-
if($replacer || !isArray(replacer))replacer = function(key, value){
|
|
134
|
-
if($replacer)value = $replacer.call(this, key, value);
|
|
135
|
-
if(!isSymbol(value))return value;
|
|
136
|
-
};
|
|
137
|
-
args[1] = replacer;
|
|
138
|
-
return _stringify.apply($JSON, args);
|
|
126
|
+
while(names.length > i){
|
|
127
|
+
if(has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true))result.push(AllSymbols[key]);
|
|
128
|
+
} return result;
|
|
139
129
|
};
|
|
140
|
-
var BUGGY_JSON = $fails(function(){
|
|
141
|
-
var S = $Symbol();
|
|
142
|
-
// MS Edge converts symbol values to JSON as {}
|
|
143
|
-
// WebKit converts symbol values to JSON as null
|
|
144
|
-
// V8 throws on boxed symbols
|
|
145
|
-
return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';
|
|
146
|
-
});
|
|
147
130
|
|
|
148
131
|
// 19.4.1.1 Symbol([description])
|
|
149
132
|
if(!USE_NATIVE){
|
|
150
133
|
$Symbol = function Symbol(){
|
|
151
134
|
if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!');
|
|
152
|
-
|
|
135
|
+
var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
|
|
136
|
+
var $set = function(value){
|
|
137
|
+
if(this === ObjectProto)$set.call(OPSymbols, value);
|
|
138
|
+
if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;
|
|
139
|
+
setSymbolDesc(this, tag, createDesc(1, value));
|
|
140
|
+
};
|
|
141
|
+
if(DESCRIPTORS && setter)setSymbolDesc(ObjectProto, tag, {configurable: true, set: $set});
|
|
142
|
+
return wrap(tag);
|
|
153
143
|
};
|
|
154
144
|
redefine($Symbol[PROTOTYPE], 'toString', function toString(){
|
|
155
145
|
return this._k;
|
|
@@ -158,38 +148,26 @@ if(!USE_NATIVE){
|
|
|
158
148
|
$GOPD.f = $getOwnPropertyDescriptor;
|
|
159
149
|
$DP.f = $defineProperty;
|
|
160
150
|
require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;
|
|
161
|
-
require('./_object-pie').f = $propertyIsEnumerable
|
|
151
|
+
require('./_object-pie').f = $propertyIsEnumerable;
|
|
162
152
|
require('./_object-gops').f = $getOwnPropertySymbols;
|
|
163
153
|
|
|
164
154
|
if(DESCRIPTORS && !require('./_library')){
|
|
165
155
|
redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
|
|
166
156
|
}
|
|
157
|
+
|
|
158
|
+
wksExt.f = function(name){
|
|
159
|
+
return wrap(wks(name));
|
|
160
|
+
}
|
|
167
161
|
}
|
|
168
162
|
|
|
169
163
|
$export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol});
|
|
170
164
|
|
|
171
|
-
// 19.4.2.2 Symbol.hasInstance
|
|
172
|
-
// 19.4.2.3 Symbol.isConcatSpreadable
|
|
173
|
-
// 19.4.2.4 Symbol.iterator
|
|
174
|
-
// 19.4.2.6 Symbol.match
|
|
175
|
-
// 19.4.2.8 Symbol.replace
|
|
176
|
-
// 19.4.2.9 Symbol.search
|
|
177
|
-
// 19.4.2.10 Symbol.species
|
|
178
|
-
// 19.4.2.11 Symbol.split
|
|
179
|
-
// 19.4.2.12 Symbol.toPrimitive
|
|
180
|
-
// 19.4.2.13 Symbol.toStringTag
|
|
181
|
-
// 19.4.2.14 Symbol.unscopables
|
|
182
165
|
for(var symbols = (
|
|
166
|
+
// 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
|
|
183
167
|
'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
|
|
184
|
-
).split(','), i = 0; symbols.length > i; )
|
|
185
|
-
var key = symbols[i++]
|
|
186
|
-
, Wrapper = core.Symbol
|
|
187
|
-
, sym = wks(key);
|
|
188
|
-
if(!(key in Wrapper))dP(Wrapper, key, {value: USE_NATIVE ? sym : wrap(sym)});
|
|
189
|
-
};
|
|
168
|
+
).split(','), i = 0; symbols.length > i; )wks(symbols[i++]);
|
|
190
169
|
|
|
191
|
-
|
|
192
|
-
if(!QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild)setter = true;
|
|
170
|
+
for(var symbols = $keys(wks.store), i = 0; symbols.length > i; )wksDefine(symbols[i++]);
|
|
193
171
|
|
|
194
172
|
$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
|
|
195
173
|
// 19.4.2.1 Symbol.for(key)
|
|
@@ -223,7 +201,29 @@ $export($export.S + $export.F * !USE_NATIVE, 'Object', {
|
|
|
223
201
|
});
|
|
224
202
|
|
|
225
203
|
// 24.3.2 JSON.stringify(value [, replacer [, space]])
|
|
226
|
-
$JSON && $export($export.S + $export.F * (!USE_NATIVE ||
|
|
204
|
+
$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function(){
|
|
205
|
+
var S = $Symbol();
|
|
206
|
+
// MS Edge converts symbol values to JSON as {}
|
|
207
|
+
// WebKit converts symbol values to JSON as null
|
|
208
|
+
// V8 throws on boxed symbols
|
|
209
|
+
return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';
|
|
210
|
+
})), 'JSON', {
|
|
211
|
+
stringify: function stringify(it){
|
|
212
|
+
if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined
|
|
213
|
+
var args = [it]
|
|
214
|
+
, i = 1
|
|
215
|
+
, replacer, $replacer;
|
|
216
|
+
while(arguments.length > i)args.push(arguments[i++]);
|
|
217
|
+
replacer = args[1];
|
|
218
|
+
if(typeof replacer == 'function')$replacer = replacer;
|
|
219
|
+
if($replacer || !isArray(replacer))replacer = function(key, value){
|
|
220
|
+
if($replacer)value = $replacer.call(this, key, value);
|
|
221
|
+
if(!isSymbol(value))return value;
|
|
222
|
+
};
|
|
223
|
+
args[1] = replacer;
|
|
224
|
+
return _stringify.apply($JSON, args);
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
227
|
|
|
228
228
|
// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
|
|
229
229
|
$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-09/sept-25.md#510-globalasap-for-enqueuing-a-microtask
|
|
2
|
+
var $export = require('./_export')
|
|
3
|
+
, microtask = require('./_microtask')()
|
|
4
|
+
, process = require('./_global').process
|
|
5
|
+
, isNode = require('./_cof')(process) == 'process';
|
|
6
|
+
|
|
7
|
+
$export($export.G, {
|
|
8
|
+
asap: function asap(fn){
|
|
9
|
+
var domain = isNode && process.domain;
|
|
10
|
+
microtask(domain ? domain.bind(fn) : fn);
|
|
11
|
+
}
|
|
12
|
+
});
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
// https://github.com/tc39/proposal-object-getownpropertydescriptors
|
|
2
|
-
var $export
|
|
3
|
-
, ownKeys
|
|
4
|
-
, toIObject
|
|
5
|
-
,
|
|
6
|
-
,
|
|
7
|
-
, dP = require('./_object-dp');
|
|
2
|
+
var $export = require('./_export')
|
|
3
|
+
, ownKeys = require('./_own-keys')
|
|
4
|
+
, toIObject = require('./_to-iobject')
|
|
5
|
+
, gOPD = require('./_object-gopd')
|
|
6
|
+
, createProperty = require('./_create-property');
|
|
8
7
|
|
|
9
8
|
$export($export.S, 'Object', {
|
|
10
9
|
getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object){
|
|
@@ -14,10 +13,7 @@ $export($export.S, 'Object', {
|
|
|
14
13
|
, result = {}
|
|
15
14
|
, i = 0
|
|
16
15
|
, key, D;
|
|
17
|
-
while(keys.length > i)
|
|
18
|
-
|
|
19
|
-
if(key in result)dP.f(result, key, createDesc(0, D));
|
|
20
|
-
else result[key] = D;
|
|
21
|
-
} return result;
|
|
16
|
+
while(keys.length > i)createProperty(result, key = keys[i++], getDesc(O, key));
|
|
17
|
+
return result;
|
|
22
18
|
}
|
|
23
19
|
});
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
// https://github.com/zenparsing/es-observable
|
|
3
|
+
var $export = require('./_export')
|
|
4
|
+
, global = require('./_global')
|
|
5
|
+
, core = require('./_core')
|
|
6
|
+
, microtask = require('./_microtask')()
|
|
7
|
+
, OBSERVABLE = require('./_wks')('observable')
|
|
8
|
+
, aFunction = require('./_a-function')
|
|
9
|
+
, anObject = require('./_an-object')
|
|
10
|
+
, anInstance = require('./_an-instance')
|
|
11
|
+
, redefineAll = require('./_redefine-all')
|
|
12
|
+
, hide = require('./_hide')
|
|
13
|
+
, forOf = require('./_for-of')
|
|
14
|
+
, RETURN = forOf.RETURN;
|
|
15
|
+
|
|
16
|
+
var getMethod = function(fn){
|
|
17
|
+
return fn == null ? undefined : aFunction(fn);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
var cleanupSubscription = function(subscription){
|
|
21
|
+
var cleanup = subscription._c;
|
|
22
|
+
if(cleanup){
|
|
23
|
+
subscription._c = undefined;
|
|
24
|
+
cleanup();
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
var subscriptionClosed = function(subscription){
|
|
29
|
+
return subscription._o === undefined;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
var closeSubscription = function(subscription){
|
|
33
|
+
if(!subscriptionClosed(subscription)){
|
|
34
|
+
subscription._o = undefined;
|
|
35
|
+
cleanupSubscription(subscription);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
var Subscription = function(observer, subscriber){
|
|
40
|
+
anObject(observer);
|
|
41
|
+
this._c = undefined;
|
|
42
|
+
this._o = observer;
|
|
43
|
+
observer = new SubscriptionObserver(this);
|
|
44
|
+
try {
|
|
45
|
+
var cleanup = subscriber(observer)
|
|
46
|
+
, subscription = cleanup;
|
|
47
|
+
if(cleanup != null){
|
|
48
|
+
if(typeof cleanup.unsubscribe === 'function')cleanup = function(){ subscription.unsubscribe(); };
|
|
49
|
+
else aFunction(cleanup);
|
|
50
|
+
this._c = cleanup;
|
|
51
|
+
}
|
|
52
|
+
} catch(e){
|
|
53
|
+
observer.error(e);
|
|
54
|
+
return;
|
|
55
|
+
} if(subscriptionClosed(this))cleanupSubscription(this);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
Subscription.prototype = redefineAll({}, {
|
|
59
|
+
unsubscribe: function unsubscribe(){ closeSubscription(this); }
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
var SubscriptionObserver = function(subscription){
|
|
63
|
+
this._s = subscription;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
SubscriptionObserver.prototype = redefineAll({}, {
|
|
67
|
+
next: function next(value){
|
|
68
|
+
var subscription = this._s;
|
|
69
|
+
if(!subscriptionClosed(subscription)){
|
|
70
|
+
var observer = subscription._o;
|
|
71
|
+
try {
|
|
72
|
+
var m = getMethod(observer.next);
|
|
73
|
+
if(m)return m.call(observer, value);
|
|
74
|
+
} catch(e){
|
|
75
|
+
try {
|
|
76
|
+
closeSubscription(subscription);
|
|
77
|
+
} finally {
|
|
78
|
+
throw e;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
error: function error(value){
|
|
84
|
+
var subscription = this._s;
|
|
85
|
+
if(subscriptionClosed(subscription))throw value;
|
|
86
|
+
var observer = subscription._o;
|
|
87
|
+
subscription._o = undefined;
|
|
88
|
+
try {
|
|
89
|
+
var m = getMethod(observer.error);
|
|
90
|
+
if(!m)throw value;
|
|
91
|
+
value = m.call(observer, value);
|
|
92
|
+
} catch(e){
|
|
93
|
+
try {
|
|
94
|
+
cleanupSubscription(subscription);
|
|
95
|
+
} finally {
|
|
96
|
+
throw e;
|
|
97
|
+
}
|
|
98
|
+
} cleanupSubscription(subscription);
|
|
99
|
+
return value;
|
|
100
|
+
},
|
|
101
|
+
complete: function complete(value){
|
|
102
|
+
var subscription = this._s;
|
|
103
|
+
if(!subscriptionClosed(subscription)){
|
|
104
|
+
var observer = subscription._o;
|
|
105
|
+
subscription._o = undefined;
|
|
106
|
+
try {
|
|
107
|
+
var m = getMethod(observer.complete);
|
|
108
|
+
value = m ? m.call(observer, value) : undefined;
|
|
109
|
+
} catch(e){
|
|
110
|
+
try {
|
|
111
|
+
cleanupSubscription(subscription);
|
|
112
|
+
} finally {
|
|
113
|
+
throw e;
|
|
114
|
+
}
|
|
115
|
+
} cleanupSubscription(subscription);
|
|
116
|
+
return value;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
var $Observable = function Observable(subscriber){
|
|
122
|
+
anInstance(this, $Observable, 'Observable', '_f')._f = aFunction(subscriber);
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
redefineAll($Observable.prototype, {
|
|
126
|
+
subscribe: function subscribe(observer){
|
|
127
|
+
return new Subscription(observer, this._f);
|
|
128
|
+
},
|
|
129
|
+
forEach: function forEach(fn){
|
|
130
|
+
var that = this;
|
|
131
|
+
return new (core.Promise || global.Promise)(function(resolve, reject){
|
|
132
|
+
aFunction(fn);
|
|
133
|
+
var subscription = that.subscribe({
|
|
134
|
+
next : function(value){
|
|
135
|
+
try {
|
|
136
|
+
return fn(value);
|
|
137
|
+
} catch(e){
|
|
138
|
+
reject(e);
|
|
139
|
+
subscription.unsubscribe();
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
error: reject,
|
|
143
|
+
complete: resolve
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
redefineAll($Observable, {
|
|
150
|
+
from: function from(x){
|
|
151
|
+
var C = typeof this === 'function' ? this : $Observable;
|
|
152
|
+
var method = getMethod(anObject(x)[OBSERVABLE]);
|
|
153
|
+
if(method){
|
|
154
|
+
var observable = anObject(method.call(x));
|
|
155
|
+
return observable.constructor === C ? observable : new C(function(observer){
|
|
156
|
+
return observable.subscribe(observer);
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
return new C(function(observer){
|
|
160
|
+
var done = false;
|
|
161
|
+
microtask(function(){
|
|
162
|
+
if(!done){
|
|
163
|
+
try {
|
|
164
|
+
if(forOf(x, false, function(it){
|
|
165
|
+
observer.next(it);
|
|
166
|
+
if(done)return RETURN;
|
|
167
|
+
}) === RETURN)return;
|
|
168
|
+
} catch(e){
|
|
169
|
+
if(done)throw e;
|
|
170
|
+
observer.error(e);
|
|
171
|
+
return;
|
|
172
|
+
} observer.complete();
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
return function(){ done = true; };
|
|
176
|
+
});
|
|
177
|
+
},
|
|
178
|
+
of: function of(){
|
|
179
|
+
for(var i = 0, l = arguments.length, items = Array(l); i < l;)items[i] = arguments[i++];
|
|
180
|
+
return new (typeof this === 'function' ? this : $Observable)(function(observer){
|
|
181
|
+
var done = false;
|
|
182
|
+
microtask(function(){
|
|
183
|
+
if(!done){
|
|
184
|
+
for(var i = 0; i < items.length; ++i){
|
|
185
|
+
observer.next(items[i]);
|
|
186
|
+
if(done)return;
|
|
187
|
+
} observer.complete();
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
return function(){ done = true; };
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
hide($Observable.prototype, OBSERVABLE, function(){ return this; });
|
|
196
|
+
|
|
197
|
+
$export($export.G, {Observable: $Observable});
|
|
198
|
+
|
|
199
|
+
require('./_set-species')('Observable');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require('./_wks-define')('asyncIterator');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require('./_wks-define')('observable');
|
package/package.json
CHANGED
|
@@ -1,40 +1,42 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "core-js",
|
|
3
3
|
"description": "Standard library",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.4.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/zloirock/core-js.git"
|
|
8
8
|
},
|
|
9
9
|
"main": "index.js",
|
|
10
10
|
"devDependencies": {
|
|
11
|
-
"webpack": "1.
|
|
11
|
+
"webpack": "1.13.x",
|
|
12
12
|
"LiveScript": "1.3.x",
|
|
13
|
-
"grunt": "0.
|
|
14
|
-
"grunt-cli": "
|
|
13
|
+
"grunt": "1.0.x",
|
|
14
|
+
"grunt-cli": "1.2.x",
|
|
15
15
|
"grunt-livescript": "0.6.x",
|
|
16
16
|
"grunt-contrib-uglify": "1.0.x",
|
|
17
17
|
"grunt-contrib-watch": "1.0.x",
|
|
18
18
|
"grunt-contrib-clean": "1.0.x",
|
|
19
19
|
"grunt-contrib-copy": "1.0.x",
|
|
20
|
-
"grunt-karma": "0.
|
|
20
|
+
"grunt-karma": "1.0.x",
|
|
21
21
|
"karma": "0.13.x",
|
|
22
|
-
"karma-qunit": "0.
|
|
23
|
-
"karma-chrome-launcher": "0.
|
|
24
|
-
"karma-ie-launcher": "0.
|
|
25
|
-
"karma-firefox-launcher": "0.
|
|
22
|
+
"karma-qunit": "1.0.x",
|
|
23
|
+
"karma-chrome-launcher": "1.0.x",
|
|
24
|
+
"karma-ie-launcher": "1.0.x",
|
|
25
|
+
"karma-firefox-launcher": "1.0.x",
|
|
26
26
|
"karma-phantomjs-launcher": "1.0.x",
|
|
27
|
-
"qunitjs": "1.
|
|
27
|
+
"qunitjs": "1.23.x",
|
|
28
28
|
"phantomjs-prebuilt": "2.1.x",
|
|
29
29
|
"promises-aplus-tests": "2.1.x",
|
|
30
|
-
"
|
|
30
|
+
"es-observable-tests": "0.2.x",
|
|
31
|
+
"eslint": "2.9.x",
|
|
31
32
|
"temp": "0.8.x"
|
|
32
33
|
},
|
|
33
34
|
"scripts": {
|
|
34
35
|
"grunt": "grunt",
|
|
35
36
|
"lint": "eslint es5 es6 es7 stage web core fn modules",
|
|
36
37
|
"promises-tests": "promises-aplus-tests tests/promises-aplus/adapter",
|
|
37
|
-
"
|
|
38
|
+
"observables-tests": "node tests/observables/adapter && node tests/observables/adapter-library",
|
|
39
|
+
"test": "npm run lint && npm run grunt livescript client karma:default && npm run grunt library karma:library && npm run promises-tests && npm run observables-tests && lsc tests/commonjs"
|
|
38
40
|
},
|
|
39
41
|
"license": "MIT",
|
|
40
42
|
"keywords": [
|
package/shim.js
CHANGED
|
@@ -142,6 +142,8 @@ require('./modules/es7.string.pad-end');
|
|
|
142
142
|
require('./modules/es7.string.trim-left');
|
|
143
143
|
require('./modules/es7.string.trim-right');
|
|
144
144
|
require('./modules/es7.string.match-all');
|
|
145
|
+
require('./modules/es7.symbol.async-iterator');
|
|
146
|
+
require('./modules/es7.symbol.observable');
|
|
145
147
|
require('./modules/es7.object.get-own-property-descriptors');
|
|
146
148
|
require('./modules/es7.object.values');
|
|
147
149
|
require('./modules/es7.object.entries');
|
|
@@ -166,6 +168,8 @@ require('./modules/es7.reflect.get-own-metadata-keys');
|
|
|
166
168
|
require('./modules/es7.reflect.has-metadata');
|
|
167
169
|
require('./modules/es7.reflect.has-own-metadata');
|
|
168
170
|
require('./modules/es7.reflect.metadata');
|
|
171
|
+
require('./modules/es7.asap');
|
|
172
|
+
require('./modules/es7.observable');
|
|
169
173
|
require('./modules/web.timers');
|
|
170
174
|
require('./modules/web.immediate');
|
|
171
175
|
require('./modules/web.dom.iterable');
|
package/stage/0.js
CHANGED
package/stage/1.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require('../modules/es7.string.trim-left');
|
|
2
2
|
require('../modules/es7.string.trim-right');
|
|
3
3
|
require('../modules/es7.string.match-all');
|
|
4
|
-
require('../modules/es7.
|
|
5
|
-
|
|
4
|
+
require('../modules/es7.symbol.observable');
|
|
5
|
+
require('../modules/es7.observable');
|
|
6
|
+
module.exports = require('./2');
|
package/stage/2.js
CHANGED
package/stage/3.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
require('../modules/es7.object.get-own-property-descriptors');
|
|
2
|
-
require('../modules/es7.object.values');
|
|
3
|
-
require('../modules/es7.object.entries');
|
|
4
2
|
require('../modules/es7.string.pad-start');
|
|
5
3
|
require('../modules/es7.string.pad-end');
|
|
6
|
-
module.exports = require('./4');
|
|
4
|
+
module.exports = require('./4');
|
package/stage/4.js
CHANGED
|
@@ -2,5 +2,7 @@ require('../modules/es7.object.define-getter');
|
|
|
2
2
|
require('../modules/es7.object.define-setter');
|
|
3
3
|
require('../modules/es7.object.lookup-getter');
|
|
4
4
|
require('../modules/es7.object.lookup-setter');
|
|
5
|
+
require('../modules/es7.object.values');
|
|
6
|
+
require('../modules/es7.object.entries');
|
|
5
7
|
require('../modules/es7.array.includes');
|
|
6
|
-
module.exports = require('../modules/_core');
|
|
8
|
+
module.exports = require('../modules/_core');
|