Socket
Socket
Sign inDemoInstall

espurify

Package Overview
Dependencies
Maintainers
1
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

espurify - npm Package Compare versions

Comparing version 2.0.0 to 2.0.1

8

CHANGELOG.md

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

### [2.0.1](https://github.com/estools/espurify/releases/tag/v2.0.1) (2019-02-15)
#### Bug Fixes
* [Fix cloning when the same object instance is referenced from multiple nodes (and introduce structural cloning)](https://github.com/estools/espurify/pull/13) by [@papandreou](https://github.com/papandreou)
## [2.0.0](https://github.com/estools/espurify/releases/tag/v2.0.0) (2018-11-23)

@@ -2,0 +10,0 @@

2

index.js

@@ -6,3 +6,3 @@ /**

*
* Copyright (c) 2014-2018 Takuto Wada
* Copyright (c) 2014-2019 Takuto Wada
* Licensed under the MIT license.

@@ -9,0 +9,0 @@ * https://github.com/estools/espurify/blob/master/MIT-LICENSE.txt

@@ -11,16 +11,19 @@ 'use strict';

function cloneNodeOrObject (obj, seen) {
function cloneNodeOrObject (clone, obj, seen) {
var props = obj.type ? whitelist[obj.type] : null;
if (props) {
return cloneNode(obj, props, seen);
return cloneNode(clone, obj, props, seen);
} else {
return cloneObject(obj, seen);
return cloneObject(clone, obj, seen);
}
}
function cloneArray (ary, seen) {
function cloneArray (clone, ary, seen) {
var i = ary.length;
var clone = [];
while (i--) {
clone[i] = cloneOf(ary[i], seen);
if (seen.has(ary[i])) {
clone[i] = seen.get(ary[i]);
} else {
clone[i] = cloneOf(ary[i], seen);
}
}

@@ -30,9 +33,12 @@ return clone;

function cloneNode (node, props, seen) {
function cloneNode (clone, node, props, seen) {
var i, len, key;
var clone = {};
for (i = 0, len = props.length; i < len; i += 1) {
key = props[i];
if (node.hasOwnProperty(key)) {
clone[key] = cloneOf(node[key], seen);
if (seen.has(node[key])) {
clone[key] = seen.get(node[key]);
} else {
clone[key] = cloneOf(node[key], seen);
}
}

@@ -43,6 +49,5 @@ }

function cloneObject (obj, seen) {
function cloneObject (clone, obj, seen) {
var props = Object.keys(obj);
var i, len, key, value;
var clone = {};
for (i = 0, len = props.length; i < len; i += 1) {

@@ -52,5 +57,6 @@ key = props[i];

if (seen.has(value)) {
continue;
clone[key] = seen.get(value);
} else {
clone[key] = cloneOf(value, seen);
}
clone[key] = cloneOf(value, seen);
}

@@ -62,9 +68,12 @@ return clone;

if (typeof val === 'object' && val !== null) {
seen.set(val, true);
if (val instanceof RegExp) {
return new RegExp(val);
} else if (Array.isArray(val)) {
return cloneArray(val, seen);
var clone = [];
seen.set(val, clone);
return cloneArray(clone, val, seen);
} else {
return cloneNodeOrObject(val, seen);
var clone = {};
seen.set(val, clone);
return cloneNodeOrObject(clone, val, seen);
}

@@ -78,4 +87,5 @@ } else {

var seen = new Map();
seen.set(obj, true);
return cloneNodeOrObject(obj, seen);
var clone = {};
seen.set(obj, clone);
return cloneNodeOrObject(clone, obj, seen);
}

@@ -82,0 +92,0 @@

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

Copyright (c) 2014-2018 Takuto Wada, https://github.com/estools/espurify
Copyright (c) 2014-2019 Takuto Wada, https://github.com/estools/espurify

@@ -3,0 +3,0 @@ Permission is hereby granted, free of charge, to any person obtaining

{
"name": "espurify",
"description": "Clone new AST without extra properties",
"version": "2.0.0",
"version": "2.0.1",
"author": {

@@ -15,2 +15,6 @@ "name": "Takuto Wada",

"url": "https://github.com/goto-bus-stop"
},
{
"name": "Andreas Lind",
"url": "https://github.com/papandreou"
}

@@ -17,0 +21,0 @@ ],

@@ -21,5 +21,12 @@ espurify

`espurify` supports [ES5](https://github.com/estree/estree/blob/master/es5.md), [ES2015](https://github.com/estree/estree/blob/master/es2015.md), and [ES2017](https://github.com/estree/estree/blob/master/es2017.md) properties.
#### Supported ECMAScript versions
- [ES5](https://github.com/estree/estree/blob/master/es5.md)
- [ES2015](https://github.com/estree/estree/blob/master/es2015.md)
- [ES2016](https://github.com/estree/estree/blob/master/es2016.md)
- [ES2017](https://github.com/estree/estree/blob/master/es2017.md)
- [ES2018](https://github.com/estree/estree/blob/master/es2018.md)
- [ES2019](https://github.com/estree/estree/blob/master/es2019.md)
### var customizedCloneFunctionWithWhiteList = espurify.cloneWithWhitelist(whiteList)

@@ -244,2 +251,3 @@

* [Renée Kooi](https://github.com/goto-bus-stop)
* [Andreas Lind](https://github.com/papandreou)

@@ -246,0 +254,0 @@

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc