aboutsummaryrefslogtreecommitdiff
path: root/node_modules/es5-ext/array
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/es5-ext/array')
-rw-r--r--node_modules/es5-ext/array/#/@@iterator/implement.js10
-rw-r--r--node_modules/es5-ext/array/#/@@iterator/index.js4
-rw-r--r--node_modules/es5-ext/array/#/@@iterator/is-implemented.js16
-rw-r--r--node_modules/es5-ext/array/#/@@iterator/shim.js3
-rw-r--r--node_modules/es5-ext/array/#/_compare-by-length.js9
-rw-r--r--node_modules/es5-ext/array/#/binary-search.js28
-rw-r--r--node_modules/es5-ext/array/#/clear.js12
-rw-r--r--node_modules/es5-ext/array/#/compact.js13
-rw-r--r--node_modules/es5-ext/array/#/concat/implement.js8
-rw-r--r--node_modules/es5-ext/array/#/concat/index.js4
-rw-r--r--node_modules/es5-ext/array/#/concat/is-implemented.js7
-rw-r--r--node_modules/es5-ext/array/#/concat/shim.js48
-rw-r--r--node_modules/es5-ext/array/#/contains.js7
-rw-r--r--node_modules/es5-ext/array/#/copy-within/implement.js9
-rw-r--r--node_modules/es5-ext/array/#/copy-within/index.js4
-rw-r--r--node_modules/es5-ext/array/#/copy-within/is-implemented.js7
-rw-r--r--node_modules/es5-ext/array/#/copy-within/shim.js45
-rw-r--r--node_modules/es5-ext/array/#/diff.js13
-rw-r--r--node_modules/es5-ext/array/#/e-index-of.js28
-rw-r--r--node_modules/es5-ext/array/#/e-last-index-of.js31
-rw-r--r--node_modules/es5-ext/array/#/entries/implement.js8
-rw-r--r--node_modules/es5-ext/array/#/entries/index.js4
-rw-r--r--node_modules/es5-ext/array/#/entries/is-implemented.js15
-rw-r--r--node_modules/es5-ext/array/#/entries/shim.js6
-rw-r--r--node_modules/es5-ext/array/#/exclusion.js31
-rw-r--r--node_modules/es5-ext/array/#/fill/implement.js8
-rw-r--r--node_modules/es5-ext/array/#/fill/index.js4
-rw-r--r--node_modules/es5-ext/array/#/fill/is-implemented.js7
-rw-r--r--node_modules/es5-ext/array/#/fill/shim.js25
-rw-r--r--node_modules/es5-ext/array/#/filter/implement.js8
-rw-r--r--node_modules/es5-ext/array/#/filter/index.js4
-rw-r--r--node_modules/es5-ext/array/#/filter/is-implemented.js11
-rw-r--r--node_modules/es5-ext/array/#/filter/shim.js23
-rw-r--r--node_modules/es5-ext/array/#/find-index/implement.js9
-rw-r--r--node_modules/es5-ext/array/#/find-index/index.js4
-rw-r--r--node_modules/es5-ext/array/#/find-index/is-implemented.js11
-rw-r--r--node_modules/es5-ext/array/#/find-index/shim.js26
-rw-r--r--node_modules/es5-ext/array/#/find/implement.js8
-rw-r--r--node_modules/es5-ext/array/#/find/index.js4
-rw-r--r--node_modules/es5-ext/array/#/find/is-implemented.js11
-rw-r--r--node_modules/es5-ext/array/#/find/shim.js9
-rw-r--r--node_modules/es5-ext/array/#/first-index.js15
-rw-r--r--node_modules/es5-ext/array/#/first.js9
-rw-r--r--node_modules/es5-ext/array/#/flatten.js40
-rw-r--r--node_modules/es5-ext/array/#/for-each-right.js19
-rw-r--r--node_modules/es5-ext/array/#/group.js28
-rw-r--r--node_modules/es5-ext/array/#/index.js40
-rw-r--r--node_modules/es5-ext/array/#/indexes-of.js12
-rw-r--r--node_modules/es5-ext/array/#/intersection.js21
-rw-r--r--node_modules/es5-ext/array/#/is-copy.js21
-rw-r--r--node_modules/es5-ext/array/#/is-uniq.js14
-rw-r--r--node_modules/es5-ext/array/#/keys/implement.js8
-rw-r--r--node_modules/es5-ext/array/#/keys/index.js4
-rw-r--r--node_modules/es5-ext/array/#/keys/is-implemented.js14
-rw-r--r--node_modules/es5-ext/array/#/keys/shim.js6
-rw-r--r--node_modules/es5-ext/array/#/last-index.js15
-rw-r--r--node_modules/es5-ext/array/#/last.js9
-rw-r--r--node_modules/es5-ext/array/#/map/implement.js8
-rw-r--r--node_modules/es5-ext/array/#/map/index.js4
-rw-r--r--node_modules/es5-ext/array/#/map/is-implemented.js8
-rw-r--r--node_modules/es5-ext/array/#/map/shim.js21
-rw-r--r--node_modules/es5-ext/array/#/remove.js17
-rw-r--r--node_modules/es5-ext/array/#/separate.js12
-rw-r--r--node_modules/es5-ext/array/#/slice/implement.js8
-rw-r--r--node_modules/es5-ext/array/#/slice/index.js4
-rw-r--r--node_modules/es5-ext/array/#/slice/is-implemented.js7
-rw-r--r--node_modules/es5-ext/array/#/slice/shim.js36
-rw-r--r--node_modules/es5-ext/array/#/some-right.js21
-rw-r--r--node_modules/es5-ext/array/#/splice/implement.js8
-rw-r--r--node_modules/es5-ext/array/#/splice/index.js4
-rw-r--r--node_modules/es5-ext/array/#/splice/is-implemented.js7
-rw-r--r--node_modules/es5-ext/array/#/splice/shim.js17
-rw-r--r--node_modules/es5-ext/array/#/uniq.js15
-rw-r--r--node_modules/es5-ext/array/#/values/implement.js8
-rw-r--r--node_modules/es5-ext/array/#/values/index.js3
-rw-r--r--node_modules/es5-ext/array/#/values/is-implemented.js14
-rw-r--r--node_modules/es5-ext/array/#/values/shim.js6
-rw-r--r--node_modules/es5-ext/array/_is-extensible.js13
-rw-r--r--node_modules/es5-ext/array/_sub-array-dummy-safe.js25
-rw-r--r--node_modules/es5-ext/array/_sub-array-dummy.js20
-rw-r--r--node_modules/es5-ext/array/from/implement.js8
-rw-r--r--node_modules/es5-ext/array/from/index.js5
-rw-r--r--node_modules/es5-ext/array/from/is-implemented.js9
-rw-r--r--node_modules/es5-ext/array/from/shim.js119
-rw-r--r--node_modules/es5-ext/array/generate.js18
-rw-r--r--node_modules/es5-ext/array/index.js11
-rw-r--r--node_modules/es5-ext/array/is-plain-array.js11
-rw-r--r--node_modules/es5-ext/array/of/implement.js8
-rw-r--r--node_modules/es5-ext/array/of/index.js5
-rw-r--r--node_modules/es5-ext/array/of/is-implemented.js8
-rw-r--r--node_modules/es5-ext/array/of/shim.js19
-rw-r--r--node_modules/es5-ext/array/to-array.js9
-rw-r--r--node_modules/es5-ext/array/valid-array.js8
93 files changed, 1341 insertions, 0 deletions
diff --git a/node_modules/es5-ext/array/#/@@iterator/implement.js b/node_modules/es5-ext/array/#/@@iterator/implement.js
new file mode 100644
index 000000000..8073f2bc6
--- /dev/null
+++ b/node_modules/es5-ext/array/#/@@iterator/implement.js
@@ -0,0 +1,10 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, require("es6-symbol").iterator, {
+ value: require("./shim"),
+ configurable: true,
+ enumerable: false,
+ writable: true
+ });
+}
diff --git a/node_modules/es5-ext/array/#/@@iterator/index.js b/node_modules/es5-ext/array/#/@@iterator/index.js
new file mode 100644
index 000000000..d93774654
--- /dev/null
+++ b/node_modules/es5-ext/array/#/@@iterator/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype[require("es6-symbol").iterator] : require("./shim");
diff --git a/node_modules/es5-ext/array/#/@@iterator/is-implemented.js b/node_modules/es5-ext/array/#/@@iterator/is-implemented.js
new file mode 100644
index 000000000..6445c04ea
--- /dev/null
+++ b/node_modules/es5-ext/array/#/@@iterator/is-implemented.js
@@ -0,0 +1,16 @@
+"use strict";
+
+var iteratorSymbol = require("es6-symbol").iterator;
+
+module.exports = function () {
+ var arr = ["foo", 1], iterator, result;
+ if (typeof arr[iteratorSymbol] !== "function") return false;
+ iterator = arr[iteratorSymbol]();
+ if (!iterator) return false;
+ if (typeof iterator.next !== "function") return false;
+ result = iterator.next();
+ if (!result) return false;
+ if (result.value !== "foo") return false;
+ if (result.done !== false) return false;
+ return true;
+};
diff --git a/node_modules/es5-ext/array/#/@@iterator/shim.js b/node_modules/es5-ext/array/#/@@iterator/shim.js
new file mode 100644
index 000000000..307b1c0aa
--- /dev/null
+++ b/node_modules/es5-ext/array/#/@@iterator/shim.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("../values/shim");
diff --git a/node_modules/es5-ext/array/#/_compare-by-length.js b/node_modules/es5-ext/array/#/_compare-by-length.js
new file mode 100644
index 000000000..f1c0cacc7
--- /dev/null
+++ b/node_modules/es5-ext/array/#/_compare-by-length.js
@@ -0,0 +1,9 @@
+// Used internally to sort array of lists by length
+
+"use strict";
+
+var toPosInt = require("../../number/to-pos-integer");
+
+module.exports = function (arr1, arr2) {
+ return toPosInt(arr1.length) - toPosInt(arr2.length);
+};
diff --git a/node_modules/es5-ext/array/#/binary-search.js b/node_modules/es5-ext/array/#/binary-search.js
new file mode 100644
index 000000000..9b2c42ec5
--- /dev/null
+++ b/node_modules/es5-ext/array/#/binary-search.js
@@ -0,0 +1,28 @@
+"use strict";
+
+var toPosInt = require("../../number/to-pos-integer")
+ , callable = require("../../object/valid-callable")
+ , value = require("../../object/valid-value")
+
+ , floor = Math.floor;
+
+module.exports = function (compareFn) {
+ var length, low, high, middle;
+
+ value(this);
+ callable(compareFn);
+
+ length = toPosInt(this.length);
+ low = 0;
+ high = length - 1;
+
+ while (low <= high) {
+ middle = floor((low + high) / 2);
+ if (compareFn(this[middle]) < 0) high = middle - 1;
+ else low = middle + 1;
+ }
+
+ if (high < 0) return 0;
+ if (high >= length) return length - 1;
+ return high;
+};
diff --git a/node_modules/es5-ext/array/#/clear.js b/node_modules/es5-ext/array/#/clear.js
new file mode 100644
index 000000000..fd539c9b7
--- /dev/null
+++ b/node_modules/es5-ext/array/#/clear.js
@@ -0,0 +1,12 @@
+// Inspired by Google Closure:
+// http://closure-library.googlecode.com/svn/docs/
+// closure_goog_array_array.js.html#goog.array.clear
+
+"use strict";
+
+var value = require("../../object/valid-value");
+
+module.exports = function () {
+ value(this).length = 0;
+ return this;
+};
diff --git a/node_modules/es5-ext/array/#/compact.js b/node_modules/es5-ext/array/#/compact.js
new file mode 100644
index 000000000..3da1309d3
--- /dev/null
+++ b/node_modules/es5-ext/array/#/compact.js
@@ -0,0 +1,13 @@
+// Inspired by: http://documentcloud.github.com/underscore/#compact
+
+"use strict";
+
+var isValue = require("../../object/is-value");
+
+var filter = Array.prototype.filter;
+
+module.exports = function () {
+ return filter.call(this, function (val) {
+ return isValue(val);
+ });
+};
diff --git a/node_modules/es5-ext/array/#/concat/implement.js b/node_modules/es5-ext/array/#/concat/implement.js
new file mode 100644
index 000000000..a5a1a4090
--- /dev/null
+++ b/node_modules/es5-ext/array/#/concat/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "concat", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/node_modules/es5-ext/array/#/concat/index.js b/node_modules/es5-ext/array/#/concat/index.js
new file mode 100644
index 000000000..8bbb7bc19
--- /dev/null
+++ b/node_modules/es5-ext/array/#/concat/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.concat : require("./shim");
diff --git a/node_modules/es5-ext/array/#/concat/is-implemented.js b/node_modules/es5-ext/array/#/concat/is-implemented.js
new file mode 100644
index 000000000..2a3a9fc60
--- /dev/null
+++ b/node_modules/es5-ext/array/#/concat/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var SubArray = require("../../_sub-array-dummy-safe");
+
+module.exports = function () {
+ return (new SubArray()).concat("foo") instanceof SubArray;
+};
diff --git a/node_modules/es5-ext/array/#/concat/shim.js b/node_modules/es5-ext/array/#/concat/shim.js
new file mode 100644
index 000000000..5158dde52
--- /dev/null
+++ b/node_modules/es5-ext/array/#/concat/shim.js
@@ -0,0 +1,48 @@
+"use strict";
+
+var isPlainArray = require("../../is-plain-array")
+ , toPosInt = require("../../../number/to-pos-integer")
+ , isObject = require("../../../object/is-object")
+ , isConcatSpreadable = require("es6-symbol").isConcatSpreadable
+ , isArray = Array.isArray
+ , concat = Array.prototype.concat
+ , forEach = Array.prototype.forEach
+ , isSpreadable;
+
+isSpreadable = function (value) {
+ if (!value) return false;
+ if (!isObject(value)) return false;
+ if (value[isConcatSpreadable] !== undefined) {
+ return Boolean(value[isConcatSpreadable]);
+ }
+ return isArray(value);
+};
+
+// eslint-disable-next-line no-unused-vars
+module.exports = function (item /*, …items*/) {
+ var result;
+ if (!this || !isArray(this) || isPlainArray(this)) {
+ return concat.apply(this, arguments);
+ }
+ result = new this.constructor();
+ if (isSpreadable(this)) {
+ forEach.call(this, function (val, i) {
+ result[i] = val;
+ });
+ } else {
+ result[0] = this;
+ }
+ forEach.call(arguments, function (arg) {
+ var base;
+ if (isSpreadable(arg)) {
+ base = result.length;
+ result.length += toPosInt(arg.length);
+ forEach.call(arg, function (val, i) {
+ result[base + i] = val;
+ });
+ return;
+ }
+ result.push(arg);
+ });
+ return result;
+};
diff --git a/node_modules/es5-ext/array/#/contains.js b/node_modules/es5-ext/array/#/contains.js
new file mode 100644
index 000000000..cde6850ec
--- /dev/null
+++ b/node_modules/es5-ext/array/#/contains.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var indexOf = require("./e-index-of");
+
+module.exports = function (searchElement/*, position*/) {
+ return indexOf.call(this, searchElement, arguments[1]) > -1;
+};
diff --git a/node_modules/es5-ext/array/#/copy-within/implement.js b/node_modules/es5-ext/array/#/copy-within/implement.js
new file mode 100644
index 000000000..20910507a
--- /dev/null
+++ b/node_modules/es5-ext/array/#/copy-within/implement.js
@@ -0,0 +1,9 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "copyWithin",
+ { value: require("./shim"),
+configurable: true,
+enumerable: false,
+ writable: true });
+}
diff --git a/node_modules/es5-ext/array/#/copy-within/index.js b/node_modules/es5-ext/array/#/copy-within/index.js
new file mode 100644
index 000000000..0919b79b9
--- /dev/null
+++ b/node_modules/es5-ext/array/#/copy-within/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.copyWithin : require("./shim");
diff --git a/node_modules/es5-ext/array/#/copy-within/is-implemented.js b/node_modules/es5-ext/array/#/copy-within/is-implemented.js
new file mode 100644
index 000000000..40c499e6d
--- /dev/null
+++ b/node_modules/es5-ext/array/#/copy-within/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var arr = [1, 2, 3, 4, 5];
+ if (typeof arr.copyWithin !== "function") return false;
+ return String(arr.copyWithin(1, 3)) === "1,4,5,4,5";
+};
diff --git a/node_modules/es5-ext/array/#/copy-within/shim.js b/node_modules/es5-ext/array/#/copy-within/shim.js
new file mode 100644
index 000000000..aad220ca7
--- /dev/null
+++ b/node_modules/es5-ext/array/#/copy-within/shim.js
@@ -0,0 +1,45 @@
+// Taken from: https://github.com/paulmillr/es6-shim/
+
+"use strict";
+
+var toInteger = require("../../../number/to-integer")
+ , toPosInt = require("../../../number/to-pos-integer")
+ , validValue = require("../../../object/valid-value")
+ , objHasOwnProperty = Object.prototype.hasOwnProperty
+ , max = Math.max
+ , min = Math.min;
+
+module.exports = function (target, start /*, end*/) {
+ var arr = validValue(this)
+ , end = arguments[2]
+ , length = toPosInt(arr.length)
+ , to
+ , from
+ , fin
+ , count
+ , direction;
+
+ target = toInteger(target);
+ start = toInteger(start);
+ end = end === undefined ? length : toInteger(end);
+
+ to = target < 0 ? max(length + target, 0) : min(target, length);
+ from = start < 0 ? max(length + start, 0) : min(start, length);
+ fin = end < 0 ? max(length + end, 0) : min(end, length);
+ count = min(fin - from, length - to);
+ direction = 1;
+
+ if (from < to && to < from + count) {
+ direction = -1;
+ from += count - 1;
+ to += count - 1;
+ }
+ while (count > 0) {
+ if (objHasOwnProperty.call(arr, from)) arr[to] = arr[from];
+ else delete arr[from];
+ from += direction;
+ to += direction;
+ count -= 1;
+ }
+ return arr;
+};
diff --git a/node_modules/es5-ext/array/#/diff.js b/node_modules/es5-ext/array/#/diff.js
new file mode 100644
index 000000000..fbb1682b7
--- /dev/null
+++ b/node_modules/es5-ext/array/#/diff.js
@@ -0,0 +1,13 @@
+"use strict";
+
+var value = require("../../object/valid-value")
+ , contains = require("./contains")
+ , filter = Array.prototype.filter;
+
+module.exports = function (other) {
+ value(this);
+ value(other);
+ return filter.call(this, function (item) {
+ return !contains.call(other, item);
+ });
+};
diff --git a/node_modules/es5-ext/array/#/e-index-of.js b/node_modules/es5-ext/array/#/e-index-of.js
new file mode 100644
index 000000000..8b0701177
--- /dev/null
+++ b/node_modules/es5-ext/array/#/e-index-of.js
@@ -0,0 +1,28 @@
+"use strict";
+
+var numberIsNaN = require("../../number/is-nan")
+ , toPosInt = require("../../number/to-pos-integer")
+ , value = require("../../object/valid-value")
+ , indexOf = Array.prototype.indexOf
+ , objHasOwnProperty = Object.prototype.hasOwnProperty
+ , abs = Math.abs
+ , floor = Math.floor;
+
+module.exports = function (searchElement /*, fromIndex*/) {
+ var i, length, fromIndex, val;
+ if (!numberIsNaN(searchElement)) return indexOf.apply(this, arguments);
+
+ length = toPosInt(value(this).length);
+ fromIndex = arguments[1];
+ if (isNaN(fromIndex)) fromIndex = 0;
+ else if (fromIndex >= 0) fromIndex = floor(fromIndex);
+ else fromIndex = toPosInt(this.length) - floor(abs(fromIndex));
+
+ for (i = fromIndex; i < length; ++i) {
+ if (objHasOwnProperty.call(this, i)) {
+ val = this[i];
+ if (numberIsNaN(val)) return i; // Jslint: ignore
+ }
+ }
+ return -1;
+};
diff --git a/node_modules/es5-ext/array/#/e-last-index-of.js b/node_modules/es5-ext/array/#/e-last-index-of.js
new file mode 100644
index 000000000..15dbe05b8
--- /dev/null
+++ b/node_modules/es5-ext/array/#/e-last-index-of.js
@@ -0,0 +1,31 @@
+"use strict";
+
+var numberIsNaN = require("../../number/is-nan")
+ , toPosInt = require("../../number/to-pos-integer")
+ , value = require("../../object/valid-value")
+ , lastIndexOf = Array.prototype.lastIndexOf
+ , objHasOwnProperty = Object.prototype.hasOwnProperty
+ , abs = Math.abs
+ , floor = Math.floor;
+
+module.exports = function (searchElement /*, fromIndex*/) {
+ var i, fromIndex, val;
+ if (!numberIsNaN(searchElement)) {
+ // Jslint: ignore
+ return lastIndexOf.apply(this, arguments);
+ }
+
+ value(this);
+ fromIndex = arguments[1];
+ if (isNaN(fromIndex)) fromIndex = toPosInt(this.length) - 1;
+ else if (fromIndex >= 0) fromIndex = floor(fromIndex);
+ else fromIndex = toPosInt(this.length) - floor(abs(fromIndex));
+
+ for (i = fromIndex; i >= 0; --i) {
+ if (objHasOwnProperty.call(this, i)) {
+ val = this[i];
+ if (numberIsNaN(val)) return i; // Jslint: ignore
+ }
+ }
+ return -1;
+};
diff --git a/node_modules/es5-ext/array/#/entries/implement.js b/node_modules/es5-ext/array/#/entries/implement.js
new file mode 100644
index 000000000..acc8a111c
--- /dev/null
+++ b/node_modules/es5-ext/array/#/entries/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "entries", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/node_modules/es5-ext/array/#/entries/index.js b/node_modules/es5-ext/array/#/entries/index.js
new file mode 100644
index 000000000..f18f7d921
--- /dev/null
+++ b/node_modules/es5-ext/array/#/entries/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.entries : require("./shim");
diff --git a/node_modules/es5-ext/array/#/entries/is-implemented.js b/node_modules/es5-ext/array/#/entries/is-implemented.js
new file mode 100644
index 000000000..335f1c209
--- /dev/null
+++ b/node_modules/es5-ext/array/#/entries/is-implemented.js
@@ -0,0 +1,15 @@
+"use strict";
+
+module.exports = function () {
+ var arr = [1, "foo"], iterator, result;
+ if (typeof arr.entries !== "function") return false;
+ iterator = arr.entries();
+ if (!iterator) return false;
+ if (typeof iterator.next !== "function") return false;
+ result = iterator.next();
+ if (!result || !result.value) return false;
+ if (result.value[0] !== 0) return false;
+ if (result.value[1] !== 1) return false;
+ if (result.done !== false) return false;
+ return true;
+};
diff --git a/node_modules/es5-ext/array/#/entries/shim.js b/node_modules/es5-ext/array/#/entries/shim.js
new file mode 100644
index 000000000..caa45b7a2
--- /dev/null
+++ b/node_modules/es5-ext/array/#/entries/shim.js
@@ -0,0 +1,6 @@
+"use strict";
+
+var ArrayIterator = require("es6-iterator/array");
+module.exports = function () {
+ return new ArrayIterator(this, "key+value");
+};
diff --git a/node_modules/es5-ext/array/#/exclusion.js b/node_modules/es5-ext/array/#/exclusion.js
new file mode 100644
index 000000000..41057d06f
--- /dev/null
+++ b/node_modules/es5-ext/array/#/exclusion.js
@@ -0,0 +1,31 @@
+"use strict";
+
+var value = require("../../object/valid-value")
+ , aFrom = require("../from")
+ , toArray = require("../to-array")
+ , contains = require("./contains")
+ , byLength = require("./_compare-by-length")
+ , filter = Array.prototype.filter
+ , push = Array.prototype.push;
+
+module.exports = function (/* …lists*/) {
+ var lists, seen, result;
+ if (!arguments.length) return aFrom(this);
+ push.apply(lists = [this], arguments);
+ lists.forEach(value);
+ seen = [];
+ result = [];
+ lists.sort(byLength).forEach(function (list) {
+ result = result
+ .filter(function (item) {
+ return !contains.call(list, item);
+ })
+ .concat(
+ filter.call(list, function (item) {
+ return !contains.call(seen, item);
+ })
+ );
+ push.apply(seen, toArray(list));
+ });
+ return result;
+};
diff --git a/node_modules/es5-ext/array/#/fill/implement.js b/node_modules/es5-ext/array/#/fill/implement.js
new file mode 100644
index 000000000..9de58b75f
--- /dev/null
+++ b/node_modules/es5-ext/array/#/fill/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "fill", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/node_modules/es5-ext/array/#/fill/index.js b/node_modules/es5-ext/array/#/fill/index.js
new file mode 100644
index 000000000..a8272475d
--- /dev/null
+++ b/node_modules/es5-ext/array/#/fill/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.fill : require("./shim");
diff --git a/node_modules/es5-ext/array/#/fill/is-implemented.js b/node_modules/es5-ext/array/#/fill/is-implemented.js
new file mode 100644
index 000000000..5d6d02e1a
--- /dev/null
+++ b/node_modules/es5-ext/array/#/fill/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var arr = [1, 2, 3, 4, 5, 6];
+ if (typeof arr.fill !== "function") return false;
+ return String(arr.fill(-1, -3)) === "1,2,3,-1,-1,-1";
+};
diff --git a/node_modules/es5-ext/array/#/fill/shim.js b/node_modules/es5-ext/array/#/fill/shim.js
new file mode 100644
index 000000000..0040bf81a
--- /dev/null
+++ b/node_modules/es5-ext/array/#/fill/shim.js
@@ -0,0 +1,25 @@
+// Taken from: https://github.com/paulmillr/es6-shim/
+
+"use strict";
+
+var toInteger = require("../../../number/to-integer")
+ , toPosInt = require("../../../number/to-pos-integer")
+ , validValue = require("../../../object/valid-value")
+ , max = Math.max
+ , min = Math.min;
+
+module.exports = function (value /*, start, end*/) {
+ var arr = validValue(this)
+ , start = arguments[1]
+ , end = arguments[2]
+ , length = toPosInt(arr.length)
+ , relativeStart
+ , i;
+
+ start = start === undefined ? 0 : toInteger(start);
+ end = end === undefined ? length : toInteger(end);
+
+ relativeStart = start < 0 ? max(length + start, 0) : min(start, length);
+ for (i = relativeStart; i < length && i < end; ++i) arr[i] = value;
+ return arr;
+};
diff --git a/node_modules/es5-ext/array/#/filter/implement.js b/node_modules/es5-ext/array/#/filter/implement.js
new file mode 100644
index 000000000..450257515
--- /dev/null
+++ b/node_modules/es5-ext/array/#/filter/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "filter", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/node_modules/es5-ext/array/#/filter/index.js b/node_modules/es5-ext/array/#/filter/index.js
new file mode 100644
index 000000000..ad2082d93
--- /dev/null
+++ b/node_modules/es5-ext/array/#/filter/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.filter : require("./shim");
diff --git a/node_modules/es5-ext/array/#/filter/is-implemented.js b/node_modules/es5-ext/array/#/filter/is-implemented.js
new file mode 100644
index 000000000..06de09960
--- /dev/null
+++ b/node_modules/es5-ext/array/#/filter/is-implemented.js
@@ -0,0 +1,11 @@
+"use strict";
+
+var SubArray = require("../../_sub-array-dummy-safe")
+
+ , pass = function () {
+ return true;
+};
+
+module.exports = function () {
+ return (new SubArray()).filter(pass) instanceof SubArray;
+};
diff --git a/node_modules/es5-ext/array/#/filter/shim.js b/node_modules/es5-ext/array/#/filter/shim.js
new file mode 100644
index 000000000..38304e4b8
--- /dev/null
+++ b/node_modules/es5-ext/array/#/filter/shim.js
@@ -0,0 +1,23 @@
+"use strict";
+
+var isPlainArray = require("../../is-plain-array")
+ , callable = require("../../../object/valid-callable")
+ , isArray = Array.isArray
+ , filter = Array.prototype.filter
+ , forEach = Array.prototype.forEach
+ , call = Function.prototype.call;
+
+module.exports = function (callbackFn /*, thisArg*/) {
+ var result, thisArg, i;
+ if (!this || !isArray(this) || isPlainArray(this)) {
+ return filter.apply(this, arguments);
+ }
+ callable(callbackFn);
+ thisArg = arguments[1];
+ result = new this.constructor();
+ i = 0;
+ forEach.call(this, function (val, j, self) {
+ if (call.call(callbackFn, thisArg, val, j, self)) result[i++] = val;
+ });
+ return result;
+};
diff --git a/node_modules/es5-ext/array/#/find-index/implement.js b/node_modules/es5-ext/array/#/find-index/implement.js
new file mode 100644
index 000000000..4876b9e4e
--- /dev/null
+++ b/node_modules/es5-ext/array/#/find-index/implement.js
@@ -0,0 +1,9 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "findIndex",
+ { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/node_modules/es5-ext/array/#/find-index/index.js b/node_modules/es5-ext/array/#/find-index/index.js
new file mode 100644
index 000000000..3d505b1f5
--- /dev/null
+++ b/node_modules/es5-ext/array/#/find-index/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.findIndex : require("./shim");
diff --git a/node_modules/es5-ext/array/#/find-index/is-implemented.js b/node_modules/es5-ext/array/#/find-index/is-implemented.js
new file mode 100644
index 000000000..818c920e4
--- /dev/null
+++ b/node_modules/es5-ext/array/#/find-index/is-implemented.js
@@ -0,0 +1,11 @@
+"use strict";
+
+var fn = function (value) {
+ return value > 3;
+};
+
+module.exports = function () {
+ var arr = [1, 2, 3, 4, 5, 6];
+ if (typeof arr.findIndex !== "function") return false;
+ return arr.findIndex(fn) === 3;
+};
diff --git a/node_modules/es5-ext/array/#/find-index/shim.js b/node_modules/es5-ext/array/#/find-index/shim.js
new file mode 100644
index 000000000..bc82827ad
--- /dev/null
+++ b/node_modules/es5-ext/array/#/find-index/shim.js
@@ -0,0 +1,26 @@
+"use strict";
+
+var callable = require("../../../object/valid-callable")
+ , ensureValue = require("../../../object/valid-value")
+ , some = Array.prototype.some
+ , apply = Function.prototype.apply;
+
+module.exports = function (predicate /*, thisArg*/) {
+ var k, self;
+ self = Object(ensureValue(this));
+ callable(predicate);
+
+ return some.call(
+ self,
+ function (value, index) {
+ if (apply.call(predicate, this, arguments)) {
+ k = index;
+ return true;
+ }
+ return false;
+ },
+ arguments[1]
+ )
+ ? k
+ : -1;
+};
diff --git a/node_modules/es5-ext/array/#/find/implement.js b/node_modules/es5-ext/array/#/find/implement.js
new file mode 100644
index 000000000..d8ebc5b81
--- /dev/null
+++ b/node_modules/es5-ext/array/#/find/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "find", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/node_modules/es5-ext/array/#/find/index.js b/node_modules/es5-ext/array/#/find/index.js
new file mode 100644
index 000000000..131a71be4
--- /dev/null
+++ b/node_modules/es5-ext/array/#/find/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.find : require("./shim");
diff --git a/node_modules/es5-ext/array/#/find/is-implemented.js b/node_modules/es5-ext/array/#/find/is-implemented.js
new file mode 100644
index 000000000..aa278a7b5
--- /dev/null
+++ b/node_modules/es5-ext/array/#/find/is-implemented.js
@@ -0,0 +1,11 @@
+"use strict";
+
+var fn = function (value) {
+ return value > 3;
+};
+
+module.exports = function () {
+ var arr = [1, 2, 3, 4, 5, 6];
+ if (typeof arr.find !== "function") return false;
+ return arr.find(fn) === 4;
+};
diff --git a/node_modules/es5-ext/array/#/find/shim.js b/node_modules/es5-ext/array/#/find/shim.js
new file mode 100644
index 000000000..c45a93805
--- /dev/null
+++ b/node_modules/es5-ext/array/#/find/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var findIndex = require("../find-index/shim");
+
+// eslint-disable-next-line no-unused-vars
+module.exports = function (predicate /*, thisArg*/) {
+ var index = findIndex.apply(this, arguments);
+ return index === -1 ? undefined : this[index];
+};
diff --git a/node_modules/es5-ext/array/#/first-index.js b/node_modules/es5-ext/array/#/first-index.js
new file mode 100644
index 000000000..19bff5419
--- /dev/null
+++ b/node_modules/es5-ext/array/#/first-index.js
@@ -0,0 +1,15 @@
+"use strict";
+
+var toPosInt = require("../../number/to-pos-integer")
+ , value = require("../../object/valid-value")
+ , objHasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function () {
+ var i, length;
+ if (!(length = toPosInt(value(this).length))) return null;
+ i = 0;
+ while (!objHasOwnProperty.call(this, i)) {
+ if (++i === length) return null;
+ }
+ return i;
+};
diff --git a/node_modules/es5-ext/array/#/first.js b/node_modules/es5-ext/array/#/first.js
new file mode 100644
index 000000000..ca76833b1
--- /dev/null
+++ b/node_modules/es5-ext/array/#/first.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var firstIndex = require("./first-index");
+
+module.exports = function () {
+ var i;
+ if ((i = firstIndex.call(this)) !== null) return this[i];
+ return undefined;
+};
diff --git a/node_modules/es5-ext/array/#/flatten.js b/node_modules/es5-ext/array/#/flatten.js
new file mode 100644
index 000000000..40167274e
--- /dev/null
+++ b/node_modules/es5-ext/array/#/flatten.js
@@ -0,0 +1,40 @@
+// Stack grow safe implementation
+
+"use strict";
+
+var ensureValue = require("../../object/valid-value")
+ , isArray = Array.isArray
+ , objHasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function () {
+ var input = ensureValue(this), index = 0, remaining, remainingIndexes, length, i, result = [];
+ // Jslint: ignore
+ main: while (input) {
+ length = input.length;
+ for (i = index; i < length; ++i) {
+ if (!objHasOwnProperty.call(input, i)) continue;
+ if (isArray(input[i])) {
+ if (i < length - 1) {
+ // eslint-disable-next-line max-depth
+ if (!remaining) {
+ remaining = [];
+ remainingIndexes = [];
+ }
+ remaining.push(input);
+ remainingIndexes.push(i + 1);
+ }
+ input = input[i];
+ index = 0;
+ continue main;
+ }
+ result.push(input[i]);
+ }
+ if (remaining) {
+ input = remaining.pop();
+ index = remainingIndexes.pop();
+ } else {
+ input = null;
+ }
+ }
+ return result;
+};
diff --git a/node_modules/es5-ext/array/#/for-each-right.js b/node_modules/es5-ext/array/#/for-each-right.js
new file mode 100644
index 000000000..ebf076b17
--- /dev/null
+++ b/node_modules/es5-ext/array/#/for-each-right.js
@@ -0,0 +1,19 @@
+"use strict";
+
+var toPosInt = require("../../number/to-pos-integer")
+ , callable = require("../../object/valid-callable")
+ , value = require("../../object/valid-value")
+ , objHasOwnProperty = Object.prototype.hasOwnProperty
+ , call = Function.prototype.call;
+
+module.exports = function (cb /*, thisArg*/) {
+ var i, self, thisArg;
+
+ self = Object(value(this));
+ callable(cb);
+ thisArg = arguments[1];
+
+ for (i = toPosInt(self.length) - 1; i >= 0; --i) {
+ if (objHasOwnProperty.call(self, i)) call.call(cb, thisArg, self[i], i, self);
+ }
+};
diff --git a/node_modules/es5-ext/array/#/group.js b/node_modules/es5-ext/array/#/group.js
new file mode 100644
index 000000000..711eb586a
--- /dev/null
+++ b/node_modules/es5-ext/array/#/group.js
@@ -0,0 +1,28 @@
+// Inspired by Underscore's groupBy:
+// http://documentcloud.github.com/underscore/#groupBy
+
+"use strict";
+
+var callable = require("../../object/valid-callable")
+ , value = require("../../object/valid-value")
+ , forEach = Array.prototype.forEach
+ , apply = Function.prototype.apply;
+
+module.exports = function (cb /*, thisArg*/) {
+ var result;
+
+ value(this);
+ callable(cb);
+
+ result = Object.create(null);
+ forEach.call(
+ this,
+ function (item) {
+ var key = apply.call(cb, this, arguments);
+ if (!result[key]) result[key] = [];
+ result[key].push(item);
+ },
+ arguments[1]
+ );
+ return result;
+};
diff --git a/node_modules/es5-ext/array/#/index.js b/node_modules/es5-ext/array/#/index.js
new file mode 100644
index 000000000..d85645d13
--- /dev/null
+++ b/node_modules/es5-ext/array/#/index.js
@@ -0,0 +1,40 @@
+"use strict";
+
+module.exports = {
+ "@@iterator": require("./@@iterator"),
+ "binarySearch": require("./binary-search"),
+ "clear": require("./clear"),
+ "compact": require("./compact"),
+ "concat": require("./concat"),
+ "contains": require("./contains"),
+ "copyWithin": require("./copy-within"),
+ "diff": require("./diff"),
+ "eIndexOf": require("./e-index-of"),
+ "eLastIndexOf": require("./e-last-index-of"),
+ "entries": require("./entries"),
+ "exclusion": require("./exclusion"),
+ "fill": require("./fill"),
+ "filter": require("./filter"),
+ "find": require("./find"),
+ "findIndex": require("./find-index"),
+ "first": require("./first"),
+ "firstIndex": require("./first-index"),
+ "flatten": require("./flatten"),
+ "forEachRight": require("./for-each-right"),
+ "keys": require("./keys"),
+ "group": require("./group"),
+ "indexesOf": require("./indexes-of"),
+ "intersection": require("./intersection"),
+ "isCopy": require("./is-copy"),
+ "isUniq": require("./is-uniq"),
+ "last": require("./last"),
+ "lastIndex": require("./last-index"),
+ "map": require("./map"),
+ "remove": require("./remove"),
+ "separate": require("./separate"),
+ "slice": require("./slice"),
+ "someRight": require("./some-right"),
+ "splice": require("./splice"),
+ "uniq": require("./uniq"),
+ "values": require("./values")
+};
diff --git a/node_modules/es5-ext/array/#/indexes-of.js b/node_modules/es5-ext/array/#/indexes-of.js
new file mode 100644
index 000000000..6c39cd924
--- /dev/null
+++ b/node_modules/es5-ext/array/#/indexes-of.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var indexOf = require("./e-index-of");
+
+module.exports = function (value /*, fromIndex*/) {
+ var result = [], i, fromIndex = arguments[1];
+ while ((i = indexOf.call(this, value, fromIndex)) !== -1) {
+ result.push(i);
+ fromIndex = i + 1;
+ }
+ return result;
+};
diff --git a/node_modules/es5-ext/array/#/intersection.js b/node_modules/es5-ext/array/#/intersection.js
new file mode 100644
index 000000000..91261d5f8
--- /dev/null
+++ b/node_modules/es5-ext/array/#/intersection.js
@@ -0,0 +1,21 @@
+"use strict";
+
+var value = require("../../object/valid-value")
+ , contains = require("./contains")
+ , byLength = require("./_compare-by-length")
+ , filter = Array.prototype.filter
+ , push = Array.prototype.push
+ , slice = Array.prototype.slice;
+
+module.exports = function (/* …list*/) {
+ var lists;
+ if (!arguments.length) slice.call(this);
+ push.apply(lists = [this], arguments);
+ lists.forEach(value);
+ lists.sort(byLength);
+ return lists.reduce(function (list1, list2) {
+ return filter.call(list1, function (item) {
+ return contains.call(list2, item);
+ });
+ });
+};
diff --git a/node_modules/es5-ext/array/#/is-copy.js b/node_modules/es5-ext/array/#/is-copy.js
new file mode 100644
index 000000000..1413b95df
--- /dev/null
+++ b/node_modules/es5-ext/array/#/is-copy.js
@@ -0,0 +1,21 @@
+"use strict";
+
+var toPosInt = require("../../number/to-pos-integer")
+ , eq = require("../../object/eq")
+ , value = require("../../object/valid-value")
+ , objHasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function (other) {
+ var i, length;
+ value(this);
+ value(other);
+ length = toPosInt(this.length);
+ if (length !== toPosInt(other.length)) return false;
+ for (i = 0; i < length; ++i) {
+ if (objHasOwnProperty.call(this, i) !== objHasOwnProperty.call(other, i)) {
+ return false;
+ }
+ if (!eq(this[i], other[i])) return false;
+ }
+ return true;
+};
diff --git a/node_modules/es5-ext/array/#/is-uniq.js b/node_modules/es5-ext/array/#/is-uniq.js
new file mode 100644
index 000000000..148a5a918
--- /dev/null
+++ b/node_modules/es5-ext/array/#/is-uniq.js
@@ -0,0 +1,14 @@
+"use strict";
+
+var indexOf = require("./e-index-of")
+
+ , every = Array.prototype.every
+ , isFirst;
+
+isFirst = function (value, index) {
+ return indexOf.call(this, value) === index;
+};
+
+module.exports = function () {
+ return every.call(this, isFirst, this);
+};
diff --git a/node_modules/es5-ext/array/#/keys/implement.js b/node_modules/es5-ext/array/#/keys/implement.js
new file mode 100644
index 000000000..40d0df011
--- /dev/null
+++ b/node_modules/es5-ext/array/#/keys/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "keys", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/node_modules/es5-ext/array/#/keys/index.js b/node_modules/es5-ext/array/#/keys/index.js
new file mode 100644
index 000000000..50a18f197
--- /dev/null
+++ b/node_modules/es5-ext/array/#/keys/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.keys : require("./shim");
diff --git a/node_modules/es5-ext/array/#/keys/is-implemented.js b/node_modules/es5-ext/array/#/keys/is-implemented.js
new file mode 100644
index 000000000..70a171f67
--- /dev/null
+++ b/node_modules/es5-ext/array/#/keys/is-implemented.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function () {
+ var arr = [1, "foo"], iterator, result;
+ if (typeof arr.keys !== "function") return false;
+ iterator = arr.keys();
+ if (!iterator) return false;
+ if (typeof iterator.next !== "function") return false;
+ result = iterator.next();
+ if (!result) return false;
+ if (result.value !== 0) return false;
+ if (result.done !== false) return false;
+ return true;
+};
diff --git a/node_modules/es5-ext/array/#/keys/shim.js b/node_modules/es5-ext/array/#/keys/shim.js
new file mode 100644
index 000000000..c3c68c6d4
--- /dev/null
+++ b/node_modules/es5-ext/array/#/keys/shim.js
@@ -0,0 +1,6 @@
+"use strict";
+
+var ArrayIterator = require("es6-iterator/array");
+module.exports = function () {
+ return new ArrayIterator(this, "key");
+};
diff --git a/node_modules/es5-ext/array/#/last-index.js b/node_modules/es5-ext/array/#/last-index.js
new file mode 100644
index 000000000..74aaba46c
--- /dev/null
+++ b/node_modules/es5-ext/array/#/last-index.js
@@ -0,0 +1,15 @@
+"use strict";
+
+var toPosInt = require("../../number/to-pos-integer")
+ , value = require("../../object/valid-value")
+ , objHasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function () {
+ var i, length;
+ if (!(length = toPosInt(value(this).length))) return null;
+ i = length - 1;
+ while (!objHasOwnProperty.call(this, i)) {
+ if (--i === -1) return null;
+ }
+ return i;
+};
diff --git a/node_modules/es5-ext/array/#/last.js b/node_modules/es5-ext/array/#/last.js
new file mode 100644
index 000000000..38bb359b3
--- /dev/null
+++ b/node_modules/es5-ext/array/#/last.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var lastIndex = require("./last-index");
+
+module.exports = function () {
+ var i;
+ if ((i = lastIndex.call(this)) !== null) return this[i];
+ return undefined;
+};
diff --git a/node_modules/es5-ext/array/#/map/implement.js b/node_modules/es5-ext/array/#/map/implement.js
new file mode 100644
index 000000000..a6d1d9001
--- /dev/null
+++ b/node_modules/es5-ext/array/#/map/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "map", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/node_modules/es5-ext/array/#/map/index.js b/node_modules/es5-ext/array/#/map/index.js
new file mode 100644
index 000000000..101c0649e
--- /dev/null
+++ b/node_modules/es5-ext/array/#/map/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.map : require("./shim");
diff --git a/node_modules/es5-ext/array/#/map/is-implemented.js b/node_modules/es5-ext/array/#/map/is-implemented.js
new file mode 100644
index 000000000..24ab9084f
--- /dev/null
+++ b/node_modules/es5-ext/array/#/map/is-implemented.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var identity = require("../../../function/identity")
+ , SubArray = require("../../_sub-array-dummy-safe");
+
+module.exports = function () {
+ return (new SubArray()).map(identity) instanceof SubArray;
+};
diff --git a/node_modules/es5-ext/array/#/map/shim.js b/node_modules/es5-ext/array/#/map/shim.js
new file mode 100644
index 000000000..6d8cc1fb6
--- /dev/null
+++ b/node_modules/es5-ext/array/#/map/shim.js
@@ -0,0 +1,21 @@
+"use strict";
+
+var isPlainArray = require("../../is-plain-array")
+ , callable = require("../../../object/valid-callable")
+
+ , isArray = Array.isArray, map = Array.prototype.map
+ , forEach = Array.prototype.forEach, call = Function.prototype.call;
+
+module.exports = function (callbackFn/*, thisArg*/) {
+ var result, thisArg;
+ if (!this || !isArray(this) || isPlainArray(this)) {
+ return map.apply(this, arguments);
+ }
+ callable(callbackFn);
+ thisArg = arguments[1];
+ result = new this.constructor(this.length);
+ forEach.call(this, function (val, i, self) {
+ result[i] = call.call(callbackFn, thisArg, val, i, self);
+ });
+ return result;
+};
diff --git a/node_modules/es5-ext/array/#/remove.js b/node_modules/es5-ext/array/#/remove.js
new file mode 100644
index 000000000..6a8a08676
--- /dev/null
+++ b/node_modules/es5-ext/array/#/remove.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var indexOf = require("./e-index-of")
+ , forEach = Array.prototype.forEach
+ , splice = Array.prototype.splice;
+
+// eslint-disable-next-line no-unused-vars
+module.exports = function (itemToRemove /*, …item*/) {
+ forEach.call(
+ arguments,
+ function (item) {
+ var index = indexOf.call(this, item);
+ if (index !== -1) splice.call(this, index, 1);
+ },
+ this
+ );
+};
diff --git a/node_modules/es5-ext/array/#/separate.js b/node_modules/es5-ext/array/#/separate.js
new file mode 100644
index 000000000..35e1cc5ac
--- /dev/null
+++ b/node_modules/es5-ext/array/#/separate.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var forEach = Array.prototype.forEach;
+
+module.exports = function (sep) {
+ var result = [];
+ forEach.call(this, function (val) {
+ result.push(val, sep);
+ });
+ result.pop();
+ return result;
+};
diff --git a/node_modules/es5-ext/array/#/slice/implement.js b/node_modules/es5-ext/array/#/slice/implement.js
new file mode 100644
index 000000000..568e87a1d
--- /dev/null
+++ b/node_modules/es5-ext/array/#/slice/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "slice", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/node_modules/es5-ext/array/#/slice/index.js b/node_modules/es5-ext/array/#/slice/index.js
new file mode 100644
index 000000000..c80ee3595
--- /dev/null
+++ b/node_modules/es5-ext/array/#/slice/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.slice : require("./shim");
diff --git a/node_modules/es5-ext/array/#/slice/is-implemented.js b/node_modules/es5-ext/array/#/slice/is-implemented.js
new file mode 100644
index 000000000..47904c209
--- /dev/null
+++ b/node_modules/es5-ext/array/#/slice/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var SubArray = require("../../_sub-array-dummy-safe");
+
+module.exports = function () {
+ return (new SubArray()).slice() instanceof SubArray;
+};
diff --git a/node_modules/es5-ext/array/#/slice/shim.js b/node_modules/es5-ext/array/#/slice/shim.js
new file mode 100644
index 000000000..ff13085b3
--- /dev/null
+++ b/node_modules/es5-ext/array/#/slice/shim.js
@@ -0,0 +1,36 @@
+"use strict";
+
+var toInteger = require("../../../number/to-integer")
+ , toPosInt = require("../../../number/to-pos-integer")
+ , isPlainArray = require("../../is-plain-array")
+ , isArray = Array.isArray
+ , slice = Array.prototype.slice
+ , objHasOwnProperty = Object.prototype.hasOwnProperty
+ , max = Math.max;
+
+module.exports = function (start, end) {
+ var length, result, i;
+ if (!this || !isArray(this) || isPlainArray(this)) {
+ return slice.apply(this, arguments);
+ }
+ length = toPosInt(this.length);
+ start = toInteger(start);
+ if (start < 0) start = max(length + start, 0);
+ else if (start > length) start = length;
+ if (end === undefined) {
+ end = length;
+ } else {
+ end = toInteger(end);
+ if (end < 0) end = max(length + end, 0);
+ else if (end > length) end = length;
+ }
+ if (start > end) start = end;
+ result = new this.constructor(end - start);
+ i = 0;
+ while (start !== end) {
+ if (objHasOwnProperty.call(this, start)) result[i] = this[start];
+ ++i;
+ ++start;
+ }
+ return result;
+};
diff --git a/node_modules/es5-ext/array/#/some-right.js b/node_modules/es5-ext/array/#/some-right.js
new file mode 100644
index 000000000..d9a665fc2
--- /dev/null
+++ b/node_modules/es5-ext/array/#/some-right.js
@@ -0,0 +1,21 @@
+"use strict";
+
+var toPosInt = require("../../number/to-pos-integer")
+ , callable = require("../../object/valid-callable")
+ , value = require("../../object/valid-value")
+ , objHasOwnProperty = Object.prototype.hasOwnProperty
+ , call = Function.prototype.call;
+
+module.exports = function (cb /*, thisArg*/) {
+ var i, self, thisArg;
+ self = Object(value(this));
+ callable(cb);
+ thisArg = arguments[1];
+
+ for (i = toPosInt(self.length) - 1; i >= 0; --i) {
+ if (objHasOwnProperty.call(self, i) && call.call(cb, thisArg, self[i], i, self)) {
+ return true;
+ }
+ }
+ return false;
+};
diff --git a/node_modules/es5-ext/array/#/splice/implement.js b/node_modules/es5-ext/array/#/splice/implement.js
new file mode 100644
index 000000000..1e1682b0c
--- /dev/null
+++ b/node_modules/es5-ext/array/#/splice/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "splice", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/node_modules/es5-ext/array/#/splice/index.js b/node_modules/es5-ext/array/#/splice/index.js
new file mode 100644
index 000000000..e5fda9512
--- /dev/null
+++ b/node_modules/es5-ext/array/#/splice/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.splice : require("./shim");
diff --git a/node_modules/es5-ext/array/#/splice/is-implemented.js b/node_modules/es5-ext/array/#/splice/is-implemented.js
new file mode 100644
index 000000000..afbb95a6d
--- /dev/null
+++ b/node_modules/es5-ext/array/#/splice/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var SubArray = require("../../_sub-array-dummy-safe");
+
+module.exports = function () {
+ return (new SubArray()).splice(0) instanceof SubArray;
+};
diff --git a/node_modules/es5-ext/array/#/splice/shim.js b/node_modules/es5-ext/array/#/splice/shim.js
new file mode 100644
index 000000000..dc8d837b8
--- /dev/null
+++ b/node_modules/es5-ext/array/#/splice/shim.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var isPlainArray = require("../../is-plain-array")
+ , isArray = Array.isArray
+ , splice = Array.prototype.splice
+ , forEach = Array.prototype.forEach;
+
+// eslint-disable-next-line no-unused-vars
+module.exports = function (start, deleteCount /*, …items*/) {
+ var arr = splice.apply(this, arguments), result;
+ if (!this || !isArray(this) || isPlainArray(this)) return arr;
+ result = new this.constructor(arr.length);
+ forEach.call(arr, function (val, i) {
+ result[i] = val;
+ });
+ return result;
+};
diff --git a/node_modules/es5-ext/array/#/uniq.js b/node_modules/es5-ext/array/#/uniq.js
new file mode 100644
index 000000000..944ce9334
--- /dev/null
+++ b/node_modules/es5-ext/array/#/uniq.js
@@ -0,0 +1,15 @@
+"use strict";
+
+var indexOf = require("./e-index-of")
+
+ , filter = Array.prototype.filter
+
+ , isFirst;
+
+isFirst = function (value, index) {
+ return indexOf.call(this, value) === index;
+};
+
+module.exports = function () {
+ return filter.call(this, isFirst, this);
+};
diff --git a/node_modules/es5-ext/array/#/values/implement.js b/node_modules/es5-ext/array/#/values/implement.js
new file mode 100644
index 000000000..b43e9f646
--- /dev/null
+++ b/node_modules/es5-ext/array/#/values/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "values", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/node_modules/es5-ext/array/#/values/index.js b/node_modules/es5-ext/array/#/values/index.js
new file mode 100644
index 000000000..30a50bae7
--- /dev/null
+++ b/node_modules/es5-ext/array/#/values/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./is-implemented")() ? Array.prototype.values : require("./shim");
diff --git a/node_modules/es5-ext/array/#/values/is-implemented.js b/node_modules/es5-ext/array/#/values/is-implemented.js
new file mode 100644
index 000000000..8b72568a1
--- /dev/null
+++ b/node_modules/es5-ext/array/#/values/is-implemented.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function () {
+ var arr = ["foo", 1], iterator, result;
+ if (typeof arr.values !== "function") return false;
+ iterator = arr.values();
+ if (!iterator) return false;
+ if (typeof iterator.next !== "function") return false;
+ result = iterator.next();
+ if (!result) return false;
+ if (result.value !== "foo") return false;
+ if (result.done !== false) return false;
+ return true;
+};
diff --git a/node_modules/es5-ext/array/#/values/shim.js b/node_modules/es5-ext/array/#/values/shim.js
new file mode 100644
index 000000000..e46a05261
--- /dev/null
+++ b/node_modules/es5-ext/array/#/values/shim.js
@@ -0,0 +1,6 @@
+"use strict";
+
+var ArrayIterator = require("es6-iterator/array");
+module.exports = function () {
+ return new ArrayIterator(this, "value");
+};
diff --git a/node_modules/es5-ext/array/_is-extensible.js b/node_modules/es5-ext/array/_is-extensible.js
new file mode 100644
index 000000000..a9e8ee794
--- /dev/null
+++ b/node_modules/es5-ext/array/_is-extensible.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = (function () {
+ var SubArray = require("./_sub-array-dummy"), arr;
+
+ if (!SubArray) return false;
+ arr = new SubArray();
+ if (!Array.isArray(arr)) return false;
+ if (!(arr instanceof SubArray)) return false;
+
+ arr[34] = "foo";
+ return arr.length === 35;
+}());
diff --git a/node_modules/es5-ext/array/_sub-array-dummy-safe.js b/node_modules/es5-ext/array/_sub-array-dummy-safe.js
new file mode 100644
index 000000000..80e3b3c58
--- /dev/null
+++ b/node_modules/es5-ext/array/_sub-array-dummy-safe.js
@@ -0,0 +1,25 @@
+"use strict";
+
+var setPrototypeOf = require("../object/set-prototype-of")
+ , isExtensible = require("./_is-extensible");
+
+module.exports = (function () {
+ var SubArray;
+
+ if (isExtensible) return require("./_sub-array-dummy");
+
+ if (!setPrototypeOf) return null;
+ SubArray = function () {
+ var arr = Array.apply(this, arguments);
+ setPrototypeOf(arr, SubArray.prototype);
+ return arr;
+ };
+ setPrototypeOf(SubArray, Array);
+ SubArray.prototype = Object.create(Array.prototype, {
+ constructor: { value: SubArray,
+enumerable: false,
+writable: true,
+ configurable: true }
+ });
+ return SubArray;
+}());
diff --git a/node_modules/es5-ext/array/_sub-array-dummy.js b/node_modules/es5-ext/array/_sub-array-dummy.js
new file mode 100644
index 000000000..cf1115222
--- /dev/null
+++ b/node_modules/es5-ext/array/_sub-array-dummy.js
@@ -0,0 +1,20 @@
+"use strict";
+
+var setPrototypeOf = require("../object/set-prototype-of");
+
+module.exports = (function () {
+ var SubArray;
+
+ if (!setPrototypeOf) return null;
+ SubArray = function () {
+ Array.apply(this, arguments);
+};
+ setPrototypeOf(SubArray, Array);
+ SubArray.prototype = Object.create(Array.prototype, {
+ constructor: { value: SubArray,
+enumerable: false,
+writable: true,
+ configurable: true }
+ });
+ return SubArray;
+}());
diff --git a/node_modules/es5-ext/array/from/implement.js b/node_modules/es5-ext/array/from/implement.js
new file mode 100644
index 000000000..41172242e
--- /dev/null
+++ b/node_modules/es5-ext/array/from/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array, "from", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/node_modules/es5-ext/array/from/index.js b/node_modules/es5-ext/array/from/index.js
new file mode 100644
index 000000000..ca4492d11
--- /dev/null
+++ b/node_modules/es5-ext/array/from/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.from
+ : require("./shim");
diff --git a/node_modules/es5-ext/array/from/is-implemented.js b/node_modules/es5-ext/array/from/is-implemented.js
new file mode 100644
index 000000000..3567c8766
--- /dev/null
+++ b/node_modules/es5-ext/array/from/is-implemented.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function () {
+ var from = Array.from, arr, result;
+ if (typeof from !== "function") return false;
+ arr = ["raz", "dwa"];
+ result = from(arr);
+ return Boolean(result && (result !== arr) && (result[1] === "dwa"));
+};
diff --git a/node_modules/es5-ext/array/from/shim.js b/node_modules/es5-ext/array/from/shim.js
new file mode 100644
index 000000000..8928181ef
--- /dev/null
+++ b/node_modules/es5-ext/array/from/shim.js
@@ -0,0 +1,119 @@
+"use strict";
+
+var iteratorSymbol = require("es6-symbol").iterator
+ , isArguments = require("../../function/is-arguments")
+ , isFunction = require("../../function/is-function")
+ , toPosInt = require("../../number/to-pos-integer")
+ , callable = require("../../object/valid-callable")
+ , validValue = require("../../object/valid-value")
+ , isValue = require("../../object/is-value")
+ , isString = require("../../string/is-string")
+ , isArray = Array.isArray
+ , call = Function.prototype.call
+ , desc = { configurable: true, enumerable: true, writable: true, value: null }
+ , defineProperty = Object.defineProperty;
+
+// eslint-disable-next-line complexity
+module.exports = function (arrayLike /*, mapFn, thisArg*/) {
+ var mapFn = arguments[1]
+ , thisArg = arguments[2]
+ , Context
+ , i
+ , j
+ , arr
+ , length
+ , code
+ , iterator
+ , result
+ , getIterator
+ , value;
+
+ arrayLike = Object(validValue(arrayLike));
+
+ if (isValue(mapFn)) callable(mapFn);
+ if (!this || this === Array || !isFunction(this)) {
+ // Result: Plain array
+ if (!mapFn) {
+ if (isArguments(arrayLike)) {
+ // Source: Arguments
+ length = arrayLike.length;
+ if (length !== 1) return Array.apply(null, arrayLike);
+ arr = new Array(1);
+ arr[0] = arrayLike[0];
+ return arr;
+ }
+ if (isArray(arrayLike)) {
+ // Source: Array
+ arr = new Array(length = arrayLike.length);
+ for (i = 0; i < length; ++i) arr[i] = arrayLike[i];
+ return arr;
+ }
+ }
+ arr = [];
+ } else {
+ // Result: Non plain array
+ Context = this;
+ }
+
+ if (!isArray(arrayLike)) {
+ if ((getIterator = arrayLike[iteratorSymbol]) !== undefined) {
+ // Source: Iterator
+ iterator = callable(getIterator).call(arrayLike);
+ if (Context) arr = new Context();
+ result = iterator.next();
+ i = 0;
+ while (!result.done) {
+ value = mapFn ? call.call(mapFn, thisArg, result.value, i) : result.value;
+ if (Context) {
+ desc.value = value;
+ defineProperty(arr, i, desc);
+ } else {
+ arr[i] = value;
+ }
+ result = iterator.next();
+ ++i;
+ }
+ length = i;
+ } else if (isString(arrayLike)) {
+ // Source: String
+ length = arrayLike.length;
+ if (Context) arr = new Context();
+ for (i = 0, j = 0; i < length; ++i) {
+ value = arrayLike[i];
+ if (i + 1 < length) {
+ code = value.charCodeAt(0);
+ // eslint-disable-next-line max-depth
+ if (code >= 0xd800 && code <= 0xdbff) value += arrayLike[++i];
+ }
+ value = mapFn ? call.call(mapFn, thisArg, value, j) : value;
+ if (Context) {
+ desc.value = value;
+ defineProperty(arr, j, desc);
+ } else {
+ arr[j] = value;
+ }
+ ++j;
+ }
+ length = j;
+ }
+ }
+ if (length === undefined) {
+ // Source: array or array-like
+ length = toPosInt(arrayLike.length);
+ if (Context) arr = new Context(length);
+ for (i = 0; i < length; ++i) {
+ value = mapFn ? call.call(mapFn, thisArg, arrayLike[i], i) : arrayLike[i];
+ if (Context) {
+ desc.value = value;
+ defineProperty(arr, i, desc);
+ } else {
+ arr[i] = value;
+ }
+ }
+ }
+ if (Context) {
+ desc.value = null;
+ arr.length = length;
+ }
+ return arr;
+};
diff --git a/node_modules/es5-ext/array/generate.js b/node_modules/es5-ext/array/generate.js
new file mode 100644
index 000000000..42b693035
--- /dev/null
+++ b/node_modules/es5-ext/array/generate.js
@@ -0,0 +1,18 @@
+"use strict";
+
+var toPosInt = require("../number/to-pos-integer")
+ , value = require("../object/valid-value")
+ , slice = Array.prototype.slice;
+
+module.exports = function (length /*, …fill*/) {
+ var arr, currentLength;
+ length = toPosInt(value(length));
+ if (length === 0) return [];
+
+ arr = arguments.length < 2 ? [undefined] : slice.call(arguments, 1, 1 + length);
+
+ while ((currentLength = arr.length) < length) {
+ arr = arr.concat(arr.slice(0, length - currentLength));
+ }
+ return arr;
+};
diff --git a/node_modules/es5-ext/array/index.js b/node_modules/es5-ext/array/index.js
new file mode 100644
index 000000000..49ff58ee4
--- /dev/null
+++ b/node_modules/es5-ext/array/index.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = {
+ "#": require("./#"),
+ "from": require("./from"),
+ "generate": require("./generate"),
+ "isPlainArray": require("./is-plain-array"),
+ "of": require("./of"),
+ "toArray": require("./to-array"),
+ "validArray": require("./valid-array")
+};
diff --git a/node_modules/es5-ext/array/is-plain-array.js b/node_modules/es5-ext/array/is-plain-array.js
new file mode 100644
index 000000000..ca3d25bb9
--- /dev/null
+++ b/node_modules/es5-ext/array/is-plain-array.js
@@ -0,0 +1,11 @@
+"use strict";
+
+var isArray = Array.isArray, getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (obj) {
+ var proto;
+ if (!obj || !isArray(obj)) return false;
+ proto = getPrototypeOf(obj);
+ if (!isArray(proto)) return false;
+ return !isArray(getPrototypeOf(proto));
+};
diff --git a/node_modules/es5-ext/array/of/implement.js b/node_modules/es5-ext/array/of/implement.js
new file mode 100644
index 000000000..92f8f3e30
--- /dev/null
+++ b/node_modules/es5-ext/array/of/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array, "of", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/node_modules/es5-ext/array/of/index.js b/node_modules/es5-ext/array/of/index.js
new file mode 100644
index 000000000..43ab3f627
--- /dev/null
+++ b/node_modules/es5-ext/array/of/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.of
+ : require("./shim");
diff --git a/node_modules/es5-ext/array/of/is-implemented.js b/node_modules/es5-ext/array/of/is-implemented.js
new file mode 100644
index 000000000..20b80c207
--- /dev/null
+++ b/node_modules/es5-ext/array/of/is-implemented.js
@@ -0,0 +1,8 @@
+"use strict";
+
+module.exports = function () {
+ var of = Array.of, result;
+ if (typeof of !== "function") return false;
+ result = of("foo", "bar");
+ return Boolean(result && (result[1] === "bar"));
+};
diff --git a/node_modules/es5-ext/array/of/shim.js b/node_modules/es5-ext/array/of/shim.js
new file mode 100644
index 000000000..6cc9c3833
--- /dev/null
+++ b/node_modules/es5-ext/array/of/shim.js
@@ -0,0 +1,19 @@
+"use strict";
+
+var isFunction = require("../../function/is-function")
+ , slice = Array.prototype.slice
+ , defineProperty = Object.defineProperty
+ , desc = { configurable: true, enumerable: true, writable: true, value: null };
+
+module.exports = function (/* …items*/) {
+ var result, i, length;
+ if (!this || this === Array || !isFunction(this)) return slice.call(arguments);
+ result = new this(length = arguments.length);
+ for (i = 0; i < length; ++i) {
+ desc.value = arguments[i];
+ defineProperty(result, i, desc);
+ }
+ desc.value = null;
+ result.length = length;
+ return result;
+};
diff --git a/node_modules/es5-ext/array/to-array.js b/node_modules/es5-ext/array/to-array.js
new file mode 100644
index 000000000..2078b7a3a
--- /dev/null
+++ b/node_modules/es5-ext/array/to-array.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var from = require("./from")
+
+ , isArray = Array.isArray;
+
+module.exports = function (arrayLike) {
+ return isArray(arrayLike) ? arrayLike : from(arrayLike);
+};
diff --git a/node_modules/es5-ext/array/valid-array.js b/node_modules/es5-ext/array/valid-array.js
new file mode 100644
index 000000000..1e58c39a3
--- /dev/null
+++ b/node_modules/es5-ext/array/valid-array.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var isArray = Array.isArray;
+
+module.exports = function (value) {
+ if (isArray(value)) return value;
+ throw new TypeError(value + " is not an array");
+};