diff options
author | 2020-11-16 00:10:28 +0100 | |
---|---|---|
committer | 2020-11-16 00:10:28 +0100 | |
commit | e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d (patch) | |
tree | 55713f725f77b44ebfec86e4eec3ce33e71458ca /node_modules/clone-deep/index.js | |
download | website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.gz website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.bz2 website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.zip |
api, login, auth
Diffstat (limited to 'node_modules/clone-deep/index.js')
-rw-r--r-- | node_modules/clone-deep/index.js | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/node_modules/clone-deep/index.js b/node_modules/clone-deep/index.js new file mode 100644 index 0000000..6c66e4e --- /dev/null +++ b/node_modules/clone-deep/index.js @@ -0,0 +1,54 @@ +'use strict'; + +/** + * Module dependenices + */ + +var isObject = require('is-plain-object'); +var clone = require('shallow-clone'); +var typeOf = require('kind-of'); +var forOwn = require('for-own'); + +/** + * Recursively clone native types. + */ + +function cloneDeep(val, instanceClone) { + switch (typeOf(val)) { + case 'object': + return cloneObjectDeep(val, instanceClone); + case 'array': + return cloneArrayDeep(val, instanceClone); + default: { + return clone(val); + } + } +} + +function cloneObjectDeep(obj, instanceClone) { + if (isObject(obj) || (instanceClone === true && typeOf(obj) === 'object')) { + var res = {}; + forOwn(obj, function(val, key) { + this[key] = cloneDeep(val, instanceClone); + }, res); + return res; + } + if (typeof instanceClone === 'function') { + return instanceClone(obj); + } + return obj; +} + +function cloneArrayDeep(arr, instanceClone) { + var res = []; + for (var i = 0; i < arr.length; i++) { + res[i] = cloneDeep(arr[i], instanceClone); + } + return res; +} + +/** + * Expose `cloneDeep` + */ + +module.exports = cloneDeep; |