Socket
Socket
Sign inDemoInstall

json-dry

Package Overview
Dependencies
0
Maintainers
1
Versions
25
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.7 to 1.0.8

5

CHANGELOG.md

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

## 1.0.8 (2018-11-09)
* Fix reviving nested undried classes
* The `unDry` static method will receive a second argument: false if used for regular unserializing or true/custom_method_name if used for cloning.
## 1.0.7 (2018-07-11)

@@ -2,0 +7,0 @@

74

lib/json-dry.js

@@ -395,3 +395,3 @@ "use strict";

* @since 1.0.0
* @version 1.0.0
* @version 1.0.8
*

@@ -490,3 +490,3 @@ * @param {Object} obj

if (entry.constructor.unDry) {
target[keys[i]] = entry.constructor.unDry(temp);
target[keys[i]] = entry.constructor.unDry(temp, custom_method || true);
} else {

@@ -672,9 +672,10 @@ // If there is no undry function, the clone will be a simple object

* @since 0.1.4
* @version 1.0.4
* @version 1.0.8
*
* @return {Array}
*/
function regenerateArray(root, holder, current, seen, retrieve, undry_paths, old) {
function regenerateArray(root, holder, current, seen, retrieve, undry_paths, old, current_path) {
var length = current.length,
temp,
i;

@@ -685,3 +686,7 @@

if (!seen.get(current[i])) {
current[i] = regenerate(root, current, current[i], seen, retrieve, undry_paths, old);
temp = current_path.slice(0);
temp.push(i);
current[i] = regenerate(root, current, current[i], seen, retrieve, undry_paths, old, temp);
}

@@ -698,9 +703,10 @@ }

* @since 0.1.4
* @version 1.0.4
* @version 1.0.8
*
* @return {Object}
*/
function regenerateObject(root, holder, current, seen, retrieve, undry_paths, old) {
function regenerateObject(root, holder, current, seen, retrieve, undry_paths, old, current_path) {
var key;
var temp,
key;

@@ -711,3 +717,6 @@ for (key in current) {

if (!seen.get(current[key])) {
current[key] = regenerate(root, current, current[key], seen, retrieve, undry_paths, old);
temp = current_path.slice(0);
temp.push(key);
current[key] = regenerate(root, current, current[key], seen, retrieve, undry_paths, old, temp);
}

@@ -725,7 +734,7 @@ }

* @since 0.1.4
* @version 1.0.5
* @version 1.0.8
*
* @return {Mixed}
*/
function regenerate(root, holder, current, seen, retrieve, undry_paths, old) {
function regenerate(root, holder, current, seen, retrieve, undry_paths, old, current_path) {

@@ -739,3 +748,3 @@ var temp;

if (current instanceof Array) {
return regenerateArray(root, holder, current, seen, retrieve, undry_paths, old);
return regenerateArray(root, holder, current, seen, retrieve, undry_paths, old, current_path);
}

@@ -745,3 +754,3 @@

if (current.length) {
if (current.length > -1) {
current = current.toString();

@@ -758,3 +767,3 @@

undry_paths.extra_pass.push([holder, temp]);
undry_paths.extra_pass.push([holder, temp, current_path]);

@@ -783,3 +792,3 @@ return temp;

// (We have to create a new instance, because it's already been "seen")
temp = retrieve[current] = regenerate(root, holder, new String(temp), seen, retrieve, undry_paths, old);
temp = retrieve[current] = regenerate(root, holder, new String(temp), seen, retrieve, undry_paths, old, current_path);
}

@@ -793,3 +802,3 @@

return regenerateObject(root, holder, current, seen, retrieve, undry_paths, old);
return regenerateObject(root, holder, current, seen, retrieve, undry_paths, old, current_path);
}

@@ -806,3 +815,3 @@

* @since 0.1.4
* @version 1.0.0
* @version 1.0.8
*

@@ -822,2 +831,7 @@ * @param {Object} current The object to look in

// Keys [''] always means the root
if (length == 1 && keys[0] === '') {
return current;
}
for (i = 0; i < length; i++) {

@@ -1072,6 +1086,6 @@ key = keys[i];

// Regenerate this replacement wrapper first
regenerate(result, null, entry, seen, retrieve, undry_paths, old);
regenerate(result, null, entry, seen, retrieve, undry_paths, old, path_array.slice(0));
if (entry.unDryConstructor) {
entry.undried = entry.unDryConstructor.unDry(entry.value);
entry.undried = entry.unDryConstructor.unDry(entry.value, false);
} else if (entry.unDryFunction) {

@@ -1096,2 +1110,3 @@ entry.undried = entry.unDryFunction(entry, null, entry.value);

temp = entry[1];
path = entry[2];

@@ -1104,6 +1119,25 @@ for (key in holder) {

}
path.pop();
// Annoying workaround for some circular references
if (path.length && path[path.length - 1] == 'value') {
path.pop();
}
if (path.length) {
// Get the other holder
holder = retrieveFromPath(result, path);
for (key in holder) {
if (holder[key] == temp) {
holder[key] = temp.undried;
break;
}
}
}
}
// Only now we can resolve paths
result = regenerate(result, result, result, seen, retrieve, undry_paths, old);
result = regenerate(result, result, result, seen, retrieve, undry_paths, old, []);

@@ -1110,0 +1144,0 @@ if (result.undried != null && result.dry) {

{
"name": "json-dry",
"description": "Don't repeat yourself, JSON: Add support for (circular) references, class instances, ...",
"version": "1.0.7",
"version": "1.0.8",
"author": "Jelle De Loecker <jelle@develry.be>",

@@ -6,0 +6,0 @@ "keywords": [

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc