10000 Initial release by eirhor · Pull Request #1 · Geta/NestedObjectAssign · GitHub
[go: up one dir, main page]

Skip to content

Initial release #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Jun 7, 2017
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Updated naming
  • Loading branch information
eirhor committed Jun 2, 2017
commit b57a4c0c9218e11411e1699fd00dac084cabc699
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
/node_modules/
/.idea/
/.idea/
npm-debug.log
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# NestedObjectAssign
This package extends the functionality given by Object.assign() to also include the values of nested objects.

## Usage
To use this

## Tests
Tests are done using mocha. to run tests, simply type `npm run tests`.
73 changes: 51 additions & 22 deletions dist/nested-object.assign.js → dist/nestedObjectAssign.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,56 +68,85 @@
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
/***/ (function(module, exports, __webpack_require__) {

"use strict";
/* harmony export (immutable) */ __webpack_exports__["a"] = nestedAssign;
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isObject__ = __webpack_require__(1);


function nestedAssign(target, ...sources) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = nestedObjectAssign;

var _isObject = __webpack_require__(1);

var _isObject2 = _interopRequireDefault(_isObject);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

function nestedObjectAssign(target) {
for (var _len = arguments.length, sources = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
sources[_key - 1] = arguments[_key];
}

if (!sources.length) return target;

const source = sources.shift();
var source = sources.shift();

if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__isObject__["a" /* default */])(target) && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__isObject__["a" /* default */])(source)) {
for (const key in source) {
if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__isObject__["a" /* default */])(source[key])) {
if (!target[key]) Object.assign(target, { [key]: {} });
if ((0, _isObject2.default)(target) && (0, _isObject2.default)(source)) {
for (var key in source) {
if ((0, _isObject2.default)(source[key])) {
if (!target[key]) Object.assign(target, _defineProperty({}, key, {}));

nestedAssign(target[key], source[key]);
nestedObjectAssign(target[key], source[key]);
} else {
Object.assign(target, { [key]: source[key] });
Object.assign(target, _defineProperty({}, key, source[key]));
}
}
}

return nestedAssign(target, ...sources);
return nestedObjectAssign.apply(undefined, [target].concat(sources));
}

/***/ }),
/* 1 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
/***/ (function(module, exports, __webpack_require__) {

"use strict";
/* harmony export (immutable) */ __webpack_exports__["a"] = isObject;


Object.defineProperty(exports, "__esModule", {
value: true
});

var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

exports.default = isObject;
function isObject(item) {
return item && typeof item === 'object' && !Array.isArray(item);
return item && (typeof item === 'undefined' ? 'undefined' : _typeof(item)) === 'object' && !Array.isArray(item);
}

/***/ }),
/* 2 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
/***/ (function(module, exports, __webpack_require__) {

"use strict";
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
/* harmony export (immutable) */ __webpack_exports__["default"] = NestedAssign;
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_nestedAssign__ = __webpack_require__(0);


function NestedAssign(target, ...sources) {
return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__components_nestedAssign__["a" /* default */])(target, ...sources);
}
Object.defineProperty(exports, "__esModule", {
value: true
});

var _nestedObjectAssign = __webpack_require__(0);

Object.defineProperty(exports, 'nestedObjectAssign', {
enumerable: true,
get: function get() {
return _nestedObjectAssign.nestedObjectAssign;
}
});

/***/ })
/******/ ]);
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "nested-object.assign",
"version": "1.0.0",
"description": "method for allowing nested objects to be merged, which object.assign doesn't currently support",
"main": "dist/nested-object.assign.js",
"main": "dist/nestedObjectAssign.js",
"directories": {
"test": "test"
},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import isObject from './isObject';

export default function nestedAssign(target, ...sources){
export default function nestedObjectAssign(target, ...sources){
if (!sources.length)
return target;

Expand All @@ -12,13 +12,13 @@ export default function nestedAssign(target, ...sources){
if (!target[key])
Object.assign(target, {[key]: {}});

nestedAssign(target[key], source[key]);
nestedObjectAssign(target[key], source[key]);
}
else {
Object.assign(target, {[key]: source[key]});
}
}
}

return nestedAssign(target, ...sources);
return nestedObjectAssign(target, ...sources);
}
6 changes: 1 addition & 5 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1 @@
import nestedAssign from "./components/nestedAssign";

export default function nestedObjectAssign(target, ...sources){
return nestedAssign(target, ...sources);
}
export {nestedObjectAssign} from './components/nestedObjectAssign';
12 changes: 3 additions & 9 deletions tests/nestedObjectAssignTest.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var assert = require('assert');
import nestedObjectAssign from '../src/index';
import nestedObjectAssign from '../dist/nestedObjectAssign';

var mockData = {
default: {
Expand All @@ -21,7 +21,7 @@ var mockData = {
}
}

}
};

var expectedData = {
heading: 'title',
Expand All @@ -32,13 +32,7 @@ var expectedData = {
header: 'header',
heading2: 'h2'
}
}

var test = function(){
var mergedData = nestedObjectAssign({}, mockData.default, mockData.first, mockData.second);

return mergedData === expectedData;
}
};

describe('Object', function() {
describe('nestedObjectAssign', function() {
Expand Down
7 changes: 5 additions & 2 deletions webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,17 @@ module.exports = {
entry: './index',
output: {
path: path.resolve('dist'),
filename: 'nested-object.assign.js'
filename: 'nestedObjectAssign.js'
},
module:{
loaders: [
{
test: /\.js$/,
exclude: [/node_modules/, /dist/],
loader: 'babel-loader'
loader: 'babel-loader',
query: {
presets: ['es2015']
}
}
]
},
Expand Down
0