@speclynx/apidom-parser-adapter-json-schema-json-2020-12 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-json-schema-json-2020-12
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-json-schema-json-2020-12
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-json-schema-json-2020-12
@@ -20068,13 +20068,14 @@ const dispatchPluginsSync = (element, plugins, options = {}) => {
20068
20068
  const mergedOptions = (0,ramda__WEBPACK_IMPORTED_MODULE_1__["default"])(defaultDispatchPluginsOptions, options);
20069
20069
  const {
20070
20070
  toolboxCreator,
20071
- visitorOptions
20071
+ visitorOptions,
20072
+ traverseOptions
20072
20073
  } = mergedOptions;
20073
20074
  const toolbox = toolboxCreator();
20074
20075
  const pluginsSpecs = plugins.map(plugin => plugin(toolbox));
20075
20076
  const mergedPluginsVisitor = (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_0__.mergeVisitors)(pluginsSpecs.map((0,ramda__WEBPACK_IMPORTED_MODULE_2__["default"])({}, 'visitor')), visitorOptions);
20076
20077
  pluginsSpecs.forEach((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__["default"])(['pre'], []));
20077
- const newElement = (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_0__.traverse)(element, mergedPluginsVisitor);
20078
+ const newElement = (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_0__.traverse)(element, mergedPluginsVisitor, traverseOptions);
20078
20079
  pluginsSpecs.forEach((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__["default"])(['post'], []));
20079
20080
  return newElement;
20080
20081
  };
@@ -20083,13 +20084,14 @@ const dispatchPluginsAsync = async (element, plugins, options = {}) => {
20083
20084
  const mergedOptions = (0,ramda__WEBPACK_IMPORTED_MODULE_1__["default"])(defaultDispatchPluginsOptions, options);
20084
20085
  const {
20085
20086
  toolboxCreator,
20086
- visitorOptions
20087
+ visitorOptions,
20088
+ traverseOptions
20087
20089
  } = mergedOptions;
20088
20090
  const toolbox = toolboxCreator();
20089
20091
  const pluginsSpecs = plugins.map(plugin => plugin(toolbox));
20090
20092
  const mergedPluginsVisitor = (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_0__.mergeVisitorsAsync)(pluginsSpecs.map((0,ramda__WEBPACK_IMPORTED_MODULE_2__["default"])({}, 'visitor')), visitorOptions);
20091
20093
  await Promise.allSettled(pluginsSpecs.map((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__["default"])(['pre'], [])));
20092
- const newElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_0__.traverseAsync)(element, mergedPluginsVisitor);
20094
+ const newElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_0__.traverseAsync)(element, mergedPluginsVisitor, traverseOptions);
20093
20095
  await Promise.allSettled(pluginsSpecs.map((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__["default"])(['post'], [])));
20094
20096
  return newElement;
20095
20097
  };
@@ -28967,10 +28969,12 @@ function* traverseGenerator(root, visitor, options) {
28967
28969
  nodePredicate,
28968
28970
  nodeCloneFn,
28969
28971
  detectCycles,
28972
+ skipVisited,
28970
28973
  mutable,
28971
28974
  mutationFn
28972
28975
  } = options;
28973
28976
  const keyMapIsFunction = typeof keyMap === 'function';
28977
+ const visitedNodes = skipVisited ? new WeakSet() : null;
28974
28978
  let stack;
28975
28979
  let inArray = Array.isArray(root);
28976
28980
  let keys = [root];
@@ -29056,6 +29060,14 @@ function* traverseGenerator(root, visitor, options) {
29056
29060
  continue;
29057
29061
  }
29058
29062
 
29063
+ // Skip already-visited nodes (handles DAG structures from cloneShallow)
29064
+ if (skipVisited && !isLeaving) {
29065
+ if (visitedNodes.has(node)) {
29066
+ continue;
29067
+ }
29068
+ visitedNodes.add(node);
29069
+ }
29070
+
29059
29071
  // Always create Path for the current node (needed for parentPath chain)
29060
29072
  currentPath = new _Path_mjs__WEBPACK_IMPORTED_MODULE_2__.Path(node, parent, parentPath, key, inArray);
29061
29073
  const visitFn = (0,_visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.getVisitFn)(visitor, nodeTypeGetter(node), isLeaving);
@@ -29199,6 +29211,7 @@ const traverse = (root, visitor, options = {}) => {
29199
29211
  nodePredicate: options.nodePredicate ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.isNode,
29200
29212
  nodeCloneFn: options.nodeCloneFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.cloneNode,
29201
29213
  detectCycles: options.detectCycles ?? true,
29214
+ skipVisited: options.skipVisited ?? false,
29202
29215
  mutable: options.mutable ?? false,
29203
29216
  mutationFn: options.mutationFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.mutateNode
29204
29217
  };
@@ -29230,6 +29243,7 @@ const traverseAsync = async (root, visitor, options = {}) => {
29230
29243
  nodePredicate: options.nodePredicate ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.isNode,
29231
29244
  nodeCloneFn: options.nodeCloneFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.cloneNode,
29232
29245
  detectCycles: options.detectCycles ?? true,
29246
+ skipVisited: options.skipVisited ?? false,
29233
29247
  mutable: options.mutable ?? false,
29234
29248
  mutationFn: options.mutationFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.mutateNode
29235
29249
  };