es6_set_polyfill_rails 0.1.3 → 0.2.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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/es6_set_polyfill_rails.js +247 -1229
- data/lib/es6_set_polyfill_rails/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49f2eaf549f59431d39d4bcdead54d2191df6ac3
|
4
|
+
data.tar.gz: 9eebc2ae6e5141fa816a4244970d5943ca9b9c6b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4084826d16ada4819023ad76d2812b0d1e28370b01d6d6bec25db1c49b93c16293c7f510ed323ad93ffc0c371c740663fbd651b3f3c055f85b7e34ca129fa1fb
|
7
|
+
data.tar.gz: d10f1aa60257b24f24ac747cfd2eed741a3842c0e552db3045e953b192c33b51c37b4dbeb8015318905a3e46708f291a17284bdc9b9350f24bfafde664e11a49
|
@@ -1,1253 +1,271 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
var value = validValue(desc) && callable(desc.value), dgs;
|
15
|
-
dgs = copy(desc);
|
16
|
-
delete dgs.writable;
|
17
|
-
delete dgs.value;
|
18
|
-
dgs.get = function () {
|
19
|
-
if (hasOwnProperty.call(this, name)) return value;
|
20
|
-
desc.value = bind.call(value, (bindTo == null) ? this : this[bindTo]);
|
21
|
-
defineProperty(this, name, desc);
|
22
|
-
return this[name];
|
23
|
-
};
|
24
|
-
return dgs;
|
25
|
-
};
|
26
|
-
|
27
|
-
module.exports = function (props/*, bindTo*/) {
|
28
|
-
var bindTo = arguments[1];
|
29
|
-
return map(props, function (desc, name) {
|
30
|
-
return define(name, desc, bindTo);
|
31
|
-
});
|
32
|
-
};
|
33
|
-
|
34
|
-
},{"es5-ext/object/copy":15,"es5-ext/object/map":23,"es5-ext/object/valid-callable":28,"es5-ext/object/valid-value":29}],2:[function(require,module,exports){
|
35
|
-
'use strict';
|
36
|
-
|
37
|
-
var assign = require('es5-ext/object/assign')
|
38
|
-
, normalizeOpts = require('es5-ext/object/normalize-options')
|
39
|
-
, isCallable = require('es5-ext/object/is-callable')
|
40
|
-
, contains = require('es5-ext/string/#/contains')
|
41
|
-
|
42
|
-
, d;
|
43
|
-
|
44
|
-
d = module.exports = function (dscr, value/*, options*/) {
|
45
|
-
var c, e, w, options, desc;
|
46
|
-
if ((arguments.length < 2) || (typeof dscr !== 'string')) {
|
47
|
-
options = value;
|
48
|
-
value = dscr;
|
49
|
-
dscr = null;
|
50
|
-
} else {
|
51
|
-
options = arguments[2];
|
52
|
-
}
|
53
|
-
if (dscr == null) {
|
54
|
-
c = w = true;
|
55
|
-
e = false;
|
56
|
-
} else {
|
57
|
-
c = contains.call(dscr, 'c');
|
58
|
-
e = contains.call(dscr, 'e');
|
59
|
-
w = contains.call(dscr, 'w');
|
60
|
-
}
|
61
|
-
|
62
|
-
desc = { value: value, configurable: c, enumerable: e, writable: w };
|
63
|
-
return !options ? desc : assign(normalizeOpts(options), desc);
|
64
|
-
};
|
65
|
-
|
66
|
-
d.gs = function (dscr, get, set/*, options*/) {
|
67
|
-
var c, e, options, desc;
|
68
|
-
if (typeof dscr !== 'string') {
|
69
|
-
options = set;
|
70
|
-
set = get;
|
71
|
-
get = dscr;
|
72
|
-
dscr = null;
|
73
|
-
} else {
|
74
|
-
options = arguments[3];
|
75
|
-
}
|
76
|
-
if (get == null) {
|
77
|
-
get = undefined;
|
78
|
-
} else if (!isCallable(get)) {
|
79
|
-
options = get;
|
80
|
-
get = set = undefined;
|
81
|
-
} else if (set == null) {
|
82
|
-
set = undefined;
|
83
|
-
} else if (!isCallable(set)) {
|
84
|
-
options = set;
|
85
|
-
set = undefined;
|
86
|
-
}
|
87
|
-
if (dscr == null) {
|
88
|
-
c = true;
|
89
|
-
e = false;
|
90
|
-
} else {
|
91
|
-
c = contains.call(dscr, 'c');
|
92
|
-
e = contains.call(dscr, 'e');
|
93
|
-
}
|
94
|
-
|
95
|
-
desc = { get: get, set: set, configurable: c, enumerable: e };
|
96
|
-
return !options ? desc : assign(normalizeOpts(options), desc);
|
97
|
-
};
|
98
|
-
|
99
|
-
},{"es5-ext/object/assign":12,"es5-ext/object/is-callable":18,"es5-ext/object/normalize-options":24,"es5-ext/string/#/contains":30}],3:[function(require,module,exports){
|
100
|
-
// Inspired by Google Closure:
|
101
|
-
// http://closure-library.googlecode.com/svn/docs/
|
102
|
-
// closure_goog_array_array.js.html#goog.array.clear
|
103
|
-
|
104
|
-
'use strict';
|
105
|
-
|
106
|
-
var value = require('../../object/valid-value');
|
107
|
-
|
108
|
-
module.exports = function () {
|
109
|
-
value(this).length = 0;
|
110
|
-
return this;
|
111
|
-
};
|
112
|
-
|
113
|
-
},{"../../object/valid-value":29}],4:[function(require,module,exports){
|
114
|
-
'use strict';
|
115
|
-
|
116
|
-
var toPosInt = require('../../number/to-pos-integer')
|
117
|
-
, value = require('../../object/valid-value')
|
118
|
-
|
119
|
-
, indexOf = Array.prototype.indexOf
|
120
|
-
, hasOwnProperty = Object.prototype.hasOwnProperty
|
121
|
-
, abs = Math.abs, floor = Math.floor;
|
122
|
-
|
123
|
-
module.exports = function (searchElement/*, fromIndex*/) {
|
124
|
-
var i, l, fromIndex, val;
|
125
|
-
if (searchElement === searchElement) { //jslint: ignore
|
126
|
-
return indexOf.apply(this, arguments);
|
127
|
-
}
|
128
|
-
|
129
|
-
l = toPosInt(value(this).length);
|
130
|
-
fromIndex = arguments[1];
|
131
|
-
if (isNaN(fromIndex)) fromIndex = 0;
|
132
|
-
else if (fromIndex >= 0) fromIndex = floor(fromIndex);
|
133
|
-
else fromIndex = toPosInt(this.length) - floor(abs(fromIndex));
|
134
|
-
|
135
|
-
for (i = fromIndex; i < l; ++i) {
|
136
|
-
if (hasOwnProperty.call(this, i)) {
|
137
|
-
val = this[i];
|
138
|
-
if (val !== val) return i; //jslint: ignore
|
139
|
-
}
|
140
|
-
}
|
141
|
-
return -1;
|
142
|
-
};
|
143
|
-
|
144
|
-
},{"../../number/to-pos-integer":10,"../../object/valid-value":29}],5:[function(require,module,exports){
|
145
|
-
'use strict';
|
146
|
-
|
147
|
-
var toString = Object.prototype.toString
|
148
|
-
|
149
|
-
, id = toString.call((function () { return arguments; }()));
|
150
|
-
|
151
|
-
module.exports = function (x) { return (toString.call(x) === id); };
|
152
|
-
|
153
|
-
},{}],6:[function(require,module,exports){
|
154
|
-
'use strict';
|
155
|
-
|
156
|
-
module.exports = require('./is-implemented')()
|
157
|
-
? Math.sign
|
158
|
-
: require('./shim');
|
159
|
-
|
160
|
-
},{"./is-implemented":7,"./shim":8}],7:[function(require,module,exports){
|
161
|
-
'use strict';
|
162
|
-
|
163
|
-
module.exports = function () {
|
164
|
-
var sign = Math.sign;
|
165
|
-
if (typeof sign !== 'function') return false;
|
166
|
-
return ((sign(10) === 1) && (sign(-20) === -1));
|
167
|
-
};
|
168
|
-
|
169
|
-
},{}],8:[function(require,module,exports){
|
170
|
-
'use strict';
|
171
|
-
|
172
|
-
module.exports = function (value) {
|
173
|
-
value = Number(value);
|
174
|
-
if (isNaN(value) || (value === 0)) return value;
|
175
|
-
return (value > 0) ? 1 : -1;
|
176
|
-
};
|
177
|
-
|
178
|
-
},{}],9:[function(require,module,exports){
|
179
|
-
'use strict';
|
180
|
-
|
181
|
-
var sign = require('../math/sign')
|
182
|
-
|
183
|
-
, abs = Math.abs, floor = Math.floor;
|
184
|
-
|
185
|
-
module.exports = function (value) {
|
186
|
-
if (isNaN(value)) return 0;
|
187
|
-
value = Number(value);
|
188
|
-
if ((value === 0) || !isFinite(value)) return value;
|
189
|
-
return sign(value) * floor(abs(value));
|
190
|
-
};
|
191
|
-
|
192
|
-
},{"../math/sign":6}],10:[function(require,module,exports){
|
193
|
-
'use strict';
|
194
|
-
|
195
|
-
var toInteger = require('./to-integer')
|
196
|
-
|
197
|
-
, max = Math.max;
|
198
|
-
|
199
|
-
module.exports = function (value) { return max(0, toInteger(value)); };
|
200
|
-
|
201
|
-
},{"./to-integer":9}],11:[function(require,module,exports){
|
202
|
-
// Internal method, used by iteration functions.
|
203
|
-
// Calls a function for each key-value pair found in object
|
204
|
-
// Optionally takes compareFn to iterate object in specific order
|
205
|
-
|
206
|
-
'use strict';
|
207
|
-
|
208
|
-
var callable = require('./valid-callable')
|
209
|
-
, value = require('./valid-value')
|
210
|
-
|
211
|
-
, bind = Function.prototype.bind, call = Function.prototype.call, keys = Object.keys
|
212
|
-
, propertyIsEnumerable = Object.prototype.propertyIsEnumerable;
|
1
|
+
// IE11 has an incomplete implementation of Set which doesn't allow you to iterate the keys
|
2
|
+
// so this code assumes you want a full implementation and will redefine Set if the half
|
3
|
+
// implementation is present
|
4
|
+
if (typeof Set === "undefined" || typeof Set.prototype.keys !== "function") {
|
5
|
+
var Set = (function() {
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
var iterables = {
|
9
|
+
"[object Array]": true,
|
10
|
+
"[object Arguments]": true,
|
11
|
+
"[object HTMLCollection]": true,
|
12
|
+
"[object NodeList]": true
|
13
|
+
};
|
213
14
|
|
214
|
-
|
215
|
-
|
216
|
-
var
|
217
|
-
obj = Object(value(obj));
|
218
|
-
callable(cb);
|
15
|
+
// shortcuts
|
16
|
+
var hasOwn = Object.prototype.hasOwnProperty;
|
17
|
+
var toString = Object.prototype.toString;
|
219
18
|
|
220
|
-
|
221
|
-
|
222
|
-
list.sort((typeof compareFn === 'function') ? bind.call(compareFn, obj) : undefined);
|
19
|
+
function hasOwnProp(obj, prop) {
|
20
|
+
return hasOwn.call(obj, prop);
|
223
21
|
}
|
224
|
-
if (typeof method !== 'function') method = list[method];
|
225
|
-
return call.call(method, list, function (key, index) {
|
226
|
-
if (!propertyIsEnumerable.call(obj, key)) return defVal;
|
227
|
-
return call.call(cb, thisArg, obj[key], key, obj, index);
|
228
|
-
});
|
229
|
-
};
|
230
|
-
};
|
231
|
-
|
232
|
-
},{"./valid-callable":28,"./valid-value":29}],12:[function(require,module,exports){
|
233
|
-
'use strict';
|
234
|
-
|
235
|
-
module.exports = require('./is-implemented')()
|
236
|
-
? Object.assign
|
237
|
-
: require('./shim');
|
238
|
-
|
239
|
-
},{"./is-implemented":13,"./shim":14}],13:[function(require,module,exports){
|
240
|
-
'use strict';
|
241
|
-
|
242
|
-
module.exports = function () {
|
243
|
-
var assign = Object.assign, obj;
|
244
|
-
if (typeof assign !== 'function') return false;
|
245
|
-
obj = { foo: 'raz' };
|
246
|
-
assign(obj, { bar: 'dwa' }, { trzy: 'trzy' });
|
247
|
-
return (obj.foo + obj.bar + obj.trzy) === 'razdwatrzy';
|
248
|
-
};
|
249
|
-
|
250
|
-
},{}],14:[function(require,module,exports){
|
251
|
-
'use strict';
|
252
|
-
|
253
|
-
var keys = require('../keys')
|
254
|
-
, value = require('../valid-value')
|
255
22
|
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
if (
|
23
|
+
function isIterable(item) {
|
24
|
+
// for purposes of this implementation, an iterable is anything we can iterate with
|
25
|
+
// a classic for loop:
|
26
|
+
// for (var i = 0; i < item.length; i++)
|
27
|
+
// Currently accepts: array, arguments object, HTMLCollection, NodeList
|
28
|
+
// and anything that has a .length with a numeric value and, if .length > 0, the first item has a nodeType property
|
29
|
+
var name;
|
30
|
+
if (typeof item === "object") {
|
31
|
+
name = toString.call(item);
|
32
|
+
return ((iterables[name] === true) ||
|
33
|
+
(typeof item.length === "number" &&
|
34
|
+
item.length >= 0 &&
|
35
|
+
(item.length === 0 || (typeof item[0] === "object" && item[0].nodeType > 0))
|
36
|
+
)
|
37
|
+
);
|
38
|
+
}
|
39
|
+
return false;
|
264
40
|
}
|
265
|
-
};
|
266
|
-
for (i = 1; i < l; ++i) {
|
267
|
-
src = arguments[i];
|
268
|
-
keys(src).forEach(assign);
|
269
|
-
}
|
270
|
-
if (error !== undefined) throw error;
|
271
|
-
return dest;
|
272
|
-
};
|
273
|
-
|
274
|
-
},{"../keys":20,"../valid-value":29}],15:[function(require,module,exports){
|
275
|
-
'use strict';
|
276
|
-
|
277
|
-
var assign = require('./assign')
|
278
|
-
, value = require('./valid-value');
|
279
|
-
|
280
|
-
module.exports = function (obj) {
|
281
|
-
var copy = Object(value(obj));
|
282
|
-
if (copy !== obj) return copy;
|
283
|
-
return assign({}, obj);
|
284
|
-
};
|
285
|
-
|
286
|
-
},{"./assign":12,"./valid-value":29}],16:[function(require,module,exports){
|
287
|
-
// Workaround for http://code.google.com/p/v8/issues/detail?id=2804
|
288
|
-
|
289
|
-
'use strict';
|
290
41
|
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
if (name === '__proto__') {
|
308
|
-
props[name] = { configurable: true, enumerable: false, writable: true,
|
309
|
-
value: undefined };
|
310
|
-
return;
|
42
|
+
// decide if we can use Object.defineProperty
|
43
|
+
// include a test for Object.defineProperties (which IE8 does not have) to eliminate
|
44
|
+
// using the broken Object.defineProperty in IE8
|
45
|
+
var canDefineProperty = Object.defineProperty && Object.defineProperties;
|
46
|
+
|
47
|
+
function setProperty(obj, propName, value, enumerable, writable) {
|
48
|
+
if (canDefineProperty) {
|
49
|
+
Object.defineProperty(obj, propName, {
|
50
|
+
enumerable: enumerable,
|
51
|
+
configurable: false,
|
52
|
+
writable: writable,
|
53
|
+
value: value
|
54
|
+
});
|
55
|
+
} else {
|
56
|
+
obj[propName] = value;
|
57
|
+
}
|
311
58
|
}
|
312
|
-
props[name] = desc;
|
313
|
-
});
|
314
|
-
Object.defineProperties(nullObject, props);
|
315
|
-
|
316
|
-
Object.defineProperty(shim, 'nullPolyfill', { configurable: false,
|
317
|
-
enumerable: false, writable: false, value: nullObject });
|
318
|
-
|
319
|
-
return function (prototype, props) {
|
320
|
-
return create((prototype === null) ? nullObject : prototype, props);
|
321
|
-
};
|
322
|
-
}());
|
323
|
-
|
324
|
-
},{"./set-prototype-of/is-implemented":26,"./set-prototype-of/shim":27}],17:[function(require,module,exports){
|
325
|
-
'use strict';
|
326
|
-
|
327
|
-
module.exports = require('./_iterate')('forEach');
|
328
|
-
|
329
|
-
},{"./_iterate":11}],18:[function(require,module,exports){
|
330
|
-
// Deprecated
|
331
|
-
|
332
|
-
'use strict';
|
333
|
-
|
334
|
-
module.exports = function (obj) { return typeof obj === 'function'; };
|
335
|
-
|
336
|
-
},{}],19:[function(require,module,exports){
|
337
|
-
'use strict';
|
338
|
-
|
339
|
-
var map = { function: true, object: true };
|
340
|
-
|
341
|
-
module.exports = function (x) {
|
342
|
-
return ((x != null) && map[typeof x]) || false;
|
343
|
-
};
|
344
|
-
|
345
|
-
},{}],20:[function(require,module,exports){
|
346
|
-
'use strict';
|
347
|
-
|
348
|
-
module.exports = require('./is-implemented')()
|
349
|
-
? Object.keys
|
350
|
-
: require('./shim');
|
351
|
-
|
352
|
-
},{"./is-implemented":21,"./shim":22}],21:[function(require,module,exports){
|
353
|
-
'use strict';
|
354
|
-
|
355
|
-
module.exports = function () {
|
356
|
-
try {
|
357
|
-
Object.keys('primitive');
|
358
|
-
return true;
|
359
|
-
} catch (e) { return false; }
|
360
|
-
};
|
361
|
-
|
362
|
-
},{}],22:[function(require,module,exports){
|
363
|
-
'use strict';
|
364
|
-
|
365
|
-
var keys = Object.keys;
|
366
|
-
|
367
|
-
module.exports = function (object) {
|
368
|
-
return keys(object == null ? object : Object(object));
|
369
|
-
};
|
370
|
-
|
371
|
-
},{}],23:[function(require,module,exports){
|
372
|
-
'use strict';
|
373
|
-
|
374
|
-
var callable = require('./valid-callable')
|
375
|
-
, forEach = require('./for-each')
|
376
|
-
|
377
|
-
, call = Function.prototype.call;
|
378
|
-
|
379
|
-
module.exports = function (obj, cb/*, thisArg*/) {
|
380
|
-
var o = {}, thisArg = arguments[2];
|
381
|
-
callable(cb);
|
382
|
-
forEach(obj, function (value, key, obj, index) {
|
383
|
-
o[key] = call.call(cb, thisArg, value, key, obj, index);
|
384
|
-
});
|
385
|
-
return o;
|
386
|
-
};
|
387
|
-
|
388
|
-
},{"./for-each":17,"./valid-callable":28}],24:[function(require,module,exports){
|
389
|
-
'use strict';
|
390
|
-
|
391
|
-
var forEach = Array.prototype.forEach, create = Object.create;
|
392
|
-
|
393
|
-
var process = function (src, obj) {
|
394
|
-
var key;
|
395
|
-
for (key in src) obj[key] = src[key];
|
396
|
-
};
|
397
59
|
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
};
|
406
|
-
|
407
|
-
},{}],25:[function(require,module,exports){
|
408
|
-
'use strict';
|
409
|
-
|
410
|
-
module.exports = require('./is-implemented')()
|
411
|
-
? Object.setPrototypeOf
|
412
|
-
: require('./shim');
|
413
|
-
|
414
|
-
},{"./is-implemented":26,"./shim":27}],26:[function(require,module,exports){
|
415
|
-
'use strict';
|
416
|
-
|
417
|
-
var create = Object.create, getPrototypeOf = Object.getPrototypeOf
|
418
|
-
, x = {};
|
419
|
-
|
420
|
-
module.exports = function (/*customCreate*/) {
|
421
|
-
var setPrototypeOf = Object.setPrototypeOf
|
422
|
-
, customCreate = arguments[0] || create;
|
423
|
-
if (typeof setPrototypeOf !== 'function') return false;
|
424
|
-
return getPrototypeOf(setPrototypeOf(customCreate(null), x)) === x;
|
425
|
-
};
|
426
|
-
|
427
|
-
},{}],27:[function(require,module,exports){
|
428
|
-
// Big thanks to @WebReflection for sorting this out
|
429
|
-
// https://gist.github.com/WebReflection/5593554
|
430
|
-
|
431
|
-
'use strict';
|
432
|
-
|
433
|
-
var isObject = require('../is-object')
|
434
|
-
, value = require('../valid-value')
|
435
|
-
|
436
|
-
, isPrototypeOf = Object.prototype.isPrototypeOf
|
437
|
-
, defineProperty = Object.defineProperty
|
438
|
-
, nullDesc = { configurable: true, enumerable: false, writable: true,
|
439
|
-
value: undefined }
|
440
|
-
, validate;
|
441
|
-
|
442
|
-
validate = function (obj, prototype) {
|
443
|
-
value(obj);
|
444
|
-
if ((prototype === null) || isObject(prototype)) return obj;
|
445
|
-
throw new TypeError('Prototype must be null or an object');
|
446
|
-
};
|
447
|
-
|
448
|
-
module.exports = (function (status) {
|
449
|
-
var fn, set;
|
450
|
-
if (!status) return null;
|
451
|
-
if (status.level === 2) {
|
452
|
-
if (status.set) {
|
453
|
-
set = status.set;
|
454
|
-
fn = function (obj, prototype) {
|
455
|
-
set.call(validate(obj, prototype), prototype);
|
456
|
-
return obj;
|
457
|
-
};
|
458
|
-
} else {
|
459
|
-
fn = function (obj, prototype) {
|
460
|
-
validate(obj, prototype).__proto__ = prototype;
|
461
|
-
return obj;
|
462
|
-
};
|
60
|
+
// this private function is used like a private method for setting
|
61
|
+
// the .size property. It cannot be called from outside this closure.
|
62
|
+
var settable = false;
|
63
|
+
function setSize(obj, val) {
|
64
|
+
settable = true;
|
65
|
+
obj.size = val;
|
66
|
+
settable = false;
|
463
67
|
}
|
464
|
-
} else {
|
465
|
-
fn = function self(obj, prototype) {
|
466
|
-
var isNullBase;
|
467
|
-
validate(obj, prototype);
|
468
|
-
isNullBase = isPrototypeOf.call(self.nullPolyfill, obj);
|
469
|
-
if (isNullBase) delete self.nullPolyfill.__proto__;
|
470
|
-
if (prototype === null) prototype = self.nullPolyfill;
|
471
|
-
obj.__proto__ = prototype;
|
472
|
-
if (isNullBase) defineProperty(self.nullPolyfill, '__proto__', nullDesc);
|
473
|
-
return obj;
|
474
|
-
};
|
475
|
-
}
|
476
|
-
return Object.defineProperty(fn, 'level', { configurable: false,
|
477
|
-
enumerable: false, writable: false, value: status.level });
|
478
|
-
}((function () {
|
479
|
-
var x = Object.create(null), y = {}, set
|
480
|
-
, desc = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__');
|
481
|
-
|
482
|
-
if (desc) {
|
483
|
-
try {
|
484
|
-
set = desc.set; // Opera crashes at this point
|
485
|
-
set.call(x, y);
|
486
|
-
} catch (ignore) { }
|
487
|
-
if (Object.getPrototypeOf(x) === y) return { set: set, level: 2 };
|
488
|
-
}
|
489
|
-
|
490
|
-
x.__proto__ = y;
|
491
|
-
if (Object.getPrototypeOf(x) === y) return { level: 2 };
|
492
|
-
|
493
|
-
x = {};
|
494
|
-
x.__proto__ = y;
|
495
|
-
if (Object.getPrototypeOf(x) === y) return { level: 1 };
|
496
|
-
|
497
|
-
return false;
|
498
|
-
}())));
|
499
|
-
|
500
|
-
require('../create');
|
501
|
-
|
502
|
-
},{"../create":16,"../is-object":19,"../valid-value":29}],28:[function(require,module,exports){
|
503
|
-
'use strict';
|
504
|
-
|
505
|
-
module.exports = function (fn) {
|
506
|
-
if (typeof fn !== 'function') throw new TypeError(fn + " is not a function");
|
507
|
-
return fn;
|
508
|
-
};
|
509
|
-
|
510
|
-
},{}],29:[function(require,module,exports){
|
511
|
-
'use strict';
|
512
|
-
|
513
|
-
module.exports = function (value) {
|
514
|
-
if (value == null) throw new TypeError("Cannot use null or undefined");
|
515
|
-
return value;
|
516
|
-
};
|
517
|
-
|
518
|
-
},{}],30:[function(require,module,exports){
|
519
|
-
'use strict';
|
520
|
-
|
521
|
-
module.exports = require('./is-implemented')()
|
522
|
-
? String.prototype.contains
|
523
|
-
: require('./shim');
|
524
|
-
|
525
|
-
},{"./is-implemented":31,"./shim":32}],31:[function(require,module,exports){
|
526
|
-
'use strict';
|
527
|
-
|
528
|
-
var str = 'razdwatrzy';
|
529
|
-
|
530
|
-
module.exports = function () {
|
531
|
-
if (typeof str.contains !== 'function') return false;
|
532
|
-
return ((str.contains('dwa') === true) && (str.contains('foo') === false));
|
533
|
-
};
|
534
68
|
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
}
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
else if (contains.call(kind, 'key')) kind = 'key';
|
573
|
-
else kind = 'value';
|
574
|
-
defineProperty(this, '__kind__', d('', kind));
|
575
|
-
};
|
576
|
-
if (setPrototypeOf) setPrototypeOf(ArrayIterator, Iterator);
|
577
|
-
|
578
|
-
ArrayIterator.prototype = Object.create(Iterator.prototype, {
|
579
|
-
constructor: d(ArrayIterator),
|
580
|
-
_resolve: d(function (i) {
|
581
|
-
if (this.__kind__ === 'value') return this.__list__[i];
|
582
|
-
if (this.__kind__ === 'key+value') return [i, this.__list__[i]];
|
583
|
-
return i;
|
584
|
-
}),
|
585
|
-
toString: d(function () { return '[object Array Iterator]'; })
|
586
|
-
});
|
587
|
-
|
588
|
-
},{"./":37,"d":2,"es5-ext/object/set-prototype-of":25,"es5-ext/string/#/contains":30}],35:[function(require,module,exports){
|
589
|
-
'use strict';
|
590
|
-
|
591
|
-
var isArguments = require('es5-ext/function/is-arguments')
|
592
|
-
, callable = require('es5-ext/object/valid-callable')
|
593
|
-
, isString = require('es5-ext/string/is-string')
|
594
|
-
, get = require('./get')
|
595
|
-
|
596
|
-
, isArray = Array.isArray, call = Function.prototype.call
|
597
|
-
, some = Array.prototype.some;
|
598
|
-
|
599
|
-
module.exports = function (iterable, cb/*, thisArg*/) {
|
600
|
-
var mode, thisArg = arguments[2], result, doBreak, broken, i, l, char, code;
|
601
|
-
if (isArray(iterable) || isArguments(iterable)) mode = 'array';
|
602
|
-
else if (isString(iterable)) mode = 'string';
|
603
|
-
else iterable = get(iterable);
|
604
|
-
|
605
|
-
callable(cb);
|
606
|
-
doBreak = function () { broken = true; };
|
607
|
-
if (mode === 'array') {
|
608
|
-
some.call(iterable, function (value) {
|
609
|
-
call.call(cb, thisArg, value, doBreak);
|
610
|
-
if (broken) return true;
|
611
|
-
});
|
612
|
-
return;
|
613
|
-
}
|
614
|
-
if (mode === 'string') {
|
615
|
-
l = iterable.length;
|
616
|
-
for (i = 0; i < l; ++i) {
|
617
|
-
char = iterable[i];
|
618
|
-
if ((i + 1) < l) {
|
619
|
-
code = char.charCodeAt(0);
|
620
|
-
if ((code >= 0xD800) && (code <= 0xDBFF)) char += iterable[++i];
|
69
|
+
// this is the constructor function which will be returned
|
70
|
+
// from this closure
|
71
|
+
function SetConstructor(arg) {
|
72
|
+
// private member variable, not used if IE8
|
73
|
+
var size = 0;
|
74
|
+
|
75
|
+
// set properties in cross-browser way
|
76
|
+
setProperty(this, "baseType", "Set", false, false); // not enumerable, not writeable
|
77
|
+
setProperty(this, "_data", {}, false, true); // not enumerable, writeable
|
78
|
+
if (canDefineProperty) {
|
79
|
+
Object.defineProperty(this, "size", {
|
80
|
+
enumerable: true,
|
81
|
+
configurable: false,
|
82
|
+
get: function() { return size;},
|
83
|
+
set: function(val) {
|
84
|
+
if (!settable) {throw new Error("Can't set size property on Set object.")}
|
85
|
+
size = val;
|
86
|
+
}
|
87
|
+
});
|
88
|
+
} else {
|
89
|
+
// .size is just regular property in IE8
|
90
|
+
this.size = 0;
|
91
|
+
}
|
92
|
+
// now add initial data
|
93
|
+
// per spec make sure it isn't undefined or null
|
94
|
+
if (arg !== undefined && arg !== null) {
|
95
|
+
if (isIterable(arg)) {
|
96
|
+
for (var i = 0; i < arg.length; i++) {
|
97
|
+
this.add(arg[i]);
|
98
|
+
}
|
99
|
+
// also check our own custom property in case
|
100
|
+
// there is cross window code that won't pass instanceof
|
101
|
+
} else if (arg instanceof Set || arg.baseType === "Set") {
|
102
|
+
arg.forEach(function(item) {
|
103
|
+
this.add(item);
|
104
|
+
}, this);
|
105
|
+
}
|
621
106
|
}
|
622
|
-
call.call(cb, thisArg, char, doBreak);
|
623
|
-
if (broken) break;
|
624
107
|
}
|
625
|
-
return;
|
626
|
-
}
|
627
|
-
result = iterable.next();
|
628
|
-
|
629
|
-
while (!result.done) {
|
630
|
-
call.call(cb, thisArg, result.value, doBreak);
|
631
|
-
if (broken) return;
|
632
|
-
result = iterable.next();
|
633
|
-
}
|
634
|
-
};
|
635
|
-
|
636
|
-
},{"./get":36,"es5-ext/function/is-arguments":5,"es5-ext/object/valid-callable":28,"es5-ext/string/is-string":33}],36:[function(require,module,exports){
|
637
|
-
'use strict';
|
638
|
-
|
639
|
-
var isArguments = require('es5-ext/function/is-arguments')
|
640
|
-
, isString = require('es5-ext/string/is-string')
|
641
|
-
, ArrayIterator = require('./array')
|
642
|
-
, StringIterator = require('./string')
|
643
|
-
, iterable = require('./valid-iterable')
|
644
|
-
, iteratorSymbol = require('es6-symbol').iterator;
|
645
|
-
|
646
|
-
module.exports = function (obj) {
|
647
|
-
if (typeof iterable(obj)[iteratorSymbol] === 'function') return obj[iteratorSymbol]();
|
648
|
-
if (isArguments(obj)) return new ArrayIterator(obj);
|
649
|
-
if (isString(obj)) return new StringIterator(obj);
|
650
|
-
return new ArrayIterator(obj);
|
651
|
-
};
|
652
|
-
|
653
|
-
},{"./array":34,"./string":39,"./valid-iterable":40,"es5-ext/function/is-arguments":5,"es5-ext/string/is-string":33,"es6-symbol":46}],37:[function(require,module,exports){
|
654
|
-
'use strict';
|
655
108
|
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
__context__: d('w', context),
|
673
|
-
__nextIndex__: d('w', 0)
|
674
|
-
});
|
675
|
-
if (!context) return;
|
676
|
-
callable(context.on);
|
677
|
-
context.on('_add', this._onAdd);
|
678
|
-
context.on('_delete', this._onDelete);
|
679
|
-
context.on('_clear', this._onClear);
|
680
|
-
};
|
109
|
+
// state variables and shared constants
|
110
|
+
var objectCntr = 0;
|
111
|
+
var objectCntrBase = "obj_";
|
112
|
+
var objectCntrProp = "__objectPolyFillID";
|
113
|
+
|
114
|
+
// types where we just use the first 3 letters of the type
|
115
|
+
// plus underscore + toString() to make the key
|
116
|
+
// The first 3 letters of the type makes a namespace for each
|
117
|
+
// type so we can have things like 0 and "0" as separate keys
|
118
|
+
// "num_0" and "str_0".
|
119
|
+
var autoTypes = {
|
120
|
+
"string": true,
|
121
|
+
"boolean": true,
|
122
|
+
"number": true,
|
123
|
+
"undefined": true
|
124
|
+
};
|
681
125
|
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
if (
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
126
|
+
function getKey(val, putKeyOnObject) {
|
127
|
+
// manufacture a namespaced key
|
128
|
+
var type = typeof val, id;
|
129
|
+
if (autoTypes[type]) {
|
130
|
+
return type.substr(0, 3) + "_" + val;
|
131
|
+
} else if (val === null) {
|
132
|
+
return "nul_null";
|
133
|
+
} else if (type === "object" || type === "function") {
|
134
|
+
// coin a unique id for each object and store it on the object
|
135
|
+
if (val[objectCntrProp]) {
|
136
|
+
return val[objectCntrProp];
|
137
|
+
} else if (!putKeyOnObject) {
|
138
|
+
// it only returns null if there is no key already on the object
|
139
|
+
// and it wasn't requested to create a new key on the object
|
140
|
+
return null;
|
141
|
+
} else {
|
142
|
+
// coin a unique id for the object
|
143
|
+
id = objectCntrBase + objectCntr++;
|
144
|
+
// include a test for Object.defineProperties to rule out IE8
|
145
|
+
// which can't use Object.defineProperty on normal JS objects
|
146
|
+
if (toString.call(val) === "[object Object]" && canDefineProperty) {
|
147
|
+
Object.defineProperty(val, objectCntrProp, {
|
148
|
+
enumerable: false,
|
149
|
+
configurable: false,
|
150
|
+
writable: false,
|
151
|
+
value: id
|
152
|
+
});
|
153
|
+
} else {
|
154
|
+
// no Object.defineProperty() or not plain object, so just assign property directly
|
155
|
+
val[objectCntrProp] = id;
|
156
|
+
}
|
157
|
+
return id;
|
158
|
+
}
|
159
|
+
} else {
|
160
|
+
throw new Error("Unsupported type for Set.add()");
|
161
|
+
}
|
717
162
|
}
|
718
|
-
this.__redo__.forEach(function (redo, i) {
|
719
|
-
if (redo >= index) this.__redo__[i] = ++redo;
|
720
|
-
}, this);
|
721
|
-
this.__redo__.push(index);
|
722
|
-
}),
|
723
|
-
_onDelete: d(function (index) {
|
724
|
-
var i;
|
725
|
-
if (index >= this.__nextIndex__) return;
|
726
|
-
--this.__nextIndex__;
|
727
|
-
if (!this.__redo__) return;
|
728
|
-
i = this.__redo__.indexOf(index);
|
729
|
-
if (i !== -1) this.__redo__.splice(i, 1);
|
730
|
-
this.__redo__.forEach(function (redo, i) {
|
731
|
-
if (redo > index) this.__redo__[i] = --redo;
|
732
|
-
}, this);
|
733
|
-
}),
|
734
|
-
_onClear: d(function () {
|
735
|
-
if (this.__redo__) clear.call(this.__redo__);
|
736
|
-
this.__nextIndex__ = 0;
|
737
|
-
})
|
738
|
-
})));
|
739
|
-
|
740
|
-
defineProperty(Iterator.prototype, Symbol.iterator, d(function () {
|
741
|
-
return this;
|
742
|
-
}));
|
743
|
-
defineProperty(Iterator.prototype, Symbol.toStringTag, d('', 'Iterator'));
|
744
|
-
|
745
|
-
},{"d":2,"d/auto-bind":1,"es5-ext/array/#/clear":3,"es5-ext/object/assign":12,"es5-ext/object/valid-callable":28,"es5-ext/object/valid-value":29,"es6-symbol":46}],38:[function(require,module,exports){
|
746
|
-
'use strict';
|
747
|
-
|
748
|
-
var isArguments = require('es5-ext/function/is-arguments')
|
749
|
-
, isString = require('es5-ext/string/is-string')
|
750
|
-
, iteratorSymbol = require('es6-symbol').iterator
|
751
|
-
|
752
|
-
, isArray = Array.isArray;
|
753
|
-
|
754
|
-
module.exports = function (value) {
|
755
|
-
if (value == null) return false;
|
756
|
-
if (isArray(value)) return true;
|
757
|
-
if (isString(value)) return true;
|
758
|
-
if (isArguments(value)) return true;
|
759
|
-
return (typeof value[iteratorSymbol] === 'function');
|
760
|
-
};
|
761
|
-
|
762
|
-
},{"es5-ext/function/is-arguments":5,"es5-ext/string/is-string":33,"es6-symbol":46}],39:[function(require,module,exports){
|
763
|
-
// Thanks @mathiasbynens
|
764
|
-
// http://mathiasbynens.be/notes/javascript-unicode#iterating-over-symbols
|
765
|
-
|
766
|
-
'use strict';
|
767
|
-
|
768
|
-
var setPrototypeOf = require('es5-ext/object/set-prototype-of')
|
769
|
-
, d = require('d')
|
770
|
-
, Iterator = require('./')
|
771
|
-
|
772
|
-
, defineProperty = Object.defineProperty
|
773
|
-
, StringIterator;
|
774
|
-
|
775
|
-
StringIterator = module.exports = function (str) {
|
776
|
-
if (!(this instanceof StringIterator)) return new StringIterator(str);
|
777
|
-
str = String(str);
|
778
|
-
Iterator.call(this, str);
|
779
|
-
defineProperty(this, '__length__', d('', str.length));
|
780
|
-
|
781
|
-
};
|
782
|
-
if (setPrototypeOf) setPrototypeOf(StringIterator, Iterator);
|
783
|
-
|
784
|
-
StringIterator.prototype = Object.create(Iterator.prototype, {
|
785
|
-
constructor: d(StringIterator),
|
786
|
-
_next: d(function () {
|
787
|
-
if (!this.__list__) return;
|
788
|
-
if (this.__nextIndex__ < this.__length__) return this.__nextIndex__++;
|
789
|
-
this._unBind();
|
790
|
-
}),
|
791
|
-
_resolve: d(function (i) {
|
792
|
-
var char = this.__list__[i], code;
|
793
|
-
if (this.__nextIndex__ === this.__length__) return char;
|
794
|
-
code = char.charCodeAt(0);
|
795
|
-
if ((code >= 0xD800) && (code <= 0xDBFF)) return char + this.__list__[this.__nextIndex__++];
|
796
|
-
return char;
|
797
|
-
}),
|
798
|
-
toString: d(function () { return '[object String Iterator]'; })
|
799
|
-
});
|
800
|
-
|
801
|
-
},{"./":37,"d":2,"es5-ext/object/set-prototype-of":25}],40:[function(require,module,exports){
|
802
|
-
'use strict';
|
803
|
-
|
804
|
-
var isIterable = require('./is-iterable');
|
805
|
-
|
806
|
-
module.exports = function (value) {
|
807
|
-
if (!isIterable(value)) throw new TypeError(value + " is not iterable");
|
808
|
-
return value;
|
809
|
-
};
|
810
|
-
|
811
|
-
},{"./is-iterable":38}],41:[function(require,module,exports){
|
812
|
-
'use strict';
|
813
|
-
|
814
|
-
module.exports = require('./is-implemented')() ? Set : require('./polyfill');
|
815
|
-
|
816
|
-
},{"./is-implemented":42,"./polyfill":45}],42:[function(require,module,exports){
|
817
|
-
'use strict';
|
818
|
-
|
819
|
-
module.exports = function () {
|
820
|
-
var set, iterator, result;
|
821
|
-
if (typeof Set !== 'function') return false;
|
822
|
-
set = new Set(['raz', 'dwa', 'trzy']);
|
823
|
-
if (String(set) !== '[object Set]') return false;
|
824
|
-
if (set.size !== 3) return false;
|
825
|
-
if (typeof set.add !== 'function') return false;
|
826
|
-
if (typeof set.clear !== 'function') return false;
|
827
|
-
if (typeof set.delete !== 'function') return false;
|
828
|
-
if (typeof set.entries !== 'function') return false;
|
829
|
-
if (typeof set.forEach !== 'function') return false;
|
830
|
-
if (typeof set.has !== 'function') return false;
|
831
|
-
if (typeof set.keys !== 'function') return false;
|
832
|
-
if (typeof set.values !== 'function') return false;
|
833
|
-
|
834
|
-
iterator = set.values();
|
835
|
-
result = iterator.next();
|
836
|
-
if (result.done !== false) return false;
|
837
|
-
if (result.value !== 'raz') return false;
|
838
|
-
|
839
|
-
return true;
|
840
|
-
};
|
841
|
-
|
842
|
-
},{}],43:[function(require,module,exports){
|
843
|
-
// Exports true if environment provides native `Set` implementation,
|
844
|
-
// whatever that is.
|
845
|
-
|
846
|
-
'use strict';
|
847
|
-
|
848
|
-
module.exports = (function () {
|
849
|
-
if (typeof Set === 'undefined') return false;
|
850
|
-
return (Object.prototype.toString.call(Set.prototype) === '[object Set]');
|
851
|
-
}());
|
852
|
-
|
853
|
-
},{}],44:[function(require,module,exports){
|
854
|
-
'use strict';
|
855
|
-
|
856
|
-
var setPrototypeOf = require('es5-ext/object/set-prototype-of')
|
857
|
-
, contains = require('es5-ext/string/#/contains')
|
858
|
-
, d = require('d')
|
859
|
-
, Iterator = require('es6-iterator')
|
860
|
-
, toStringTagSymbol = require('es6-symbol').toStringTag
|
861
|
-
|
862
|
-
, defineProperty = Object.defineProperty
|
863
|
-
, SetIterator;
|
864
|
-
|
865
|
-
SetIterator = module.exports = function (set, kind) {
|
866
|
-
if (!(this instanceof SetIterator)) return new SetIterator(set, kind);
|
867
|
-
Iterator.call(this, set.__setData__, set);
|
868
|
-
if (!kind) kind = 'value';
|
869
|
-
else if (contains.call(kind, 'key+value')) kind = 'key+value';
|
870
|
-
else kind = 'value';
|
871
|
-
defineProperty(this, '__kind__', d('', kind));
|
872
|
-
};
|
873
|
-
if (setPrototypeOf) setPrototypeOf(SetIterator, Iterator);
|
874
|
-
|
875
|
-
SetIterator.prototype = Object.create(Iterator.prototype, {
|
876
|
-
constructor: d(SetIterator),
|
877
|
-
_resolve: d(function (i) {
|
878
|
-
if (this.__kind__ === 'value') return this.__list__[i];
|
879
|
-
return [this.__list__[i], this.__list__[i]];
|
880
|
-
}),
|
881
|
-
toString: d(function () { return '[object Set Iterator]'; })
|
882
|
-
});
|
883
|
-
defineProperty(SetIterator.prototype, toStringTagSymbol, d('c', 'Set Iterator'));
|
884
|
-
|
885
|
-
},{"d":2,"es5-ext/object/set-prototype-of":25,"es5-ext/string/#/contains":30,"es6-iterator":37,"es6-symbol":46}],45:[function(require,module,exports){
|
886
|
-
'use strict';
|
887
163
|
|
888
|
-
|
889
|
-
|
890
|
-
|
891
|
-
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
|
908
|
-
|
909
|
-
|
910
|
-
|
911
|
-
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
}, self.__setData__);
|
918
|
-
return self;
|
919
|
-
};
|
920
|
-
|
921
|
-
if (isNative) {
|
922
|
-
if (setPrototypeOf) setPrototypeOf(SetPoly, NativeSet);
|
923
|
-
SetPoly.prototype = Object.create(NativeSet.prototype, { constructor: d(SetPoly) });
|
924
|
-
}
|
925
|
-
|
926
|
-
ee(Object.defineProperties(SetPoly.prototype, {
|
927
|
-
add: d(function (value) {
|
928
|
-
if (this.has(value)) return this;
|
929
|
-
this.emit('_add', this.__setData__.push(value) - 1, value);
|
930
|
-
return this;
|
931
|
-
}),
|
932
|
-
clear: d(function () {
|
933
|
-
if (!this.__setData__.length) return;
|
934
|
-
clear.call(this.__setData__);
|
935
|
-
this.emit('_clear');
|
936
|
-
}),
|
937
|
-
delete: d(function (value) {
|
938
|
-
var index = eIndexOf.call(this.__setData__, value);
|
939
|
-
if (index === -1) return false;
|
940
|
-
this.__setData__.splice(index, 1);
|
941
|
-
this.emit('_delete', index, value);
|
942
|
-
return true;
|
943
|
-
}),
|
944
|
-
entries: d(function () { return new Iterator(this, 'key+value'); }),
|
945
|
-
forEach: d(function (cb/*, thisArg*/) {
|
946
|
-
var thisArg = arguments[1], iterator, result, value;
|
947
|
-
callable(cb);
|
948
|
-
iterator = this.values();
|
949
|
-
result = iterator._next();
|
950
|
-
while (result !== undefined) {
|
951
|
-
value = iterator._resolve(result);
|
952
|
-
call.call(cb, thisArg, value, value, this);
|
953
|
-
result = iterator._next();
|
164
|
+
function SetIterator(keys, data, format) {
|
165
|
+
var index = 0, len = keys.length;
|
166
|
+
this.next = function() {
|
167
|
+
var val, result = {}, key;
|
168
|
+
while (true) {
|
169
|
+
if (index < len) {
|
170
|
+
result.done = false;
|
171
|
+
key = keys[index++];
|
172
|
+
val = data[key];
|
173
|
+
// check to see if key might have been removed
|
174
|
+
// undefined is a valid value in the set so we have to check more than that
|
175
|
+
// if it is no longer in the set, get the next key
|
176
|
+
if (val === undefined && !hasOwnProp(data, key)) {
|
177
|
+
continue;
|
178
|
+
}
|
179
|
+
if (format === "keys") {
|
180
|
+
result.value = val;
|
181
|
+
} else if (format === "entries") {
|
182
|
+
result.value = [val, val];
|
183
|
+
}
|
184
|
+
} else {
|
185
|
+
// clear references to outside data
|
186
|
+
keys = null;
|
187
|
+
data = null;
|
188
|
+
result.done = true;
|
189
|
+
}
|
190
|
+
return result;
|
191
|
+
}
|
192
|
+
};
|
954
193
|
}
|
955
|
-
}),
|
956
|
-
has: d(function (value) {
|
957
|
-
return (eIndexOf.call(this.__setData__, value) !== -1);
|
958
|
-
}),
|
959
|
-
keys: d(getValues = function () { return this.values(); }),
|
960
|
-
size: d.gs(function () { return this.__setData__.length; }),
|
961
|
-
values: d(function () { return new Iterator(this); }),
|
962
|
-
toString: d(function () { return '[object Set]'; })
|
963
|
-
}));
|
964
|
-
defineProperty(SetPoly.prototype, Symbol.iterator, d(getValues));
|
965
|
-
defineProperty(SetPoly.prototype, Symbol.toStringTag, d('c', 'Set'));
|
966
|
-
|
967
|
-
},{"./is-native-implemented":43,"./lib/iterator":44,"d":2,"es5-ext/array/#/clear":3,"es5-ext/array/#/e-index-of":4,"es5-ext/object/set-prototype-of":25,"es5-ext/object/valid-callable":28,"es6-iterator/for-of":35,"es6-iterator/valid-iterable":40,"es6-symbol":46,"event-emitter":51}],46:[function(require,module,exports){
|
968
|
-
'use strict';
|
969
|
-
|
970
|
-
module.exports = require('./is-implemented')() ? Symbol : require('./polyfill');
|
971
|
-
|
972
|
-
},{"./is-implemented":47,"./polyfill":49}],47:[function(require,module,exports){
|
973
|
-
'use strict';
|
974
|
-
|
975
|
-
module.exports = function () {
|
976
|
-
var symbol;
|
977
|
-
if (typeof Symbol !== 'function') return false;
|
978
|
-
symbol = Symbol('test symbol');
|
979
|
-
try { String(symbol); } catch (e) { return false; }
|
980
|
-
if (typeof Symbol.iterator === 'symbol') return true;
|
981
|
-
|
982
|
-
// Return 'true' for polyfills
|
983
|
-
if (typeof Symbol.isConcatSpreadable !== 'object') return false;
|
984
|
-
if (typeof Symbol.iterator !== 'object') return false;
|
985
|
-
if (typeof Symbol.toPrimitive !== 'object') return false;
|
986
|
-
if (typeof Symbol.toStringTag !== 'object') return false;
|
987
|
-
if (typeof Symbol.unscopables !== 'object') return false;
|
988
|
-
|
989
|
-
return true;
|
990
|
-
};
|
991
|
-
|
992
|
-
},{}],48:[function(require,module,exports){
|
993
|
-
'use strict';
|
994
|
-
|
995
|
-
module.exports = function (x) {
|
996
|
-
return (x && ((typeof x === 'symbol') || (x['@@toStringTag'] === 'Symbol'))) || false;
|
997
|
-
};
|
998
|
-
|
999
|
-
},{}],49:[function(require,module,exports){
|
1000
|
-
// ES2015 Symbol polyfill for environments that do not support it (or partially support it_
|
1001
|
-
|
1002
|
-
'use strict';
|
1003
|
-
|
1004
|
-
var d = require('d')
|
1005
|
-
, validateSymbol = require('./validate-symbol')
|
1006
|
-
|
1007
|
-
, create = Object.create, defineProperties = Object.defineProperties
|
1008
|
-
, defineProperty = Object.defineProperty, objPrototype = Object.prototype
|
1009
|
-
, NativeSymbol, SymbolPolyfill, HiddenSymbol, globalSymbols = create(null);
|
1010
|
-
|
1011
|
-
if (typeof Symbol === 'function') NativeSymbol = Symbol;
|
1012
|
-
|
1013
|
-
var generateName = (function () {
|
1014
|
-
var created = create(null);
|
1015
|
-
return function (desc) {
|
1016
|
-
var postfix = 0, name, ie11BugWorkaround;
|
1017
|
-
while (created[desc + (postfix || '')]) ++postfix;
|
1018
|
-
desc += (postfix || '');
|
1019
|
-
created[desc] = true;
|
1020
|
-
name = '@@' + desc;
|
1021
|
-
defineProperty(objPrototype, name, d.gs(null, function (value) {
|
1022
|
-
// For IE11 issue see:
|
1023
|
-
// https://connect.microsoft.com/IE/feedbackdetail/view/1928508/
|
1024
|
-
// ie11-broken-getters-on-dom-objects
|
1025
|
-
// https://github.com/medikoo/es6-symbol/issues/12
|
1026
|
-
if (ie11BugWorkaround) return;
|
1027
|
-
ie11BugWorkaround = true;
|
1028
|
-
defineProperty(this, name, d(value));
|
1029
|
-
ie11BugWorkaround = false;
|
1030
|
-
}));
|
1031
|
-
return name;
|
1032
|
-
};
|
1033
|
-
}());
|
1034
|
-
|
1035
|
-
// Internal constructor (not one exposed) for creating Symbol instances.
|
1036
|
-
// This one is used to ensure that `someSymbol instanceof Symbol` always return false
|
1037
|
-
HiddenSymbol = function Symbol(description) {
|
1038
|
-
if (this instanceof HiddenSymbol) throw new TypeError('TypeError: Symbol is not a constructor');
|
1039
|
-
return SymbolPolyfill(description);
|
1040
|
-
};
|
1041
|
-
|
1042
|
-
// Exposed `Symbol` constructor
|
1043
|
-
// (returns instances of HiddenSymbol)
|
1044
|
-
module.exports = SymbolPolyfill = function Symbol(description) {
|
1045
|
-
var symbol;
|
1046
|
-
if (this instanceof Symbol) throw new TypeError('TypeError: Symbol is not a constructor');
|
1047
|
-
symbol = create(HiddenSymbol.prototype);
|
1048
|
-
description = (description === undefined ? '' : String(description));
|
1049
|
-
return defineProperties(symbol, {
|
1050
|
-
__description__: d('', description),
|
1051
|
-
__name__: d('', generateName(description))
|
1052
|
-
});
|
1053
|
-
};
|
1054
|
-
defineProperties(SymbolPolyfill, {
|
1055
|
-
for: d(function (key) {
|
1056
|
-
if (globalSymbols[key]) return globalSymbols[key];
|
1057
|
-
return (globalSymbols[key] = SymbolPolyfill(String(key)));
|
1058
|
-
}),
|
1059
|
-
keyFor: d(function (s) {
|
1060
|
-
var key;
|
1061
|
-
validateSymbol(s);
|
1062
|
-
for (key in globalSymbols) if (globalSymbols[key] === s) return key;
|
1063
|
-
}),
|
1064
|
-
|
1065
|
-
// If there's native implementation of given symbol, let's fallback to it
|
1066
|
-
// to ensure proper interoperability with other native functions e.g. Array.from
|
1067
|
-
hasInstance: d('', (NativeSymbol && NativeSymbol.hasInstance) || SymbolPolyfill('hasInstance')),
|
1068
|
-
isConcatSpreadable: d('', (NativeSymbol && NativeSymbol.isConcatSpreadable) ||
|
1069
|
-
SymbolPolyfill('isConcatSpreadable')),
|
1070
|
-
iterator: d('', (NativeSymbol && NativeSymbol.iterator) || SymbolPolyfill('iterator')),
|
1071
|
-
match: d('', (NativeSymbol && NativeSymbol.match) || SymbolPolyfill('match')),
|
1072
|
-
replace: d('', (NativeSymbol && NativeSymbol.replace) || SymbolPolyfill('replace')),
|
1073
|
-
search: d('', (NativeSymbol && NativeSymbol.search) || SymbolPolyfill('search')),
|
1074
|
-
species: d('', (NativeSymbol && NativeSymbol.species) || SymbolPolyfill('species')),
|
1075
|
-
split: d('', (NativeSymbol && NativeSymbol.split) || SymbolPolyfill('split')),
|
1076
|
-
toPrimitive: d('', (NativeSymbol && NativeSymbol.toPrimitive) || SymbolPolyfill('toPrimitive')),
|
1077
|
-
toStringTag: d('', (NativeSymbol && NativeSymbol.toStringTag) || SymbolPolyfill('toStringTag')),
|
1078
|
-
unscopables: d('', (NativeSymbol && NativeSymbol.unscopables) || SymbolPolyfill('unscopables'))
|
1079
|
-
});
|
1080
|
-
|
1081
|
-
// Internal tweaks for real symbol producer
|
1082
|
-
defineProperties(HiddenSymbol.prototype, {
|
1083
|
-
constructor: d(SymbolPolyfill),
|
1084
|
-
toString: d('', function () { return this.__name__; })
|
1085
|
-
});
|
1086
|
-
|
1087
|
-
// Proper implementation of methods exposed on Symbol.prototype
|
1088
|
-
// They won't be accessible on produced symbol instances as they derive from HiddenSymbol.prototype
|
1089
|
-
defineProperties(SymbolPolyfill.prototype, {
|
1090
|
-
toString: d(function () { return 'Symbol (' + validateSymbol(this).__description__ + ')'; }),
|
1091
|
-
valueOf: d(function () { return validateSymbol(this); })
|
1092
|
-
});
|
1093
|
-
defineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toPrimitive, d('',
|
1094
|
-
function () { return validateSymbol(this); }));
|
1095
|
-
defineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toStringTag, d('c', 'Symbol'));
|
1096
|
-
|
1097
|
-
// Proper implementaton of toPrimitive and toStringTag for returned symbol instances
|
1098
|
-
defineProperty(HiddenSymbol.prototype, SymbolPolyfill.toStringTag,
|
1099
|
-
d('c', SymbolPolyfill.prototype[SymbolPolyfill.toStringTag]));
|
1100
|
-
|
1101
|
-
// Note: It's important to define `toPrimitive` as last one, as some implementations
|
1102
|
-
// implement `toPrimitive` natively without implementing `toStringTag` (or other specified symbols)
|
1103
|
-
// And that may invoke error in definition flow:
|
1104
|
-
// See: https://github.com/medikoo/es6-symbol/issues/13#issuecomment-164146149
|
1105
|
-
defineProperty(HiddenSymbol.prototype, SymbolPolyfill.toPrimitive,
|
1106
|
-
d('c', SymbolPolyfill.prototype[SymbolPolyfill.toPrimitive]));
|
1107
|
-
|
1108
|
-
},{"./validate-symbol":50,"d":2}],50:[function(require,module,exports){
|
1109
|
-
'use strict';
|
1110
194
|
|
1111
|
-
|
1112
|
-
|
1113
|
-
|
1114
|
-
|
1115
|
-
|
1116
|
-
}
|
1117
|
-
|
1118
|
-
},{"./is-symbol":48}],51:[function(require,module,exports){
|
1119
|
-
'use strict';
|
1120
|
-
|
1121
|
-
var d = require('d')
|
1122
|
-
, callable = require('es5-ext/object/valid-callable')
|
1123
|
-
|
1124
|
-
, apply = Function.prototype.apply, call = Function.prototype.call
|
1125
|
-
, create = Object.create, defineProperty = Object.defineProperty
|
1126
|
-
, defineProperties = Object.defineProperties
|
1127
|
-
, hasOwnProperty = Object.prototype.hasOwnProperty
|
1128
|
-
, descriptor = { configurable: true, enumerable: false, writable: true }
|
1129
|
-
|
1130
|
-
, on, once, off, emit, methods, descriptors, base;
|
1131
|
-
|
1132
|
-
on = function (type, listener) {
|
1133
|
-
var data;
|
1134
|
-
|
1135
|
-
callable(listener);
|
1136
|
-
|
1137
|
-
if (!hasOwnProperty.call(this, '__ee__')) {
|
1138
|
-
data = descriptor.value = create(null);
|
1139
|
-
defineProperty(this, '__ee__', descriptor);
|
1140
|
-
descriptor.value = null;
|
1141
|
-
} else {
|
1142
|
-
data = this.__ee__;
|
1143
|
-
}
|
1144
|
-
if (!data[type]) data[type] = listener;
|
1145
|
-
else if (typeof data[type] === 'object') data[type].push(listener);
|
1146
|
-
else data[type] = [data[type], listener];
|
1147
|
-
|
1148
|
-
return this;
|
1149
|
-
};
|
1150
|
-
|
1151
|
-
once = function (type, listener) {
|
1152
|
-
var once, self;
|
1153
|
-
|
1154
|
-
callable(listener);
|
1155
|
-
self = this;
|
1156
|
-
on.call(this, type, once = function () {
|
1157
|
-
off.call(self, type, once);
|
1158
|
-
apply.call(listener, this, arguments);
|
1159
|
-
});
|
1160
|
-
|
1161
|
-
once.__eeOnceListener__ = listener;
|
1162
|
-
return this;
|
1163
|
-
};
|
1164
|
-
|
1165
|
-
off = function (type, listener) {
|
1166
|
-
var data, listeners, candidate, i;
|
1167
|
-
|
1168
|
-
callable(listener);
|
1169
|
-
|
1170
|
-
if (!hasOwnProperty.call(this, '__ee__')) return this;
|
1171
|
-
data = this.__ee__;
|
1172
|
-
if (!data[type]) return this;
|
1173
|
-
listeners = data[type];
|
1174
|
-
|
1175
|
-
if (typeof listeners === 'object') {
|
1176
|
-
for (i = 0; (candidate = listeners[i]); ++i) {
|
1177
|
-
if ((candidate === listener) ||
|
1178
|
-
(candidate.__eeOnceListener__ === listener)) {
|
1179
|
-
if (listeners.length === 2) data[type] = listeners[i ? 0 : 1];
|
1180
|
-
else listeners.splice(i, 1);
|
195
|
+
function getKeys(data) {
|
196
|
+
var keys = [];
|
197
|
+
for (var prop in data) {
|
198
|
+
if (hasOwnProp(data, prop)) {
|
199
|
+
keys.push(prop);
|
200
|
+
}
|
1181
201
|
}
|
202
|
+
return keys;
|
1182
203
|
}
|
1183
|
-
} else {
|
1184
|
-
if ((listeners === listener) ||
|
1185
|
-
(listeners.__eeOnceListener__ === listener)) {
|
1186
|
-
delete data[type];
|
1187
|
-
}
|
1188
|
-
}
|
1189
|
-
|
1190
|
-
return this;
|
1191
|
-
};
|
1192
|
-
|
1193
|
-
emit = function (type) {
|
1194
|
-
var i, l, listener, listeners, args;
|
1195
|
-
|
1196
|
-
if (!hasOwnProperty.call(this, '__ee__')) return;
|
1197
|
-
listeners = this.__ee__[type];
|
1198
|
-
if (!listeners) return;
|
1199
|
-
|
1200
|
-
if (typeof listeners === 'object') {
|
1201
|
-
l = arguments.length;
|
1202
|
-
args = new Array(l - 1);
|
1203
|
-
for (i = 1; i < l; ++i) args[i - 1] = arguments[i];
|
1204
204
|
|
1205
|
-
|
1206
|
-
|
1207
|
-
|
1208
|
-
|
1209
|
-
|
1210
|
-
|
1211
|
-
|
1212
|
-
|
1213
|
-
|
1214
|
-
|
1215
|
-
|
1216
|
-
|
1217
|
-
|
1218
|
-
|
1219
|
-
|
1220
|
-
|
1221
|
-
|
1222
|
-
|
1223
|
-
|
1224
|
-
|
205
|
+
SetConstructor.prototype = {
|
206
|
+
add: function(val) {
|
207
|
+
var key = getKey(val, true);
|
208
|
+
if (!hasOwnProp(this._data, key)) {
|
209
|
+
this._data[key] = val;
|
210
|
+
setSize(this, this.size + 1);
|
211
|
+
}
|
212
|
+
return this;
|
213
|
+
},
|
214
|
+
clear: function() {
|
215
|
+
this._data = {};
|
216
|
+
setSize(this, 0);
|
217
|
+
},
|
218
|
+
// delete has to be in quotes for IE8 - go figure
|
219
|
+
"delete": function(val) {
|
220
|
+
var key = getKey(val, false);
|
221
|
+
if (key !== null && hasOwnProp(this._data, key)) {
|
222
|
+
delete this._data[key];
|
223
|
+
setSize(this, this.size - 1);
|
224
|
+
return true;
|
225
|
+
}
|
226
|
+
return false;
|
227
|
+
},
|
228
|
+
// .remove() is non-standard, but here for anyone who wants to use it
|
229
|
+
// so that you can use this polyfill all the way down to IE7 and IE8
|
230
|
+
// since IE8 can't use a method named .delete()
|
231
|
+
remove: function(val) {
|
232
|
+
return this["delete"](val);
|
233
|
+
},
|
234
|
+
forEach: function(fn /*, context */) {
|
235
|
+
// by spec, we have to type check the fn argument
|
236
|
+
if (typeof fn !== "function") return;
|
237
|
+
|
238
|
+
// context argument is optional, but .forEach.length is supposed to be 1 by spec
|
239
|
+
// so we declare it this way
|
240
|
+
var context = arguments[1];
|
241
|
+
|
242
|
+
// forEach specifies that the iteration set is
|
243
|
+
// determined before the first callback so we get all the
|
244
|
+
// keys first
|
245
|
+
var iter = this.keys(), next, item;
|
246
|
+
while ((next = iter.next()) && !next.done) {
|
247
|
+
item = next.value;
|
248
|
+
fn.call(context, item, item, this);
|
249
|
+
}
|
250
|
+
},
|
251
|
+
has: function(val) {
|
252
|
+
var key = getKey(val, false);
|
253
|
+
if (key === null) return false;
|
254
|
+
return hasOwn.call(this._data, key);
|
255
|
+
},
|
256
|
+
values: function() {
|
257
|
+
return this.keys();
|
258
|
+
},
|
259
|
+
keys: function() {
|
260
|
+
return new SetIterator(getKeys(this._data), this._data, "keys");
|
261
|
+
},
|
262
|
+
entries: function() {
|
263
|
+
return new SetIterator(getKeys(this._data), this._data, "entries");
|
1225
264
|
}
|
1226
|
-
|
1227
|
-
}
|
1228
|
-
}
|
1229
|
-
};
|
1230
|
-
|
1231
|
-
methods = {
|
1232
|
-
on: on,
|
1233
|
-
once: once,
|
1234
|
-
off: off,
|
1235
|
-
emit: emit
|
1236
|
-
};
|
1237
|
-
|
1238
|
-
descriptors = {
|
1239
|
-
on: d(on),
|
1240
|
-
once: d(once),
|
1241
|
-
off: d(off),
|
1242
|
-
emit: d(emit)
|
1243
|
-
};
|
1244
|
-
|
1245
|
-
base = defineProperties({}, descriptors);
|
265
|
+
};
|
1246
266
|
|
1247
|
-
|
1248
|
-
return (o == null) ? create(base) : defineProperties(Object(o), descriptors);
|
1249
|
-
};
|
1250
|
-
exports.methods = methods;
|
267
|
+
SetConstructor.prototype.constructor = SetConstructor;
|
1251
268
|
|
1252
|
-
|
1253
|
-
});
|
269
|
+
return SetConstructor;
|
270
|
+
})();
|
271
|
+
}
|