@tsxper/cyclic-object
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

@tsxper/cyclic-object

Check if given object has cyclic refs to a given depth. Replace circular references and convert cyclic objects to JSON.

NPM Version License: MIT npm type definitions NPM Downloads

Usage

npm i @tsxper/cyclic-object

Configure object with cyclic ref.

class A {
  constructor(public a: A[]) { }
}
const a: A[] = [];
const obj = new A(a);
a.push(obj);

Convert to JSON.

import { toJSON } from '@tsxper/cyclic-object';
const jsonStr = toJSON(a); // '[{"a":"[Circular]"}]'

Replace cyclic

import { replaceCyclicRefs } from '@tsxper/cyclic-object';
const newObj = replaceCyclicRefs(a); // [{"a":"[Circular]"}]

Detect cyclic

import { hasCyclicRefs } from '@tsxper/cyclic-object';
const isCyclic = hasCyclicRefs(a); // true

Interfaces

hasCyclicRefs: (obj: unknown, maxDepth?: number) => boolean;

replaceCyclicRefs: (obj: unknown, maxDepth?: number, repl?: Partial<Replacements>) => unknown;

toJSON: (obj: unknown, maxDepth?: number, cyclicMarkers?: string[], replacements?: Partial<Replacements>) => string;

Where:

  • obj [required]: input.
  • maxDepth [optional]: starting from 0, -1 is disabled (default).
  • cyclicMarkers [optional]: list of strings that detects JSON.stringify TypeError is related to cyclic refs. By default calling toJSON() will try to convert input to json string. In case there is an error related to cyclic references than object will be normalized through calling replaceCyclicRefs().
  • replacements [optional]: object, set custom replacements for 'array', 'object' and 'circular' when calling replaceCyclicRefs().

/@tsxper/cyclic-object/

    Package Sidebar

    Install

    npm i @tsxper/cyclic-object

    Weekly Downloads

    15

    Version

    1.0.0

    License

    MIT

    Unpacked Size

    11.8 kB

    Total Files

    16

    Last publish

    Collaborators

    • vbabak