@swagger-api/apidom-core 0.76.2 → 0.78.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 (64) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +53 -5
  3. package/cjs/clone/errors/CloneError.cjs +7 -0
  4. package/cjs/clone/errors/DeepCloneError.cjs +8 -0
  5. package/cjs/clone/errors/ShallowCloneError.cjs +8 -0
  6. package/cjs/clone/index.cjs +105 -0
  7. package/cjs/deepmerge.cjs +9 -7
  8. package/cjs/elements/Annotation.cjs +1 -2
  9. package/cjs/elements/Comment.cjs +1 -2
  10. package/cjs/elements/ParseResult.cjs +1 -2
  11. package/cjs/elements/SourceMap.cjs +1 -2
  12. package/cjs/index.cjs +61 -101
  13. package/cjs/media-types.cjs +4 -5
  14. package/cjs/namespace.cjs +1 -2
  15. package/cjs/predicates/helpers.cjs +1 -2
  16. package/cjs/predicates/index.cjs +14 -28
  17. package/cjs/refractor/index.cjs +1 -2
  18. package/cjs/refractor/plugins/element-identity.cjs +1 -2
  19. package/cjs/refractor/plugins/semantic-element-identity.cjs +1 -2
  20. package/cjs/refractor/toolbox.cjs +1 -2
  21. package/cjs/transcluder/Transcluder.cjs +1 -2
  22. package/cjs/transcluder/index.cjs +1 -2
  23. package/cjs/transformers/dehydrate.cjs +14 -0
  24. package/cjs/transformers/from.cjs +27 -0
  25. package/cjs/{serializers → transformers/serializers}/json.cjs +1 -2
  26. package/cjs/{serializers → transformers/serializers}/value/ast/ephemeral-array.cjs +1 -2
  27. package/cjs/{serializers → transformers/serializers}/value/ast/ephemeral-object.cjs +1 -2
  28. package/cjs/{serializers → transformers/serializers}/value/index.cjs +8 -2
  29. package/cjs/{serializers → transformers/serializers}/value/visitor.cjs +1 -1
  30. package/cjs/{serializers → transformers/serializers}/yaml-1-2.cjs +2 -3
  31. package/cjs/{sexprs.cjs → transformers/sexprs.cjs} +2 -3
  32. package/cjs/transformers/to-string.cjs +15 -0
  33. package/cjs/traversal/filter.cjs +1 -2
  34. package/cjs/traversal/find.cjs +1 -2
  35. package/cjs/traversal/findAtOffset.cjs +4 -4
  36. package/cjs/traversal/parents.cjs +1 -2
  37. package/cjs/traversal/reject.cjs +1 -2
  38. package/cjs/traversal/some.cjs +1 -2
  39. package/cjs/traversal/traverse.cjs +2 -4
  40. package/cjs/traversal/visitor.cjs +17 -8
  41. package/dist/apidom-core.browser.js +4554 -17668
  42. package/dist/apidom-core.browser.min.js +1 -1
  43. package/es/clone/errors/CloneError.mjs +3 -0
  44. package/es/clone/errors/DeepCloneError.mjs +3 -0
  45. package/es/clone/errors/ShallowCloneError.mjs +3 -0
  46. package/es/clone/index.mjs +98 -0
  47. package/es/deepmerge.mjs +9 -8
  48. package/es/index.mjs +12 -38
  49. package/es/media-types.mjs +3 -3
  50. package/es/transformers/dehydrate.mjs +9 -0
  51. package/es/transformers/from.mjs +22 -0
  52. package/es/{serializers → transformers/serializers}/value/index.mjs +7 -0
  53. package/es/{serializers → transformers/serializers}/value/visitor.mjs +1 -1
  54. package/es/{serializers → transformers/serializers}/yaml-1-2.mjs +1 -1
  55. package/es/{sexprs.mjs → transformers/sexprs.mjs} +1 -1
  56. package/es/transformers/to-string.mjs +10 -0
  57. package/es/traversal/findAtOffset.mjs +3 -2
  58. package/es/traversal/visitor.mjs +13 -2
  59. package/package.json +5 -5
  60. package/types/dist.d.ts +52 -38
  61. package/types/minim.d.ts +14 -2
  62. /package/es/{serializers → transformers/serializers}/json.mjs +0 -0
  63. /package/es/{serializers → transformers/serializers}/value/ast/ephemeral-array.mjs +0 -0
  64. /package/es/{serializers → transformers/serializers}/value/ast/ephemeral-object.mjs +0 -0
@@ -12,113 +12,99 @@ var _Comment = _interopRequireDefault(require("../elements/Comment.cjs"));
12
12
  var _ParseResult = _interopRequireDefault(require("../elements/ParseResult.cjs"));
13
13
  var _SourceMap = _interopRequireDefault(require("../elements/SourceMap.cjs"));
14
14
  var _helpers = _interopRequireWildcard(require("./helpers.cjs"));
15
- const isElement = (0, _helpers.default)(({
15
+ const isElement = exports.isElement = (0, _helpers.default)(({
16
16
  hasBasicElementProps,
17
17
  primitiveEq
18
18
  }) => {
19
19
  return element => element instanceof _minim.Element || hasBasicElementProps(element) && primitiveEq(undefined, element);
20
20
  });
21
- exports.isElement = isElement;
22
- const isStringElement = (0, _helpers.default)(({
21
+ const isStringElement = exports.isStringElement = (0, _helpers.default)(({
23
22
  hasBasicElementProps,
24
23
  primitiveEq
25
24
  }) => {
26
25
  return element => element instanceof _minim.StringElement || hasBasicElementProps(element) && primitiveEq('string', element);
27
26
  });
28
- exports.isStringElement = isStringElement;
29
- const isNumberElement = (0, _helpers.default)(({
27
+ const isNumberElement = exports.isNumberElement = (0, _helpers.default)(({
30
28
  hasBasicElementProps,
31
29
  primitiveEq
32
30
  }) => {
33
31
  return element => element instanceof _minim.NumberElement || hasBasicElementProps(element) && primitiveEq('number', element);
34
32
  });
35
- exports.isNumberElement = isNumberElement;
36
- const isNullElement = (0, _helpers.default)(({
33
+ const isNullElement = exports.isNullElement = (0, _helpers.default)(({
37
34
  hasBasicElementProps,
38
35
  primitiveEq
39
36
  }) => {
40
37
  return element => element instanceof _minim.NullElement || hasBasicElementProps(element) && primitiveEq('null', element);
41
38
  });
42
- exports.isNullElement = isNullElement;
43
- const isBooleanElement = (0, _helpers.default)(({
39
+ const isBooleanElement = exports.isBooleanElement = (0, _helpers.default)(({
44
40
  hasBasicElementProps,
45
41
  primitiveEq
46
42
  }) => {
47
43
  return element => element instanceof _minim.BooleanElement || hasBasicElementProps(element) && primitiveEq('boolean', element);
48
44
  });
49
- exports.isBooleanElement = isBooleanElement;
50
- const isObjectElement = (0, _helpers.default)(({
45
+ const isObjectElement = exports.isObjectElement = (0, _helpers.default)(({
51
46
  hasBasicElementProps,
52
47
  primitiveEq,
53
48
  hasMethod
54
49
  }) => {
55
50
  return element => element instanceof _minim.ObjectElement || hasBasicElementProps(element) && primitiveEq('object', element) && hasMethod('keys', element) && hasMethod('values', element) && hasMethod('items', element);
56
51
  });
57
- exports.isObjectElement = isObjectElement;
58
- const isArrayElement = (0, _helpers.default)(({
52
+ const isArrayElement = exports.isArrayElement = (0, _helpers.default)(({
59
53
  hasBasicElementProps,
60
54
  primitiveEq,
61
55
  hasMethod
62
56
  }) => {
63
57
  return element => element instanceof _minim.ArrayElement && !(element instanceof _minim.ObjectElement) || hasBasicElementProps(element) && primitiveEq('array', element) && hasMethod('push', element) && hasMethod('unshift', element) && hasMethod('map', element) && hasMethod('reduce', element);
64
58
  });
65
- exports.isArrayElement = isArrayElement;
66
- const isMemberElement = (0, _helpers.default)(({
59
+ const isMemberElement = exports.isMemberElement = (0, _helpers.default)(({
67
60
  hasBasicElementProps,
68
61
  isElementType,
69
62
  primitiveEq
70
63
  }) => {
71
64
  return element => element instanceof _minim.MemberElement || hasBasicElementProps(element) && isElementType('member', element) && primitiveEq(undefined, element);
72
65
  });
73
- exports.isMemberElement = isMemberElement;
74
- const isLinkElement = (0, _helpers.default)(({
66
+ const isLinkElement = exports.isLinkElement = (0, _helpers.default)(({
75
67
  hasBasicElementProps,
76
68
  isElementType,
77
69
  primitiveEq
78
70
  }) => {
79
71
  return element => element instanceof _minim.LinkElement || hasBasicElementProps(element) && isElementType('link', element) && primitiveEq(undefined, element);
80
72
  });
81
- exports.isLinkElement = isLinkElement;
82
- const isRefElement = (0, _helpers.default)(({
73
+ const isRefElement = exports.isRefElement = (0, _helpers.default)(({
83
74
  hasBasicElementProps,
84
75
  isElementType,
85
76
  primitiveEq
86
77
  }) => {
87
78
  return element => element instanceof _minim.RefElement || hasBasicElementProps(element) && isElementType('ref', element) && primitiveEq(undefined, element);
88
79
  });
89
- exports.isRefElement = isRefElement;
90
- const isAnnotationElement = (0, _helpers.default)(({
80
+ const isAnnotationElement = exports.isAnnotationElement = (0, _helpers.default)(({
91
81
  hasBasicElementProps,
92
82
  isElementType,
93
83
  primitiveEq
94
84
  }) => {
95
85
  return element => element instanceof _Annotation.default || hasBasicElementProps(element) && isElementType('annotation', element) && primitiveEq('array', element);
96
86
  });
97
- exports.isAnnotationElement = isAnnotationElement;
98
- const isCommentElement = (0, _helpers.default)(({
87
+ const isCommentElement = exports.isCommentElement = (0, _helpers.default)(({
99
88
  hasBasicElementProps,
100
89
  isElementType,
101
90
  primitiveEq
102
91
  }) => {
103
92
  return element => element instanceof _Comment.default || hasBasicElementProps(element) && isElementType('comment', element) && primitiveEq('string', element);
104
93
  });
105
- exports.isCommentElement = isCommentElement;
106
- const isParseResultElement = (0, _helpers.default)(({
94
+ const isParseResultElement = exports.isParseResultElement = (0, _helpers.default)(({
107
95
  hasBasicElementProps,
108
96
  isElementType,
109
97
  primitiveEq
110
98
  }) => {
111
99
  return element => element instanceof _ParseResult.default || hasBasicElementProps(element) && isElementType('parseResult', element) && primitiveEq('array', element);
112
100
  });
113
- exports.isParseResultElement = isParseResultElement;
114
- const isSourceMapElement = (0, _helpers.default)(({
101
+ const isSourceMapElement = exports.isSourceMapElement = (0, _helpers.default)(({
115
102
  hasBasicElementProps,
116
103
  isElementType,
117
104
  primitiveEq
118
105
  }) => {
119
106
  return element => element instanceof _SourceMap.default || hasBasicElementProps(element) && isElementType('sourceMap', element) && primitiveEq('array', element);
120
107
  });
121
- exports.isSourceMapElement = isSourceMapElement;
122
108
  const isPrimitiveElement = element => {
123
109
  return (0, _helpers.isElementType)('object', element) || (0, _helpers.isElementType)('array', element) || (0, _helpers.isElementType)('boolean', element) || (0, _helpers.isElementType)('number', element) || (0, _helpers.isElementType)('string', element) || (0, _helpers.isElementType)('null', element) || (0, _helpers.isElementType)('member', element);
124
110
  };
@@ -33,5 +33,4 @@ const createRefractor = Type => (value, options = {}) => refract(value, {
33
33
  Type
34
34
  });
35
35
  exports.createRefractor = createRefractor;
36
- var _default = refract;
37
- exports.default = _default;
36
+ var _default = exports.default = refract;
@@ -30,5 +30,4 @@ const plugin = ({
30
30
  }
31
31
  };
32
32
  };
33
- var _default = plugin;
34
- exports.default = _default;
33
+ var _default = exports.default = plugin;
@@ -34,5 +34,4 @@ const plugin = ({
34
34
  }
35
35
  };
36
36
  };
37
- var _default = plugin;
38
- exports.default = _default;
37
+ var _default = exports.default = plugin;
@@ -15,5 +15,4 @@ const createToolbox = () => {
15
15
  namespace: _namespace.default
16
16
  };
17
17
  };
18
- var _default = createToolbox;
19
- exports.default = _default;
18
+ var _default = exports.default = createToolbox;
@@ -106,5 +106,4 @@ const Transcluder = _stampit.default.init(function TranscluderConstructor({
106
106
  return element;
107
107
  };
108
108
  });
109
- var _default = Transcluder;
110
- exports.default = _default;
109
+ var _default = exports.default = Transcluder;
@@ -15,5 +15,4 @@ const transclude = (search, replace, element) => {
15
15
  return transcluder.transclude(search, replace);
16
16
  };
17
17
  exports.transclude = transclude;
18
- var _default = _Transcluder.default;
19
- exports.default = _default;
18
+ var _default = exports.default = _Transcluder.default;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
+ exports.__esModule = true;
5
+ exports.default = void 0;
6
+ var _namespace = _interopRequireDefault(require("../namespace.cjs"));
7
+ /**
8
+ * Creates a refract representation of an Element.
9
+ * https://github.com/refractproject/refract-spec
10
+ */
11
+ const dehydrate = (element, namespace = _namespace.default) => {
12
+ return namespace.toRefract(element);
13
+ };
14
+ var _default = exports.default = dehydrate;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
+ exports.__esModule = true;
5
+ exports.default = void 0;
6
+ var _ramda = require("ramda");
7
+ var _ramdaAdjunct = require("ramda-adjunct");
8
+ var _namespace = _interopRequireDefault(require("../namespace.cjs"));
9
+ /**
10
+ * Transforms data to an Element from a particular namespace.
11
+ */
12
+ const from = (data, namespace = _namespace.default) => {
13
+ if ((0, _ramdaAdjunct.isString)(data)) {
14
+ // JSON serialized refract
15
+ try {
16
+ return namespace.fromRefract(JSON.parse(data));
17
+ } catch {
18
+ // noop
19
+ }
20
+ }
21
+ if ((0, _ramdaAdjunct.isPlainObject)(data) && (0, _ramda.has)('element', data)) {
22
+ // refract javascript structure
23
+ return namespace.fromRefract(data);
24
+ }
25
+ return namespace.toElement(data);
26
+ };
27
+ var _default = exports.default = from;
@@ -5,5 +5,4 @@ exports.__esModule = true;
5
5
  exports.default = void 0;
6
6
  var _index = _interopRequireDefault(require("./value/index.cjs"));
7
7
  const serializer = (element, replacer, space) => JSON.stringify((0, _index.default)(element), replacer, space);
8
- var _default = serializer;
9
- exports.default = _default;
8
+ var _default = exports.default = serializer;
@@ -18,5 +18,4 @@ class EphemeralArray {
18
18
  return this.reference;
19
19
  }
20
20
  }
21
- var _default = EphemeralArray;
22
- exports.default = _default;
21
+ var _default = exports.default = EphemeralArray;
@@ -17,5 +17,4 @@ class EphemeralObject {
17
17
  return Object.assign(this.reference, Object.fromEntries(this.content));
18
18
  }
19
19
  }
20
- var _default = EphemeralObject;
21
- exports.default = _default;
20
+ var _default = exports.default = EphemeralObject;
@@ -7,6 +7,7 @@ var _stampit = _interopRequireDefault(require("stampit"));
7
7
  var _visitor = require("./visitor.cjs");
8
8
  var _ephemeralArray = _interopRequireDefault(require("./ast/ephemeral-array.cjs"));
9
9
  var _ephemeralObject = _interopRequireDefault(require("./ast/ephemeral-object.cjs"));
10
+ var _index = require("../../../predicates/index.cjs");
10
11
  /* eslint-disable @typescript-eslint/naming-convention */
11
12
  const Visitor = _stampit.default.init(function _Visitor() {
12
13
  const references = new WeakMap();
@@ -61,7 +62,12 @@ const Visitor = _stampit.default.init(function _Visitor() {
61
62
  /* eslint-enable */
62
63
 
63
64
  const serializer = element => {
65
+ if (!(0, _index.isElement)(element)) return element;
66
+
67
+ // shortcut optimization for certain element types
68
+ if ((0, _index.isStringElement)(element) || (0, _index.isNumberElement)(element) || (0, _index.isBooleanElement)(element) || (0, _index.isNullElement)(element)) {
69
+ return element.toValue();
70
+ }
64
71
  return (0, _visitor.visit)(element, Visitor());
65
72
  };
66
- var _default = serializer;
67
- exports.default = _default;
73
+ var _default = exports.default = serializer;
@@ -3,7 +3,7 @@
3
3
  exports.__esModule = true;
4
4
  exports.visit = void 0;
5
5
  var _ramda = require("ramda");
6
- var _visitor = require("../../traversal/visitor.cjs");
6
+ var _visitor = require("../../../traversal/visitor.cjs");
7
7
  const nodeTypeGetter = node => {
8
8
  if (typeof (node == null ? void 0 : node.type) === 'string') {
9
9
  return node.type;
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
4
4
  exports.__esModule = true;
5
5
  exports.default = void 0;
6
6
  var _stampit = _interopRequireDefault(require("stampit"));
7
- var _visitor = require("../traversal/visitor.cjs");
7
+ var _visitor = require("../../traversal/visitor.cjs");
8
8
  var _index = _interopRequireDefault(require("./value/index.cjs"));
9
9
  const YamlVisitor = (0, _stampit.default)({
10
10
  props: {
@@ -88,5 +88,4 @@ const serializer = (element, {
88
88
  (0, _visitor.visit)(element, visitor);
89
89
  return visitor.result;
90
90
  };
91
- var _default = serializer;
92
- exports.default = _default;
91
+ var _default = exports.default = serializer;
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
4
4
  exports.__esModule = true;
5
5
  exports.default = void 0;
6
6
  var _stampit = _interopRequireDefault(require("stampit"));
7
- var _visitor = require("./traversal/visitor.cjs");
7
+ var _visitor = require("../traversal/visitor.cjs");
8
8
  const SymbolicExpressionsVisitor = (0, _stampit.default)({
9
9
  props: {
10
10
  nestingLevel: 0,
@@ -34,5 +34,4 @@ const sexprs = element => {
34
34
  (0, _visitor.visit)(element, visitor);
35
35
  return visitor.result;
36
36
  };
37
- var _default = sexprs;
38
- exports.default = _default;
37
+ var _default = exports.default = sexprs;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
+ exports.__esModule = true;
5
+ exports.default = void 0;
6
+ var _namespace = _interopRequireDefault(require("../namespace.cjs"));
7
+ var _dehydrate = _interopRequireDefault(require("./dehydrate.cjs"));
8
+ /**
9
+ * Create a refracted string representation of an Element.
10
+ */
11
+ const toString = (element, namespace = _namespace.default) => {
12
+ const refractStructure = (0, _dehydrate.default)(element, namespace);
13
+ return JSON.stringify(refractStructure);
14
+ };
15
+ var _default = exports.default = toString;
@@ -12,5 +12,4 @@ const filter = (predicate, element) => {
12
12
  (0, _visitor.visit)(element, visitor);
13
13
  return new _minim.ArraySlice(visitor.result);
14
14
  };
15
- var _default = filter;
16
- exports.default = _default;
15
+ var _default = exports.default = filter;
@@ -13,5 +13,4 @@ const find = (predicate, element) => {
13
13
  (0, _visitor.visit)(element, visitor);
14
14
  return (0, _ramda.pathOr)(undefined, [0], visitor.result);
15
15
  };
16
- var _default = find;
17
- exports.default = _default;
16
+ var _default = exports.default = find;
@@ -8,6 +8,7 @@ var _ramda = require("ramda");
8
8
  var _ramdaAdjunct = require("ramda-adjunct");
9
9
  var _index = require("../predicates/index.cjs");
10
10
  var _visitor = require("./visitor.cjs");
11
+ var _index2 = _interopRequireDefault(require("../transformers/serializers/value/index.cjs"));
11
12
  const Visitor = (0, _stampit.default)({
12
13
  props: {
13
14
  result: [],
@@ -30,8 +31,8 @@ const Visitor = (0, _stampit.default)({
30
31
  }
31
32
 
32
33
  const sourceMapElement = element.getMetaProperty('sourceMap');
33
- const charStart = sourceMapElement.positionStart.get(2).toValue();
34
- const charEnd = sourceMapElement.positionEnd.get(2).toValue();
34
+ const charStart = (0, _index2.default)(sourceMapElement.positionStart.get(2));
35
+ const charEnd = (0, _index2.default)(sourceMapElement.positionEnd.get(2));
35
36
  const isWithinOffsetRange = this.offset >= charStart && (this.offset < charEnd || this.includeRightBound && this.offset <= charEnd);
36
37
  if (isWithinOffsetRange) {
37
38
  this.result.push(element);
@@ -63,5 +64,4 @@ const findAtOffset = (options, element) => {
63
64
  (0, _visitor.visit)(element, visitor);
64
65
  return (0, _ramda.last)(visitor.result);
65
66
  };
66
- var _default = findAtOffset;
67
- exports.default = _default;
67
+ var _default = exports.default = findAtOffset;
@@ -42,5 +42,4 @@ const parents = element => {
42
42
  (0, _visitor.visit)(element, visitor);
43
43
  return visitor.parentEdges;
44
44
  };
45
- var _default = parents;
46
- exports.default = _default;
45
+ var _default = exports.default = parents;
@@ -9,5 +9,4 @@ var _filter = _interopRequireDefault(require("./filter.cjs"));
9
9
  const reject = (predicate, element) => {
10
10
  return (0, _filter.default)((0, _ramda.complement)(predicate), element);
11
11
  };
12
- var _default = reject;
13
- exports.default = _default;
12
+ var _default = exports.default = reject;
@@ -9,5 +9,4 @@ var _find = _interopRequireDefault(require("./find.cjs"));
9
9
  const some = (predicate, element) => {
10
10
  return (0, _ramdaAdjunct.isNotUndefined)((0, _find.default)(predicate, element));
11
11
  };
12
- var _default = some;
13
- exports.default = _default;
12
+ var _default = exports.default = some;
@@ -8,7 +8,7 @@ var _ramda = require("ramda");
8
8
  var _ramdaAdjunct = require("ramda-adjunct");
9
9
  var _visitor = require("./visitor.cjs");
10
10
  var _index = require("../predicates/index.cjs");
11
- const CallbackVisitor = (0, _stampit.default)(_visitor.PredicateVisitor, {
11
+ const CallbackVisitor = exports.CallbackVisitor = (0, _stampit.default)(_visitor.PredicateVisitor, {
12
12
  props: {
13
13
  callback: _ramdaAdjunct.noop
14
14
  },
@@ -30,7 +30,6 @@ const CallbackVisitor = (0, _stampit.default)(_visitor.PredicateVisitor, {
30
30
  });
31
31
 
32
32
  // executes the callback on this element and all descendants
33
- exports.CallbackVisitor = CallbackVisitor;
34
33
  const traverse = (options, element) => {
35
34
  let callback;
36
35
  let predicate;
@@ -49,5 +48,4 @@ const traverse = (options, element) => {
49
48
  // @ts-ignore
50
49
  (0, _visitor.visit)(element, visitor);
51
50
  };
52
- var _default = traverse;
53
- exports.default = _default;
51
+ var _default = exports.default = traverse;
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
4
  exports.__esModule = true;
5
- exports.visit = exports.keyMapDefault = exports.isNode = exports.getNodeType = exports.PredicateVisitor = void 0;
5
+ exports.visit = exports.keyMapDefault = exports.isNode = exports.getNodeType = exports.cloneNode = exports.PredicateVisitor = void 0;
6
6
  var _stampit = _interopRequireDefault(require("stampit"));
7
7
  var _ramda = require("ramda");
8
8
  var _ramdaAdjunct = require("ramda-adjunct");
@@ -10,6 +10,7 @@ var _apidomAst = require("@swagger-api/apidom-ast");
10
10
  exports.BREAK = _apidomAst.BREAK;
11
11
  exports.mergeAllVisitors = _apidomAst.mergeAllVisitors;
12
12
  var _index = require("../predicates/index.cjs");
13
+ var _index2 = require("../clone/index.cjs");
13
14
  // getNodeType :: Node -> String
14
15
  const getNodeType = element => {
15
16
  /*
@@ -24,11 +25,19 @@ const getNodeType = element => {
24
25
  /* eslint-enable */
25
26
  };
26
27
 
27
- // isNode :: Node -> Boolean
28
+ // cloneNode :: a -> a
28
29
  exports.getNodeType = getNodeType;
29
- const isNode = (0, _ramda.pipe)(getNodeType, _ramdaAdjunct.isString);
30
- exports.isNode = isNode;
31
- const keyMapDefault = {
30
+ const cloneNode = node => {
31
+ if ((0, _index.isElement)(node)) {
32
+ return (0, _index2.cloneShallow)(node);
33
+ }
34
+ return (0, _apidomAst.cloneNode)(node);
35
+ };
36
+
37
+ // isNode :: Node -> Boolean
38
+ exports.cloneNode = cloneNode;
39
+ const isNode = exports.isNode = (0, _ramda.pipe)(getNodeType, _ramdaAdjunct.isString);
40
+ const keyMapDefault = exports.keyMapDefault = {
32
41
  ObjectElement: ['content'],
33
42
  ArrayElement: ['content'],
34
43
  MemberElement: ['key', 'value'],
@@ -43,8 +52,7 @@ const keyMapDefault = {
43
52
  ParseResultElement: ['content'],
44
53
  SourceMap: ['content']
45
54
  };
46
- exports.keyMapDefault = keyMapDefault;
47
- const PredicateVisitor = (0, _stampit.default)({
55
+ const PredicateVisitor = exports.PredicateVisitor = (0, _stampit.default)({
48
56
  props: {
49
57
  result: [],
50
58
  predicate: _ramda.F,
@@ -76,7 +84,6 @@ const PredicateVisitor = (0, _stampit.default)({
76
84
  });
77
85
 
78
86
  // @ts-ignore
79
- exports.PredicateVisitor = PredicateVisitor;
80
87
  const visit = (root,
81
88
  // @ts-ignore
82
89
  visitor, {
@@ -90,6 +97,7 @@ visitor, {
90
97
  // @ts-ignore
91
98
  nodeTypeGetter: getNodeType,
92
99
  nodePredicate: isNode,
100
+ nodeCloneFn: cloneNode,
93
101
  ...rest
94
102
  });
95
103
  };
@@ -109,6 +117,7 @@ visitor, {
109
117
  // @ts-ignore
110
118
  nodeTypeGetter: getNodeType,
111
119
  nodePredicate: isNode,
120
+ nodeCloneFn: cloneNode,
112
121
  ...rest
113
122
  });
114
123
  };