fast-clone

Extremely fast deep cloning function

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
fast-clone
22171.5.135 years ago8 years agoMinified + gzip package size for fast-clone in KB

Readme

<img src="https://raw.githubusercontent.com/codeandcats/fast-clone/master/logo.png" />

npm version Build Status Coverage Status Greenkeeper badge
The fastest deep cloning function on NPM that supports the following types:
  • Objects (POJOs, null, undefined)
  • Arrays
  • Dates
  • Regular Expressions
  • Strings
  • Numbers (NaN, Positive Infinity, Negative Infinity)
  • Booleans

Speed Comparison

Average runtime of various NPM clone libraries on a large complex object loaded from json files of varying sizes ranging from 3.5 MB to 15 MB.
Library | 7.15 MB | -------------------|------------| ✔ fast-clone | 120 ms | ✘ deepClone | 138 ms | ✘ lodash.cloneDeep | 155 ms | ✘ snapshot | 1,127 ms | ✘ angular.copy | 1,942 ms | ✘ clone | 2,085 ms |

Installation

NPM

npm install fast-clone --save

Yarn

yarn add fast-clone

Usage

Fast-clone is a UMD module so you can use it in Node.js, or in Browser either using Browserfy/Webpack, or by using the global clone function if not using a module loader.

TypeScript

import clone = require('fast-clone');

JavaScript

const clone = require('fast-clone');

const a = {
	name: 'Natasha Rominov',
	age: 30,
	skills: [
		'Pistols',
		'Espionage'
	],
	dateOfBirth: new Date('1986-05-21T00:00:00.000Z')
};

const b = clone(a);

b.skills.push('That grabby thing she does with her legs');

console.log(a.skills)
console.log(b.skills);

Output will be:
['Pistols', 'Espionage']
['Pistols', 'Espionage', 'That grabby thing she does with her legs']

Contributing

Got an issue or a feature request? Log it
.
Pull-requests are also welcome. 😸