@speclynx/apidom-parser-adapter-openapi-json-2 4.7.1 → 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 CHANGED
@@ -3,6 +3,10 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [4.8.0](https://github.com/speclynx/apidom/compare/v4.7.1...v4.8.0) (2026-04-17)
7
+
8
+ **Note:** Version bump only for package @speclynx/apidom-parser-adapter-openapi-json-2
9
+
6
10
  ## [4.7.1](https://github.com/speclynx/apidom/compare/v4.7.0...v4.7.1) (2026-04-16)
7
11
 
8
12
  **Note:** Version bump only for package @speclynx/apidom-parser-adapter-openapi-json-2
@@ -32577,10 +32577,12 @@ function* traverseGenerator(root, visitor, options) {
32577
32577
  nodePredicate,
32578
32578
  nodeCloneFn,
32579
32579
  detectCycles,
32580
+ skipVisited,
32580
32581
  mutable,
32581
32582
  mutationFn
32582
32583
  } = options;
32583
32584
  const keyMapIsFunction = typeof keyMap === 'function';
32585
+ const visitedNodes = skipVisited ? new WeakSet() : null;
32584
32586
  let stack;
32585
32587
  let inArray = Array.isArray(root);
32586
32588
  let keys = [root];
@@ -32666,6 +32668,14 @@ function* traverseGenerator(root, visitor, options) {
32666
32668
  continue;
32667
32669
  }
32668
32670
 
32671
+ // Skip already-visited nodes (handles DAG structures from cloneShallow)
32672
+ if (skipVisited && !isLeaving) {
32673
+ if (visitedNodes.has(node)) {
32674
+ continue;
32675
+ }
32676
+ visitedNodes.add(node);
32677
+ }
32678
+
32669
32679
  // Always create Path for the current node (needed for parentPath chain)
32670
32680
  currentPath = new _Path_mjs__WEBPACK_IMPORTED_MODULE_2__.Path(node, parent, parentPath, key, inArray);
32671
32681
  const visitFn = (0,_visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.getVisitFn)(visitor, nodeTypeGetter(node), isLeaving);
@@ -32809,6 +32819,7 @@ const traverse = (root, visitor, options = {}) => {
32809
32819
  nodePredicate: options.nodePredicate ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.isNode,
32810
32820
  nodeCloneFn: options.nodeCloneFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.cloneNode,
32811
32821
  detectCycles: options.detectCycles ?? true,
32822
+ skipVisited: options.skipVisited ?? false,
32812
32823
  mutable: options.mutable ?? false,
32813
32824
  mutationFn: options.mutationFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.mutateNode
32814
32825
  };
@@ -32840,6 +32851,7 @@ const traverseAsync = async (root, visitor, options = {}) => {
32840
32851
  nodePredicate: options.nodePredicate ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.isNode,
32841
32852
  nodeCloneFn: options.nodeCloneFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.cloneNode,
32842
32853
  detectCycles: options.detectCycles ?? true,
32854
+ skipVisited: options.skipVisited ?? false,
32843
32855
  mutable: options.mutable ?? false,
32844
32856
  mutationFn: options.mutationFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.mutateNode
32845
32857
  };