@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
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
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
+ # [0.77.0](https://github.com/swagger-api/apidom/compare/v0.76.2...v0.77.0) (2023-10-03)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **core:** always perform immutable async traversal ([#3164](https://github.com/swagger-api/apidom/issues/3164)) ([a47f870](https://github.com/swagger-api/apidom/commit/a47f87018fcca235bd1490e1f014bcdd2430b2d5)), closes [#3110](https://github.com/swagger-api/apidom/issues/3110)
11
+ - **core:** always perform immutable traversal ([#3163](https://github.com/swagger-api/apidom/issues/3163)) ([f2fcab0](https://github.com/swagger-api/apidom/commit/f2fcab0c7a68ca0c39fae6165ff9b5fdf0f12e52)), closes [#3110](https://github.com/swagger-api/apidom/issues/3110)
12
+
13
+ ### Features
14
+
15
+ - **core:** introduce functions for shallow and deep cloning ([#3158](https://github.com/swagger-api/apidom/issues/3158)) ([549a7ff](https://github.com/swagger-api/apidom/commit/549a7ff01396a0a9ecb02171c9f817bcfe0f4af6)), closes [#3110](https://github.com/swagger-api/apidom/issues/3110)
16
+
6
17
  ## [0.76.2](https://github.com/swagger-api/apidom/compare/v0.76.1...v0.76.2) (2023-09-08)
7
18
 
8
19
  ### Bug Fixes
package/README.md CHANGED
@@ -560,14 +560,35 @@ traverse({ callback: console.dir, predicate: isNumberElement }, arrayElement); /
560
560
 
561
561
  Computes upwards edges from every child to its parent.
562
562
 
563
+ #### ObjectElement example
564
+
563
565
  ```js
564
- import { ObjectElement, parents } from '@swagger-api/apidom-core';
566
+ import { parents, ObjectElement } from '@swagger-api/apidom-core';
565
567
 
566
- const objectElement = new ObjectElement({
567
- a: [1, 2, { b: 'c', d: 'e' }],
568
- });
568
+ const objectElement = new ObjectElement({ key: 'value' });
569
+ const memberElement = objectElement.getMember('key');
570
+ const { key: keyElement, value: valueElement } = memberElement;
569
571
 
570
- const parentEdges = parents(objectElement); // => WeakMap<childElement, parentElement>
572
+ const parentEdges = parents(objectElement); // => WeakMap<ChildElement, ParentElement>
573
+
574
+ parentEdges.get(memberElement) === objectElement; // => true
575
+ parentEdges.get(keyElement) === memberElement; // => true
576
+ parentEdges.get(valueElement) === memberElement; // => true
577
+ ```
578
+
579
+ #### ArrayElement example
580
+
581
+ ```js
582
+ import { parents, ArrayElement, StringElement } from '@swagger-api/apidom-core';
583
+
584
+ const itemElement1 = new StringElement('item1');
585
+ const itemElement2 = new StringElement('item2');
586
+ const arrayElement = new ArrayElement([itemElement1, itemElement2]);
587
+
588
+ const parentEdges = parents(arrayElement); // => WeakMap<ChildElement, ParentElement>
589
+
590
+ parentEdges.get(itemElement1) === arrayElement; // => true
591
+ parentEdges.get(itemElement2) === arrayElement; // => true
571
592
  ```
572
593
 
573
594
  ---
@@ -677,3 +698,30 @@ const numberElement = new NumberElement(1);
677
698
 
678
699
  toString(numberElement); // => '{"element":"number","content":1}'
679
700
  ```
701
+
702
+ ## Cloning
703
+
704
+ Following functions provide mechanism for creating shallow and deep copies of ApiDOM elements.
705
+
706
+ ### Shallow cloning
707
+
708
+ Creates shallow clone of ApiDOM element.
709
+
710
+ ```js
711
+ import { cloneShallow, ObjectElement } from '@swagger-api/apidom-core';
712
+
713
+ const objectElement = new ObjectElement({ a: 'b' });
714
+ const objectElementShallowClone = cloneShallow(objectElement);
715
+ ```
716
+
717
+ ### Deep cloning
718
+
719
+ Creates deep clone of ApiDOM Element.
720
+
721
+ ```js
722
+ import { cloneDeep, ObjectElement } from '@swagger-api/apidom-core';
723
+
724
+ const objectElement = new ObjectElement({ a: 'b' });
725
+ const objectElementDeepClone = cloneDeep(objectElement);
726
+ ```
727
+
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+ var _apidomError = require("@swagger-api/apidom-error");
6
+ class CloneError extends _apidomError.ApiDOMStructuredError {}
7
+ var _default = exports.default = CloneError;
@@ -0,0 +1,8 @@
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 _CloneError = _interopRequireDefault(require("./CloneError.cjs"));
7
+ class DeepCloneError extends _CloneError.default {}
8
+ var _default = exports.default = DeepCloneError;
@@ -0,0 +1,8 @@
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 _CloneError = _interopRequireDefault(require("./CloneError.cjs"));
7
+ class ShallowCloneError extends _CloneError.default {}
8
+ var _default = exports.default = ShallowCloneError;
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
+ exports.__esModule = true;
5
+ exports.cloneShallow = exports.cloneDeep = void 0;
6
+ var _minim = require("minim");
7
+ var _index = require("../predicates/index.cjs");
8
+ var _DeepCloneError = _interopRequireDefault(require("./errors/DeepCloneError.cjs"));
9
+ var _ShallowCloneError = _interopRequireDefault(require("./errors/ShallowCloneError.cjs"));
10
+ const invokeClone = value => {
11
+ if (typeof (value == null ? void 0 : value.clone) === 'function') {
12
+ return value.clone();
13
+ }
14
+ return value;
15
+ };
16
+ const cloneDeep = value => {
17
+ if (value instanceof _minim.ObjectSlice) {
18
+ const items = [...value].map(invokeClone);
19
+ return new _minim.ObjectSlice(items);
20
+ }
21
+ if (value instanceof _minim.ArraySlice) {
22
+ const items = [...value].map(invokeClone);
23
+ return new _minim.ArraySlice(items);
24
+ }
25
+ if (typeof (value == null ? void 0 : value.clone) === 'function') {
26
+ return value.clone();
27
+ }
28
+ throw new _DeepCloneError.default("Value provided to cloneDeep function couldn't be cloned", {
29
+ value
30
+ });
31
+ };
32
+ exports.cloneDeep = cloneDeep;
33
+ cloneDeep.safe = value => {
34
+ try {
35
+ return cloneDeep(value);
36
+ } catch {
37
+ return value;
38
+ }
39
+ };
40
+ const cloneShallowKeyValuePair = keyValuePair => {
41
+ const {
42
+ key,
43
+ value
44
+ } = keyValuePair;
45
+ return new _minim.KeyValuePair(key, value);
46
+ };
47
+ const cloneShallowArraySlice = arraySlice => {
48
+ const items = [...arraySlice];
49
+ return new _minim.ArraySlice(items);
50
+ };
51
+ const cloneShallowObjectSlice = objectSlice => {
52
+ const items = [...objectSlice];
53
+ return new _minim.ObjectSlice(items);
54
+ };
55
+
56
+ /* eslint-disable no-underscore-dangle */
57
+ const cloneShallowElement = element => {
58
+ // @ts-ignore
59
+ const copy = new element.constructor();
60
+ copy.element = element.element;
61
+ if (element.meta.length > 0) {
62
+ copy._meta = cloneDeep(element.meta);
63
+ }
64
+ if (element.attributes.length > 0) {
65
+ copy._attributes = cloneDeep(element.attributes);
66
+ }
67
+ if ((0, _index.isElement)(element.content)) {
68
+ const content = element.content;
69
+ copy.content = cloneShallowElement(content);
70
+ } else if (Array.isArray(element.content)) {
71
+ copy.content = [...element.content];
72
+ } else if (element.content instanceof _minim.KeyValuePair) {
73
+ copy.content = cloneShallowKeyValuePair(element.content);
74
+ } else {
75
+ copy.content = element.content;
76
+ }
77
+ return copy;
78
+ };
79
+ /* eslint-enable */
80
+
81
+ const cloneShallow = value => {
82
+ if (value instanceof _minim.KeyValuePair) {
83
+ return cloneShallowKeyValuePair(value);
84
+ }
85
+ if (value instanceof _minim.ObjectSlice) {
86
+ return cloneShallowObjectSlice(value);
87
+ }
88
+ if (value instanceof _minim.ArraySlice) {
89
+ return cloneShallowArraySlice(value);
90
+ }
91
+ if ((0, _index.isElement)(value)) {
92
+ return cloneShallowElement(value);
93
+ }
94
+ throw new _ShallowCloneError.default("Value provided to cloneShallow function couldn't be cloned", {
95
+ value
96
+ });
97
+ };
98
+ exports.cloneShallow = cloneShallow;
99
+ cloneShallow.safe = value => {
100
+ try {
101
+ return cloneShallow(value);
102
+ } catch {
103
+ return value;
104
+ }
105
+ };
package/cjs/deepmerge.cjs CHANGED
@@ -1,19 +1,21 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
3
4
  exports.__esModule = true;
4
5
  exports.default = deepmerge;
5
6
  var _minim = require("minim");
6
7
  var _index = require("./predicates/index.cjs");
8
+ var _index2 = require("./clone/index.cjs");
9
+ var _index3 = _interopRequireDefault(require("./transformers/serializers/value/index.cjs"));
7
10
  /* eslint-disable @typescript-eslint/no-use-before-define */
8
11
 
9
12
  const emptyElement = element => {
10
- const meta = element.meta.clone();
11
- const attributes = element.attributes.clone();
13
+ const meta = (0, _index2.cloneDeep)(element.meta);
14
+ const attributes = (0, _index2.cloneDeep)(element.attributes);
12
15
 
13
16
  // @ts-ignore
14
17
  return new element.constructor(undefined, meta, attributes);
15
18
  };
16
- const cloneMemberElement = memberElement => new _minim.MemberElement(memberElement.key, memberElement.value, memberElement.meta.clone(), memberElement.attributes.clone());
17
19
  const cloneUnlessOtherwiseSpecified = (element, options) => options.clone && options.isMergeableElement(element) ? deepmerge(emptyElement(element), element, options) : element;
18
20
  const getMergeFunction = (keyElement, options) => {
19
21
  if (typeof options.customMerge !== 'function') {
@@ -27,20 +29,20 @@ const mergeObjectElement = (targetElement, sourceElement, options) => {
27
29
  const destination = (0, _index.isObjectElement)(targetElement) ? emptyElement(targetElement) : emptyElement(sourceElement);
28
30
  if ((0, _index.isObjectElement)(targetElement)) {
29
31
  targetElement.forEach((value, key, member) => {
30
- const clonedMember = cloneMemberElement(member);
32
+ const clonedMember = (0, _index2.cloneShallow)(member);
31
33
  clonedMember.value = cloneUnlessOtherwiseSpecified(value, options);
32
34
  destination.content.push(clonedMember);
33
35
  });
34
36
  }
35
37
  sourceElement.forEach((value, key, member) => {
36
- const keyValue = key.toValue();
38
+ const keyValue = (0, _index3.default)(key);
37
39
  let clonedMember;
38
40
  if ((0, _index.isObjectElement)(targetElement) && targetElement.hasKey(keyValue) && options.isMergeableElement(value)) {
39
41
  const targetValue = targetElement.get(keyValue);
40
- clonedMember = cloneMemberElement(member);
42
+ clonedMember = (0, _index2.cloneShallow)(member);
41
43
  clonedMember.value = getMergeFunction(key, options)(targetValue, value);
42
44
  } else {
43
- clonedMember = cloneMemberElement(member);
45
+ clonedMember = (0, _index2.cloneShallow)(member);
44
46
  clonedMember.value = cloneUnlessOtherwiseSpecified(value, options);
45
47
  }
46
48
  destination.remove(keyValue);
@@ -17,5 +17,4 @@ class Annotation extends _minim.StringElement {
17
17
  this.attributes.set('code', value);
18
18
  }
19
19
  }
20
- var _default = Annotation;
21
- exports.default = _default;
20
+ var _default = exports.default = Annotation;
@@ -9,5 +9,4 @@ class Comment extends _minim.StringElement {
9
9
  this.element = 'comment';
10
10
  }
11
11
  }
12
- var _default = Comment;
13
- exports.default = _default;
12
+ var _default = exports.default = Comment;
@@ -47,5 +47,4 @@ class ParseResult extends _minim.ArrayElement {
47
47
  return true;
48
48
  }
49
49
  }
50
- var _default = ParseResult;
51
- exports.default = _default;
50
+ var _default = exports.default = ParseResult;
@@ -25,5 +25,4 @@ class SourceMap extends _minim.ArrayElement {
25
25
  this.push(start).push(end);
26
26
  }
27
27
  }
28
- var _default = SourceMap;
29
- exports.default = _default;
28
+ var _default = exports.default = SourceMap;
package/cjs/index.cjs CHANGED
@@ -1,20 +1,11 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
3
  var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
4
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
5
5
  exports.__esModule = true;
6
- exports.visit = exports.traverse = exports.transclude = exports.toYAML = exports.toValue = exports.toString = exports.toJSON = exports.some = exports.sexprs = exports.reject = exports.refractorPluginSemanticElementIdentity = exports.refractorPluginElementIdentity = exports.refract = exports.parents = exports.namespace = exports.mergeAllVisitors = exports.keyMap = exports.isStringElement = exports.isSourceMapElement = exports.isRefElement = exports.isPrimitiveElement = exports.isParseResultElement = exports.isObjectElement = exports.isNumberElement = exports.isNullElement = exports.isMemberElement = exports.isLinkElement = exports.isElement = exports.isBooleanElement = exports.isArrayElement = exports.isAnnotationElement = exports.includesSymbols = exports.includesClasses = exports.hasElementSourceMap = exports.getNodeType = exports.from = exports.findAtOffset = exports.find = exports.filter = exports.dispatchRefractorPlugins = exports.dereference = exports.dehydrate = exports.deepmerge = exports.createPredicate = exports.createNamespace = exports.Transcluder = exports.StringElement = exports.SourceMapElement = exports.RefElement = exports.ParseResultElement = exports.ObjectSlice = exports.ObjectElement = exports.NumberElement = exports.NullElement = exports.Namespace = exports.MemberElement = exports.MediaTypes = exports.LinkElement = exports.KeyValuePair = exports.Element = exports.CommentElement = exports.BooleanElement = exports.BREAK = exports.ArraySlice = exports.ArrayElement = exports.AnnotationElement = void 0;
7
- var _ramda = require("ramda");
8
- var _ramdaAdjunct = require("ramda-adjunct");
9
- var _namespace = _interopRequireWildcard(require("./namespace.cjs"));
10
- exports.namespace = _namespace.default;
11
- exports.Namespace = _namespace.Namespace;
12
- exports.createNamespace = _namespace.createNamespace;
13
- var _index = _interopRequireDefault(require("./serializers/value/index.cjs"));
14
- var _json = _interopRequireDefault(require("./serializers/json.cjs"));
15
- var _yaml = _interopRequireDefault(require("./serializers/yaml-1-2.cjs"));
16
- var _index2 = require("./refractor/plugins/utils/index.cjs");
17
- exports.dispatchRefractorPlugins = _index2.dispatchPlugins;
6
+ exports.visit = exports.traverse = exports.transclude = exports.toYAML = exports.toValue = exports.toString = exports.toJSON = exports.some = exports.sexprs = exports.reject = exports.refractorPluginSemanticElementIdentity = exports.refractorPluginElementIdentity = exports.refract = exports.parents = exports.namespace = exports.mergeAllVisitors = exports.keyMap = exports.isStringElement = exports.isSourceMapElement = exports.isRefElement = exports.isPrimitiveElement = exports.isParseResultElement = exports.isObjectElement = exports.isNumberElement = exports.isNullElement = exports.isMemberElement = exports.isLinkElement = exports.isElement = exports.isBooleanElement = exports.isArrayElement = exports.isAnnotationElement = exports.includesSymbols = exports.includesClasses = exports.hasElementSourceMap = exports.getNodeType = exports.from = exports.findAtOffset = exports.find = exports.filter = exports.dispatchRefractorPlugins = exports.dereference = exports.dehydrate = exports.deepmerge = exports.createPredicate = exports.createNamespace = exports.cloneShallow = exports.cloneNode = exports.cloneDeep = exports.Transcluder = exports.StringElement = exports.SourceMapElement = exports.ShallowCloneError = exports.RefElement = exports.ParseResultElement = exports.ObjectSlice = exports.ObjectElement = exports.NumberElement = exports.NullElement = exports.Namespace = exports.MemberElement = exports.MediaTypes = exports.LinkElement = exports.KeyValuePair = exports.Element = exports.DeepCloneError = exports.CommentElement = exports.CloneError = exports.BooleanElement = exports.BREAK = exports.ArraySlice = exports.ArrayElement = exports.AnnotationElement = void 0;
7
+ var _index = require("./refractor/plugins/utils/index.cjs");
8
+ exports.dispatchRefractorPlugins = _index.dispatchPlugins;
18
9
  var _elementIdentity = _interopRequireDefault(require("./refractor/plugins/element-identity.cjs"));
19
10
  exports.refractorPluginElementIdentity = _elementIdentity.default;
20
11
  var _semanticElementIdentity = _interopRequireDefault(require("./refractor/plugins/semantic-element-identity.cjs"));
@@ -28,6 +19,10 @@ exports.KeyValuePair = _minim.KeyValuePair;
28
19
  exports.ObjectSlice = _minim.ObjectSlice;
29
20
  exports.ArraySlice = _minim.ArraySlice;
30
21
  exports.refract = _minim.refract;
22
+ var _namespace = _interopRequireWildcard(require("./namespace.cjs"));
23
+ exports.namespace = _namespace.default;
24
+ exports.Namespace = _namespace.Namespace;
25
+ exports.createNamespace = _namespace.createNamespace;
31
26
  var _registration = require("./refractor/registration.cjs");
32
27
  exports.ObjectElement = _registration.ObjectElement;
33
28
  exports.ArrayElement = _registration.ArrayElement;
@@ -41,103 +36,68 @@ exports.AnnotationElement = _registration.AnnotationElement;
41
36
  exports.CommentElement = _registration.CommentElement;
42
37
  exports.ParseResultElement = _registration.ParseResultElement;
43
38
  exports.SourceMapElement = _registration.SourceMapElement;
44
- var _index3 = require("./predicates/index.cjs");
45
- exports.isElement = _index3.isElement;
46
- exports.isStringElement = _index3.isStringElement;
47
- exports.isNumberElement = _index3.isNumberElement;
48
- exports.isNullElement = _index3.isNullElement;
49
- exports.isBooleanElement = _index3.isBooleanElement;
50
- exports.isArrayElement = _index3.isArrayElement;
51
- exports.isObjectElement = _index3.isObjectElement;
52
- exports.isMemberElement = _index3.isMemberElement;
53
- exports.isLinkElement = _index3.isLinkElement;
54
- exports.isRefElement = _index3.isRefElement;
55
- exports.isAnnotationElement = _index3.isAnnotationElement;
56
- exports.isParseResultElement = _index3.isParseResultElement;
57
- exports.isSourceMapElement = _index3.isSourceMapElement;
58
- exports.isPrimitiveElement = _index3.isPrimitiveElement;
59
- exports.hasElementSourceMap = _index3.hasElementSourceMap;
60
- exports.includesSymbols = _index3.includesSymbols;
61
- exports.includesClasses = _index3.includesClasses;
39
+ var _index2 = require("./predicates/index.cjs");
40
+ exports.isElement = _index2.isElement;
41
+ exports.isStringElement = _index2.isStringElement;
42
+ exports.isNumberElement = _index2.isNumberElement;
43
+ exports.isNullElement = _index2.isNullElement;
44
+ exports.isBooleanElement = _index2.isBooleanElement;
45
+ exports.isArrayElement = _index2.isArrayElement;
46
+ exports.isObjectElement = _index2.isObjectElement;
47
+ exports.isMemberElement = _index2.isMemberElement;
48
+ exports.isLinkElement = _index2.isLinkElement;
49
+ exports.isRefElement = _index2.isRefElement;
50
+ exports.isAnnotationElement = _index2.isAnnotationElement;
51
+ exports.isParseResultElement = _index2.isParseResultElement;
52
+ exports.isSourceMapElement = _index2.isSourceMapElement;
53
+ exports.isPrimitiveElement = _index2.isPrimitiveElement;
54
+ exports.hasElementSourceMap = _index2.hasElementSourceMap;
55
+ exports.includesSymbols = _index2.includesSymbols;
56
+ exports.includesClasses = _index2.includesClasses;
62
57
  var _helpers = _interopRequireDefault(require("./predicates/helpers.cjs"));
63
58
  exports.createPredicate = _helpers.default;
64
- var _index4 = require("./traversal/index.cjs");
65
- exports.filter = _index4.filter;
66
- exports.reject = _index4.reject;
67
- exports.find = _index4.find;
68
- exports.findAtOffset = _index4.findAtOffset;
69
- exports.some = _index4.some;
70
- exports.traverse = _index4.traverse;
71
- exports.parents = _index4.parents;
59
+ var _index3 = require("./traversal/index.cjs");
60
+ exports.filter = _index3.filter;
61
+ exports.reject = _index3.reject;
62
+ exports.find = _index3.find;
63
+ exports.findAtOffset = _index3.findAtOffset;
64
+ exports.some = _index3.some;
65
+ exports.traverse = _index3.traverse;
66
+ exports.parents = _index3.parents;
72
67
  var _visitor = require("./traversal/visitor.cjs");
73
68
  exports.visit = _visitor.visit;
74
69
  exports.BREAK = _visitor.BREAK;
75
70
  exports.mergeAllVisitors = _visitor.mergeAllVisitors;
76
71
  exports.getNodeType = _visitor.getNodeType;
72
+ exports.cloneNode = _visitor.cloneNode;
77
73
  exports.keyMap = _visitor.keyMapDefault;
78
- var _index5 = _interopRequireWildcard(require("./transcluder/index.cjs"));
79
- exports.transclude = _index5.transclude;
80
- exports.Transcluder = _index5.default;
74
+ var _index4 = _interopRequireWildcard(require("./transcluder/index.cjs"));
75
+ exports.transclude = _index4.transclude;
76
+ exports.Transcluder = _index4.default;
81
77
  var _util = require("./util.cjs");
82
78
  exports.dereference = _util.dereference;
83
- var _sexprs = _interopRequireDefault(require("./sexprs.cjs"));
79
+ var _index5 = require("./clone/index.cjs");
80
+ exports.cloneShallow = _index5.cloneShallow;
81
+ exports.cloneDeep = _index5.cloneDeep;
82
+ var _CloneError = _interopRequireDefault(require("./clone/errors/CloneError.cjs"));
83
+ exports.CloneError = _CloneError.default;
84
+ var _DeepCloneError = _interopRequireDefault(require("./clone/errors/DeepCloneError.cjs"));
85
+ exports.DeepCloneError = _DeepCloneError.default;
86
+ var _ShallowCloneError = _interopRequireDefault(require("./clone/errors/ShallowCloneError.cjs"));
87
+ exports.ShallowCloneError = _ShallowCloneError.default;
88
+ var _from = _interopRequireDefault(require("./transformers/from.cjs"));
89
+ exports.from = _from.default;
90
+ var _index6 = _interopRequireDefault(require("./transformers/serializers/value/index.cjs"));
91
+ exports.toValue = _index6.default;
92
+ var _json = _interopRequireDefault(require("./transformers/serializers/json.cjs"));
93
+ exports.toJSON = _json.default;
94
+ var _yaml = _interopRequireDefault(require("./transformers/serializers/yaml-1-2.cjs"));
95
+ exports.toYAML = _yaml.default;
96
+ var _dehydrate = _interopRequireDefault(require("./transformers/dehydrate.cjs"));
97
+ exports.dehydrate = _dehydrate.default;
98
+ var _toString = _interopRequireDefault(require("./transformers/to-string.cjs"));
99
+ exports.toString = _toString.default;
100
+ var _sexprs = _interopRequireDefault(require("./transformers/sexprs.cjs"));
84
101
  exports.sexprs = _sexprs.default;
85
102
  var _deepmerge = _interopRequireDefault(require("./deepmerge.cjs"));
86
- exports.deepmerge = _deepmerge.default;
87
- /**
88
- * Transforms data to an Element from a particular namespace.
89
- */
90
- const from = (data, namespace = _namespace.default) => {
91
- if ((0, _ramdaAdjunct.isString)(data)) {
92
- // JSON serialized refract
93
- try {
94
- return namespace.fromRefract(JSON.parse(data));
95
- } catch {
96
- // noop
97
- }
98
- }
99
- if ((0, _ramdaAdjunct.isPlainObject)(data) && (0, _ramda.has)('element', data)) {
100
- // refract javascript structure
101
- return namespace.fromRefract(data);
102
- }
103
- return namespace.toElement(data);
104
- };
105
-
106
- /**
107
- * Transforms the ApiDOM into JavaScript POJO.
108
- * This POJO would be the result of interpreting the ApiDOM
109
- * into JavaScript structure.
110
- */
111
- exports.from = from;
112
- const toValue = _index.default;
113
-
114
- /**
115
- * Transforms the ApiDOM into JSON string.
116
- */
117
- exports.toValue = toValue;
118
- const toJSON = _json.default;
119
-
120
- /**
121
- * Transforms the ApiDOM into YAML string.
122
- */
123
- exports.toJSON = toJSON;
124
- const toYAML = _yaml.default;
125
-
126
- /**
127
- * Creates a refract representation of an Element.
128
- * https://github.com/refractproject/refract-spec
129
- */
130
- exports.toYAML = toYAML;
131
- const dehydrate = (element, namespace = _namespace.default) => {
132
- return namespace.toRefract(element);
133
- };
134
-
135
- /**
136
- * Create a refracted string representation of an Element.
137
- */
138
- exports.dehydrate = dehydrate;
139
- const toString = (element, namespace = _namespace.default) => {
140
- const refractStructure = dehydrate(element, namespace);
141
- return JSON.stringify(refractStructure);
142
- };
143
- exports.toString = toString;
103
+ exports.deepmerge = _deepmerge.default;
@@ -21,5 +21,4 @@ class MediaTypes extends Array {
21
21
  throw new _apidomError.NotImplementedError('"latest" method is not implemented.');
22
22
  }
23
23
  }
24
- var _default = MediaTypes;
25
- exports.default = _default;
24
+ var _default = exports.default = MediaTypes;
package/cjs/namespace.cjs CHANGED
@@ -28,5 +28,4 @@ const createNamespace = namespacePlugin => {
28
28
  return namespaceInstance;
29
29
  };
30
30
  exports.createNamespace = createNamespace;
31
- var _default = namespace;
32
- exports.default = _default;
31
+ var _default = exports.default = namespace;
@@ -21,5 +21,4 @@ const createPredicate = predicateCreator => {
21
21
  hasClass
22
22
  });
23
23
  };
24
- var _default = createPredicate;
25
- exports.default = _default;
24
+ var _default = exports.default = createPredicate;
@@ -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
  };