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

Package Sidebar

Install

npm i @tsxper/cyclic-object

Weekly Downloads

6

Version

1.0.0

License

MIT

Unpacked Size

11.8 kB

Total Files

16

Last publish

Collaborators

  • vbabak