@speclynx/apidom-overlay 4.7.0 → 4.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/apidom-overlay.browser.js +167 -37
- package/dist/apidom-overlay.browser.min.js +1 -1
- package/package.json +8 -8
|
@@ -91289,12 +91289,16 @@ class Arazzo1DereferenceStrategy extends _DereferenceStrategy_mjs__WEBPACK_IMPOR
|
|
|
91289
91289
|
reference = mutableRefSet.find(ref => ref.uri === file.uri);
|
|
91290
91290
|
refSet = mutableRefSet;
|
|
91291
91291
|
}
|
|
91292
|
+
const shouldDetectCircular = ['error', 'replace'].includes(options.dereference.circular);
|
|
91292
91293
|
const visitor = new _visitor_mjs__WEBPACK_IMPORTED_MODULE_9__["default"]({
|
|
91293
91294
|
reference,
|
|
91294
91295
|
options
|
|
91295
91296
|
});
|
|
91296
91297
|
const dereferencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_3__.traverseAsync)(refSet.rootRef.value, visitor, {
|
|
91297
|
-
mutable: true
|
|
91298
|
+
mutable: true,
|
|
91299
|
+
...(shouldDetectCircular && {
|
|
91300
|
+
skipVisited: true
|
|
91301
|
+
})
|
|
91298
91302
|
});
|
|
91299
91303
|
|
|
91300
91304
|
/**
|
|
@@ -91718,6 +91722,7 @@ class Arazzo1DereferenceVisitor {
|
|
|
91718
91722
|
indirections;
|
|
91719
91723
|
reference;
|
|
91720
91724
|
options;
|
|
91725
|
+
visited;
|
|
91721
91726
|
|
|
91722
91727
|
/**
|
|
91723
91728
|
* Tracks element ancestors across dive-deep traversal boundaries.
|
|
@@ -91729,12 +91734,14 @@ class Arazzo1DereferenceVisitor {
|
|
|
91729
91734
|
reference,
|
|
91730
91735
|
options,
|
|
91731
91736
|
indirections = [],
|
|
91732
|
-
ancestors = new _util_mjs__WEBPACK_IMPORTED_MODULE_26__.AncestorLineage()
|
|
91737
|
+
ancestors = new _util_mjs__WEBPACK_IMPORTED_MODULE_26__.AncestorLineage(),
|
|
91738
|
+
visited = new WeakSet()
|
|
91733
91739
|
}) {
|
|
91734
91740
|
this.indirections = indirections;
|
|
91735
91741
|
this.reference = reference;
|
|
91736
91742
|
this.options = options;
|
|
91737
91743
|
this.ancestors = new _util_mjs__WEBPACK_IMPORTED_MODULE_26__.AncestorLineage(...ancestors);
|
|
91744
|
+
this.visited = visited;
|
|
91738
91745
|
}
|
|
91739
91746
|
toAncestorLineage(path) {
|
|
91740
91747
|
const ancestorNodes = path.getAncestorNodes();
|
|
@@ -91948,6 +91955,7 @@ class Arazzo1DereferenceVisitor {
|
|
|
91948
91955
|
* Transclude referencing element with merged referenced element.
|
|
91949
91956
|
*/
|
|
91950
91957
|
path.replaceWith(mergedElement);
|
|
91958
|
+
path.skip();
|
|
91951
91959
|
}
|
|
91952
91960
|
async JSONSchemaElement(path) {
|
|
91953
91961
|
const referencingElement = path.node;
|
|
@@ -92108,6 +92116,7 @@ class Arazzo1DereferenceVisitor {
|
|
|
92108
92116
|
const replacer = this.options.dereference.strategyOpts['arazzo-1']?.circularReplacer ?? this.options.dereference.circularReplacer;
|
|
92109
92117
|
const replacement = replacer(refElement);
|
|
92110
92118
|
path.replaceWith(replacement);
|
|
92119
|
+
path.skip();
|
|
92111
92120
|
return;
|
|
92112
92121
|
}
|
|
92113
92122
|
}
|
|
@@ -92123,17 +92132,23 @@ class Arazzo1DereferenceVisitor {
|
|
|
92123
92132
|
*/
|
|
92124
92133
|
const isNonEntryDocument = _util_url_mjs__WEBPACK_IMPORTED_MODULE_22__.stripHash(reference.refSet.rootRef.uri) !== reference.uri;
|
|
92125
92134
|
const shouldDetectCircular = ['error', 'replace'].includes(this.options.dereference.circular);
|
|
92126
|
-
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_arazzo_1__WEBPACK_IMPORTED_MODULE_11__.isJSONSchemaElement)(referencedElement) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(referencedElement.$ref) || shouldDetectCircular) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
92135
|
+
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_arazzo_1__WEBPACK_IMPORTED_MODULE_11__.isJSONSchemaElement)(referencedElement) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(referencedElement.$ref) || shouldDetectCircular && !this.visited.has(referencedElement)) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
92136
|
+
if (shouldDetectCircular) {
|
|
92137
|
+
this.visited.add(referencedElement);
|
|
92138
|
+
}
|
|
92139
|
+
|
|
92127
92140
|
// append referencing reference to ancestors lineage
|
|
92128
92141
|
directAncestors.add(referencingElement);
|
|
92129
92142
|
const visitor = new Arazzo1DereferenceVisitor({
|
|
92130
92143
|
reference,
|
|
92131
92144
|
indirections: [...this.indirections],
|
|
92132
92145
|
options: this.options,
|
|
92146
|
+
visited: this.visited,
|
|
92133
92147
|
ancestors: ancestorsLineage
|
|
92134
92148
|
});
|
|
92135
92149
|
referencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_8__.traverseAsync)(referencedElement, visitor, {
|
|
92136
|
-
mutable: true
|
|
92150
|
+
mutable: true,
|
|
92151
|
+
skipVisited: true
|
|
92137
92152
|
});
|
|
92138
92153
|
|
|
92139
92154
|
// remove referencing reference from ancestors lineage
|
|
@@ -92151,6 +92166,7 @@ class Arazzo1DereferenceVisitor {
|
|
|
92151
92166
|
booleanJsonSchemaElement.meta.set('ref-origin', reference.uri);
|
|
92152
92167
|
booleanJsonSchemaElement.meta.set('ref-type', referencingElement.element);
|
|
92153
92168
|
path.replaceWith(booleanJsonSchemaElement);
|
|
92169
|
+
path.skip();
|
|
92154
92170
|
return;
|
|
92155
92171
|
}
|
|
92156
92172
|
|
|
@@ -92264,12 +92280,16 @@ class AsyncAPI2DereferenceStrategy extends _DereferenceStrategy_mjs__WEBPACK_IMP
|
|
|
92264
92280
|
reference = mutableRefSet.find(ref => ref.uri === file.uri);
|
|
92265
92281
|
refSet = mutableRefSet;
|
|
92266
92282
|
}
|
|
92283
|
+
const shouldDetectCircular = ['error', 'replace'].includes(options.dereference.circular);
|
|
92267
92284
|
const visitor = new _visitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]({
|
|
92268
92285
|
reference,
|
|
92269
92286
|
options
|
|
92270
92287
|
});
|
|
92271
92288
|
const dereferencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_1__.traverseAsync)(refSet.rootRef.value, visitor, {
|
|
92272
|
-
mutable: true
|
|
92289
|
+
mutable: true,
|
|
92290
|
+
...(shouldDetectCircular && {
|
|
92291
|
+
skipVisited: true
|
|
92292
|
+
})
|
|
92273
92293
|
});
|
|
92274
92294
|
|
|
92275
92295
|
/**
|
|
@@ -92352,6 +92372,7 @@ class AsyncAPI2DereferenceVisitor {
|
|
|
92352
92372
|
reference;
|
|
92353
92373
|
options;
|
|
92354
92374
|
refractCache;
|
|
92375
|
+
visited;
|
|
92355
92376
|
|
|
92356
92377
|
/**
|
|
92357
92378
|
* Tracks element ancestors across dive-deep traversal boundaries.
|
|
@@ -92364,13 +92385,15 @@ class AsyncAPI2DereferenceVisitor {
|
|
|
92364
92385
|
options,
|
|
92365
92386
|
indirections = [],
|
|
92366
92387
|
ancestors = new _util_mjs__WEBPACK_IMPORTED_MODULE_17__.AncestorLineage(),
|
|
92367
|
-
refractCache = new WeakMap()
|
|
92388
|
+
refractCache = new WeakMap(),
|
|
92389
|
+
visited = new WeakSet()
|
|
92368
92390
|
}) {
|
|
92369
92391
|
this.indirections = indirections;
|
|
92370
92392
|
this.reference = reference;
|
|
92371
92393
|
this.options = options;
|
|
92372
92394
|
this.ancestors = new _util_mjs__WEBPACK_IMPORTED_MODULE_17__.AncestorLineage(...ancestors);
|
|
92373
92395
|
this.refractCache = refractCache;
|
|
92396
|
+
this.visited = visited;
|
|
92374
92397
|
}
|
|
92375
92398
|
toAncestorLineage(path) {
|
|
92376
92399
|
const ancestorNodes = path.getAncestorNodes();
|
|
@@ -92603,6 +92626,7 @@ class AsyncAPI2DereferenceVisitor {
|
|
|
92603
92626
|
const replacer = this.options.dereference.strategyOpts['asyncapi-2']?.circularReplacer ?? this.options.dereference.circularReplacer;
|
|
92604
92627
|
const replacement = replacer(refElement);
|
|
92605
92628
|
path.replaceWith(replacement);
|
|
92629
|
+
path.skip();
|
|
92606
92630
|
return;
|
|
92607
92631
|
}
|
|
92608
92632
|
}
|
|
@@ -92618,7 +92642,11 @@ class AsyncAPI2DereferenceVisitor {
|
|
|
92618
92642
|
*/
|
|
92619
92643
|
const isNonEntryDocument = _util_url_mjs__WEBPACK_IMPORTED_MODULE_18__.stripHash(reference.refSet.rootRef.uri) !== reference.uri;
|
|
92620
92644
|
const shouldDetectCircular = ['error', 'replace'].includes(this.options.dereference.circular);
|
|
92621
|
-
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_asyncapi_2__WEBPACK_IMPORTED_MODULE_10__.isReferenceElement)(referencedElement) || shouldDetectCircular) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
92645
|
+
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_asyncapi_2__WEBPACK_IMPORTED_MODULE_10__.isReferenceElement)(referencedElement) || shouldDetectCircular && !this.visited.has(referencedElement)) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
92646
|
+
if (shouldDetectCircular) {
|
|
92647
|
+
this.visited.add(referencedElement);
|
|
92648
|
+
}
|
|
92649
|
+
|
|
92622
92650
|
// append referencing reference to ancestors lineage
|
|
92623
92651
|
directAncestors.add(referencingElement);
|
|
92624
92652
|
const visitor = new AsyncAPI2DereferenceVisitor({
|
|
@@ -92626,10 +92654,12 @@ class AsyncAPI2DereferenceVisitor {
|
|
|
92626
92654
|
indirections: [...this.indirections],
|
|
92627
92655
|
options: this.options,
|
|
92628
92656
|
refractCache: this.refractCache,
|
|
92657
|
+
visited: this.visited,
|
|
92629
92658
|
ancestors: ancestorsLineage
|
|
92630
92659
|
});
|
|
92631
92660
|
referencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_7__.traverseAsync)(referencedElement, visitor, {
|
|
92632
|
-
mutable: true
|
|
92661
|
+
mutable: true,
|
|
92662
|
+
skipVisited: true
|
|
92633
92663
|
});
|
|
92634
92664
|
|
|
92635
92665
|
// remove referencing reference from ancestors lineage
|
|
@@ -92647,6 +92677,7 @@ class AsyncAPI2DereferenceVisitor {
|
|
|
92647
92677
|
booleanJsonSchemaElement.meta.set('ref-origin', reference.uri);
|
|
92648
92678
|
booleanJsonSchemaElement.meta.set('ref-type', referencingElement.element);
|
|
92649
92679
|
path.replaceWith(booleanJsonSchemaElement);
|
|
92680
|
+
path.skip();
|
|
92650
92681
|
return;
|
|
92651
92682
|
}
|
|
92652
92683
|
|
|
@@ -92666,6 +92697,7 @@ class AsyncAPI2DereferenceVisitor {
|
|
|
92666
92697
|
* Transclude referencing element with merged referenced element.
|
|
92667
92698
|
*/
|
|
92668
92699
|
path.replaceWith(mergedElement);
|
|
92700
|
+
path.skip();
|
|
92669
92701
|
} catch (error) {
|
|
92670
92702
|
const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_4__["default"])(referencingElement.$ref);
|
|
92671
92703
|
this.handleError(`Error while dereferencing Reference Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, referencingElement, '$ref', $ref, path);
|
|
@@ -92768,7 +92800,11 @@ class AsyncAPI2DereferenceVisitor {
|
|
|
92768
92800
|
*/
|
|
92769
92801
|
const isNonEntryDocument = _util_url_mjs__WEBPACK_IMPORTED_MODULE_18__.stripHash(reference.refSet.rootRef.uri) !== reference.uri;
|
|
92770
92802
|
const shouldDetectCircular = ['error', 'replace'].includes(this.options.dereference.circular);
|
|
92771
|
-
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_asyncapi_2__WEBPACK_IMPORTED_MODULE_10__.isChannelItemElement)(referencedElement) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(referencedElement.$ref) || shouldDetectCircular) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
92803
|
+
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_asyncapi_2__WEBPACK_IMPORTED_MODULE_10__.isChannelItemElement)(referencedElement) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(referencedElement.$ref) || shouldDetectCircular && !this.visited.has(referencedElement)) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
92804
|
+
if (shouldDetectCircular) {
|
|
92805
|
+
this.visited.add(referencedElement);
|
|
92806
|
+
}
|
|
92807
|
+
|
|
92772
92808
|
// append referencing reference to ancestors lineage
|
|
92773
92809
|
directAncestors.add(referencingElement);
|
|
92774
92810
|
const visitor = new AsyncAPI2DereferenceVisitor({
|
|
@@ -92776,10 +92812,12 @@ class AsyncAPI2DereferenceVisitor {
|
|
|
92776
92812
|
indirections: [...this.indirections],
|
|
92777
92813
|
options: this.options,
|
|
92778
92814
|
refractCache: this.refractCache,
|
|
92815
|
+
visited: this.visited,
|
|
92779
92816
|
ancestors: ancestorsLineage
|
|
92780
92817
|
});
|
|
92781
92818
|
referencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_7__.traverseAsync)(referencedElement, visitor, {
|
|
92782
|
-
mutable: true
|
|
92819
|
+
mutable: true,
|
|
92820
|
+
skipVisited: true
|
|
92783
92821
|
});
|
|
92784
92822
|
|
|
92785
92823
|
// remove referencing reference from ancestors lineage
|
|
@@ -92898,12 +92936,16 @@ class OpenAPI2DereferenceStrategy extends _DereferenceStrategy_mjs__WEBPACK_IMPO
|
|
|
92898
92936
|
reference = mutableRefSet.find(ref => ref.uri === file.uri);
|
|
92899
92937
|
refSet = mutableRefSet;
|
|
92900
92938
|
}
|
|
92939
|
+
const shouldDetectCircular = ['error', 'replace'].includes(options.dereference.circular);
|
|
92901
92940
|
const visitor = new _visitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]({
|
|
92902
92941
|
reference: reference,
|
|
92903
92942
|
options
|
|
92904
92943
|
});
|
|
92905
92944
|
const dereferencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_3__.traverseAsync)(refSet.rootRef.value, visitor, {
|
|
92906
|
-
mutable: true
|
|
92945
|
+
mutable: true,
|
|
92946
|
+
...(shouldDetectCircular && {
|
|
92947
|
+
skipVisited: true
|
|
92948
|
+
})
|
|
92907
92949
|
});
|
|
92908
92950
|
|
|
92909
92951
|
/**
|
|
@@ -92990,6 +93032,7 @@ class OpenAPI2DereferenceVisitor {
|
|
|
92990
93032
|
reference;
|
|
92991
93033
|
options;
|
|
92992
93034
|
refractCache;
|
|
93035
|
+
visited;
|
|
92993
93036
|
|
|
92994
93037
|
/**
|
|
92995
93038
|
* Tracks element ancestors across dive-deep traversal boundaries.
|
|
@@ -93002,13 +93045,15 @@ class OpenAPI2DereferenceVisitor {
|
|
|
93002
93045
|
options,
|
|
93003
93046
|
indirections = [],
|
|
93004
93047
|
ancestors = new _util_mjs__WEBPACK_IMPORTED_MODULE_19__.AncestorLineage(),
|
|
93005
|
-
refractCache = new WeakMap()
|
|
93048
|
+
refractCache = new WeakMap(),
|
|
93049
|
+
visited = new WeakSet()
|
|
93006
93050
|
}) {
|
|
93007
93051
|
this.indirections = indirections;
|
|
93008
93052
|
this.reference = reference;
|
|
93009
93053
|
this.options = options;
|
|
93010
93054
|
this.refractCache = refractCache;
|
|
93011
93055
|
this.ancestors = new _util_mjs__WEBPACK_IMPORTED_MODULE_19__.AncestorLineage(...ancestors);
|
|
93056
|
+
this.visited = visited;
|
|
93012
93057
|
}
|
|
93013
93058
|
toAncestorLineage(path) {
|
|
93014
93059
|
const ancestorNodes = path.getAncestorNodes();
|
|
@@ -93241,6 +93286,7 @@ class OpenAPI2DereferenceVisitor {
|
|
|
93241
93286
|
const replacer = this.options.dereference.strategyOpts['openapi-2']?.circularReplacer ?? this.options.dereference.circularReplacer;
|
|
93242
93287
|
const replacement = replacer(refElement);
|
|
93243
93288
|
path.replaceWith(replacement);
|
|
93289
|
+
path.skip();
|
|
93244
93290
|
return;
|
|
93245
93291
|
}
|
|
93246
93292
|
}
|
|
@@ -93256,7 +93302,11 @@ class OpenAPI2DereferenceVisitor {
|
|
|
93256
93302
|
*/
|
|
93257
93303
|
const isNonEntryDocument = _util_url_mjs__WEBPACK_IMPORTED_MODULE_20__.stripHash(reference.refSet.rootRef.uri) !== reference.uri;
|
|
93258
93304
|
const shouldDetectCircular = ['error', 'replace'].includes(this.options.dereference.circular);
|
|
93259
|
-
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_14__.isReferenceElement)(referencedElement) || shouldDetectCircular) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
93305
|
+
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_14__.isReferenceElement)(referencedElement) || shouldDetectCircular && !this.visited.has(referencedElement)) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
93306
|
+
if (shouldDetectCircular) {
|
|
93307
|
+
this.visited.add(referencedElement);
|
|
93308
|
+
}
|
|
93309
|
+
|
|
93260
93310
|
// append referencing reference to ancestors lineage
|
|
93261
93311
|
directAncestors.add(referencingElement);
|
|
93262
93312
|
const visitor = new OpenAPI2DereferenceVisitor({
|
|
@@ -93264,10 +93314,12 @@ class OpenAPI2DereferenceVisitor {
|
|
|
93264
93314
|
indirections: [...this.indirections],
|
|
93265
93315
|
options: this.options,
|
|
93266
93316
|
refractCache: this.refractCache,
|
|
93317
|
+
visited: this.visited,
|
|
93267
93318
|
ancestors: ancestorsLineage
|
|
93268
93319
|
});
|
|
93269
93320
|
referencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_7__.traverseAsync)(referencedElement, visitor, {
|
|
93270
|
-
mutable: true
|
|
93321
|
+
mutable: true,
|
|
93322
|
+
skipVisited: true
|
|
93271
93323
|
});
|
|
93272
93324
|
directAncestors.delete(referencingElement);
|
|
93273
93325
|
}
|
|
@@ -93288,6 +93340,7 @@ class OpenAPI2DereferenceVisitor {
|
|
|
93288
93340
|
* Transclude referencing element with merged referenced element.
|
|
93289
93341
|
*/
|
|
93290
93342
|
path.replaceWith(mergedElement);
|
|
93343
|
+
path.skip();
|
|
93291
93344
|
} catch (error) {
|
|
93292
93345
|
const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_4__["default"])(referencingElement.$ref);
|
|
93293
93346
|
this.handleError(`Error while dereferencing Reference Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, referencingElement, '$ref', $ref, path);
|
|
@@ -93375,6 +93428,7 @@ class OpenAPI2DereferenceVisitor {
|
|
|
93375
93428
|
const replacer = this.options.dereference.strategyOpts['openapi-2']?.circularReplacer ?? this.options.dereference.circularReplacer;
|
|
93376
93429
|
const replacement = replacer(refElement);
|
|
93377
93430
|
path.replaceWith(replacement);
|
|
93431
|
+
path.skip();
|
|
93378
93432
|
return;
|
|
93379
93433
|
}
|
|
93380
93434
|
}
|
|
@@ -93390,7 +93444,11 @@ class OpenAPI2DereferenceVisitor {
|
|
|
93390
93444
|
*/
|
|
93391
93445
|
const isNonEntryDocument = _util_url_mjs__WEBPACK_IMPORTED_MODULE_20__.stripHash(reference.refSet.rootRef.uri) !== reference.uri;
|
|
93392
93446
|
const shouldDetectCircular = ['error', 'replace'].includes(this.options.dereference.circular);
|
|
93393
|
-
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_14__.isPathItemElement)(referencedElement) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(referencedElement.$ref) || shouldDetectCircular) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
93447
|
+
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_14__.isPathItemElement)(referencedElement) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(referencedElement.$ref) || shouldDetectCircular && !this.visited.has(referencedElement)) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
93448
|
+
if (shouldDetectCircular) {
|
|
93449
|
+
this.visited.add(referencedElement);
|
|
93450
|
+
}
|
|
93451
|
+
|
|
93394
93452
|
// append referencing reference to ancestors lineage
|
|
93395
93453
|
directAncestors.add(referencingElement);
|
|
93396
93454
|
const visitor = new OpenAPI2DereferenceVisitor({
|
|
@@ -93398,10 +93456,12 @@ class OpenAPI2DereferenceVisitor {
|
|
|
93398
93456
|
indirections: [...this.indirections],
|
|
93399
93457
|
options: this.options,
|
|
93400
93458
|
refractCache: this.refractCache,
|
|
93459
|
+
visited: this.visited,
|
|
93401
93460
|
ancestors: ancestorsLineage
|
|
93402
93461
|
});
|
|
93403
93462
|
referencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_7__.traverseAsync)(referencedElement, visitor, {
|
|
93404
|
-
mutable: true
|
|
93463
|
+
mutable: true,
|
|
93464
|
+
skipVisited: true
|
|
93405
93465
|
});
|
|
93406
93466
|
|
|
93407
93467
|
// remove referencing reference from ancestors lineage
|
|
@@ -93529,6 +93589,7 @@ class OpenAPI2DereferenceVisitor {
|
|
|
93529
93589
|
const replacer = this.options.dereference.strategyOpts['openapi-2']?.circularReplacer ?? this.options.dereference.circularReplacer;
|
|
93530
93590
|
const replacement = replacer(refElement);
|
|
93531
93591
|
path.replaceWith(replacement);
|
|
93592
|
+
path.skip();
|
|
93532
93593
|
return;
|
|
93533
93594
|
}
|
|
93534
93595
|
}
|
|
@@ -93544,7 +93605,11 @@ class OpenAPI2DereferenceVisitor {
|
|
|
93544
93605
|
*/
|
|
93545
93606
|
const isNonEntryDocument = _util_url_mjs__WEBPACK_IMPORTED_MODULE_20__.stripHash(reference.refSet.rootRef.uri) !== reference.uri;
|
|
93546
93607
|
const shouldDetectCircular = ['error', 'replace'].includes(this.options.dereference.circular);
|
|
93547
|
-
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_11__.isJSONReferenceElement)(referencedElement) || shouldDetectCircular) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
93608
|
+
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_11__.isJSONReferenceElement)(referencedElement) || shouldDetectCircular && !this.visited.has(referencedElement)) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
93609
|
+
if (shouldDetectCircular) {
|
|
93610
|
+
this.visited.add(referencedElement);
|
|
93611
|
+
}
|
|
93612
|
+
|
|
93548
93613
|
// append referencing reference to ancestors lineage
|
|
93549
93614
|
directAncestors.add(referencingElement);
|
|
93550
93615
|
const visitor = new OpenAPI2DereferenceVisitor({
|
|
@@ -93552,10 +93617,12 @@ class OpenAPI2DereferenceVisitor {
|
|
|
93552
93617
|
indirections: [...this.indirections],
|
|
93553
93618
|
options: this.options,
|
|
93554
93619
|
refractCache: this.refractCache,
|
|
93620
|
+
visited: this.visited,
|
|
93555
93621
|
ancestors: ancestorsLineage
|
|
93556
93622
|
});
|
|
93557
93623
|
referencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_7__.traverseAsync)(referencedElement, visitor, {
|
|
93558
|
-
mutable: true
|
|
93624
|
+
mutable: true,
|
|
93625
|
+
skipVisited: true
|
|
93559
93626
|
});
|
|
93560
93627
|
|
|
93561
93628
|
// remove referencing reference from ancestors lineage
|
|
@@ -93578,6 +93645,7 @@ class OpenAPI2DereferenceVisitor {
|
|
|
93578
93645
|
* Transclude referencing element with merged referenced element.
|
|
93579
93646
|
*/
|
|
93580
93647
|
path.replaceWith(mergedElement);
|
|
93648
|
+
path.skip();
|
|
93581
93649
|
} catch (error) {
|
|
93582
93650
|
const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_4__["default"])(referencingElement.$ref);
|
|
93583
93651
|
this.handleError(`Error while dereferencing JSON Reference Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, referencingElement, '$ref', $ref, path);
|
|
@@ -93666,12 +93734,16 @@ class OpenAPI3_0DereferenceStrategy extends _DereferenceStrategy_mjs__WEBPACK_IM
|
|
|
93666
93734
|
reference = mutableRefSet.find(ref => ref.uri === file.uri);
|
|
93667
93735
|
refSet = mutableRefSet;
|
|
93668
93736
|
}
|
|
93737
|
+
const shouldDetectCircular = ['error', 'replace'].includes(options.dereference.circular);
|
|
93669
93738
|
const visitor = new _visitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]({
|
|
93670
93739
|
reference: reference,
|
|
93671
93740
|
options
|
|
93672
93741
|
});
|
|
93673
93742
|
const dereferencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_1__.traverseAsync)(refSet.rootRef.value, visitor, {
|
|
93674
|
-
mutable: true
|
|
93743
|
+
mutable: true,
|
|
93744
|
+
...(shouldDetectCircular && {
|
|
93745
|
+
skipVisited: true
|
|
93746
|
+
})
|
|
93675
93747
|
});
|
|
93676
93748
|
|
|
93677
93749
|
/**
|
|
@@ -93755,6 +93827,7 @@ class OpenAPI3_0DereferenceVisitor {
|
|
|
93755
93827
|
reference;
|
|
93756
93828
|
options;
|
|
93757
93829
|
refractCache;
|
|
93830
|
+
visited;
|
|
93758
93831
|
|
|
93759
93832
|
/**
|
|
93760
93833
|
* Tracks element ancestors across dive-deep traversal boundaries.
|
|
@@ -93767,13 +93840,15 @@ class OpenAPI3_0DereferenceVisitor {
|
|
|
93767
93840
|
options,
|
|
93768
93841
|
indirections = [],
|
|
93769
93842
|
ancestors = new _util_mjs__WEBPACK_IMPORTED_MODULE_20__.AncestorLineage(),
|
|
93770
|
-
refractCache = new WeakMap()
|
|
93843
|
+
refractCache = new WeakMap(),
|
|
93844
|
+
visited = new WeakSet()
|
|
93771
93845
|
}) {
|
|
93772
93846
|
this.indirections = indirections;
|
|
93773
93847
|
this.reference = reference;
|
|
93774
93848
|
this.options = options;
|
|
93775
93849
|
this.ancestors = new _util_mjs__WEBPACK_IMPORTED_MODULE_20__.AncestorLineage(...ancestors);
|
|
93776
93850
|
this.refractCache = refractCache;
|
|
93851
|
+
this.visited = visited;
|
|
93777
93852
|
}
|
|
93778
93853
|
toAncestorLineage(path) {
|
|
93779
93854
|
const ancestorNodes = path.getAncestorNodes();
|
|
@@ -94006,6 +94081,7 @@ class OpenAPI3_0DereferenceVisitor {
|
|
|
94006
94081
|
const replacer = this.options.dereference.strategyOpts['openapi-3-0']?.circularReplacer ?? this.options.dereference.circularReplacer;
|
|
94007
94082
|
const replacement = replacer(refElement);
|
|
94008
94083
|
path.replaceWith(replacement);
|
|
94084
|
+
path.skip();
|
|
94009
94085
|
return;
|
|
94010
94086
|
}
|
|
94011
94087
|
}
|
|
@@ -94021,7 +94097,11 @@ class OpenAPI3_0DereferenceVisitor {
|
|
|
94021
94097
|
*/
|
|
94022
94098
|
const isNonEntryDocument = _util_url_mjs__WEBPACK_IMPORTED_MODULE_17__.stripHash(reference.refSet.rootRef.uri) !== reference.uri;
|
|
94023
94099
|
const shouldDetectCircular = ['error', 'replace'].includes(this.options.dereference.circular);
|
|
94024
|
-
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_12__.isReferenceElement)(referencedElement) || shouldDetectCircular) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
94100
|
+
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_12__.isReferenceElement)(referencedElement) || shouldDetectCircular && !this.visited.has(referencedElement)) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
94101
|
+
if (shouldDetectCircular) {
|
|
94102
|
+
this.visited.add(referencedElement);
|
|
94103
|
+
}
|
|
94104
|
+
|
|
94025
94105
|
// append referencing reference to ancestors lineage
|
|
94026
94106
|
directAncestors.add(referencingElement);
|
|
94027
94107
|
const visitor = new OpenAPI3_0DereferenceVisitor({
|
|
@@ -94029,10 +94109,12 @@ class OpenAPI3_0DereferenceVisitor {
|
|
|
94029
94109
|
indirections: [...this.indirections],
|
|
94030
94110
|
options: this.options,
|
|
94031
94111
|
refractCache: this.refractCache,
|
|
94112
|
+
visited: this.visited,
|
|
94032
94113
|
ancestors: ancestorsLineage
|
|
94033
94114
|
});
|
|
94034
94115
|
referencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_8__.traverseAsync)(referencedElement, visitor, {
|
|
94035
|
-
mutable: true
|
|
94116
|
+
mutable: true,
|
|
94117
|
+
skipVisited: true
|
|
94036
94118
|
});
|
|
94037
94119
|
|
|
94038
94120
|
// remove referencing reference from ancestors lineage
|
|
@@ -94055,6 +94137,7 @@ class OpenAPI3_0DereferenceVisitor {
|
|
|
94055
94137
|
* Transclude referencing element with merged referenced element.
|
|
94056
94138
|
*/
|
|
94057
94139
|
path.replaceWith(mergedElement);
|
|
94140
|
+
path.skip();
|
|
94058
94141
|
} catch (error) {
|
|
94059
94142
|
const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(referencingElement.$ref);
|
|
94060
94143
|
this.handleError(`Error while dereferencing Reference Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, referencingElement, '$ref', $ref, path);
|
|
@@ -94142,6 +94225,7 @@ class OpenAPI3_0DereferenceVisitor {
|
|
|
94142
94225
|
const replacer = this.options.dereference.strategyOpts['openapi-3-0']?.circularReplacer ?? this.options.dereference.circularReplacer;
|
|
94143
94226
|
const replacement = replacer(refElement);
|
|
94144
94227
|
path.replaceWith(replacement);
|
|
94228
|
+
path.skip();
|
|
94145
94229
|
return;
|
|
94146
94230
|
}
|
|
94147
94231
|
}
|
|
@@ -94157,7 +94241,11 @@ class OpenAPI3_0DereferenceVisitor {
|
|
|
94157
94241
|
*/
|
|
94158
94242
|
const isNonEntryDocument = _util_url_mjs__WEBPACK_IMPORTED_MODULE_17__.stripHash(reference.refSet.rootRef.uri) !== reference.uri;
|
|
94159
94243
|
const shouldDetectCircular = ['error', 'replace'].includes(this.options.dereference.circular);
|
|
94160
|
-
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_12__.isPathItemElement)(referencedElement) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(referencedElement.$ref) || shouldDetectCircular) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
94244
|
+
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_12__.isPathItemElement)(referencedElement) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(referencedElement.$ref) || shouldDetectCircular && !this.visited.has(referencedElement)) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
94245
|
+
if (shouldDetectCircular) {
|
|
94246
|
+
this.visited.add(referencedElement);
|
|
94247
|
+
}
|
|
94248
|
+
|
|
94161
94249
|
// append referencing reference to ancestors lineage
|
|
94162
94250
|
directAncestors.add(referencingElement);
|
|
94163
94251
|
const visitor = new OpenAPI3_0DereferenceVisitor({
|
|
@@ -94165,10 +94253,12 @@ class OpenAPI3_0DereferenceVisitor {
|
|
|
94165
94253
|
indirections: [...this.indirections],
|
|
94166
94254
|
options: this.options,
|
|
94167
94255
|
refractCache: this.refractCache,
|
|
94256
|
+
visited: this.visited,
|
|
94168
94257
|
ancestors: ancestorsLineage
|
|
94169
94258
|
});
|
|
94170
94259
|
referencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_8__.traverseAsync)(referencedElement, visitor, {
|
|
94171
|
-
mutable: true
|
|
94260
|
+
mutable: true,
|
|
94261
|
+
skipVisited: true
|
|
94172
94262
|
});
|
|
94173
94263
|
|
|
94174
94264
|
// remove referencing reference from ancestors lineage
|
|
@@ -94427,12 +94517,16 @@ class OpenAPI3_1DereferenceStrategy extends _DereferenceStrategy_mjs__WEBPACK_IM
|
|
|
94427
94517
|
reference = mutableRefSet.find(ref => ref.uri === file.uri);
|
|
94428
94518
|
refSet = mutableRefSet;
|
|
94429
94519
|
}
|
|
94520
|
+
const shouldDetectCircular = ['error', 'replace'].includes(options.dereference.circular);
|
|
94430
94521
|
const visitor = new _visitor_mjs__WEBPACK_IMPORTED_MODULE_8__["default"]({
|
|
94431
94522
|
reference: reference,
|
|
94432
94523
|
options
|
|
94433
94524
|
});
|
|
94434
94525
|
const dereferencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_2__.traverseAsync)(refSet.rootRef.value, visitor, {
|
|
94435
|
-
mutable: true
|
|
94526
|
+
mutable: true,
|
|
94527
|
+
...(shouldDetectCircular && {
|
|
94528
|
+
skipVisited: true
|
|
94529
|
+
})
|
|
94436
94530
|
});
|
|
94437
94531
|
|
|
94438
94532
|
/**
|
|
@@ -94753,6 +94847,7 @@ class OpenAPI3_1DereferenceVisitor {
|
|
|
94753
94847
|
reference;
|
|
94754
94848
|
options;
|
|
94755
94849
|
refractCache;
|
|
94850
|
+
visited;
|
|
94756
94851
|
|
|
94757
94852
|
/**
|
|
94758
94853
|
* Tracks element ancestors across dive-deep traversal boundaries.
|
|
@@ -94765,13 +94860,15 @@ class OpenAPI3_1DereferenceVisitor {
|
|
|
94765
94860
|
options,
|
|
94766
94861
|
indirections = [],
|
|
94767
94862
|
refractCache = new WeakMap(),
|
|
94768
|
-
ancestors = new _util_mjs__WEBPACK_IMPORTED_MODULE_28__.AncestorLineage()
|
|
94863
|
+
ancestors = new _util_mjs__WEBPACK_IMPORTED_MODULE_28__.AncestorLineage(),
|
|
94864
|
+
visited = new WeakSet()
|
|
94769
94865
|
}) {
|
|
94770
94866
|
this.indirections = indirections;
|
|
94771
94867
|
this.reference = reference;
|
|
94772
94868
|
this.options = options;
|
|
94773
94869
|
this.refractCache = refractCache;
|
|
94774
94870
|
this.ancestors = new _util_mjs__WEBPACK_IMPORTED_MODULE_28__.AncestorLineage(...ancestors);
|
|
94871
|
+
this.visited = visited;
|
|
94775
94872
|
}
|
|
94776
94873
|
toAncestorLineage(path) {
|
|
94777
94874
|
const ancestorNodes = path.getAncestorNodes();
|
|
@@ -95004,6 +95101,7 @@ class OpenAPI3_1DereferenceVisitor {
|
|
|
95004
95101
|
const replacer = this.options.dereference.strategyOpts['openapi-3-1']?.circularReplacer ?? this.options.dereference.circularReplacer;
|
|
95005
95102
|
const replacement = replacer(refElement);
|
|
95006
95103
|
path.replaceWith(replacement);
|
|
95104
|
+
path.skip();
|
|
95007
95105
|
return;
|
|
95008
95106
|
}
|
|
95009
95107
|
}
|
|
@@ -95019,17 +95117,22 @@ class OpenAPI3_1DereferenceVisitor {
|
|
|
95019
95117
|
*/
|
|
95020
95118
|
const isNonEntryDocument = _util_url_mjs__WEBPACK_IMPORTED_MODULE_23__.stripHash(reference.refSet.rootRef.uri) !== reference.uri;
|
|
95021
95119
|
const shouldDetectCircular = ['error', 'replace'].includes(this.options.dereference.circular);
|
|
95022
|
-
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_16__.isReferenceElement)(referencedElement) || shouldDetectCircular) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
95120
|
+
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_16__.isReferenceElement)(referencedElement) || shouldDetectCircular && !this.visited.has(referencedElement)) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
95121
|
+
if (shouldDetectCircular) {
|
|
95122
|
+
this.visited.add(referencedElement);
|
|
95123
|
+
}
|
|
95023
95124
|
directAncestors.add(referencingElement);
|
|
95024
95125
|
const visitor = new OpenAPI3_1DereferenceVisitor({
|
|
95025
95126
|
reference,
|
|
95026
95127
|
indirections: [...this.indirections],
|
|
95027
95128
|
options: this.options,
|
|
95028
95129
|
refractCache: this.refractCache,
|
|
95130
|
+
visited: this.visited,
|
|
95029
95131
|
ancestors: ancestorsLineage
|
|
95030
95132
|
});
|
|
95031
95133
|
referencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_10__.traverseAsync)(referencedElement, visitor, {
|
|
95032
|
-
mutable: true
|
|
95134
|
+
mutable: true,
|
|
95135
|
+
skipVisited: true
|
|
95033
95136
|
});
|
|
95034
95137
|
directAncestors.delete(referencingElement);
|
|
95035
95138
|
}
|
|
@@ -95156,6 +95259,7 @@ class OpenAPI3_1DereferenceVisitor {
|
|
|
95156
95259
|
const replacer = this.options.dereference.strategyOpts['openapi-3-1']?.circularReplacer ?? this.options.dereference.circularReplacer;
|
|
95157
95260
|
const replacement = replacer(refElement);
|
|
95158
95261
|
path.replaceWith(replacement);
|
|
95262
|
+
path.skip();
|
|
95159
95263
|
return;
|
|
95160
95264
|
}
|
|
95161
95265
|
}
|
|
@@ -95171,17 +95275,22 @@ class OpenAPI3_1DereferenceVisitor {
|
|
|
95171
95275
|
*/
|
|
95172
95276
|
const isNonEntryDocument = _util_url_mjs__WEBPACK_IMPORTED_MODULE_23__.stripHash(reference.refSet.rootRef.uri) !== reference.uri;
|
|
95173
95277
|
const shouldDetectCircular = ['error', 'replace'].includes(this.options.dereference.circular);
|
|
95174
|
-
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_16__.isPathItemElement)(referencedElement) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.isStringElement)(referencedElement.$ref) || shouldDetectCircular) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
95278
|
+
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_16__.isPathItemElement)(referencedElement) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.isStringElement)(referencedElement.$ref) || shouldDetectCircular && !this.visited.has(referencedElement)) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
95279
|
+
if (shouldDetectCircular) {
|
|
95280
|
+
this.visited.add(referencedElement);
|
|
95281
|
+
}
|
|
95175
95282
|
directAncestors.add(referencingElement);
|
|
95176
95283
|
const visitor = new OpenAPI3_1DereferenceVisitor({
|
|
95177
95284
|
reference,
|
|
95178
95285
|
indirections: [...this.indirections],
|
|
95179
95286
|
options: this.options,
|
|
95180
95287
|
refractCache: this.refractCache,
|
|
95288
|
+
visited: this.visited,
|
|
95181
95289
|
ancestors: ancestorsLineage
|
|
95182
95290
|
});
|
|
95183
95291
|
referencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_10__.traverseAsync)(referencedElement, visitor, {
|
|
95184
|
-
mutable: true
|
|
95292
|
+
mutable: true,
|
|
95293
|
+
skipVisited: true
|
|
95185
95294
|
});
|
|
95186
95295
|
directAncestors.delete(referencingElement);
|
|
95187
95296
|
}
|
|
@@ -95512,6 +95621,7 @@ class OpenAPI3_1DereferenceVisitor {
|
|
|
95512
95621
|
const replacer = this.options.dereference.strategyOpts['openapi-3-1']?.circularReplacer ?? this.options.dereference.circularReplacer;
|
|
95513
95622
|
const replacement = replacer(refElement);
|
|
95514
95623
|
path.replaceWith(replacement);
|
|
95624
|
+
path.skip();
|
|
95515
95625
|
return;
|
|
95516
95626
|
}
|
|
95517
95627
|
}
|
|
@@ -95527,17 +95637,22 @@ class OpenAPI3_1DereferenceVisitor {
|
|
|
95527
95637
|
*/
|
|
95528
95638
|
const isNonEntryDocument = _util_url_mjs__WEBPACK_IMPORTED_MODULE_23__.stripHash(reference.refSet.rootRef.uri) !== reference.uri;
|
|
95529
95639
|
const shouldDetectCircular = ['error', 'replace'].includes(this.options.dereference.circular);
|
|
95530
|
-
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_16__.isSchemaElement)(referencedElement) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.isStringElement)(referencedElement.$ref) || shouldDetectCircular) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
95640
|
+
if ((isExternalReference || isNonEntryDocument || (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_16__.isSchemaElement)(referencedElement) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.isStringElement)(referencedElement.$ref) || shouldDetectCircular && !this.visited.has(referencedElement)) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
95641
|
+
if (shouldDetectCircular) {
|
|
95642
|
+
this.visited.add(referencedElement);
|
|
95643
|
+
}
|
|
95531
95644
|
directAncestors.add(referencingElement);
|
|
95532
95645
|
const visitor = new OpenAPI3_1DereferenceVisitor({
|
|
95533
95646
|
reference,
|
|
95534
95647
|
indirections: [...this.indirections],
|
|
95535
95648
|
options: this.options,
|
|
95536
95649
|
refractCache: this.refractCache,
|
|
95650
|
+
visited: this.visited,
|
|
95537
95651
|
ancestors: ancestorsLineage
|
|
95538
95652
|
});
|
|
95539
95653
|
referencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_10__.traverseAsync)(referencedElement, visitor, {
|
|
95540
|
-
mutable: true
|
|
95654
|
+
mutable: true,
|
|
95655
|
+
skipVisited: true
|
|
95541
95656
|
});
|
|
95542
95657
|
directAncestors.delete(referencingElement);
|
|
95543
95658
|
}
|
|
@@ -95553,6 +95668,7 @@ class OpenAPI3_1DereferenceVisitor {
|
|
|
95553
95668
|
booleanJsonSchemaElement.meta.set('ref-origin', reference.uri);
|
|
95554
95669
|
booleanJsonSchemaElement.meta.set('ref-type', referencingElement.element);
|
|
95555
95670
|
path.replaceWith(booleanJsonSchemaElement);
|
|
95671
|
+
path.skip();
|
|
95556
95672
|
return;
|
|
95557
95673
|
}
|
|
95558
95674
|
|
|
@@ -100152,10 +100268,12 @@ function* traverseGenerator(root, visitor, options) {
|
|
|
100152
100268
|
nodePredicate,
|
|
100153
100269
|
nodeCloneFn,
|
|
100154
100270
|
detectCycles,
|
|
100271
|
+
skipVisited,
|
|
100155
100272
|
mutable,
|
|
100156
100273
|
mutationFn
|
|
100157
100274
|
} = options;
|
|
100158
100275
|
const keyMapIsFunction = typeof keyMap === 'function';
|
|
100276
|
+
const visitedNodes = skipVisited ? new WeakSet() : null;
|
|
100159
100277
|
let stack;
|
|
100160
100278
|
let inArray = Array.isArray(root);
|
|
100161
100279
|
let keys = [root];
|
|
@@ -100241,6 +100359,14 @@ function* traverseGenerator(root, visitor, options) {
|
|
|
100241
100359
|
continue;
|
|
100242
100360
|
}
|
|
100243
100361
|
|
|
100362
|
+
// Skip already-visited nodes (handles DAG structures from cloneShallow)
|
|
100363
|
+
if (skipVisited && !isLeaving) {
|
|
100364
|
+
if (visitedNodes.has(node)) {
|
|
100365
|
+
continue;
|
|
100366
|
+
}
|
|
100367
|
+
visitedNodes.add(node);
|
|
100368
|
+
}
|
|
100369
|
+
|
|
100244
100370
|
// Always create Path for the current node (needed for parentPath chain)
|
|
100245
100371
|
currentPath = new _Path_mjs__WEBPACK_IMPORTED_MODULE_2__.Path(node, parent, parentPath, key, inArray);
|
|
100246
100372
|
const visitFn = (0,_visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.getVisitFn)(visitor, nodeTypeGetter(node), isLeaving);
|
|
@@ -100261,11 +100387,6 @@ function* traverseGenerator(root, visitor, options) {
|
|
|
100261
100387
|
if (currentPath.shouldStop) {
|
|
100262
100388
|
break;
|
|
100263
100389
|
}
|
|
100264
|
-
if (currentPath.shouldSkip) {
|
|
100265
|
-
if (!isLeaving) {
|
|
100266
|
-
continue;
|
|
100267
|
-
}
|
|
100268
|
-
}
|
|
100269
100390
|
if (currentPath.removed) {
|
|
100270
100391
|
edits.push([key, null]);
|
|
100271
100392
|
if (!isLeaving) {
|
|
@@ -100275,12 +100396,19 @@ function* traverseGenerator(root, visitor, options) {
|
|
|
100275
100396
|
const replacement = currentPath._getReplacementNode();
|
|
100276
100397
|
edits.push([key, replacement]);
|
|
100277
100398
|
if (!isLeaving) {
|
|
100399
|
+
if (currentPath.shouldSkip) {
|
|
100400
|
+
continue;
|
|
100401
|
+
}
|
|
100278
100402
|
if (nodePredicate(replacement)) {
|
|
100279
100403
|
node = replacement;
|
|
100280
100404
|
} else {
|
|
100281
100405
|
continue;
|
|
100282
100406
|
}
|
|
100283
100407
|
}
|
|
100408
|
+
} else if (currentPath.shouldSkip) {
|
|
100409
|
+
if (!isLeaving) {
|
|
100410
|
+
continue;
|
|
100411
|
+
}
|
|
100284
100412
|
} else if (result !== undefined) {
|
|
100285
100413
|
// Support return value replacement for backwards compatibility
|
|
100286
100414
|
edits.push([key, result]);
|
|
@@ -100382,6 +100510,7 @@ const traverse = (root, visitor, options = {}) => {
|
|
|
100382
100510
|
nodePredicate: options.nodePredicate ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.isNode,
|
|
100383
100511
|
nodeCloneFn: options.nodeCloneFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.cloneNode,
|
|
100384
100512
|
detectCycles: options.detectCycles ?? true,
|
|
100513
|
+
skipVisited: options.skipVisited ?? false,
|
|
100385
100514
|
mutable: options.mutable ?? false,
|
|
100386
100515
|
mutationFn: options.mutationFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.mutateNode
|
|
100387
100516
|
};
|
|
@@ -100413,6 +100542,7 @@ const traverseAsync = async (root, visitor, options = {}) => {
|
|
|
100413
100542
|
nodePredicate: options.nodePredicate ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.isNode,
|
|
100414
100543
|
nodeCloneFn: options.nodeCloneFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.cloneNode,
|
|
100415
100544
|
detectCycles: options.detectCycles ?? true,
|
|
100545
|
+
skipVisited: options.skipVisited ?? false,
|
|
100416
100546
|
mutable: options.mutable ?? false,
|
|
100417
100547
|
mutationFn: options.mutationFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.mutateNode
|
|
100418
100548
|
};
|