From 8aec3886a773413b877ce45c8128d97afaf53343 Mon Sep 17 00:00:00 2001 From: Dominik Moritz Date: Fri, 3 Mar 2023 11:48:15 -0500 Subject: [PATCH] feat: reuse circular map --- factory/parser.ts | 6 +++++- src/CircularReferenceNodeParser.ts | 7 ++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/factory/parser.ts b/factory/parser.ts index 212820f6f..599b58dd3 100644 --- a/factory/parser.ts +++ b/factory/parser.ts @@ -58,6 +58,7 @@ import { UnknownTypeNodeParser } from "../src/NodeParser/UnknownTypeNodeParser"; import { VoidTypeNodeParser } from "../src/NodeParser/VoidTypeNodeParser"; import { SubNodeParser } from "../src/SubNodeParser"; import { TopRefNodeParser } from "../src/TopRefNodeParser"; +import { BaseType } from "../src/Type/BaseType"; export type ParserAugmentor = (parser: MutableParser) => void; @@ -83,8 +84,11 @@ export function createParser(program: ts.Program, config: Config, augmentor?: Pa return nodeParser; } } + + const circular: Map = new Map(); + function withCircular(nodeParser: SubNodeParser): SubNodeParser { - return new CircularReferenceNodeParser(nodeParser); + return new CircularReferenceNodeParser(nodeParser, circular); } if (augmentor) { diff --git a/src/CircularReferenceNodeParser.ts b/src/CircularReferenceNodeParser.ts index 28c033568..71be4154e 100644 --- a/src/CircularReferenceNodeParser.ts +++ b/src/CircularReferenceNodeParser.ts @@ -6,9 +6,10 @@ import { ReferenceType } from "./Type/ReferenceType"; import { getKey } from "./Utils/nodeKey"; export class CircularReferenceNodeParser implements SubNodeParser { - protected circular: Map = new Map(); - - public constructor(protected childNodeParser: SubNodeParser) {} + public constructor( + protected childNodeParser: SubNodeParser, + protected circular: Map = new Map() + ) {} public supportsNode(node: ts.Node): boolean { return this.childNodeParser.supportsNode(node);