@swagger-api/apidom-core 0.76.2 → 0.77.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 (63) hide show
  1. package/CHANGELOG.md +11 -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 +1 -2
  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 +661 -375
  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/transformers/dehydrate.mjs +9 -0
  50. package/es/transformers/from.mjs +22 -0
  51. package/es/{serializers → transformers/serializers}/value/index.mjs +7 -0
  52. package/es/{serializers → transformers/serializers}/value/visitor.mjs +1 -1
  53. package/es/{serializers → transformers/serializers}/yaml-1-2.mjs +1 -1
  54. package/es/{sexprs.mjs → transformers/sexprs.mjs} +1 -1
  55. package/es/transformers/to-string.mjs +10 -0
  56. package/es/traversal/findAtOffset.mjs +3 -2
  57. package/es/traversal/visitor.mjs +13 -2
  58. package/package.json +4 -4
  59. package/types/dist.d.ts +47 -32
  60. package/types/minim.d.ts +14 -2
  61. /package/es/{serializers → transformers/serializers}/json.mjs +0 -0
  62. /package/es/{serializers → transformers/serializers}/value/ast/ephemeral-array.mjs +0 -0
  63. /package/es/{serializers → transformers/serializers}/value/ast/ephemeral-object.mjs +0 -0
@@ -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
  };