@tsxper/cyclic-object
v1.0.0
Published
Convert cyclic object to JSON with replacement
Downloads
30
Maintainers
Readme
@tsxper/cyclic-object
Check if given object has cyclic refs to a given depth. Replace circular references and convert cyclic objects to JSON.
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().