@@ -22,11 +22,23 @@ import OpenApi3_1DereferenceVisitor from './visitor';
22
22
const visitAsync = visit [ Symbol . for ( 'nodejs.util.promisify.custom' ) ] ;
23
23
24
24
// eslint-disable-next-line @typescript-eslint/naming-convention
25
- const OpenApi3_1SwaggerClientDereferenceStrategy : stampit . Stamp < IDereferenceStrategy > = stampit (
26
- DereferenceStrategy ,
27
- {
28
- init ( ) {
29
- this . name = 'openapi-3-1' ;
25
+ interface IOpenApi3_1SwaggerClientDereferenceStrategy extends IDereferenceStrategy {
26
+ useCircularStructures : boolean ;
27
+ }
28
+
29
+ // eslint-disable-next-line @typescript-eslint/naming-convention
30
+ const OpenApi3_1SwaggerClientDereferenceStrategy : stampit . Stamp < IOpenApi3_1SwaggerClientDereferenceStrategy > =
31
+ stampit ( DereferenceStrategy , {
32
+ props : {
33
+ useCircularStructures : true ,
34
+ } ,
35
+ init (
36
+ this : IOpenApi3_1SwaggerClientDereferenceStrategy ,
37
+ { useCircularStructures = this . useCircularStructures } = { } ,
38
+ ) {
39
+ // @ts -ignore
40
+ this . name = 'openapi-3-1-swagger-client' ;
41
+ this . useCircularStructures = useCircularStructures ;
30
42
} ,
31
43
methods : {
32
44
canDereference ( file : IFile ) : boolean {
@@ -52,14 +64,19 @@ const OpenApi3_1SwaggerClientDereferenceStrategy: stampit.Stamp<IDereferenceStra
52
64
reference = refSet . find ( propEq ( 'uri' , file . uri ) ) ;
53
65
}
54
66
55
- const visitor = OpenApi3_1DereferenceVisitor ( { reference, namespace, options } ) ;
67
+ const visitor = OpenApi3_1DereferenceVisitor ( {
68
+ reference,
69
+ namespace,
70
+ options,
71
+ useCircularStructures : this . useCircularStructures ,
72
+ } ) ;
56
73
const dereferencedElement = await visitAsync ( refSet . rootRef . value , visitor , {
57
74
keyMap,
58
75
nodeTypeGetter : getNodeType ,
59
76
} ) ;
60
77
61
78
/**
62
- * Release all memory if this refSet was not provided as an configuration option.
79
+ * Release all memory if this refSet was not provided as a configuration option.
63
80
* If provided as configuration option, then provider is responsible for cleanup.
64
81
*/
65
82
if ( options . dereference . refSet === null ) {
@@ -69,7 +86,6 @@ const OpenApi3_1SwaggerClientDereferenceStrategy: stampit.Stamp<IDereferenceStra
69
86
return dereferencedElement ;
70
87
} ,
71
88
} ,
72
- } ,
73
- ) ;
89
+ } ) ;
74
90
75
91
export default OpenApi3_1SwaggerClientDereferenceStrategy ;
0 commit comments