@speclynx/apidom-ns-openapi-3-0 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-ns-openapi-3-0
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-ns-openapi-3-0
@@ -31023,10 +31023,12 @@ function* traverseGenerator(root, visitor, options) {
31023
31023
  nodePredicate,
31024
31024
  nodeCloneFn,
31025
31025
  detectCycles,
31026
+ skipVisited,
31026
31027
  mutable,
31027
31028
  mutationFn
31028
31029
  } = options;
31029
31030
  const keyMapIsFunction = typeof keyMap === 'function';
31031
+ const visitedNodes = skipVisited ? new WeakSet() : null;
31030
31032
  let stack;
31031
31033
  let inArray = Array.isArray(root);
31032
31034
  let keys = [root];
@@ -31112,6 +31114,14 @@ function* traverseGenerator(root, visitor, options) {
31112
31114
  continue;
31113
31115
  }
31114
31116
 
31117
+ // Skip already-visited nodes (handles DAG structures from cloneShallow)
31118
+ if (skipVisited && !isLeaving) {
31119
+ if (visitedNodes.has(node)) {
31120
+ continue;
31121
+ }
31122
+ visitedNodes.add(node);
31123
+ }
31124
+
31115
31125
  // Always create Path for the current node (needed for parentPath chain)
31116
31126
  currentPath = new _Path_mjs__WEBPACK_IMPORTED_MODULE_2__.Path(node, parent, parentPath, key, inArray);
31117
31127
  const visitFn = (0,_visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.getVisitFn)(visitor, nodeTypeGetter(node), isLeaving);
@@ -31255,6 +31265,7 @@ const traverse = (root, visitor, options = {}) => {
31255
31265
  nodePredicate: options.nodePredicate ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.isNode,
31256
31266
  nodeCloneFn: options.nodeCloneFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.cloneNode,
31257
31267
  detectCycles: options.detectCycles ?? true,
31268
+ skipVisited: options.skipVisited ?? false,
31258
31269
  mutable: options.mutable ?? false,
31259
31270
  mutationFn: options.mutationFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.mutateNode
31260
31271
  };
@@ -31286,6 +31297,7 @@ const traverseAsync = async (root, visitor, options = {}) => {
31286
31297
  nodePredicate: options.nodePredicate ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.isNode,
31287
31298
  nodeCloneFn: options.nodeCloneFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.cloneNode,
31288
31299
  detectCycles: options.detectCycles ?? true,
31300
+ skipVisited: options.skipVisited ?? false,
31289
31301
  mutable: options.mutable ?? false,
31290
31302
  mutationFn: options.mutationFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.mutateNode
31291
31303
  };