2.1.0 • Published 2 years ago

circular-reference-remover v2.1.0

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

Info

Removes the inner circular references from objects

Installation

npm i circular-reference-remover

Usage

import {remove} from "./circular-remover";

let a:any = {name:'circular a'};
let b:any = {name:'circular b'};
let c:any = {name:'circular c'};
let d:any = {name:'not circular'};

a.a = a;
a.b = b;
a.c = c;
a.d = d;
b.b = b;
b.a = a;
b.c = c;
b.d = d;
c.c = c;
c.a = a;
c.b = b;
c.d = d;


remove(a).then((result:any)=>{
    console.log(
        JSON.stringify(result,null,2)
    );
})

console.log('\n------------------\n');

//WITH setUndefined TRUE
remove(a,{setUndefined:true}).then((result:any)=>{
    console.log(
        JSON.stringify(result,null,2)
    );
})

Result:

{
  "name": "circular a",
  "a": null,
  "b": {
    "name": "circular b",
    "b": null,
    "a": null,
    "c": {
      "name": "circular c",
      "c": null,
      "a": null,
      "b": null,
      "d": {
        "name": "not circular"
      }
    },
    "d": {
      "name": "not circular"
    }
  },
  "c": {
    "name": "circular c",
    "c": null,
    "a": null,
    "b": {
      "name": "circular b",
      "b": null,
      "a": null,
      "c": null,
      "d": {
        "name": "not circular"
      }
    },
    "d": {
      "name": "not circular"
    }
  },
  "d": {
    "name": "not circular"
  }
}

------------------

{
  "name": "circular a",
  "b": {
    "name": "circular b",
    "c": {
      "name": "circular c",
      "d": {
        "name": "not circular"
      }
    },
    "d": {
      "name": "not circular"
    }
  },
  "c": {
    "name": "circular c",
    "b": {
      "name": "circular b",
      "d": {
        "name": "not circular"
      }
    },
    "d": {
      "name": "not circular"
    }
  },
  "d": {
    "name": "not circular"
  }
}

Documentation

  • Function remove(src:any,options?:remover.Options):Promise<any> - Returns a Promise that resolves a copy of the src object with its inner circular references setted to null or undefined. If the src is null or undefined return a Promise with the respective value.

  • Function removeSync(src:any,options?:remover.Options):any - Returns a copy of the src object with its inner circular references setted to null or undefined. If the src is null or undefined return the respective value.

  • RemoverOptions -

    • setUndefined?:boolean - If true set references as undefined instead of null

Contributing

Pull requests are welcome, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

2.1.0

2 years ago

2.0.3

2 years ago

2.0.2

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

1.1.0

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago