decycle
    Preparing search index...

    decycle

    decycle

    NPM

    NPM version build codecov

    JSON decycle replaces circular references with {"$ref": PATH}, where PATH is the JSONPath of the first occurrence.

    Inspired by cycle.js.

    import { decycle } from 'decycle';

    const obj = { a: 1 };
    obj.self = obj;

    JSON.stringify(decycle(obj));
    // '{"a":1,"self":{"$ref":"$"}}'

    NPM:

    npm install decycle
    

    Yarn:

    yarn add decycle
    

    CDN:

    <script src="https://unpkg.com/decycle@latest/dist/index.umd.js"></script>
    

    ES Modules:

    import { decycle } from 'decycle';
    

    CommonJS:

    const { decycle } = require('decycle');
    

    UMD:

    <script src="https://unpkg.com/decycle@latest/dist/index.umd.js"></script>
    <script>
    const { decycle } = window.decycle;
    </script>

    Returns a deep copy of object or array with circular references replaced by {"$ref": PATH}.

    Type: unknown

    The object or array to decycle.

    Type: (value: unknown) => unknown

    Optional replacer function called for each value. It receives a value and returns a replacement value.

    Circular array:

    const array = [];
    array[0] = array;
    JSON.stringify(decycle(array)); // '[{"$ref":"$"}]'

    With replacer:

    const obj = { date: new Date('2026-02-07') };
    const result = decycle(obj, (value) =>
    value instanceof Date ? value.toISOString() : value,
    );
    // { date: '2026-02-07T00:00:00.000Z' }

    Release is automated with Release Please.

    MIT