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

1.0.8 • Public • Published

Deeply-Clone

GitHub package.json version npm bundle size GitHub Workflow Status Testspace pass ratio Coverage Status GitHub license

Deep fast clone JavaScript objects with circular references handling and TypeScript support

Installation

# Install with npm
npm install deeply-clone
# Install with yarn
yarn add deeply-clone

Usage

Once the package is installed, you can import the library using import or require approach:

import { deeplyClone } from "deeply-clone";

or

const deeplyClone = require("deeply-clone");

Features

  • Clones deeply objects
  • Supports Object, Array, Map or Set cloning
  • Objects can have any circular references
  • Fast algorithm with caching
  • Strongly typed merged result with TypeScript
  • No dependencies
  • Small size
  • Works in browser and Node.js

Examples

Objects

const book = {
    title: "Harry Potter",
    price: {
        value: 69,
        currency: "USD"
    }
};

const bookCopy = deeplyClone(book);
console.log(bookCopy === book); // false

//  const bookCopy = {
//    title: "Harry Potter",
//    price: {
//      value: 69,
//      currency: "USD"
//    }
//  };

Circular references

const book = {
    title: "Harry Potter",
    price: 49,
    author: {
        name: "Joanne Rowling",
        books: [] // → [book]
    }
};
book.author.books.push(book); // add circular reference

const bookCopy = deeplyClone(book);
console.log(bookCopy === book); // false
console.log(bookCopy.author.books[0] === bookCopy); // true

//  const bookCopy = {
//    title: "Harry Potter",
//    price: 49,
//    author: {
//      name: "Joanne Rowling",
//      books: [bookCopy] // circular reference → [bookCopy]
//    }
//  };

Package Sidebar

Install

npm i deeply-clone

Weekly Downloads

9

Version

1.0.8

License

MIT

Unpacked Size

14.2 kB

Total Files

12

Last publish

Collaborators

  • ichernetskii