aboutsummaryrefslogtreecommitdiff
path: root/node_modules/es5-ext/object
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/es5-ext/object')
-rw-r--r--node_modules/es5-ext/object/_iterate.js30
-rw-r--r--node_modules/es5-ext/object/assign/implement.js8
-rw-r--r--node_modules/es5-ext/object/assign/index.js5
-rw-r--r--node_modules/es5-ext/object/assign/is-implemented.js9
-rw-r--r--node_modules/es5-ext/object/assign/shim.js23
-rw-r--r--node_modules/es5-ext/object/clear.js16
-rw-r--r--node_modules/es5-ext/object/compact.js10
-rw-r--r--node_modules/es5-ext/object/compare.js45
-rw-r--r--node_modules/es5-ext/object/copy-deep.js42
-rw-r--r--node_modules/es5-ext/object/copy.js19
-rw-r--r--node_modules/es5-ext/object/count.js7
-rw-r--r--node_modules/es5-ext/object/create.js48
-rw-r--r--node_modules/es5-ext/object/ensure-finite-number.js9
-rw-r--r--node_modules/es5-ext/object/ensure-natural-number-value.js9
-rw-r--r--node_modules/es5-ext/object/ensure-natural-number.js9
-rw-r--r--node_modules/es5-ext/object/ensure-promise.js9
-rw-r--r--node_modules/es5-ext/object/eq.js7
-rw-r--r--node_modules/es5-ext/object/every.js3
-rw-r--r--node_modules/es5-ext/object/filter.js14
-rw-r--r--node_modules/es5-ext/object/find-key.js3
-rw-r--r--node_modules/es5-ext/object/find.js10
-rw-r--r--node_modules/es5-ext/object/first-key.js13
-rw-r--r--node_modules/es5-ext/object/flatten.js17
-rw-r--r--node_modules/es5-ext/object/for-each.js3
-rw-r--r--node_modules/es5-ext/object/get-property-names.js17
-rw-r--r--node_modules/es5-ext/object/index.js58
-rw-r--r--node_modules/es5-ext/object/is-array-like.js18
-rw-r--r--node_modules/es5-ext/object/is-callable.js7
-rw-r--r--node_modules/es5-ext/object/is-copy-deep.js59
-rw-r--r--node_modules/es5-ext/object/is-copy.js23
-rw-r--r--node_modules/es5-ext/object/is-empty.js14
-rw-r--r--node_modules/es5-ext/object/is-finite-number.js7
-rw-r--r--node_modules/es5-ext/object/is-number-value.js12
-rw-r--r--node_modules/es5-ext/object/is-object.js9
-rw-r--r--node_modules/es5-ext/object/is-plain-object.js20
-rw-r--r--node_modules/es5-ext/object/is-promise.js8
-rw-r--r--node_modules/es5-ext/object/is-value.js7
-rw-r--r--node_modules/es5-ext/object/is.js10
-rw-r--r--node_modules/es5-ext/object/key-of.js17
-rw-r--r--node_modules/es5-ext/object/keys/implement.js8
-rw-r--r--node_modules/es5-ext/object/keys/index.js5
-rw-r--r--node_modules/es5-ext/object/keys/is-implemented.js10
-rw-r--r--node_modules/es5-ext/object/keys/shim.js9
-rw-r--r--node_modules/es5-ext/object/map-keys.js18
-rw-r--r--node_modules/es5-ext/object/map.js14
-rw-r--r--node_modules/es5-ext/object/mixin-prototypes.js37
-rw-r--r--node_modules/es5-ext/object/mixin.js31
-rw-r--r--node_modules/es5-ext/object/normalize-options.js20
-rw-r--r--node_modules/es5-ext/object/primitive-set.js12
-rw-r--r--node_modules/es5-ext/object/safe-traverse.js16
-rw-r--r--node_modules/es5-ext/object/serialize.js41
-rw-r--r--node_modules/es5-ext/object/set-prototype-of/implement.js8
-rw-r--r--node_modules/es5-ext/object/set-prototype-of/index.js5
-rw-r--r--node_modules/es5-ext/object/set-prototype-of/is-implemented.js9
-rw-r--r--node_modules/es5-ext/object/set-prototype-of/shim.js86
-rw-r--r--node_modules/es5-ext/object/some.js3
-rw-r--r--node_modules/es5-ext/object/to-array.js24
-rw-r--r--node_modules/es5-ext/object/unserialize.js8
-rw-r--r--node_modules/es5-ext/object/valid-callable.js6
-rw-r--r--node_modules/es5-ext/object/valid-object.js8
-rw-r--r--node_modules/es5-ext/object/valid-value.js8
-rw-r--r--node_modules/es5-ext/object/validate-array-like-object.js9
-rw-r--r--node_modules/es5-ext/object/validate-array-like.js8
-rw-r--r--node_modules/es5-ext/object/validate-stringifiable-value.js8
-rw-r--r--node_modules/es5-ext/object/validate-stringifiable.js12
65 files changed, 1077 insertions, 0 deletions
diff --git a/node_modules/es5-ext/object/_iterate.js b/node_modules/es5-ext/object/_iterate.js
new file mode 100644
index 000000000..1f0c85fd4
--- /dev/null
+++ b/node_modules/es5-ext/object/_iterate.js
@@ -0,0 +1,30 @@
+// Internal method, used by iteration functions.
+// Calls a function for each key-value pair found in object
+// Optionally takes compareFn to iterate object in specific order
+
+"use strict";
+
+var callable = require("./valid-callable")
+ , value = require("./valid-value")
+ , bind = Function.prototype.bind
+ , call = Function.prototype.call
+ , keys = Object.keys
+ , objPropertyIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+module.exports = function (method, defVal) {
+ return function (obj, cb /*, thisArg, compareFn*/) {
+ var list, thisArg = arguments[2], compareFn = arguments[3];
+ obj = Object(value(obj));
+ callable(cb);
+
+ list = keys(obj);
+ if (compareFn) {
+ list.sort(typeof compareFn === "function" ? bind.call(compareFn, obj) : undefined);
+ }
+ if (typeof method !== "function") method = list[method];
+ return call.call(method, list, function (key, index) {
+ if (!objPropertyIsEnumerable.call(obj, key)) return defVal;
+ return call.call(cb, thisArg, obj[key], key, obj, index);
+ });
+ };
+};
diff --git a/node_modules/es5-ext/object/assign/implement.js b/node_modules/es5-ext/object/assign/implement.js
new file mode 100644
index 000000000..de3c92f14
--- /dev/null
+++ b/node_modules/es5-ext/object/assign/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Object, "assign", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/node_modules/es5-ext/object/assign/index.js b/node_modules/es5-ext/object/assign/index.js
new file mode 100644
index 000000000..1dd31e640
--- /dev/null
+++ b/node_modules/es5-ext/object/assign/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Object.assign
+ : require("./shim");
diff --git a/node_modules/es5-ext/object/assign/is-implemented.js b/node_modules/es5-ext/object/assign/is-implemented.js
new file mode 100644
index 000000000..6b90ea969
--- /dev/null
+++ b/node_modules/es5-ext/object/assign/is-implemented.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function () {
+ var assign = Object.assign, obj;
+ if (typeof assign !== "function") return false;
+ obj = { foo: "raz" };
+ assign(obj, { bar: "dwa" }, { trzy: "trzy" });
+ return (obj.foo + obj.bar + obj.trzy) === "razdwatrzy";
+};
diff --git a/node_modules/es5-ext/object/assign/shim.js b/node_modules/es5-ext/object/assign/shim.js
new file mode 100644
index 000000000..afa58f2f9
--- /dev/null
+++ b/node_modules/es5-ext/object/assign/shim.js
@@ -0,0 +1,23 @@
+"use strict";
+
+var keys = require("../keys")
+ , value = require("../valid-value")
+ , max = Math.max;
+
+module.exports = function (dest, src /*, …srcn*/) {
+ var error, i, length = max(arguments.length, 2), assign;
+ dest = Object(value(dest));
+ assign = function (key) {
+ try {
+ dest[key] = src[key];
+ } catch (e) {
+ if (!error) error = e;
+ }
+ };
+ for (i = 1; i < length; ++i) {
+ src = arguments[i];
+ keys(src).forEach(assign);
+ }
+ if (error !== undefined) throw error;
+ return dest;
+};
diff --git a/node_modules/es5-ext/object/clear.js b/node_modules/es5-ext/object/clear.js
new file mode 100644
index 000000000..268cc5b5d
--- /dev/null
+++ b/node_modules/es5-ext/object/clear.js
@@ -0,0 +1,16 @@
+"use strict";
+
+var keys = require("./keys");
+
+module.exports = function (obj) {
+ var error;
+ keys(obj).forEach(function (key) {
+ try {
+ delete this[key];
+ } catch (e) {
+ if (!error) error = e;
+ }
+ }, obj);
+ if (error !== undefined) throw error;
+ return obj;
+};
diff --git a/node_modules/es5-ext/object/compact.js b/node_modules/es5-ext/object/compact.js
new file mode 100644
index 000000000..9943aedc7
--- /dev/null
+++ b/node_modules/es5-ext/object/compact.js
@@ -0,0 +1,10 @@
+"use strict";
+
+var filter = require("./filter")
+ , isValue = require("./is-value");
+
+module.exports = function (obj) {
+ return filter(obj, function (val) {
+ return isValue(val);
+ });
+};
diff --git a/node_modules/es5-ext/object/compare.js b/node_modules/es5-ext/object/compare.js
new file mode 100644
index 000000000..8d0785890
--- /dev/null
+++ b/node_modules/es5-ext/object/compare.js
@@ -0,0 +1,45 @@
+"use strict";
+
+var strCompare = require("../string/#/case-insensitive-compare")
+ , isObject = require("./is-object")
+ , isValue = require("./is-value")
+ , numIsNaN = require("../number/is-nan")
+ , resolve
+ , typeMap;
+
+typeMap = {
+ undefined: 0,
+ object: 1,
+ boolean: 2,
+ string: 3,
+ number: 4
+};
+
+resolve = function (a) {
+ if (isObject(a)) {
+ if (typeof a.valueOf !== "function") return NaN;
+ a = a.valueOf();
+ if (isObject(a)) {
+ if (typeof a.toString !== "function") return NaN;
+ a = a.toString();
+ if (typeof a !== "string") return NaN;
+ }
+ }
+ return a;
+};
+
+module.exports = function (val1, val2) {
+ if (val1 === val2) return 0; // Same
+
+ val1 = resolve(val1);
+ val2 = resolve(val2);
+ // eslint-disable-next-line eqeqeq
+ if (val1 == val2) return typeMap[typeof val1] - typeMap[typeof val2];
+ if (!isValue(val1)) return -1;
+ if (!isValue(val2)) return 1;
+ if (typeof val1 === "string" || typeof val2 === "string") {
+ return strCompare.call(val1, val2);
+ }
+ if (numIsNaN(val1) && numIsNaN(val2)) return 0; // Jslint: ignore
+ return Number(val1) - Number(val2);
+};
diff --git a/node_modules/es5-ext/object/copy-deep.js b/node_modules/es5-ext/object/copy-deep.js
new file mode 100644
index 000000000..d1d39c982
--- /dev/null
+++ b/node_modules/es5-ext/object/copy-deep.js
@@ -0,0 +1,42 @@
+"use strict";
+
+var forEach = require("./for-each")
+ , isPlainObject = require("./is-plain-object")
+ , ensureValue = require("./valid-value")
+ , isArray = Array.isArray
+ , copy
+ , copyItem;
+
+copyItem = function (value) {
+ var index;
+ if (!isPlainObject(value) && !isArray(value)) return value;
+ index = this[0].indexOf(value);
+ if (index === -1) return copy.call(this, value);
+ return this[1][index];
+};
+
+copy = function (source) {
+ var target = isArray(source) ? [] : {};
+ this[0].push(source);
+ this[1].push(target);
+ if (isArray(source)) {
+ source.forEach(function (value, key) {
+ target[key] = copyItem.call(this, value, key);
+ }, this);
+ } else {
+ forEach(
+ source,
+ function (value, key) {
+ target[key] = copyItem.call(this, value, key);
+ },
+ this
+ );
+ }
+ return target;
+};
+
+module.exports = function (source) {
+ var obj = Object(ensureValue(source));
+ if (obj !== source) return obj;
+ return copy.call([[], []], obj);
+};
diff --git a/node_modules/es5-ext/object/copy.js b/node_modules/es5-ext/object/copy.js
new file mode 100644
index 000000000..5368e4281
--- /dev/null
+++ b/node_modules/es5-ext/object/copy.js
@@ -0,0 +1,19 @@
+"use strict";
+
+var aFrom = require("../array/from")
+ , assign = require("./assign")
+ , value = require("./valid-value");
+
+module.exports = function (obj/*, propertyNames, options*/) {
+ var copy = Object(value(obj)), propertyNames = arguments[1], options = Object(arguments[2]);
+ if (copy !== obj && !propertyNames) return copy;
+ var result = {};
+ if (propertyNames) {
+ aFrom(propertyNames, function (propertyName) {
+ if (options.ensure || propertyName in obj) result[propertyName] = obj[propertyName];
+ });
+ } else {
+ assign(result, obj);
+ }
+ return result;
+};
diff --git a/node_modules/es5-ext/object/count.js b/node_modules/es5-ext/object/count.js
new file mode 100644
index 000000000..8a2a71ef8
--- /dev/null
+++ b/node_modules/es5-ext/object/count.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var keys = require("./keys");
+
+module.exports = function (obj) {
+ return keys(obj).length;
+};
diff --git a/node_modules/es5-ext/object/create.js b/node_modules/es5-ext/object/create.js
new file mode 100644
index 000000000..9e3e6e8d1
--- /dev/null
+++ b/node_modules/es5-ext/object/create.js
@@ -0,0 +1,48 @@
+// Workaround for http://code.google.com/p/v8/issues/detail?id=2804
+
+"use strict";
+
+var create = Object.create, shim;
+
+if (!require("./set-prototype-of/is-implemented")()) {
+ shim = require("./set-prototype-of/shim");
+}
+
+module.exports = (function () {
+ var nullObject, polyProps, desc;
+ if (!shim) return create;
+ if (shim.level !== 1) return create;
+
+ nullObject = {};
+ polyProps = {};
+ desc = {
+ configurable: false,
+ enumerable: false,
+ writable: true,
+ value: undefined
+ };
+ Object.getOwnPropertyNames(Object.prototype).forEach(function (name) {
+ if (name === "__proto__") {
+ polyProps[name] = {
+ configurable: true,
+ enumerable: false,
+ writable: true,
+ value: undefined
+ };
+ return;
+ }
+ polyProps[name] = desc;
+ });
+ Object.defineProperties(nullObject, polyProps);
+
+ Object.defineProperty(shim, "nullPolyfill", {
+ configurable: false,
+ enumerable: false,
+ writable: false,
+ value: nullObject
+ });
+
+ return function (prototype, props) {
+ return create(prototype === null ? nullObject : prototype, props);
+ };
+}());
diff --git a/node_modules/es5-ext/object/ensure-finite-number.js b/node_modules/es5-ext/object/ensure-finite-number.js
new file mode 100644
index 000000000..fb4959f23
--- /dev/null
+++ b/node_modules/es5-ext/object/ensure-finite-number.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var isFiniteNumber = require("./is-finite-number")
+ , safeToString = require("../safe-to-string");
+
+module.exports = function (value) {
+ if (isFiniteNumber(value)) return Number(value);
+ throw new TypeError(safeToString + " does not represent a finite number value");
+};
diff --git a/node_modules/es5-ext/object/ensure-natural-number-value.js b/node_modules/es5-ext/object/ensure-natural-number-value.js
new file mode 100644
index 000000000..d47d5d149
--- /dev/null
+++ b/node_modules/es5-ext/object/ensure-natural-number-value.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var ensure = require("./ensure-natural-number")
+ , isValue = require("./is-value");
+
+module.exports = function (arg) {
+ if (!isValue(arg)) throw new TypeError(arg + " is not a natural number");
+ return ensure(arg);
+};
diff --git a/node_modules/es5-ext/object/ensure-natural-number.js b/node_modules/es5-ext/object/ensure-natural-number.js
new file mode 100644
index 000000000..5b35e4a13
--- /dev/null
+++ b/node_modules/es5-ext/object/ensure-natural-number.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var isNatural = require("../number/is-natural");
+
+module.exports = function (arg) {
+ var num = Number(arg);
+ if (!isNatural(num)) throw new TypeError(arg + " is not a natural number");
+ return num;
+};
diff --git a/node_modules/es5-ext/object/ensure-promise.js b/node_modules/es5-ext/object/ensure-promise.js
new file mode 100644
index 000000000..0a1119c4e
--- /dev/null
+++ b/node_modules/es5-ext/object/ensure-promise.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var safeToString = require("../safe-to-string")
+ , isPromise = require("./is-promise");
+
+module.exports = function (value) {
+ if (!isPromise(value)) throw new TypeError(safeToString(value) + " is not a thenable");
+ return value;
+};
diff --git a/node_modules/es5-ext/object/eq.js b/node_modules/es5-ext/object/eq.js
new file mode 100644
index 000000000..031246800
--- /dev/null
+++ b/node_modules/es5-ext/object/eq.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var numIsNaN = require("../number/is-nan");
+
+module.exports = function (val1, val2) {
+ return val1 === val2 || (numIsNaN(val1) && numIsNaN(val2));
+};
diff --git a/node_modules/es5-ext/object/every.js b/node_modules/es5-ext/object/every.js
new file mode 100644
index 000000000..892b5485a
--- /dev/null
+++ b/node_modules/es5-ext/object/every.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./_iterate")("every", true);
diff --git a/node_modules/es5-ext/object/filter.js b/node_modules/es5-ext/object/filter.js
new file mode 100644
index 000000000..c7dd969b7
--- /dev/null
+++ b/node_modules/es5-ext/object/filter.js
@@ -0,0 +1,14 @@
+"use strict";
+
+var callable = require("./valid-callable")
+ , forEach = require("./for-each")
+ , call = Function.prototype.call;
+
+module.exports = function (obj, cb /*, thisArg*/) {
+ var result = {}, thisArg = arguments[2];
+ callable(cb);
+ forEach(obj, function (value, key, targetObj, index) {
+ if (call.call(cb, thisArg, value, key, targetObj, index)) result[key] = targetObj[key];
+ });
+ return result;
+};
diff --git a/node_modules/es5-ext/object/find-key.js b/node_modules/es5-ext/object/find-key.js
new file mode 100644
index 000000000..6da6ba6f4
--- /dev/null
+++ b/node_modules/es5-ext/object/find-key.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./_iterate")(require("../array/#/find"), false);
diff --git a/node_modules/es5-ext/object/find.js b/node_modules/es5-ext/object/find.js
new file mode 100644
index 000000000..5960421a0
--- /dev/null
+++ b/node_modules/es5-ext/object/find.js
@@ -0,0 +1,10 @@
+"use strict";
+
+var findKey = require("./find-key")
+ , isValue = require("./is-value");
+
+// eslint-disable-next-line no-unused-vars
+module.exports = function (obj, cb /*, thisArg, compareFn*/) {
+ var key = findKey.apply(this, arguments);
+ return isValue(key) ? obj[key] : key;
+};
diff --git a/node_modules/es5-ext/object/first-key.js b/node_modules/es5-ext/object/first-key.js
new file mode 100644
index 000000000..3666de57b
--- /dev/null
+++ b/node_modules/es5-ext/object/first-key.js
@@ -0,0 +1,13 @@
+"use strict";
+
+var value = require("./valid-value")
+ , objPropertyIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+module.exports = function (obj) {
+ var i;
+ value(obj);
+ for (i in obj) {
+ if (objPropertyIsEnumerable.call(obj, i)) return i;
+ }
+ return null;
+};
diff --git a/node_modules/es5-ext/object/flatten.js b/node_modules/es5-ext/object/flatten.js
new file mode 100644
index 000000000..4895ed632
--- /dev/null
+++ b/node_modules/es5-ext/object/flatten.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var isPlainObject = require("./is-plain-object")
+ , forEach = require("./for-each")
+
+ , process;
+
+process = function self (value, key) {
+ if (isPlainObject(value)) forEach(value, self, this);
+ else this[key] = value;
+};
+
+module.exports = function (obj) {
+ var flattened = {};
+ forEach(obj, process, flattened);
+ return flattened;
+};
diff --git a/node_modules/es5-ext/object/for-each.js b/node_modules/es5-ext/object/for-each.js
new file mode 100644
index 000000000..d282956d0
--- /dev/null
+++ b/node_modules/es5-ext/object/for-each.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./_iterate")("forEach");
diff --git a/node_modules/es5-ext/object/get-property-names.js b/node_modules/es5-ext/object/get-property-names.js
new file mode 100644
index 000000000..7dfef2794
--- /dev/null
+++ b/node_modules/es5-ext/object/get-property-names.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var uniq = require("../array/#/uniq")
+ , value = require("./valid-value")
+ , push = Array.prototype.push
+ , getOwnPropertyNames = Object.getOwnPropertyNames
+ , getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (obj) {
+ var keys;
+ obj = Object(value(obj));
+ keys = getOwnPropertyNames(obj);
+ while ((obj = getPrototypeOf(obj))) {
+ push.apply(keys, getOwnPropertyNames(obj));
+ }
+ return uniq.call(keys);
+};
diff --git a/node_modules/es5-ext/object/index.js b/node_modules/es5-ext/object/index.js
new file mode 100644
index 000000000..9b29a6eb3
--- /dev/null
+++ b/node_modules/es5-ext/object/index.js
@@ -0,0 +1,58 @@
+"use strict";
+
+module.exports = {
+ assign: require("./assign"),
+ clear: require("./clear"),
+ compact: require("./compact"),
+ compare: require("./compare"),
+ copy: require("./copy"),
+ copyDeep: require("./copy-deep"),
+ count: require("./count"),
+ create: require("./create"),
+ ensureFiniteNumber: require("./ensure-finite-number"),
+ ensureNaturalNumber: require("./ensure-natural-number"),
+ ensureNaturalNumberValue: require("./ensure-natural-number-value"),
+ ensurePromise: require("./ensure-promise"),
+ eq: require("./eq"),
+ every: require("./every"),
+ filter: require("./filter"),
+ find: require("./find"),
+ findKey: require("./find-key"),
+ firstKey: require("./first-key"),
+ flatten: require("./flatten"),
+ forEach: require("./for-each"),
+ getPropertyNames: require("./get-property-names"),
+ is: require("./is"),
+ isArrayLike: require("./is-array-like"),
+ isCallable: require("./is-callable"),
+ isCopy: require("./is-copy"),
+ isCopyDeep: require("./is-copy-deep"),
+ isEmpty: require("./is-empty"),
+ isFiniteNumber: require("./is-finite-number"),
+ isNumberValue: require("./is-number-value"),
+ isObject: require("./is-object"),
+ isPlainObject: require("./is-plain-object"),
+ isPromise: require("./is-promise"),
+ isValue: require("./is-value"),
+ keyOf: require("./key-of"),
+ keys: require("./keys"),
+ map: require("./map"),
+ mapKeys: require("./map-keys"),
+ normalizeOptions: require("./normalize-options"),
+ mixin: require("./mixin"),
+ mixinPrototypes: require("./mixin-prototypes"),
+ primitiveSet: require("./primitive-set"),
+ safeTraverse: require("./safe-traverse"),
+ serialize: require("./serialize"),
+ setPrototypeOf: require("./set-prototype-of"),
+ some: require("./some"),
+ toArray: require("./to-array"),
+ unserialize: require("./unserialize"),
+ validateArrayLike: require("./validate-array-like"),
+ validateArrayLikeObject: require("./validate-array-like-object"),
+ validCallable: require("./valid-callable"),
+ validObject: require("./valid-object"),
+ validateStringifiable: require("./validate-stringifiable"),
+ validateStringifiableValue: require("./validate-stringifiable-value"),
+ validValue: require("./valid-value")
+};
diff --git a/node_modules/es5-ext/object/is-array-like.js b/node_modules/es5-ext/object/is-array-like.js
new file mode 100644
index 000000000..8e53500c4
--- /dev/null
+++ b/node_modules/es5-ext/object/is-array-like.js
@@ -0,0 +1,18 @@
+"use strict";
+
+var isFunction = require("../function/is-function")
+ , isObject = require("./is-object")
+ , isValue = require("./is-value");
+
+module.exports = function (value) {
+ return (
+ (isValue(value) &&
+ typeof value.length === "number" &&
+ // Just checking ((typeof x === 'object') && (typeof x !== 'function'))
+ // won't work right for some cases, e.g.:
+ // type of instance of NodeList in Safari is a 'function'
+
+ ((isObject(value) && !isFunction(value)) || typeof value === "string")) ||
+ false
+ );
+};
diff --git a/node_modules/es5-ext/object/is-callable.js b/node_modules/es5-ext/object/is-callable.js
new file mode 100644
index 000000000..c55915bc3
--- /dev/null
+++ b/node_modules/es5-ext/object/is-callable.js
@@ -0,0 +1,7 @@
+// Deprecated
+
+"use strict";
+
+module.exports = function (obj) {
+ return typeof obj === "function";
+};
diff --git a/node_modules/es5-ext/object/is-copy-deep.js b/node_modules/es5-ext/object/is-copy-deep.js
new file mode 100644
index 000000000..a1206aead
--- /dev/null
+++ b/node_modules/es5-ext/object/is-copy-deep.js
@@ -0,0 +1,59 @@
+"use strict";
+
+var eq = require("./eq")
+ , isPlainObject = require("./is-plain-object")
+ , value = require("./valid-value");
+
+var isArray = Array.isArray
+ , keys = Object.keys
+ , objPropertyIsEnumerable = Object.prototype.propertyIsEnumerable
+ , objHasOwnProperty = Object.prototype.hasOwnProperty
+ , eqArr
+ , eqVal
+ , eqObj;
+
+eqArr = function (arr1, arr2, recMap) {
+ var i, length = arr1.length;
+ if (length !== arr2.length) return false;
+ for (i = 0; i < length; ++i) {
+ if (objHasOwnProperty.call(arr1, i) !== objHasOwnProperty.call(arr2, i)) return false;
+ if (!eqVal(arr1[i], arr2[i], recMap)) return false;
+ }
+ return true;
+};
+
+eqObj = function (obj1, obj2, recMap) {
+ var k1 = keys(obj1), k2 = keys(obj2);
+ if (k1.length !== k2.length) return false;
+ return k1.every(function (key) {
+ if (!objPropertyIsEnumerable.call(obj2, key)) return false;
+ return eqVal(obj1[key], obj2[key], recMap);
+ });
+};
+
+eqVal = function (val1, val2, recMap) {
+ var i, eqX, c1, c2;
+ if (eq(val1, val2)) return true;
+ if (isPlainObject(val1)) {
+ if (!isPlainObject(val2)) return false;
+ eqX = eqObj;
+ } else if (isArray(val1) && isArray(val2)) {
+ eqX = eqArr;
+ } else {
+ return false;
+ }
+ c1 = recMap[0];
+ c2 = recMap[1];
+ i = c1.indexOf(val1);
+ if (i === -1) {
+ i = c1.push(val1) - 1;
+ c2[i] = [];
+ } else if (c2[i].indexOf(val2) !== -1) return true;
+ c2[i].push(val2);
+ return eqX(val1, val2, recMap);
+};
+
+module.exports = function (val1, val2) {
+ if (eq(value(val1), value(val2))) return true;
+ return eqVal(Object(val1), Object(val2), [[], []]);
+};
diff --git a/node_modules/es5-ext/object/is-copy.js b/node_modules/es5-ext/object/is-copy.js
new file mode 100644
index 000000000..8c6ae5e2c
--- /dev/null
+++ b/node_modules/es5-ext/object/is-copy.js
@@ -0,0 +1,23 @@
+"use strict";
+
+var eq = require("./eq")
+ , value = require("./valid-value")
+ , keys = Object.keys
+ , objPropertyIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+module.exports = function (val1, val2) {
+ var k1, k2;
+
+ if (eq(value(val1), value(val2))) return true;
+
+ val1 = Object(val1);
+ val2 = Object(val2);
+
+ k1 = keys(val1);
+ k2 = keys(val2);
+ if (k1.length !== k2.length) return false;
+ return k1.every(function (key) {
+ if (!objPropertyIsEnumerable.call(val2, key)) return false;
+ return eq(val1[key], val2[key]);
+ });
+};
diff --git a/node_modules/es5-ext/object/is-empty.js b/node_modules/es5-ext/object/is-empty.js
new file mode 100644
index 000000000..dbc52d0cc
--- /dev/null
+++ b/node_modules/es5-ext/object/is-empty.js
@@ -0,0 +1,14 @@
+"use strict";
+
+var value = require("./valid-value")
+ , objPropertyIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+module.exports = function (obj) {
+ var i;
+ value(obj);
+ for (i in obj) {
+ // Jslint: ignore
+ if (objPropertyIsEnumerable.call(obj, i)) return false;
+ }
+ return true;
+};
diff --git a/node_modules/es5-ext/object/is-finite-number.js b/node_modules/es5-ext/object/is-finite-number.js
new file mode 100644
index 000000000..78ed66920
--- /dev/null
+++ b/node_modules/es5-ext/object/is-finite-number.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isNumber = require("./is-number-value");
+
+module.exports = function (value) {
+ return isNumber(value) && isFinite(value);
+};
diff --git a/node_modules/es5-ext/object/is-number-value.js b/node_modules/es5-ext/object/is-number-value.js
new file mode 100644
index 000000000..e91527686
--- /dev/null
+++ b/node_modules/es5-ext/object/is-number-value.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var isValue = require("./is-value");
+
+module.exports = function (value) {
+ if (!isValue(value)) return false;
+ try {
+ return !isNaN(value);
+ } catch (e) {
+ return false;
+ }
+};
diff --git a/node_modules/es5-ext/object/is-object.js b/node_modules/es5-ext/object/is-object.js
new file mode 100644
index 000000000..846ae2175
--- /dev/null
+++ b/node_modules/es5-ext/object/is-object.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var isValue = require("./is-value");
+
+var map = { function: true, object: true };
+
+module.exports = function (value) {
+ return (isValue(value) && map[typeof value]) || false;
+};
diff --git a/node_modules/es5-ext/object/is-plain-object.js b/node_modules/es5-ext/object/is-plain-object.js
new file mode 100644
index 000000000..ff1532896
--- /dev/null
+++ b/node_modules/es5-ext/object/is-plain-object.js
@@ -0,0 +1,20 @@
+"use strict";
+
+var getPrototypeOf = Object.getPrototypeOf
+ , prototype = Object.prototype
+ , objToString = prototype.toString
+ , id = Object().toString();
+
+module.exports = function (value) {
+ var proto, valueConstructor;
+ if (!value || typeof value !== "object" || objToString.call(value) !== id) {
+ return false;
+ }
+ proto = getPrototypeOf(value);
+ if (proto === null) {
+ valueConstructor = value.constructor;
+ if (typeof valueConstructor !== "function") return true;
+ return valueConstructor.prototype !== value;
+ }
+ return proto === prototype || getPrototypeOf(proto) === null;
+};
diff --git a/node_modules/es5-ext/object/is-promise.js b/node_modules/es5-ext/object/is-promise.js
new file mode 100644
index 000000000..3e5d20d16
--- /dev/null
+++ b/node_modules/es5-ext/object/is-promise.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var isCallable = require("./is-callable")
+ , isObject = require("./is-object");
+
+module.exports = function (value) {
+ return isObject(value) && isCallable(value.then);
+};
diff --git a/node_modules/es5-ext/object/is-value.js b/node_modules/es5-ext/object/is-value.js
new file mode 100644
index 000000000..82af8f338
--- /dev/null
+++ b/node_modules/es5-ext/object/is-value.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var _undefined = require("../function/noop")(); // Support ES3 engines
+
+module.exports = function (val) {
+ return (val !== _undefined) && (val !== null);
+};
diff --git a/node_modules/es5-ext/object/is.js b/node_modules/es5-ext/object/is.js
new file mode 100644
index 000000000..54baadec8
--- /dev/null
+++ b/node_modules/es5-ext/object/is.js
@@ -0,0 +1,10 @@
+// Implementation credits go to:
+// http://wiki.ecmascript.org/doku.php?id=harmony:egal
+
+"use strict";
+
+var numIsNaN = require("../number/is-nan");
+
+module.exports = function (val1, val2) {
+ return val1 === val2 ? val1 !== 0 || 1 / val1 === 1 / val2 : numIsNaN(val1) && numIsNaN(val2);
+};
diff --git a/node_modules/es5-ext/object/key-of.js b/node_modules/es5-ext/object/key-of.js
new file mode 100644
index 000000000..dc640e4dc
--- /dev/null
+++ b/node_modules/es5-ext/object/key-of.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var eq = require("./eq")
+ , some = require("./some");
+
+module.exports = function (obj, searchValue) {
+ var result;
+ return some(obj, function (value, name) {
+ if (eq(value, searchValue)) {
+ result = name;
+ return true;
+ }
+ return false;
+ })
+ ? result
+ : null;
+};
diff --git a/node_modules/es5-ext/object/keys/implement.js b/node_modules/es5-ext/object/keys/implement.js
new file mode 100644
index 000000000..7119a706e
--- /dev/null
+++ b/node_modules/es5-ext/object/keys/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Object, "keys", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/node_modules/es5-ext/object/keys/index.js b/node_modules/es5-ext/object/keys/index.js
new file mode 100644
index 000000000..b56b5347c
--- /dev/null
+++ b/node_modules/es5-ext/object/keys/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Object.keys
+ : require("./shim");
diff --git a/node_modules/es5-ext/object/keys/is-implemented.js b/node_modules/es5-ext/object/keys/is-implemented.js
new file mode 100644
index 000000000..7abd33a88
--- /dev/null
+++ b/node_modules/es5-ext/object/keys/is-implemented.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function () {
+ try {
+ Object.keys("primitive");
+ return true;
+ } catch (e) {
+ return false;
+}
+};
diff --git a/node_modules/es5-ext/object/keys/shim.js b/node_modules/es5-ext/object/keys/shim.js
new file mode 100644
index 000000000..bc802017e
--- /dev/null
+++ b/node_modules/es5-ext/object/keys/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var isValue = require("../is-value");
+
+var keys = Object.keys;
+
+module.exports = function (object) {
+ return keys(isValue(object) ? Object(object) : object);
+};
diff --git a/node_modules/es5-ext/object/map-keys.js b/node_modules/es5-ext/object/map-keys.js
new file mode 100644
index 000000000..72dada070
--- /dev/null
+++ b/node_modules/es5-ext/object/map-keys.js
@@ -0,0 +1,18 @@
+"use strict";
+
+var callable = require("./valid-callable")
+ , forEach = require("./for-each")
+ , call = Function.prototype.call;
+
+module.exports = function (obj, cb /*, thisArg*/) {
+ var result = {}, thisArg = arguments[2];
+ callable(cb);
+ forEach(
+ obj,
+ function (value, key, targetObj, index) {
+ result[call.call(cb, thisArg, key, value, this, index)] = value;
+ },
+ obj
+ );
+ return result;
+};
diff --git a/node_modules/es5-ext/object/map.js b/node_modules/es5-ext/object/map.js
new file mode 100644
index 000000000..7b718db17
--- /dev/null
+++ b/node_modules/es5-ext/object/map.js
@@ -0,0 +1,14 @@
+"use strict";
+
+var callable = require("./valid-callable")
+ , forEach = require("./for-each")
+ , call = Function.prototype.call;
+
+module.exports = function (obj, cb /*, thisArg*/) {
+ var result = {}, thisArg = arguments[2];
+ callable(cb);
+ forEach(obj, function (value, key, targetObj, index) {
+ result[key] = call.call(cb, thisArg, value, key, targetObj, index);
+ });
+ return result;
+};
diff --git a/node_modules/es5-ext/object/mixin-prototypes.js b/node_modules/es5-ext/object/mixin-prototypes.js
new file mode 100644
index 000000000..9094aef1d
--- /dev/null
+++ b/node_modules/es5-ext/object/mixin-prototypes.js
@@ -0,0 +1,37 @@
+"use strict";
+
+var value = require("./valid-value")
+ , mixin = require("./mixin")
+ , defineProperty = Object.defineProperty
+ , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor
+ , getOwnPropertyNames = Object.getOwnPropertyNames
+ , getPrototypeOf = Object.getPrototypeOf
+ , objHasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function (target, source) {
+ var error, end, define;
+ target = Object(value(target));
+ source = Object(value(source));
+ end = getPrototypeOf(target);
+ if (source === end) return target;
+ try {
+ mixin(target, source);
+ } catch (e) {
+ error = e;
+ }
+ source = getPrototypeOf(source);
+ define = function (name) {
+ if (objHasOwnProperty.call(target, name)) return;
+ try {
+ defineProperty(target, name, getOwnPropertyDescriptor(source, name));
+ } catch (e) {
+ error = e;
+ }
+ };
+ while (source && source !== end) {
+ getOwnPropertyNames(source).forEach(define);
+ source = getPrototypeOf(source);
+ }
+ if (error) throw error;
+ return target;
+};
diff --git a/node_modules/es5-ext/object/mixin.js b/node_modules/es5-ext/object/mixin.js
new file mode 100644
index 000000000..4da7cd519
--- /dev/null
+++ b/node_modules/es5-ext/object/mixin.js
@@ -0,0 +1,31 @@
+"use strict";
+
+var value = require("./valid-value")
+
+ , defineProperty = Object.defineProperty
+ , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor
+ , getOwnPropertyNames = Object.getOwnPropertyNames
+ , getOwnPropertySymbols = Object.getOwnPropertySymbols;
+
+module.exports = function (target, source) {
+ var error, sourceObject = Object(value(source));
+ target = Object(value(target));
+ getOwnPropertyNames(sourceObject).forEach(function (name) {
+ try {
+ defineProperty(target, name, getOwnPropertyDescriptor(source, name));
+ } catch (e) {
+ error = e;
+}
+ });
+ if (typeof getOwnPropertySymbols === "function") {
+ getOwnPropertySymbols(sourceObject).forEach(function (symbol) {
+ try {
+ defineProperty(target, symbol, getOwnPropertyDescriptor(source, symbol));
+ } catch (e) {
+ error = e;
+}
+ });
+ }
+ if (error !== undefined) throw error;
+ return target;
+};
diff --git a/node_modules/es5-ext/object/normalize-options.js b/node_modules/es5-ext/object/normalize-options.js
new file mode 100644
index 000000000..6c394fe9c
--- /dev/null
+++ b/node_modules/es5-ext/object/normalize-options.js
@@ -0,0 +1,20 @@
+"use strict";
+
+var isValue = require("./is-value");
+
+var forEach = Array.prototype.forEach, create = Object.create;
+
+var process = function (src, obj) {
+ var key;
+ for (key in src) obj[key] = src[key];
+};
+
+// eslint-disable-next-line no-unused-vars
+module.exports = function (opts1 /*, …options*/) {
+ var result = create(null);
+ forEach.call(arguments, function (options) {
+ if (!isValue(options)) return;
+ process(Object(options), result);
+ });
+ return result;
+};
diff --git a/node_modules/es5-ext/object/primitive-set.js b/node_modules/es5-ext/object/primitive-set.js
new file mode 100644
index 000000000..235eaa7fa
--- /dev/null
+++ b/node_modules/es5-ext/object/primitive-set.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var forEach = Array.prototype.forEach, create = Object.create;
+
+// eslint-disable-next-line no-unused-vars
+module.exports = function (arg /*, …args*/) {
+ var set = create(null);
+ forEach.call(arguments, function (name) {
+ set[name] = true;
+ });
+ return set;
+};
diff --git a/node_modules/es5-ext/object/safe-traverse.js b/node_modules/es5-ext/object/safe-traverse.js
new file mode 100644
index 000000000..7b72d5550
--- /dev/null
+++ b/node_modules/es5-ext/object/safe-traverse.js
@@ -0,0 +1,16 @@
+"use strict";
+
+var value = require("./valid-value")
+ , isValue = require("./is-value");
+
+module.exports = function (obj /*, …names*/) {
+ var length, current = 1;
+ value(obj);
+ length = arguments.length - 1;
+ if (!length) return obj;
+ while (current < length) {
+ obj = obj[arguments[current++]];
+ if (!isValue(obj)) return undefined;
+ }
+ return obj[arguments[current]];
+};
diff --git a/node_modules/es5-ext/object/serialize.js b/node_modules/es5-ext/object/serialize.js
new file mode 100644
index 000000000..4be9aeb1b
--- /dev/null
+++ b/node_modules/es5-ext/object/serialize.js
@@ -0,0 +1,41 @@
+"use strict";
+
+var toArray = require("./to-array")
+ , isDate = require("../date/is-date")
+ , isValue = require("../object/is-value")
+ , isRegExp = require("../reg-exp/is-reg-exp");
+
+var isArray = Array.isArray
+ , stringify = JSON.stringify
+ , objHasOwnProperty = Object.prototype.hasOwnProperty;
+var keyValueToString = function (value, key) {
+ return stringify(key) + ":" + exports(value);
+};
+
+var sparseMap = function (arr) {
+ var i, length = arr.length, result = new Array(length);
+ for (i = 0; i < length; ++i) {
+ if (!objHasOwnProperty.call(arr, i)) continue;
+ result[i] = exports(arr[i]);
+ }
+ return result;
+};
+
+module.exports = exports = function (obj) {
+ if (!isValue(obj)) return String(obj);
+ switch (typeof obj) {
+ case "string":
+ return stringify(obj);
+ case "number":
+ case "boolean":
+ case "function":
+ return String(obj);
+ case "object":
+ if (isArray(obj)) return "[" + sparseMap(obj) + "]";
+ if (isRegExp(obj)) return String(obj);
+ if (isDate(obj)) return "new Date(" + obj.valueOf() + ")";
+ return "{" + toArray(obj, keyValueToString) + "}";
+ default:
+ throw new TypeError("Serialization of " + String(obj) + "is unsupported");
+ }
+};
diff --git a/node_modules/es5-ext/object/set-prototype-of/implement.js b/node_modules/es5-ext/object/set-prototype-of/implement.js
new file mode 100644
index 000000000..1b91aebaf
--- /dev/null
+++ b/node_modules/es5-ext/object/set-prototype-of/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var shim;
+
+if (!require("./is-implemented")() && (shim = require("./shim"))) {
+ Object.defineProperty(Object, "setPrototypeOf",
+ { value: shim, configurable: true, enumerable: false, writable: true });
+}
diff --git a/node_modules/es5-ext/object/set-prototype-of/index.js b/node_modules/es5-ext/object/set-prototype-of/index.js
new file mode 100644
index 000000000..e035173f6
--- /dev/null
+++ b/node_modules/es5-ext/object/set-prototype-of/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Object.setPrototypeOf
+ : require("./shim");
diff --git a/node_modules/es5-ext/object/set-prototype-of/is-implemented.js b/node_modules/es5-ext/object/set-prototype-of/is-implemented.js
new file mode 100644
index 000000000..1a00627b7
--- /dev/null
+++ b/node_modules/es5-ext/object/set-prototype-of/is-implemented.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var create = Object.create, getPrototypeOf = Object.getPrototypeOf, plainObject = {};
+
+module.exports = function (/* CustomCreate*/) {
+ var setPrototypeOf = Object.setPrototypeOf, customCreate = arguments[0] || create;
+ if (typeof setPrototypeOf !== "function") return false;
+ return getPrototypeOf(setPrototypeOf(customCreate(null), plainObject)) === plainObject;
+};
diff --git a/node_modules/es5-ext/object/set-prototype-of/shim.js b/node_modules/es5-ext/object/set-prototype-of/shim.js
new file mode 100644
index 000000000..312341e02
--- /dev/null
+++ b/node_modules/es5-ext/object/set-prototype-of/shim.js
@@ -0,0 +1,86 @@
+/* eslint no-proto: "off" */
+
+// Big thanks to @WebReflection for sorting this out
+// https://gist.github.com/WebReflection/5593554
+
+"use strict";
+
+var isObject = require("../is-object")
+ , value = require("../valid-value")
+ , objIsPrototypOf = Object.prototype.isPrototypeOf
+ , defineProperty = Object.defineProperty
+ , nullDesc = {
+ configurable: true,
+ enumerable: false,
+ writable: true,
+ value: undefined
+}
+ , validate;
+
+validate = function (obj, prototype) {
+ value(obj);
+ if (prototype === null || isObject(prototype)) return obj;
+ throw new TypeError("Prototype must be null or an object");
+};
+
+module.exports = (function (status) {
+ var fn, set;
+ if (!status) return null;
+ if (status.level === 2) {
+ if (status.set) {
+ set = status.set;
+ fn = function (obj, prototype) {
+ set.call(validate(obj, prototype), prototype);
+ return obj;
+ };
+ } else {
+ fn = function (obj, prototype) {
+ validate(obj, prototype).__proto__ = prototype;
+ return obj;
+ };
+ }
+ } else {
+ fn = function self (obj, prototype) {
+ var isNullBase;
+ validate(obj, prototype);
+ isNullBase = objIsPrototypOf.call(self.nullPolyfill, obj);
+ if (isNullBase) delete self.nullPolyfill.__proto__;
+ if (prototype === null) prototype = self.nullPolyfill;
+ obj.__proto__ = prototype;
+ if (isNullBase) defineProperty(self.nullPolyfill, "__proto__", nullDesc);
+ return obj;
+ };
+ }
+ return Object.defineProperty(fn, "level", {
+ configurable: false,
+ enumerable: false,
+ writable: false,
+ value: status.level
+ });
+}(
+ (function () {
+ var tmpObj1 = Object.create(null)
+ , tmpObj2 = {}
+ , set
+ , desc = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__");
+
+ if (desc) {
+ try {
+ set = desc.set; // Opera crashes at this point
+ set.call(tmpObj1, tmpObj2);
+ } catch (ignore) {}
+ if (Object.getPrototypeOf(tmpObj1) === tmpObj2) return { set: set, level: 2 };
+ }
+
+ tmpObj1.__proto__ = tmpObj2;
+ if (Object.getPrototypeOf(tmpObj1) === tmpObj2) return { level: 2 };
+
+ tmpObj1 = {};
+ tmpObj1.__proto__ = tmpObj2;
+ if (Object.getPrototypeOf(tmpObj1) === tmpObj2) return { level: 1 };
+
+ return false;
+ })()
+));
+
+require("../create");
diff --git a/node_modules/es5-ext/object/some.js b/node_modules/es5-ext/object/some.js
new file mode 100644
index 000000000..c919466b2
--- /dev/null
+++ b/node_modules/es5-ext/object/some.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./_iterate")("some", false);
diff --git a/node_modules/es5-ext/object/to-array.js b/node_modules/es5-ext/object/to-array.js
new file mode 100644
index 000000000..6ed50a8eb
--- /dev/null
+++ b/node_modules/es5-ext/object/to-array.js
@@ -0,0 +1,24 @@
+"use strict";
+
+var callable = require("./valid-callable")
+ , isValue = require("./is-value")
+ , forEach = require("./for-each")
+ , call = Function.prototype.call
+ , defaultCb = function (value, key) {
+ return [key, value];
+};
+
+module.exports = function (obj /*, cb, thisArg, compareFn*/) {
+ var a = [], cb = arguments[1], thisArg = arguments[2];
+ cb = isValue(cb) ? callable(cb) : defaultCb;
+
+ forEach(
+ obj,
+ function (value, key, targetObj, index) {
+ a.push(call.call(cb, thisArg, value, key, this, index));
+ },
+ obj,
+ arguments[3]
+ );
+ return a;
+};
diff --git a/node_modules/es5-ext/object/unserialize.js b/node_modules/es5-ext/object/unserialize.js
new file mode 100644
index 000000000..757451439
--- /dev/null
+++ b/node_modules/es5-ext/object/unserialize.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var value = require("./valid-value");
+
+module.exports = exports = function (code) {
+ // eslint-disable-next-line no-new-func
+ return new Function("return " + value(code))();
+};
diff --git a/node_modules/es5-ext/object/valid-callable.js b/node_modules/es5-ext/object/valid-callable.js
new file mode 100644
index 000000000..a97fb3eaf
--- /dev/null
+++ b/node_modules/es5-ext/object/valid-callable.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (fn) {
+ if (typeof fn !== "function") throw new TypeError(fn + " is not a function");
+ return fn;
+};
diff --git a/node_modules/es5-ext/object/valid-object.js b/node_modules/es5-ext/object/valid-object.js
new file mode 100644
index 000000000..74b5e5f27
--- /dev/null
+++ b/node_modules/es5-ext/object/valid-object.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var isObject = require("./is-object");
+
+module.exports = function (value) {
+ if (!isObject(value)) throw new TypeError(value + " is not an Object");
+ return value;
+};
diff --git a/node_modules/es5-ext/object/valid-value.js b/node_modules/es5-ext/object/valid-value.js
new file mode 100644
index 000000000..d0ced8a47
--- /dev/null
+++ b/node_modules/es5-ext/object/valid-value.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var isValue = require("./is-value");
+
+module.exports = function (value) {
+ if (!isValue(value)) throw new TypeError("Cannot use null or undefined");
+ return value;
+};
diff --git a/node_modules/es5-ext/object/validate-array-like-object.js b/node_modules/es5-ext/object/validate-array-like-object.js
new file mode 100644
index 000000000..d7c45b365
--- /dev/null
+++ b/node_modules/es5-ext/object/validate-array-like-object.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var isArrayLike = require("./is-array-like")
+ , isObject = require("./is-object");
+
+module.exports = function (obj) {
+ if (isObject(obj) && isArrayLike(obj)) return obj;
+ throw new TypeError(obj + " is not array-like object");
+};
diff --git a/node_modules/es5-ext/object/validate-array-like.js b/node_modules/es5-ext/object/validate-array-like.js
new file mode 100644
index 000000000..07aa79495
--- /dev/null
+++ b/node_modules/es5-ext/object/validate-array-like.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var isArrayLike = require("./is-array-like");
+
+module.exports = function (obj) {
+ if (isArrayLike(obj)) return obj;
+ throw new TypeError(obj + " is not array-like value");
+};
diff --git a/node_modules/es5-ext/object/validate-stringifiable-value.js b/node_modules/es5-ext/object/validate-stringifiable-value.js
new file mode 100644
index 000000000..5f4704281
--- /dev/null
+++ b/node_modules/es5-ext/object/validate-stringifiable-value.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var ensureValue = require("./valid-value")
+ , stringifiable = require("./validate-stringifiable");
+
+module.exports = function (value) {
+ return stringifiable(ensureValue(value));
+};
diff --git a/node_modules/es5-ext/object/validate-stringifiable.js b/node_modules/es5-ext/object/validate-stringifiable.js
new file mode 100644
index 000000000..2b1f12714
--- /dev/null
+++ b/node_modules/es5-ext/object/validate-stringifiable.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var isCallable = require("./is-callable");
+
+module.exports = function (stringifiable) {
+ try {
+ if (stringifiable && isCallable(stringifiable.toString)) return stringifiable.toString();
+ return String(stringifiable);
+ } catch (e) {
+ throw new TypeError("Passed argument cannot be stringifed");
+ }
+};