@speclynx/apidom-ns-arazzo-1 4.10.0 → 4.11.1

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,18 @@
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.11.1](https://github.com/speclynx/apidom/compare/v4.11.0...v4.11.1) (2026-06-10)
7
+
8
+ **Note:** Version bump only for package @speclynx/apidom-ns-arazzo-1
9
+
10
+ # [4.11.0](https://github.com/speclynx/apidom/compare/v4.10.1...v4.11.0) (2026-06-10)
11
+
12
+ **Note:** Version bump only for package @speclynx/apidom-ns-arazzo-1
13
+
14
+ ## [4.10.1](https://github.com/speclynx/apidom/compare/v4.10.0...v4.10.1) (2026-05-20)
15
+
16
+ **Note:** Version bump only for package @speclynx/apidom-ns-arazzo-1
17
+
6
18
  # [4.10.0](https://github.com/speclynx/apidom/compare/v4.9.1...v4.10.0) (2026-05-12)
7
19
 
8
20
  **Note:** Version bump only for package @speclynx/apidom-ns-arazzo-1
@@ -27620,6 +27620,14 @@ class Path {
27620
27620
  */
27621
27621
  inList;
27622
27622
 
27623
+ /**
27624
+ * True when this node is a non-descending revisit of an already-visited node
27625
+ * (only under skipVisited: 'enter-only'). Children are not traversed.
27626
+ * Set on both the enter and the matching leave phase, so it is meaningful
27627
+ * in either phase.
27628
+ */
27629
+ revisited = false;
27630
+
27623
27631
  /**
27624
27632
  * Internal state for traversal control.
27625
27633
  */
@@ -28204,6 +28212,10 @@ __webpack_require__.r(__webpack_exports__);
28204
28212
 
28205
28213
 
28206
28214
 
28215
+ /**
28216
+ * Controls handling of already-visited nodes during traversal.
28217
+ * @public
28218
+ */
28207
28219
  /**
28208
28220
  * Options for the traverse function.
28209
28221
  * @public
@@ -28211,6 +28223,12 @@ __webpack_require__.r(__webpack_exports__);
28211
28223
  // =============================================================================
28212
28224
  // Internal types for generator
28213
28225
  // =============================================================================
28226
+
28227
+ const normalizeSkipVisited = v => {
28228
+ if (v === true) return 'skip';
28229
+ if (v === false || v === undefined) return 'never';
28230
+ return v;
28231
+ };
28214
28232
  // =============================================================================
28215
28233
  // Core generator
28216
28234
  // =============================================================================
@@ -28228,7 +28246,7 @@ function* traverseGenerator(root, visitor, options) {
28228
28246
  mutationFn
28229
28247
  } = options;
28230
28248
  const keyMapIsFunction = typeof keyMap === 'function';
28231
- const visitedNodes = skipVisited ? new WeakSet() : null;
28249
+ const visitedNodes = skipVisited !== 'never' ? new WeakSet() : null;
28232
28250
  let stack;
28233
28251
  let inArray = Array.isArray(root);
28234
28252
  let keys = [root];
@@ -28243,6 +28261,7 @@ function* traverseGenerator(root, visitor, options) {
28243
28261
  index += 1;
28244
28262
  const isLeaving = index === keys.length;
28245
28263
  let key;
28264
+ let revisitNoDescend = false;
28246
28265
  const isEdited = isLeaving && edits.length !== 0;
28247
28266
  if (isLeaving) {
28248
28267
  key = ancestors.length === 0 ? undefined : currentPath?.key;
@@ -28284,6 +28303,7 @@ function* traverseGenerator(root, visitor, options) {
28284
28303
  edits = stack.edits;
28285
28304
  const parentInArray = stack.inArray;
28286
28305
  parentPath = stack.parentPath;
28306
+ revisitNoDescend = stack.revisitNoDescend;
28287
28307
  stack = stack.prev;
28288
28308
 
28289
28309
  // Push the edited node to parent's edits for propagation up the tree
@@ -28315,15 +28335,22 @@ function* traverseGenerator(root, visitor, options) {
28315
28335
  }
28316
28336
 
28317
28337
  // Skip already-visited nodes (handles DAG structures from cloneShallow)
28318
- if (skipVisited && !isLeaving) {
28338
+ if (skipVisited !== 'never' && !isLeaving) {
28319
28339
  if (visitedNodes.has(node)) {
28320
- continue;
28340
+ if (skipVisited === 'enter-only') {
28341
+ // fire enter/leave for this occurrence, but don't re-descend
28342
+ revisitNoDescend = true;
28343
+ } else {
28344
+ continue;
28345
+ }
28346
+ } else {
28347
+ visitedNodes.add(node);
28321
28348
  }
28322
- visitedNodes.add(node);
28323
28349
  }
28324
28350
 
28325
28351
  // Always create Path for the current node (needed for parentPath chain)
28326
28352
  currentPath = new _Path_mjs__WEBPACK_IMPORTED_MODULE_2__.Path(node, parent, parentPath, key, inArray);
28353
+ currentPath.revisited = revisitNoDescend;
28327
28354
  const visitFn = (0,_visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.getVisitFn)(visitor, nodeTypeGetter(node), isLeaving);
28328
28355
  if (visitFn) {
28329
28356
  // Assign state to visitor
@@ -28387,10 +28414,13 @@ function* traverseGenerator(root, visitor, options) {
28387
28414
  keys,
28388
28415
  edits,
28389
28416
  parentPath,
28417
+ revisitNoDescend,
28390
28418
  prev: stack
28391
28419
  };
28392
28420
  inArray = Array.isArray(node);
28393
- if (inArray) {
28421
+ if (revisitNoDescend) {
28422
+ keys = [];
28423
+ } else if (inArray) {
28394
28424
  keys = node;
28395
28425
  } else if (keyMapIsFunction) {
28396
28426
  keys = keyMap(node);
@@ -28465,7 +28495,7 @@ const traverse = (root, visitor, options = {}) => {
28465
28495
  nodePredicate: options.nodePredicate ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.isNode,
28466
28496
  nodeCloneFn: options.nodeCloneFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.cloneNode,
28467
28497
  detectCycles: options.detectCycles ?? true,
28468
- skipVisited: options.skipVisited ?? false,
28498
+ skipVisited: normalizeSkipVisited(options.skipVisited),
28469
28499
  mutable: options.mutable ?? false,
28470
28500
  mutationFn: options.mutationFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.mutateNode
28471
28501
  };
@@ -28497,7 +28527,7 @@ const traverseAsync = async (root, visitor, options = {}) => {
28497
28527
  nodePredicate: options.nodePredicate ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.isNode,
28498
28528
  nodeCloneFn: options.nodeCloneFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.cloneNode,
28499
28529
  detectCycles: options.detectCycles ?? true,
28500
- skipVisited: options.skipVisited ?? false,
28530
+ skipVisited: normalizeSkipVisited(options.skipVisited),
28501
28531
  mutable: options.mutable ?? false,
28502
28532
  mutationFn: options.mutationFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.mutateNode
28503
28533
  };
@@ -28965,7 +28995,9 @@ mergeVisitors[Symbol.for('nodejs.util.promisify.custom')] = mergeVisitorsAsync;
28965
28995
  * @internal
28966
28996
  */
28967
28997
  function createPathProxy(originalPath, currentNode) {
28968
- return new _Path_mjs__WEBPACK_IMPORTED_MODULE_4__.Path(currentNode, originalPath.parent, originalPath.parentPath, originalPath.key, originalPath.inList);
28998
+ const proxy = new _Path_mjs__WEBPACK_IMPORTED_MODULE_4__.Path(currentNode, originalPath.parent, originalPath.parentPath, originalPath.key, originalPath.inList);
28999
+ proxy.revisited = originalPath.revisited;
29000
+ return proxy;
28969
29001
  }
28970
29002
 
28971
29003
  /***/ }