1.0.0 • Published 1 year ago

@tsxper/cyclic-object v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

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