1.0.0 • Published 1 year ago
@tsxper/cyclic-object v1.0.0
@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().
1.0.0
1 year ago