You're Invited: Meet the Socket team at BSidesSF and RSAC - April 27 - May 1.RSVP
Socket
Sign inDemoInstall
Socket

advance-json-merge

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

advance-json-merge - npm Package Compare versions

Comparing version

to
1.0.4

9

CHANGELOG.md

@@ -5,2 +5,11 @@ # Change Log

## [1.0.4](https://github.com/boycgit/advance-json-merge/compare/v1.0.3...v1.0.4) (2019-06-17)
### Bug Fixes
* 🐛 功能修复: 通过 NAME_EMPTY_OBJECT 解决空对象融合问题 ([9d832ad](https://github.com/boycgit/advance-json-merge/commit/9d832ad))
## [1.0.3](https://github.com/boycgit/advance-json-merge/compare/v1.0.2...v1.0.3) (2019-05-16)

@@ -7,0 +16,0 @@

2

dist/index.cjs.min.js

@@ -1,1 +0,1 @@

"use strict";function invariant(e,a,t){if(!e)throw new Error("[lib-utils] Invariant failed: "+a+(t?" in '"+t+"'":""))}Object.defineProperty(exports,"__esModule",{value:!0});var NAME_ROOT_LEVEL="_ROOT";function isPlainObject(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function createChildItem(e,a){return{path:a.path.concat(a.name),parent:a,name:e,data:a.data[e]}}function parseLevel(e,a){void 0===a&&(a=0);var l=[],n=[],t=[{path:[],parent:null,name:NAME_ROOT_LEVEL,data:e}];l.push(t),n.push({});for(var c=1/0,r=function(r){for(var e=l[r],i=[],o={},a=function(e){var t=l[r][e];if(isPlainObject(t.data)){t.children=[];var a=t.path.concat(t.name),n=Object.keys(t.data);(o[a.join("/")]=n).forEach(function(e){var a=createChildItem(e,t);t.children.push(a),i.push(a)}),t.data=void 0}},t=0;t<e.length;t++)a(t);0===i.length?c=r:(l.push(i),n.push(o))},i=0;i<Math.min(a,c);i++)r(i);return{levels:l,paths:n}}function regenFromLevels(e){if(!e[0][0].data)for(var a=e.length-1;0<=a;a--){e[a].forEach(function(e){var a=e.parent,t=e.name,n=e.data,r=e.children;a&&(a.data||(a.data={}),isPlainObject(a.data)&&(a.data[t]=!n&&r&&0===r.length?{}:n))})}return Object.assign({},e[0][0].data)}function reduceLevels(e,a){if(invariant(0<a,"toStopLevel 必须大于 0"),a>=e.length)return e;for(var t=e.length-1;a-1<=t;t--){e[t].forEach(function(e){var a=e.parent,t=e.name,n=e.data,r=e.children;a&&(a.data||(a.data={}),isPlainObject(a.data)&&(a.data[t]=!n&&r&&0===r.length?{}:n))})}return e.slice(0,a)}function mergeWithLevel(e,d,a){invariant("object"==typeof e,"origin 必须是对象(JSON)格式"),invariant("object"==typeof d,"target 必须是对象(JSON)格式");var t=parseLevel(e,a),n=t.paths,h=t.levels,r=parseLevel(d,a).levels,i=Math.min(h.length,r.length);h=reduceLevels(h,i),r=reduceLevels(r,i);for(var v=[],o=function(e){var l=e-1;v=[];var c=h[l],s=n[l];r[l].forEach(function(t){var e=t.path,n=t.name,a=t.data,r=e.join("/"),i=s[r];if(n===NAME_ROOT_LEVEL)void 0!==a&&(c[0].data=a);else if(i&&i.length)~i.indexOf(n)?void 0!==a?c.some(function(e){return n===e.name&&(e.data=a,!0)}):c.some(function(e,a){return!(n!==e.name||!e.data||isPlainObject(e.data))&&(t.parent=e.parent,t.children=void 0,t.path.forEach(function(e){t.data=e&&e!==NAME_ROOT_LEVEL?t.data[e]:d}),t.data=t.data[t.name],h[l][a]=t,!0)}):(c.some(function(e){return r===e.path.join("/")&&(t.parent=e.parent,e.parent.children=(e.parent.children||[]).concat(t),!0)}),v.push(t));else{var o=h[l-1];t.parent&&o&&o.length&&!~o.indexOf(t.parent)&&o.push(t.parent),v.push(t)}}),h[l]=c.concat(v)},l=i;0<l;l--)o(l);return regenFromLevels(h)}exports.NAME_ROOT_LEVEL=NAME_ROOT_LEVEL,exports.parseLevel=parseLevel,exports.regenFromLevels=regenFromLevels,exports.reduceLevels=reduceLevels,exports.mergeWithLevel=mergeWithLevel;
"use strict";function invariant(e,a,t){if(!e)throw new Error("[lib-utils] Invariant failed: "+a+(t?" in '"+t+"'":""))}Object.defineProperty(exports,"__esModule",{value:!0});var NAME_ROOT_LEVEL="_ROOT",NAME_EMPTY_OBJECT="_EMPTY";function isPlainObject(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function createChildItem(e,a){var t=e===NAME_EMPTY_OBJECT?NAME_EMPTY_OBJECT:a.data[e];return{path:a.path.concat(a.name),parent:a,name:e,data:t}}function parseLevel(e,a){void 0===a&&(a=0);var l=[],n=[],t=[{path:[],parent:null,name:NAME_ROOT_LEVEL,data:e}];l.push(t),n.push({});for(var c=1/0,r=function(r){for(var e=l[r],i=[],o={},a=function(e){var t=l[r][e];if(isPlainObject(t.data)){t.children=[];var a=t.path.concat(t.name),n=Object.keys(t.data);0===n.length&&n.push(NAME_EMPTY_OBJECT),(o[a.join("/")]=n).forEach(function(e){var a=createChildItem(e,t);t.children.push(a),i.push(a)}),t.data=void 0}},t=0;t<e.length;t++)a(t);0===i.length?c=r:(l.push(i),n.push(o))},i=0;i<Math.min(a,c);i++)r(i);return{levels:l,paths:n}}function regenFromLevels(e){if(!e[0][0].data)for(var a=e.length-1;0<=a;a--){e[a].forEach(function(e){var a=e.parent,t=e.name,n=e.data,r=e.children;a&&(a.data||(a.data={}),t!==NAME_EMPTY_OBJECT&&isPlainObject(a.data)&&(a.data[t]=!n&&r&&0===r.length?{}:n))})}return Object.assign({},e[0][0].data)}function reduceLevels(e,a){if(invariant(0<a,"toStopLevel 必须大于 0"),a>=e.length)return e;for(var t=e.length-1;a-1<=t;t--){e[t].forEach(function(e){var a=e.parent,t=e.name,n=e.data,r=e.children;a&&(a.data||(a.data={}),isPlainObject(a.data)&&(a.data[t]=!n&&r&&0===r.length?{}:n))})}return e.slice(0,a)}function mergeWithLevel(e,d,a){invariant("object"==typeof e,"origin 必须是对象(JSON)格式"),invariant("object"==typeof d,"target 必须是对象(JSON)格式");var t=parseLevel(e,a),n=t.paths,h=t.levels,r=parseLevel(d,a).levels,i=Math.min(h.length,r.length);h=reduceLevels(h,i),r=reduceLevels(r,i);for(var v=[],o=function(e){var l=e-1;v=[];var c=h[l],s=n[l];r[l].forEach(function(t){var e=t.path,n=t.name,a=t.data,r=e.join("/"),i=s[r];if(n===NAME_ROOT_LEVEL)void 0!==a&&(c[0].data=a);else if(i)~i.indexOf(n)?void 0!==a?c.some(function(e){return n===e.name&&(e.data=a,!0)}):c.some(function(e,a){return!(n!==e.name||!e.data||isPlainObject(e.data))&&(t.parent=e.parent,t.children=void 0,t.path.forEach(function(e){t.data=e&&e!==NAME_ROOT_LEVEL?t.data[e]:d}),t.data=t.data[t.name],h[l][a]=t,!0)}):(c.some(function(e){return r===e.path.join("/")&&(t.parent=e.parent,e.parent.children=(e.parent.children||[]).concat(t),!0)}),v.push(t));else{var o=h[l-1];t.parent&&o&&o.length&&!~o.indexOf(t.parent)&&o.push(t.parent),v.push(t)}}),h[l]=c.concat(v)},l=i;0<l;l--)o(l);return regenFromLevels(h)}exports.NAME_ROOT_LEVEL=NAME_ROOT_LEVEL,exports.NAME_EMPTY_OBJECT=NAME_EMPTY_OBJECT,exports.parseLevel=parseLevel,exports.regenFromLevels=regenFromLevels,exports.reduceLevels=reduceLevels,exports.mergeWithLevel=mergeWithLevel;

@@ -12,2 +12,3 @@ export interface INormalObject {

export declare const NAME_ROOT_LEVEL = "_ROOT";
export declare const NAME_EMPTY_OBJECT = "_EMPTY";
/**

@@ -14,0 +15,0 @@ * 将传入的对象分解成 item level 标准格式(方便后续 merge 操作)

@@ -1,1 +0,1 @@

function invariant(e,a,t){if(!e)throw new Error("[lib-utils] Invariant failed: "+a+(t?" in '"+t+"'":""))}var NAME_ROOT_LEVEL="_ROOT";function isPlainObject(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function createChildItem(e,a){return{path:a.path.concat(a.name),parent:a,name:e,data:a.data[e]}}function parseLevel(e,a){void 0===a&&(a=0);var t=[],n=[],r=[{path:[],parent:null,name:NAME_ROOT_LEVEL,data:e}];t.push(r),n.push({});for(var i=1/0,o=function(e){for(var a=t[e],r=[],o={},c=function(a){var n=t[e][a];if(isPlainObject(n.data)){n.children=[];var i=n.path.concat(n.name),c=Object.keys(n.data);o[i.join("/")]=c,c.forEach(function(e){var a=createChildItem(e,n);n.children.push(a),r.push(a)}),n.data=void 0}},l=0;l<a.length;l++)c(l);0===r.length?i=e:(t.push(r),n.push(o))},c=0;c<Math.min(a,i);c++)o(c);return{levels:t,paths:n}}function regenFromLevels(e){if(!e[0][0].data)for(var a=e.length-1;a>=0;a--){e[a].forEach(function(e){var a=e.parent,t=e.name,n=e.data,r=e.children;a&&(a.data||(a.data={}),isPlainObject(a.data)&&(a.data[t]=!n&&r&&0===r.length?{}:n))})}return Object.assign({},e[0][0].data)}function reduceLevels(e,a){if(invariant(a>0,"toStopLevel 必须大于 0"),a>=e.length)return e;for(var t=e.length-1;t>=a-1;t--){e[t].forEach(function(e){var a=e.parent,t=e.name,n=e.data,r=e.children;a&&(a.data||(a.data={}),isPlainObject(a.data)&&(a.data[t]=!n&&r&&0===r.length?{}:n))})}return e.slice(0,a)}function mergeWithLevel(e,a,t){invariant("object"==typeof e,"origin 必须是对象(JSON)格式"),invariant("object"==typeof a,"target 必须是对象(JSON)格式");var n=parseLevel(e,t),r=n.paths,i=n.levels,o=parseLevel(a,t).levels,c=Math.min(i.length,o.length);i=reduceLevels(i,c),o=reduceLevels(o,c);for(var l=[],d=function(e){var t=e-1;l=[];var n=i[t],c=r[t];o[t].forEach(function(e){var r=e.path,o=e.name,d=e.data,h=r.join("/"),u=c[h];if(o===NAME_ROOT_LEVEL)void 0!==d&&(n[0].data=d);else if(u&&u.length)~u.indexOf(o)?void 0!==d?n.some(function(e){return o===e.name&&(e.data=d,!0)}):n.some(function(n,r){return!(o!==n.name||!n.data||isPlainObject(n.data))&&(e.parent=n.parent,e.children=void 0,e.path.forEach(function(t){e.data=t&&t!==NAME_ROOT_LEVEL?e.data[t]:a}),e.data=e.data[e.name],i[t][r]=e,!0)}):(n.some(function(a){return h===a.path.join("/")&&(e.parent=a.parent,a.parent.children=(a.parent.children||[]).concat(e),!0)}),l.push(e));else{var v=i[t-1];e.parent&&v&&v.length&&!~v.indexOf(e.parent)&&v.push(e.parent),l.push(e)}}),i[t]=n.concat(l)},h=c;h>0;h--)d(h);return regenFromLevels(i)}export{NAME_ROOT_LEVEL,parseLevel,regenFromLevels,reduceLevels,mergeWithLevel};
function invariant(a,e,t){if(!a)throw new Error("[lib-utils] Invariant failed: "+e+(t?" in '"+t+"'":""))}var NAME_ROOT_LEVEL="_ROOT",NAME_EMPTY_OBJECT="_EMPTY";function isPlainObject(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function createChildItem(a,e){var t=a===NAME_EMPTY_OBJECT?NAME_EMPTY_OBJECT:e.data[a];return{path:e.path.concat(e.name),parent:e,name:a,data:t}}function parseLevel(a,e){void 0===e&&(e=0);var t=[],n=[],r=[{path:[],parent:null,name:NAME_ROOT_LEVEL,data:a}];t.push(r),n.push({});for(var i=1/0,o=function(a){for(var e=t[a],r=[],o={},c=function(e){var n=t[a][e];if(isPlainObject(n.data)){n.children=[];var i=n.path.concat(n.name),c=Object.keys(n.data);0===c.length&&c.push(NAME_EMPTY_OBJECT),o[i.join("/")]=c,c.forEach(function(a){var e=createChildItem(a,n);n.children.push(e),r.push(e)}),n.data=void 0}},l=0;l<e.length;l++)c(l);0===r.length?i=a:(t.push(r),n.push(o))},c=0;c<Math.min(e,i);c++)o(c);return{levels:t,paths:n}}function regenFromLevels(a){if(!a[0][0].data)for(var e=a.length-1;e>=0;e--){a[e].forEach(function(a){var e=a.parent,t=a.name,n=a.data,r=a.children;e&&(e.data||(e.data={}),t!==NAME_EMPTY_OBJECT&&isPlainObject(e.data)&&(e.data[t]=!n&&r&&0===r.length?{}:n))})}return Object.assign({},a[0][0].data)}function reduceLevels(a,e){if(invariant(e>0,"toStopLevel 必须大于 0"),e>=a.length)return a;for(var t=a.length-1;t>=e-1;t--){a[t].forEach(function(a){var e=a.parent,t=a.name,n=a.data,r=a.children;e&&(e.data||(e.data={}),isPlainObject(e.data)&&(e.data[t]=!n&&r&&0===r.length?{}:n))})}return a.slice(0,e)}function mergeWithLevel(a,e,t){invariant("object"==typeof a,"origin 必须是对象(JSON)格式"),invariant("object"==typeof e,"target 必须是对象(JSON)格式");var n=parseLevel(a,t),r=n.paths,i=n.levels,o=parseLevel(e,t).levels,c=Math.min(i.length,o.length);i=reduceLevels(i,c),o=reduceLevels(o,c);for(var l=[],h=function(a){var t=a-1;l=[];var n=i[t],c=r[t];o[t].forEach(function(a){var r=a.path,o=a.name,h=a.data,d=r.join("/"),u=c[d];if(o===NAME_ROOT_LEVEL)void 0!==h&&(n[0].data=h);else if(u)~u.indexOf(o)?void 0!==h?n.some(function(a){return o===a.name&&(a.data=h,!0)}):n.some(function(n,r){return!(o!==n.name||!n.data||isPlainObject(n.data))&&(a.parent=n.parent,a.children=void 0,a.path.forEach(function(t){a.data=t&&t!==NAME_ROOT_LEVEL?a.data[t]:e}),a.data=a.data[a.name],i[t][r]=a,!0)}):(n.some(function(e){return d===e.path.join("/")&&(a.parent=e.parent,e.parent.children=(e.parent.children||[]).concat(a),!0)}),l.push(a));else{var v=i[t-1];a.parent&&v&&v.length&&!~v.indexOf(a.parent)&&v.push(a.parent),l.push(a)}}),i[t]=n.concat(l)},d=c;d>0;d--)h(d);return regenFromLevels(i)}export{NAME_ROOT_LEVEL,NAME_EMPTY_OBJECT,parseLevel,regenFromLevels,reduceLevels,mergeWithLevel};

@@ -1,1 +0,1 @@

!function(a,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(a.advanceMerge={})}(this,function(a){"use strict";function c(a,t,e){if(!a)throw new Error("[lib-utils] Invariant failed: "+t+(e?" in '"+e+"'":""))}var l="_ROOT";function s(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function f(a,t){void 0===t&&(t=0);var d=[],n=[],e=[{path:[],parent:null,name:l,data:a}];d.push(e),n.push({});for(var c=1/0,r=function(r){for(var a=d[r],o=[],i={},t=function(a){var e=d[r][a];if(s(e.data)){e.children=[];var t=e.path.concat(e.name),n=Object.keys(e.data);(i[t.join("/")]=n).forEach(function(a){var t=function(a,t){return{path:t.path.concat(t.name),parent:t,name:a,data:t.data[a]}}(a,e);e.children.push(t),o.push(t)}),e.data=void 0}},e=0;e<a.length;e++)t(e);0===o.length?c=r:(d.push(o),n.push(i))},o=0;o<Math.min(t,c);o++)r(o);return{levels:d,paths:n}}function v(a){if(!a[0][0].data)for(var t=a.length-1;0<=t;t--){a[t].forEach(function(a){var t=a.parent,e=a.name,n=a.data,r=a.children;t&&(t.data||(t.data={}),s(t.data)&&(t.data[e]=!n&&r&&0===r.length?{}:n))})}return Object.assign({},a[0][0].data)}function m(a,t){if(c(0<t,"toStopLevel 必须大于 0"),t>=a.length)return a;for(var e=a.length-1;t-1<=e;e--){a[e].forEach(function(a){var t=a.parent,e=a.name,n=a.data,r=a.children;t&&(t.data||(t.data={}),s(t.data)&&(t.data[e]=!n&&r&&0===r.length?{}:n))})}return a.slice(0,t)}a.NAME_ROOT_LEVEL=l,a.parseLevel=f,a.regenFromLevels=v,a.reduceLevels=m,a.mergeWithLevel=function(a,u,t){c("object"==typeof a,"origin 必须是对象(JSON)格式"),c("object"==typeof u,"target 必须是对象(JSON)格式");var e=f(a,t),n=e.paths,h=e.levels,r=f(u,t).levels,o=Math.min(h.length,r.length);h=m(h,o),r=m(r,o);for(var p=[],i=function(a){var d=a-1;p=[];var c=h[d],f=n[d];r[d].forEach(function(e){var a=e.path,n=e.name,t=e.data,r=a.join("/"),o=f[r];if(n===l)void 0!==t&&(c[0].data=t);else if(o&&o.length)~o.indexOf(n)?void 0!==t?c.some(function(a){return n===a.name&&(a.data=t,!0)}):c.some(function(a,t){return!(n!==a.name||!a.data||s(a.data))&&(e.parent=a.parent,e.children=void 0,e.path.forEach(function(a){e.data=a&&a!==l?e.data[a]:u}),e.data=e.data[e.name],h[d][t]=e,!0)}):(c.some(function(a){return r===a.path.join("/")&&(e.parent=a.parent,a.parent.children=(a.parent.children||[]).concat(e),!0)}),p.push(e));else{var i=h[d-1];e.parent&&i&&i.length&&!~i.indexOf(e.parent)&&i.push(e.parent),p.push(e)}}),h[d]=c.concat(p)},d=o;0<d;d--)i(d);return v(h)},Object.defineProperty(a,"__esModule",{value:!0})});
!function(a,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(a.advanceMerge={})}(this,function(a){"use strict";function c(a,t,e){if(!a)throw new Error("[lib-utils] Invariant failed: "+t+(e?" in '"+e+"'":""))}var l="_ROOT",f="_EMPTY";function s(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function v(a,t){void 0===t&&(t=0);var d=[],n=[],e=[{path:[],parent:null,name:l,data:a}];d.push(e),n.push({});for(var c=1/0,r=function(r){for(var a=d[r],o=[],i={},t=function(a){var e=d[r][a];if(s(e.data)){e.children=[];var t=e.path.concat(e.name),n=Object.keys(e.data);0===n.length&&n.push(f),(i[t.join("/")]=n).forEach(function(a){var t=function(a,t){var e=a===f?f:t.data[a];return{path:t.path.concat(t.name),parent:t,name:a,data:e}}(a,e);e.children.push(t),o.push(t)}),e.data=void 0}},e=0;e<a.length;e++)t(e);0===o.length?c=r:(d.push(o),n.push(i))},o=0;o<Math.min(t,c);o++)r(o);return{levels:d,paths:n}}function m(a){if(!a[0][0].data)for(var t=a.length-1;0<=t;t--){a[t].forEach(function(a){var t=a.parent,e=a.name,n=a.data,r=a.children;t&&(t.data||(t.data={}),e!==f&&s(t.data)&&(t.data[e]=!n&&r&&0===r.length?{}:n))})}return Object.assign({},a[0][0].data)}function g(a,t){if(c(0<t,"toStopLevel 必须大于 0"),t>=a.length)return a;for(var e=a.length-1;t-1<=e;e--){a[e].forEach(function(a){var t=a.parent,e=a.name,n=a.data,r=a.children;t&&(t.data||(t.data={}),s(t.data)&&(t.data[e]=!n&&r&&0===r.length?{}:n))})}return a.slice(0,t)}a.NAME_ROOT_LEVEL=l,a.NAME_EMPTY_OBJECT=f,a.parseLevel=v,a.regenFromLevels=m,a.reduceLevels=g,a.mergeWithLevel=function(a,u,t){c("object"==typeof a,"origin 必须是对象(JSON)格式"),c("object"==typeof u,"target 必须是对象(JSON)格式");var e=v(a,t),n=e.paths,h=e.levels,r=v(u,t).levels,o=Math.min(h.length,r.length);h=g(h,o),r=g(r,o);for(var p=[],i=function(a){var d=a-1;p=[];var c=h[d],f=n[d];r[d].forEach(function(e){var a=e.path,n=e.name,t=e.data,r=a.join("/"),o=f[r];if(n===l)void 0!==t&&(c[0].data=t);else if(o)~o.indexOf(n)?void 0!==t?c.some(function(a){return n===a.name&&(a.data=t,!0)}):c.some(function(a,t){return!(n!==a.name||!a.data||s(a.data))&&(e.parent=a.parent,e.children=void 0,e.path.forEach(function(a){e.data=a&&a!==l?e.data[a]:u}),e.data=e.data[e.name],h[d][t]=e,!0)}):(c.some(function(a){return r===a.path.join("/")&&(e.parent=a.parent,a.parent.children=(a.parent.children||[]).concat(e),!0)}),p.push(e));else{var i=h[d-1];e.parent&&i&&i.length&&!~i.indexOf(e.parent)&&i.push(e.parent),p.push(e)}}),h[d]=c.concat(p)},d=o;0<d;d--)i(d);return m(h)},Object.defineProperty(a,"__esModule",{value:!0})});
{
"name": "advance-json-merge",
"version": "1.0.3",
"version": "1.0.4",
"main": "dist/index.cjs.min.js",

@@ -5,0 +5,0 @@ "module": "dist/index.esm.min.js",

@@ -136,3 +136,6 @@ # advance-json-merge

```
### 使用说明
- 本工具并不会分析数组内部的对象属性,因此如果键值对的值是 **数组**,此时你将数组当成诸如 `int` 等原始值去理解;
## Build & test

@@ -139,0 +142,0 @@