Skip to content

tsxper/cyclic-object

Repository files navigation

@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().