diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..42bfb25 --- /dev/null +++ b/.babelrc @@ -0,0 +1,10 @@ +{ + "presets": [ + [ + "@babel/preset-env", + { + "useBuiltIns": "entry" + } + ] + ] + } \ No newline at end of file diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000..bd9fb77 --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,2 @@ +> 0.25% +not dead \ No newline at end of file diff --git a/lib/index.js b/lib/index.js new file mode 100644 index 0000000..0c808c8 --- /dev/null +++ b/lib/index.js @@ -0,0 +1,52 @@ +/*! + * assign-deep + * + * Copyright (c) 2017-present, Jon Schlinkert. + * Released under the MIT License. + */ +'use strict'; + +function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +var assignSymbols = require('assign-symbols'); + +var toString = Object.prototype.toString; + +var assign = module.exports = function (target) { + var i = 0; + + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + if (isPrimitive(target)) target = args[i++]; + if (!target) target = {}; + + for (; i < args.length; i++) { + if (isObject(args[i])) { + var _arr = Object.keys(args[i]); + + for (var _i = 0; _i < _arr.length; _i++) { + var key = _arr[_i]; + + if (isObject(target[key]) && isObject(args[i][key])) { + assign(target[key], args[i][key]); + } else { + target[key] = args[i][key]; + } + } + + assignSymbols(target, args[i]); + } + } + + return target; +}; + +function isObject(val) { + return typeof val === 'function' || toString.call(val) === '[object Object]'; +} + +function isPrimitive(val) { + return _typeof(val) === 'object' ? val === null : typeof val !== 'function'; +} \ No newline at end of file diff --git a/package.json b/package.json index 35d6533..d862e28 100644 --- a/package.json +++ b/package.json @@ -14,19 +14,24 @@ }, "license": "MIT", "files": [ - "index.js" + "lib/index.js" ], - "main": "index.js", + "main": "lib/index.js", "engines": { "node": ">=6" }, "scripts": { - "test": "mocha" + "test": "mocha", + "prepublish": "npm run build", + "build": "babel -d lib/ index.js" }, "dependencies": { "assign-symbols": "^2.0.2" }, "devDependencies": { + "@babel/cli": "^7.0.0", + "@babel/core": "^7.0.1", + "@babel/preset-env": "^7.0.0", "gulp-format-md": "^1.0.0", "mocha": "^5.2.0" },