summaryrefslogtreecommitdiffstats
path: root/node_modules/shallow-clone/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/shallow-clone/index.js')
-rw-r--r--node_modules/shallow-clone/index.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/node_modules/shallow-clone/index.js b/node_modules/shallow-clone/index.js
new file mode 100644
index 0000000..87d8ff4
--- /dev/null
+++ b/node_modules/shallow-clone/index.js
@@ -0,0 +1,57 @@
+/*!
+ * shallow-clone <https://github.com/jonschlinkert/shallow-clone>
+ *
+ * Copyright (c) 2015-2017, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+'use strict';
+
+var isObject = require('is-extendable');
+var mixin = require('mixin-object');
+var typeOf = require('kind-of');
+
+/**
+ * Shallow copy an object, array or primitive.
+ *
+ * @param {any} `val`
+ * @return {any}
+ */
+
+function clone(val) {
+ var type = typeOf(val);
+ if (clone.hasOwnProperty(type)) {
+ return clone[type](val);
+ }
+ return val;
+}
+
+clone.array = function cloneArray(arr) {
+ return arr.slice();
+};
+
+clone.date = function cloneDate(date) {
+ return new Date(+date);
+};
+
+clone.object = function cloneObject(obj) {
+ if (isObject(obj)) {
+ return mixin({}, obj);
+ } else {
+ return obj;
+ }
+};
+
+clone.regexp = function cloneRegExp(re) {
+ var flags = '';
+ flags += re.multiline ? 'm' : '';
+ flags += re.global ? 'g' : '';
+ flags += re.ignorecase ? 'i' : '';
+ return new RegExp(re.source, flags);
+};
+
+/**
+ * Expose `clone`
+ */
+
+module.exports = clone;