This package has been deprecated

Author message:

No longer maintained. Moved to https://npm.im/@reallyland/node_mod.

deep.clone
TypeScript icon, indicating that this package has built-in type declarations

2.1.2 • Public • Published

deep.clone

Simple and fast deep cloning


Follow me

Version Node version MIT License

Downloads Total downloads Packagephobia Bundlephobia

CircleCI Dependency Status codecov Coverage Status

codebeat badge Codacy Badge Code of Conduct

A simple NPM package to do simple and fast deep cloning with JSON.parse + JSON.stringify.

Table of contents

Pre-requisite

Install

# Install via NPM 
$ npm install --save deep.clone

Usage

TypeScript or ES Modules

/** Import project dependencies */
import deepClone from 'deep.clone';
 
/** Setting up */
const simpleObject = {
  a: {
    b: { c: [1, 2,3] },
    e: [ { f: null } ],
  },
  d: 'deep',
};
const complexObject = {
  a: () => {},
  b: /test/gi,
  c: [1, 2],
  d: new Date(),
  e: { f: 111 },
};
 
(async () => {
  const clonedSimpleObject = await deepClone(simpleObject);
  const clonedComplexObject = await deepClone(compleObject, {
    absolute: true,
  });
})();

Node.js

/** Import project dependencies */
const { deepClone } = require('deep.clone');
 
/** Setting up */
const simpleObject = {
  a: {
    b: { c: [1, 2,3] },
    e: [ { f: null } ],
  },
  d: 'deep',
};
const complexObject = {
  a: () => {},
  b: /test/gi,
  c: [1, 2],
  d: new Date(),
  e: { f: 111 },
};
 
(async () => {
  const clonedSimpleObject = await deepClone(simpleObject);
  const clonedComplexObject = await deepClone(compleObject, {
    absolute: true,
  });
})();

Browser

ES Modules

<script type="module">
  import { deepClone } from 'https://unpkg.com/deep.clone@latest/dist/deep.clone.js';
 
  deepClone({ ... }) /** Object truncated for brevity */
    .then(console.log);
    .then(console.error);
</script> 

IIFE

<script src="https://unpkg.com/deep.clone@latest/dist/deep.clone.iife.js"></script>
<script>
  const { deepClone } = window.DeepClone;
 
  deepClone({ ... }) /** Object truncated for brevity */
    .then(console.log);
    .then(console.error);
</script> 

deno

👉 Check out the deno module at deno_mod/deep_clone.

API Reference

deepClone<T>(target[, options])

  • target <T> Target to be cloned.
  • options <?Object> Optionally set absolute: true for deep cloning complex objects that are not possible with JSON.parse + JSON.stringify.
    • absolute <boolean> If true, deep clone complex objects.
  • returns: <Promise<T>> Promise which resolves with the deeply cloned target.

This method deeply clones a given target with JSON.parse + JSON.stringify asynchronously by default. Set absolute: true for deep cloning complex objects that contain Date, RegExp, Function, etc.

deepCloneSync(target[, options])

This methods works the same as deepClone(target[, options]) except that this is the synchronous version.

License

MIT License © Rong Sen Ng

Package Sidebar

Install

npm i deep.clone

Weekly Downloads

5,769

Version

2.1.2

License

MIT

Unpacked Size

478 kB

Total Files

13

Last publish

Collaborators

  • igarashimiyabi
  • motss