@speclynx/apidom-parser-adapter-openapi-json-2 4.7.1 → 4.9.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,14 @@
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.9.0](https://github.com/speclynx/apidom/compare/v4.8.0...v4.9.0) (2026-04-17)
7
+
8
+ **Note:** Version bump only for package @speclynx/apidom-parser-adapter-openapi-json-2
9
+
10
+ # [4.8.0](https://github.com/speclynx/apidom/compare/v4.7.1...v4.8.0) (2026-04-17)
11
+
12
+ **Note:** Version bump only for package @speclynx/apidom-parser-adapter-openapi-json-2
13
+
6
14
  ## [4.7.1](https://github.com/speclynx/apidom/compare/v4.7.0...v4.7.1) (2026-04-16)
7
15
 
8
16
  **Note:** Version bump only for package @speclynx/apidom-parser-adapter-openapi-json-2
@@ -20254,13 +20254,14 @@ const dispatchPluginsSync = (element, plugins, options = {}) => {
20254
20254
  const mergedOptions = (0,ramda__WEBPACK_IMPORTED_MODULE_1__["default"])(defaultDispatchPluginsOptions, options);
20255
20255
  const {
20256
20256
  toolboxCreator,
20257
- visitorOptions
20257
+ visitorOptions,
20258
+ traverseOptions
20258
20259
  } = mergedOptions;
20259
20260
  const toolbox = toolboxCreator();
20260
20261
  const pluginsSpecs = plugins.map(plugin => plugin(toolbox));
20261
20262
  const mergedPluginsVisitor = (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_0__.mergeVisitors)(pluginsSpecs.map((0,ramda__WEBPACK_IMPORTED_MODULE_2__["default"])({}, 'visitor')), visitorOptions);
20262
20263
  pluginsSpecs.forEach((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__["default"])(['pre'], []));
20263
- const newElement = (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_0__.traverse)(element, mergedPluginsVisitor);
20264
+ const newElement = (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_0__.traverse)(element, mergedPluginsVisitor, traverseOptions);
20264
20265
  pluginsSpecs.forEach((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__["default"])(['post'], []));
20265
20266
  return newElement;
20266
20267
  };
@@ -20269,13 +20270,14 @@ const dispatchPluginsAsync = async (element, plugins, options = {}) => {
20269
20270
  const mergedOptions = (0,ramda__WEBPACK_IMPORTED_MODULE_1__["default"])(defaultDispatchPluginsOptions, options);
20270
20271
  const {
20271
20272
  toolboxCreator,
20272
- visitorOptions
20273
+ visitorOptions,
20274
+ traverseOptions
20273
20275
  } = mergedOptions;
20274
20276
  const toolbox = toolboxCreator();
20275
20277
  const pluginsSpecs = plugins.map(plugin => plugin(toolbox));
20276
20278
  const mergedPluginsVisitor = (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_0__.mergeVisitorsAsync)(pluginsSpecs.map((0,ramda__WEBPACK_IMPORTED_MODULE_2__["default"])({}, 'visitor')), visitorOptions);
20277
20279
  await Promise.allSettled(pluginsSpecs.map((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__["default"])(['pre'], [])));
20278
- const newElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_0__.traverseAsync)(element, mergedPluginsVisitor);
20280
+ const newElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_0__.traverseAsync)(element, mergedPluginsVisitor, traverseOptions);
20279
20281
  await Promise.allSettled(pluginsSpecs.map((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__["default"])(['post'], [])));
20280
20282
  return newElement;
20281
20283
  };
@@ -32577,10 +32579,12 @@ function* traverseGenerator(root, visitor, options) {
32577
32579
  nodePredicate,
32578
32580
  nodeCloneFn,
32579
32581
  detectCycles,
32582
+ skipVisited,
32580
32583
  mutable,
32581
32584
  mutationFn
32582
32585
  } = options;
32583
32586
  const keyMapIsFunction = typeof keyMap === 'function';
32587
+ const visitedNodes = skipVisited ? new WeakSet() : null;
32584
32588
  let stack;
32585
32589
  let inArray = Array.isArray(root);
32586
32590
  let keys = [root];
@@ -32666,6 +32670,14 @@ function* traverseGenerator(root, visitor, options) {
32666
32670
  continue;
32667
32671
  }
32668
32672
 
32673
+ // Skip already-visited nodes (handles DAG structures from cloneShallow)
32674
+ if (skipVisited && !isLeaving) {
32675
+ if (visitedNodes.has(node)) {
32676
+ continue;
32677
+ }
32678
+ visitedNodes.add(node);
32679
+ }
32680
+
32669
32681
  // Always create Path for the current node (needed for parentPath chain)
32670
32682
  currentPath = new _Path_mjs__WEBPACK_IMPORTED_MODULE_2__.Path(node, parent, parentPath, key, inArray);
32671
32683
  const visitFn = (0,_visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.getVisitFn)(visitor, nodeTypeGetter(node), isLeaving);
@@ -32809,6 +32821,7 @@ const traverse = (root, visitor, options = {}) => {
32809
32821
  nodePredicate: options.nodePredicate ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.isNode,
32810
32822
  nodeCloneFn: options.nodeCloneFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.cloneNode,
32811
32823
  detectCycles: options.detectCycles ?? true,
32824
+ skipVisited: options.skipVisited ?? false,
32812
32825
  mutable: options.mutable ?? false,
32813
32826
  mutationFn: options.mutationFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.mutateNode
32814
32827
  };
@@ -32840,6 +32853,7 @@ const traverseAsync = async (root, visitor, options = {}) => {
32840
32853
  nodePredicate: options.nodePredicate ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.isNode,
32841
32854
  nodeCloneFn: options.nodeCloneFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.cloneNode,
32842
32855
  detectCycles: options.detectCycles ?? true,
32856
+ skipVisited: options.skipVisited ?? false,
32843
32857
  mutable: options.mutable ?? false,
32844
32858
  mutationFn: options.mutationFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.mutateNode
32845
32859
  };