@speclynx/apidom-parser-adapter-openapi-json-3-1 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-3-1
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-3-1
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-3-1
@@ -20507,13 +20507,14 @@ const dispatchPluginsSync = (element, plugins, options = {}) => {
20507
20507
  const mergedOptions = (0,ramda__WEBPACK_IMPORTED_MODULE_1__["default"])(defaultDispatchPluginsOptions, options);
20508
20508
  const {
20509
20509
  toolboxCreator,
20510
- visitorOptions
20510
+ visitorOptions,
20511
+ traverseOptions
20511
20512
  } = mergedOptions;
20512
20513
  const toolbox = toolboxCreator();
20513
20514
  const pluginsSpecs = plugins.map(plugin => plugin(toolbox));
20514
20515
  const mergedPluginsVisitor = (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_0__.mergeVisitors)(pluginsSpecs.map((0,ramda__WEBPACK_IMPORTED_MODULE_2__["default"])({}, 'visitor')), visitorOptions);
20515
20516
  pluginsSpecs.forEach((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__["default"])(['pre'], []));
20516
- const newElement = (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_0__.traverse)(element, mergedPluginsVisitor);
20517
+ const newElement = (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_0__.traverse)(element, mergedPluginsVisitor, traverseOptions);
20517
20518
  pluginsSpecs.forEach((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__["default"])(['post'], []));
20518
20519
  return newElement;
20519
20520
  };
@@ -20522,13 +20523,14 @@ const dispatchPluginsAsync = async (element, plugins, options = {}) => {
20522
20523
  const mergedOptions = (0,ramda__WEBPACK_IMPORTED_MODULE_1__["default"])(defaultDispatchPluginsOptions, options);
20523
20524
  const {
20524
20525
  toolboxCreator,
20525
- visitorOptions
20526
+ visitorOptions,
20527
+ traverseOptions
20526
20528
  } = mergedOptions;
20527
20529
  const toolbox = toolboxCreator();
20528
20530
  const pluginsSpecs = plugins.map(plugin => plugin(toolbox));
20529
20531
  const mergedPluginsVisitor = (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_0__.mergeVisitorsAsync)(pluginsSpecs.map((0,ramda__WEBPACK_IMPORTED_MODULE_2__["default"])({}, 'visitor')), visitorOptions);
20530
20532
  await Promise.allSettled(pluginsSpecs.map((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__["default"])(['pre'], [])));
20531
- const newElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_0__.traverseAsync)(element, mergedPluginsVisitor);
20533
+ const newElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_0__.traverseAsync)(element, mergedPluginsVisitor, traverseOptions);
20532
20534
  await Promise.allSettled(pluginsSpecs.map((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__["default"])(['post'], [])));
20533
20535
  return newElement;
20534
20536
  };
@@ -40457,10 +40459,12 @@ function* traverseGenerator(root, visitor, options) {
40457
40459
  nodePredicate,
40458
40460
  nodeCloneFn,
40459
40461
  detectCycles,
40462
+ skipVisited,
40460
40463
  mutable,
40461
40464
  mutationFn
40462
40465
  } = options;
40463
40466
  const keyMapIsFunction = typeof keyMap === 'function';
40467
+ const visitedNodes = skipVisited ? new WeakSet() : null;
40464
40468
  let stack;
40465
40469
  let inArray = Array.isArray(root);
40466
40470
  let keys = [root];
@@ -40546,6 +40550,14 @@ function* traverseGenerator(root, visitor, options) {
40546
40550
  continue;
40547
40551
  }
40548
40552
 
40553
+ // Skip already-visited nodes (handles DAG structures from cloneShallow)
40554
+ if (skipVisited && !isLeaving) {
40555
+ if (visitedNodes.has(node)) {
40556
+ continue;
40557
+ }
40558
+ visitedNodes.add(node);
40559
+ }
40560
+
40549
40561
  // Always create Path for the current node (needed for parentPath chain)
40550
40562
  currentPath = new _Path_mjs__WEBPACK_IMPORTED_MODULE_2__.Path(node, parent, parentPath, key, inArray);
40551
40563
  const visitFn = (0,_visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.getVisitFn)(visitor, nodeTypeGetter(node), isLeaving);
@@ -40689,6 +40701,7 @@ const traverse = (root, visitor, options = {}) => {
40689
40701
  nodePredicate: options.nodePredicate ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.isNode,
40690
40702
  nodeCloneFn: options.nodeCloneFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.cloneNode,
40691
40703
  detectCycles: options.detectCycles ?? true,
40704
+ skipVisited: options.skipVisited ?? false,
40692
40705
  mutable: options.mutable ?? false,
40693
40706
  mutationFn: options.mutationFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.mutateNode
40694
40707
  };
@@ -40720,6 +40733,7 @@ const traverseAsync = async (root, visitor, options = {}) => {
40720
40733
  nodePredicate: options.nodePredicate ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.isNode,
40721
40734
  nodeCloneFn: options.nodeCloneFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.cloneNode,
40722
40735
  detectCycles: options.detectCycles ?? true,
40736
+ skipVisited: options.skipVisited ?? false,
40723
40737
  mutable: options.mutable ?? false,
40724
40738
  mutationFn: options.mutationFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.mutateNode
40725
40739
  };