@speclynx/apidom-ns-json-schema-2019-09 4.10.1 → 4.12.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.
Files changed (29) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/apidom-ns-json-schema-2019-09.browser.js +40 -8
  3. package/dist/apidom-ns-json-schema-2019-09.browser.min.js +1 -1
  4. package/package.json +10 -10
  5. package/src/elements/JSONSchema.cjs +3 -1
  6. package/src/elements/LinkDescription.cjs +3 -1
  7. package/src/index.cjs +232 -41
  8. package/src/media-types.cjs +3 -1
  9. package/src/namespace.cjs +3 -1
  10. package/src/predicates.cjs +22 -5
  11. package/src/refractor/index.cjs +3 -1
  12. package/src/refractor/inspect.cjs +15 -3
  13. package/src/refractor/plugins/replace-empty-element.cjs +3 -1
  14. package/src/refractor/specification.cjs +3 -1
  15. package/src/refractor/toolbox.cjs +3 -1
  16. package/src/refractor/visitors/json-schema/$defsVisitor.cjs +3 -1
  17. package/src/refractor/visitors/json-schema/$refVisitor.cjs +3 -1
  18. package/src/refractor/visitors/json-schema/$vocabularyVisitor.cjs +3 -1
  19. package/src/refractor/visitors/json-schema/AllOfVisitor.cjs +3 -1
  20. package/src/refractor/visitors/json-schema/AnyOfVisitor.cjs +3 -1
  21. package/src/refractor/visitors/json-schema/DependentRequiredVisitor.cjs +3 -1
  22. package/src/refractor/visitors/json-schema/DependentSchemasVisitor.cjs +3 -1
  23. package/src/refractor/visitors/json-schema/ItemsVisitor.cjs +3 -1
  24. package/src/refractor/visitors/json-schema/OneOfVisitor.cjs +3 -1
  25. package/src/refractor/visitors/json-schema/PatternPropertiesVisitor.cjs +3 -1
  26. package/src/refractor/visitors/json-schema/PropertiesVisitor.cjs +3 -1
  27. package/src/refractor/visitors/json-schema/bases.cjs +3 -1
  28. package/src/refractor/visitors/json-schema/index.cjs +3 -1
  29. package/src/refractor/visitors/json-schema/link-description/index.cjs +3 -1
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.12.0](https://github.com/speclynx/apidom/compare/v4.11.1...v4.12.0) (2026-06-23)
7
+
8
+ **Note:** Version bump only for package @speclynx/apidom-ns-json-schema-2019-09
9
+
10
+ ## [4.11.1](https://github.com/speclynx/apidom/compare/v4.11.0...v4.11.1) (2026-06-10)
11
+
12
+ **Note:** Version bump only for package @speclynx/apidom-ns-json-schema-2019-09
13
+
14
+ # [4.11.0](https://github.com/speclynx/apidom/compare/v4.10.1...v4.11.0) (2026-06-10)
15
+
16
+ **Note:** Version bump only for package @speclynx/apidom-ns-json-schema-2019-09
17
+
6
18
  ## [4.10.1](https://github.com/speclynx/apidom/compare/v4.10.0...v4.10.1) (2026-05-20)
7
19
 
8
20
  **Note:** Version bump only for package @speclynx/apidom-ns-json-schema-2019-09
@@ -23315,6 +23315,14 @@ class Path {
23315
23315
  */
23316
23316
  inList;
23317
23317
 
23318
+ /**
23319
+ * True when this node is a non-descending revisit of an already-visited node
23320
+ * (only under skipVisited: 'enter-only'). Children are not traversed.
23321
+ * Set on both the enter and the matching leave phase, so it is meaningful
23322
+ * in either phase.
23323
+ */
23324
+ revisited = false;
23325
+
23318
23326
  /**
23319
23327
  * Internal state for traversal control.
23320
23328
  */
@@ -23899,6 +23907,10 @@ __webpack_require__.r(__webpack_exports__);
23899
23907
 
23900
23908
 
23901
23909
 
23910
+ /**
23911
+ * Controls handling of already-visited nodes during traversal.
23912
+ * @public
23913
+ */
23902
23914
  /**
23903
23915
  * Options for the traverse function.
23904
23916
  * @public
@@ -23906,6 +23918,12 @@ __webpack_require__.r(__webpack_exports__);
23906
23918
  // =============================================================================
23907
23919
  // Internal types for generator
23908
23920
  // =============================================================================
23921
+
23922
+ const normalizeSkipVisited = v => {
23923
+ if (v === true) return 'skip';
23924
+ if (v === false || v === undefined) return 'never';
23925
+ return v;
23926
+ };
23909
23927
  // =============================================================================
23910
23928
  // Core generator
23911
23929
  // =============================================================================
@@ -23923,7 +23941,7 @@ function* traverseGenerator(root, visitor, options) {
23923
23941
  mutationFn
23924
23942
  } = options;
23925
23943
  const keyMapIsFunction = typeof keyMap === 'function';
23926
- const visitedNodes = skipVisited ? new WeakSet() : null;
23944
+ const visitedNodes = skipVisited !== 'never' ? new WeakSet() : null;
23927
23945
  let stack;
23928
23946
  let inArray = Array.isArray(root);
23929
23947
  let keys = [root];
@@ -23938,6 +23956,7 @@ function* traverseGenerator(root, visitor, options) {
23938
23956
  index += 1;
23939
23957
  const isLeaving = index === keys.length;
23940
23958
  let key;
23959
+ let revisitNoDescend = false;
23941
23960
  const isEdited = isLeaving && edits.length !== 0;
23942
23961
  if (isLeaving) {
23943
23962
  key = ancestors.length === 0 ? undefined : currentPath?.key;
@@ -23979,6 +23998,7 @@ function* traverseGenerator(root, visitor, options) {
23979
23998
  edits = stack.edits;
23980
23999
  const parentInArray = stack.inArray;
23981
24000
  parentPath = stack.parentPath;
24001
+ revisitNoDescend = stack.revisitNoDescend;
23982
24002
  stack = stack.prev;
23983
24003
 
23984
24004
  // Push the edited node to parent's edits for propagation up the tree
@@ -24010,15 +24030,22 @@ function* traverseGenerator(root, visitor, options) {
24010
24030
  }
24011
24031
 
24012
24032
  // Skip already-visited nodes (handles DAG structures from cloneShallow)
24013
- if (skipVisited && !isLeaving) {
24033
+ if (skipVisited !== 'never' && !isLeaving) {
24014
24034
  if (visitedNodes.has(node)) {
24015
- continue;
24035
+ if (skipVisited === 'enter-only') {
24036
+ // fire enter/leave for this occurrence, but don't re-descend
24037
+ revisitNoDescend = true;
24038
+ } else {
24039
+ continue;
24040
+ }
24041
+ } else {
24042
+ visitedNodes.add(node);
24016
24043
  }
24017
- visitedNodes.add(node);
24018
24044
  }
24019
24045
 
24020
24046
  // Always create Path for the current node (needed for parentPath chain)
24021
24047
  currentPath = new _Path_mjs__WEBPACK_IMPORTED_MODULE_2__.Path(node, parent, parentPath, key, inArray);
24048
+ currentPath.revisited = revisitNoDescend;
24022
24049
  const visitFn = (0,_visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.getVisitFn)(visitor, nodeTypeGetter(node), isLeaving);
24023
24050
  if (visitFn) {
24024
24051
  // Assign state to visitor
@@ -24082,10 +24109,13 @@ function* traverseGenerator(root, visitor, options) {
24082
24109
  keys,
24083
24110
  edits,
24084
24111
  parentPath,
24112
+ revisitNoDescend,
24085
24113
  prev: stack
24086
24114
  };
24087
24115
  inArray = Array.isArray(node);
24088
- if (inArray) {
24116
+ if (revisitNoDescend) {
24117
+ keys = [];
24118
+ } else if (inArray) {
24089
24119
  keys = node;
24090
24120
  } else if (keyMapIsFunction) {
24091
24121
  keys = keyMap(node);
@@ -24160,7 +24190,7 @@ const traverse = (root, visitor, options = {}) => {
24160
24190
  nodePredicate: options.nodePredicate ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.isNode,
24161
24191
  nodeCloneFn: options.nodeCloneFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.cloneNode,
24162
24192
  detectCycles: options.detectCycles ?? true,
24163
- skipVisited: options.skipVisited ?? false,
24193
+ skipVisited: normalizeSkipVisited(options.skipVisited),
24164
24194
  mutable: options.mutable ?? false,
24165
24195
  mutationFn: options.mutationFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.mutateNode
24166
24196
  };
@@ -24192,7 +24222,7 @@ const traverseAsync = async (root, visitor, options = {}) => {
24192
24222
  nodePredicate: options.nodePredicate ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.isNode,
24193
24223
  nodeCloneFn: options.nodeCloneFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.cloneNode,
24194
24224
  detectCycles: options.detectCycles ?? true,
24195
- skipVisited: options.skipVisited ?? false,
24225
+ skipVisited: normalizeSkipVisited(options.skipVisited),
24196
24226
  mutable: options.mutable ?? false,
24197
24227
  mutationFn: options.mutationFn ?? _visitors_mjs__WEBPACK_IMPORTED_MODULE_3__.mutateNode
24198
24228
  };
@@ -24660,7 +24690,9 @@ mergeVisitors[Symbol.for('nodejs.util.promisify.custom')] = mergeVisitorsAsync;
24660
24690
  * @internal
24661
24691
  */
24662
24692
  function createPathProxy(originalPath, currentNode) {
24663
- return new _Path_mjs__WEBPACK_IMPORTED_MODULE_4__.Path(currentNode, originalPath.parent, originalPath.parentPath, originalPath.key, originalPath.inList);
24693
+ const proxy = new _Path_mjs__WEBPACK_IMPORTED_MODULE_4__.Path(currentNode, originalPath.parent, originalPath.parentPath, originalPath.key, originalPath.inList);
24694
+ proxy.revisited = originalPath.revisited;
24695
+ return proxy;
24664
24696
  }
24665
24697
 
24666
24698
  /***/ }