@speclynx/apidom-core 1.12.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.
Files changed (105) hide show
  1. package/CHANGELOG.md +82 -0
  2. package/LICENSE +202 -0
  3. package/LICENSES/AFL-3.0.txt +182 -0
  4. package/LICENSES/Apache-2.0.txt +202 -0
  5. package/LICENSES/BSD-3-Clause.txt +26 -0
  6. package/LICENSES/MIT.txt +9 -0
  7. package/NOTICE +65 -0
  8. package/README.md +881 -0
  9. package/dist/apidom-core.browser.js +14724 -0
  10. package/dist/apidom-core.browser.min.js +1 -0
  11. package/package.json +67 -0
  12. package/src/clone/errors/CloneError.cjs +22 -0
  13. package/src/clone/errors/CloneError.mjs +19 -0
  14. package/src/clone/errors/DeepCloneError.cjs +11 -0
  15. package/src/clone/errors/DeepCloneError.mjs +6 -0
  16. package/src/clone/errors/ShallowCloneError.cjs +11 -0
  17. package/src/clone/errors/ShallowCloneError.mjs +6 -0
  18. package/src/clone/index.cjs +155 -0
  19. package/src/clone/index.mjs +146 -0
  20. package/src/elements/Annotation.cjs +23 -0
  21. package/src/elements/Annotation.mjs +20 -0
  22. package/src/elements/Comment.cjs +15 -0
  23. package/src/elements/Comment.mjs +12 -0
  24. package/src/elements/ParseResult.cjs +53 -0
  25. package/src/elements/ParseResult.mjs +50 -0
  26. package/src/elements/SourceMap.cjs +39 -0
  27. package/src/elements/SourceMap.mjs +36 -0
  28. package/src/identity/errors/ElementIdentityError.cjs +22 -0
  29. package/src/identity/errors/ElementIdentityError.mjs +19 -0
  30. package/src/identity/index.cjs +62 -0
  31. package/src/identity/index.mjs +56 -0
  32. package/src/index.cjs +112 -0
  33. package/src/index.mjs +50 -0
  34. package/src/media-types.cjs +21 -0
  35. package/src/media-types.mjs +18 -0
  36. package/src/merge/deepmerge.cjs +151 -0
  37. package/src/merge/deepmerge.mjs +135 -0
  38. package/src/merge/merge-left.cjs +16 -0
  39. package/src/merge/merge-left.mjs +11 -0
  40. package/src/merge/merge-right.cjs +35 -0
  41. package/src/merge/merge-right.mjs +29 -0
  42. package/src/namespace.cjs +42 -0
  43. package/src/namespace.mjs +35 -0
  44. package/src/predicates/helpers.cjs +85 -0
  45. package/src/predicates/helpers.mjs +77 -0
  46. package/src/predicates/index.cjs +208 -0
  47. package/src/predicates/index.mjs +198 -0
  48. package/src/refractor/index.cjs +46 -0
  49. package/src/refractor/index.mjs +40 -0
  50. package/src/refractor/plugins/dispatcher/index.cjs +71 -0
  51. package/src/refractor/plugins/dispatcher/index.mjs +61 -0
  52. package/src/refractor/plugins/element-identity.cjs +31 -0
  53. package/src/refractor/plugins/element-identity.mjs +26 -0
  54. package/src/refractor/plugins/semantic-element-identity.cjs +38 -0
  55. package/src/refractor/plugins/semantic-element-identity.mjs +33 -0
  56. package/src/refractor/registration.cjs +34 -0
  57. package/src/refractor/registration.mjs +19 -0
  58. package/src/refractor/toolbox.cjs +29 -0
  59. package/src/refractor/toolbox.mjs +21 -0
  60. package/src/transcluder/Transcluder.cjs +111 -0
  61. package/src/transcluder/Transcluder.mjs +107 -0
  62. package/src/transcluder/index.cjs +19 -0
  63. package/src/transcluder/index.mjs +13 -0
  64. package/src/transformers/dehydrate.cjs +15 -0
  65. package/src/transformers/dehydrate.mjs +10 -0
  66. package/src/transformers/from.cjs +34 -0
  67. package/src/transformers/from.mjs +29 -0
  68. package/src/transformers/serializers/json.cjs +11 -0
  69. package/src/transformers/serializers/json.mjs +6 -0
  70. package/src/transformers/serializers/value/ast/ephemeral-array.cjs +21 -0
  71. package/src/transformers/serializers/value/ast/ephemeral-array.mjs +17 -0
  72. package/src/transformers/serializers/value/ast/ephemeral-object.cjs +20 -0
  73. package/src/transformers/serializers/value/ast/ephemeral-object.mjs +16 -0
  74. package/src/transformers/serializers/value/index.cjs +85 -0
  75. package/src/transformers/serializers/value/index.mjs +80 -0
  76. package/src/transformers/serializers/value/visitor.cjs +52 -0
  77. package/src/transformers/serializers/value/visitor.mjs +47 -0
  78. package/src/transformers/serializers/yaml-1-2.cjs +90 -0
  79. package/src/transformers/serializers/yaml-1-2.mjs +85 -0
  80. package/src/transformers/sexprs.cjs +34 -0
  81. package/src/transformers/sexprs.mjs +30 -0
  82. package/src/transformers/to-string.cjs +16 -0
  83. package/src/transformers/to-string.mjs +11 -0
  84. package/src/traversal/filter.cjs +18 -0
  85. package/src/traversal/filter.mjs +14 -0
  86. package/src/traversal/find.cjs +19 -0
  87. package/src/traversal/find.mjs +15 -0
  88. package/src/traversal/findAtOffset.cjs +65 -0
  89. package/src/traversal/findAtOffset.mjs +60 -0
  90. package/src/traversal/index.cjs +19 -0
  91. package/src/traversal/index.mjs +7 -0
  92. package/src/traversal/parents.cjs +38 -0
  93. package/src/traversal/parents.mjs +34 -0
  94. package/src/traversal/reject.cjs +15 -0
  95. package/src/traversal/reject.mjs +10 -0
  96. package/src/traversal/some.cjs +15 -0
  97. package/src/traversal/some.mjs +10 -0
  98. package/src/traversal/traverse.cjs +60 -0
  99. package/src/traversal/traverse.mjs +53 -0
  100. package/src/traversal/visitor.cjs +123 -0
  101. package/src/traversal/visitor.mjs +115 -0
  102. package/src/util.cjs +28 -0
  103. package/src/util.mjs +24 -0
  104. package/types/apidom-core.d.ts +806 -0
  105. package/types/minim.d.ts +236 -0
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+ var _index = require("../../identity/index.cjs");
6
+ /**
7
+ * Plugin for decorating every element in ApiDOM tree with UUID.
8
+ * @public
9
+ */
10
+
11
+ const plugin = ({
12
+ length = 6
13
+ } = {}) => () => {
14
+ let identityManager;
15
+ return {
16
+ pre() {
17
+ identityManager = new _index.IdentityManager({
18
+ length
19
+ });
20
+ },
21
+ visitor: {
22
+ enter(element) {
23
+ element.id = identityManager.identify(element);
24
+ }
25
+ },
26
+ post() {
27
+ identityManager = null;
28
+ }
29
+ };
30
+ };
31
+ var _default = exports.default = plugin;
@@ -0,0 +1,26 @@
1
+ import { IdentityManager } from "../../identity/index.mjs";
2
+ /**
3
+ * Plugin for decorating every element in ApiDOM tree with UUID.
4
+ * @public
5
+ */
6
+ const plugin = ({
7
+ length = 6
8
+ } = {}) => () => {
9
+ let identityManager;
10
+ return {
11
+ pre() {
12
+ identityManager = new IdentityManager({
13
+ length
14
+ });
15
+ },
16
+ visitor: {
17
+ enter(element) {
18
+ element.id = identityManager.identify(element);
19
+ }
20
+ },
21
+ post() {
22
+ identityManager = null;
23
+ }
24
+ };
25
+ };
26
+ export default plugin;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+ var _index = require("../../identity/index.cjs");
6
+ /**
7
+ * @public
8
+ */
9
+
10
+ /**
11
+ * Plugin for decorating every semantic element in ApiDOM tree with UUID.
12
+ * @public
13
+ */
14
+ const plugin = ({
15
+ length = 6
16
+ } = {}) => ({
17
+ predicates
18
+ }) => {
19
+ let identityManager;
20
+ return {
21
+ pre() {
22
+ identityManager = new _index.IdentityManager({
23
+ length
24
+ });
25
+ },
26
+ visitor: {
27
+ enter(element) {
28
+ if (!predicates.isPrimitiveElement(element)) {
29
+ element.id = identityManager.identify(element);
30
+ }
31
+ }
32
+ },
33
+ post() {
34
+ identityManager = null;
35
+ }
36
+ };
37
+ };
38
+ var _default = exports.default = plugin;
@@ -0,0 +1,33 @@
1
+ import { IdentityManager } from "../../identity/index.mjs";
2
+ /**
3
+ * @public
4
+ */
5
+ /**
6
+ * Plugin for decorating every semantic element in ApiDOM tree with UUID.
7
+ * @public
8
+ */
9
+ const plugin = ({
10
+ length = 6
11
+ } = {}) => ({
12
+ predicates
13
+ }) => {
14
+ let identityManager;
15
+ return {
16
+ pre() {
17
+ identityManager = new IdentityManager({
18
+ length
19
+ });
20
+ },
21
+ visitor: {
22
+ enter(element) {
23
+ if (!predicates.isPrimitiveElement(element)) {
24
+ element.id = identityManager.identify(element);
25
+ }
26
+ }
27
+ },
28
+ post() {
29
+ identityManager = null;
30
+ }
31
+ };
32
+ };
33
+ export default plugin;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
+ exports.__esModule = true;
5
+ var _minim = require("minim");
6
+ exports.ObjectElement = _minim.ObjectElement;
7
+ exports.ArrayElement = _minim.ArrayElement;
8
+ exports.StringElement = _minim.StringElement;
9
+ exports.BooleanElement = _minim.BooleanElement;
10
+ exports.NullElement = _minim.NullElement;
11
+ exports.NumberElement = _minim.NumberElement;
12
+ exports.LinkElement = _minim.LinkElement;
13
+ exports.RefElement = _minim.RefElement;
14
+ var _Annotation = _interopRequireDefault(require("../elements/Annotation.cjs"));
15
+ exports.AnnotationElement = _Annotation.default;
16
+ var _Comment = _interopRequireDefault(require("../elements/Comment.cjs"));
17
+ exports.CommentElement = _Comment.default;
18
+ var _ParseResult = _interopRequireDefault(require("../elements/ParseResult.cjs"));
19
+ exports.ParseResultElement = _ParseResult.default;
20
+ var _SourceMap = _interopRequireDefault(require("../elements/SourceMap.cjs"));
21
+ exports.SourceMapElement = _SourceMap.default;
22
+ var _index = require("./index.cjs");
23
+ _minim.ObjectElement.refract = (0, _index.createRefractor)(_minim.ObjectElement);
24
+ _minim.ArrayElement.refract = (0, _index.createRefractor)(_minim.ArrayElement);
25
+ _minim.StringElement.refract = (0, _index.createRefractor)(_minim.StringElement);
26
+ _minim.BooleanElement.refract = (0, _index.createRefractor)(_minim.BooleanElement);
27
+ _minim.NullElement.refract = (0, _index.createRefractor)(_minim.NullElement);
28
+ _minim.NumberElement.refract = (0, _index.createRefractor)(_minim.NumberElement);
29
+ _minim.LinkElement.refract = (0, _index.createRefractor)(_minim.LinkElement);
30
+ _minim.RefElement.refract = (0, _index.createRefractor)(_minim.RefElement);
31
+ _Annotation.default.refract = (0, _index.createRefractor)(_Annotation.default);
32
+ _Comment.default.refract = (0, _index.createRefractor)(_Comment.default);
33
+ _ParseResult.default.refract = (0, _index.createRefractor)(_ParseResult.default);
34
+ _SourceMap.default.refract = (0, _index.createRefractor)(_SourceMap.default);
@@ -0,0 +1,19 @@
1
+ import { ObjectElement, ArrayElement, StringElement, BooleanElement, NullElement, NumberElement, LinkElement, RefElement } from 'minim';
2
+ import AnnotationElement from "../elements/Annotation.mjs";
3
+ import CommentElement from "../elements/Comment.mjs";
4
+ import ParseResultElement from "../elements/ParseResult.mjs";
5
+ import SourceMapElement from "../elements/SourceMap.mjs";
6
+ import { createRefractor } from "./index.mjs";
7
+ ObjectElement.refract = createRefractor(ObjectElement);
8
+ ArrayElement.refract = createRefractor(ArrayElement);
9
+ StringElement.refract = createRefractor(StringElement);
10
+ BooleanElement.refract = createRefractor(BooleanElement);
11
+ NullElement.refract = createRefractor(NullElement);
12
+ NumberElement.refract = createRefractor(NumberElement);
13
+ LinkElement.refract = createRefractor(LinkElement);
14
+ RefElement.refract = createRefractor(RefElement);
15
+ AnnotationElement.refract = createRefractor(AnnotationElement);
16
+ CommentElement.refract = createRefractor(CommentElement);
17
+ ParseResultElement.refract = createRefractor(ParseResultElement);
18
+ SourceMapElement.refract = createRefractor(SourceMapElement);
19
+ export { ObjectElement, ArrayElement, StringElement, BooleanElement, NullElement, NumberElement, LinkElement, RefElement, AnnotationElement, CommentElement, ParseResultElement, SourceMapElement };
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
5
+ exports.__esModule = true;
6
+ exports.default = void 0;
7
+ var basePredicates = _interopRequireWildcard(require("../predicates/index.cjs"));
8
+ var _namespace = _interopRequireDefault(require("../namespace.cjs"));
9
+ /**
10
+ * @public
11
+ */
12
+
13
+ /**
14
+ * @public
15
+ */
16
+
17
+ /**
18
+ * @public
19
+ */
20
+ const createToolbox = () => {
21
+ const predicates = {
22
+ ...basePredicates
23
+ };
24
+ return {
25
+ predicates,
26
+ namespace: _namespace.default
27
+ };
28
+ };
29
+ var _default = exports.default = createToolbox;
@@ -0,0 +1,21 @@
1
+ import * as basePredicates from "../predicates/index.mjs";
2
+ import defaultNamespaceInstance from "../namespace.mjs";
3
+ /**
4
+ * @public
5
+ */
6
+ /**
7
+ * @public
8
+ */
9
+ /**
10
+ * @public
11
+ */
12
+ const createToolbox = () => {
13
+ const predicates = {
14
+ ...basePredicates
15
+ };
16
+ return {
17
+ predicates,
18
+ namespace: defaultNamespaceInstance
19
+ };
20
+ };
21
+ export default createToolbox;
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+ var _ramdaAdjunct = require("ramda-adjunct");
6
+ var _index = require("../predicates/index.cjs");
7
+ const computeEdges = (element, edges = new WeakMap()) => {
8
+ if ((0, _index.isMemberElement)(element)) {
9
+ // @ts-ignore
10
+ edges.set(element.key, element);
11
+ // @ts-ignore
12
+ computeEdges(element.key, edges);
13
+ // @ts-ignore
14
+ edges.set(element.value, element);
15
+ // @ts-ignore
16
+ computeEdges(element.value, edges);
17
+ } else {
18
+ element.children.forEach(childElement => {
19
+ edges.set(childElement, element);
20
+ computeEdges(childElement, edges);
21
+ });
22
+ }
23
+ return edges;
24
+ };
25
+ const transcludeChildOfMemberElement = (search, replace, edges) => {
26
+ const memberElement = edges.get(search);
27
+ if (!(0, _index.isMemberElement)(memberElement)) {
28
+ return;
29
+ }
30
+ if (memberElement.key === search) {
31
+ memberElement.key = replace;
32
+ edges.delete(search);
33
+ edges.set(replace, memberElement);
34
+ }
35
+ if (memberElement.value === search) {
36
+ memberElement.value = replace;
37
+ edges.delete(search);
38
+ edges.set(replace, memberElement);
39
+ }
40
+ };
41
+ const transcludeChildOfObjectElement = (search, replace, edges) => {
42
+ const objectElement = edges.get(search);
43
+ if (!(0, _index.isObjectElement)(objectElement)) {
44
+ return;
45
+ }
46
+ objectElement.content = objectElement.map((value, key, member) => {
47
+ if (member === search) {
48
+ edges.delete(search);
49
+ edges.set(replace, objectElement);
50
+ return replace;
51
+ }
52
+ return member;
53
+ });
54
+ };
55
+ const transcludeChildOfArrayElement = (search, replace, edges) => {
56
+ const arrayElement = edges.get(search);
57
+ if (!(0, _index.isArrayElement)(arrayElement)) {
58
+ return;
59
+ }
60
+ arrayElement.content = arrayElement.map(element => {
61
+ if (element === search) {
62
+ edges.delete(search);
63
+ edges.set(replace, arrayElement);
64
+ return replace;
65
+ }
66
+ return element;
67
+ });
68
+ };
69
+
70
+ /**
71
+ * This is a mutating stamp. If you don't want your Element to be mutated,
72
+ * clone in before passing it to initializer of this stamp.
73
+ * @public
74
+ */
75
+
76
+ class Transcluder {
77
+ element;
78
+ edges;
79
+ constructor({
80
+ element
81
+ }) {
82
+ this.element = element;
83
+ }
84
+ transclude(search, replace) {
85
+ // shortcut 1. - replacing entire ApiDOM tree
86
+ if (search === this.element) return replace;
87
+ // shortcut 2. - replacing nothing
88
+ if (search === replace) return this.element;
89
+ this.edges = this.edges ?? computeEdges(this.element);
90
+ const parent = this.edges.get(search);
91
+ if ((0, _ramdaAdjunct.isUndefined)(parent)) {
92
+ return undefined;
93
+ }
94
+
95
+ /**
96
+ * This predicate must be first because ObjectElement extends ArrayElement.
97
+ * isArrayElement returns true for ObjectElements.
98
+ * (classical problems with polymorphism)
99
+ */
100
+ if ((0, _index.isObjectElement)(parent)) {
101
+ // @ts-ignore
102
+ transcludeChildOfObjectElement(search, replace, this.edges);
103
+ } else if ((0, _index.isArrayElement)(parent)) {
104
+ transcludeChildOfArrayElement(search, replace, this.edges);
105
+ } else if ((0, _index.isMemberElement)(parent)) {
106
+ transcludeChildOfMemberElement(search, replace, this.edges);
107
+ }
108
+ return this.element;
109
+ }
110
+ }
111
+ var _default = exports.default = Transcluder;
@@ -0,0 +1,107 @@
1
+ import { isUndefined } from 'ramda-adjunct';
2
+ import { isObjectElement, isArrayElement, isMemberElement } from "../predicates/index.mjs";
3
+ const computeEdges = (element, edges = new WeakMap()) => {
4
+ if (isMemberElement(element)) {
5
+ // @ts-ignore
6
+ edges.set(element.key, element);
7
+ // @ts-ignore
8
+ computeEdges(element.key, edges);
9
+ // @ts-ignore
10
+ edges.set(element.value, element);
11
+ // @ts-ignore
12
+ computeEdges(element.value, edges);
13
+ } else {
14
+ element.children.forEach(childElement => {
15
+ edges.set(childElement, element);
16
+ computeEdges(childElement, edges);
17
+ });
18
+ }
19
+ return edges;
20
+ };
21
+ const transcludeChildOfMemberElement = (search, replace, edges) => {
22
+ const memberElement = edges.get(search);
23
+ if (!isMemberElement(memberElement)) {
24
+ return;
25
+ }
26
+ if (memberElement.key === search) {
27
+ memberElement.key = replace;
28
+ edges.delete(search);
29
+ edges.set(replace, memberElement);
30
+ }
31
+ if (memberElement.value === search) {
32
+ memberElement.value = replace;
33
+ edges.delete(search);
34
+ edges.set(replace, memberElement);
35
+ }
36
+ };
37
+ const transcludeChildOfObjectElement = (search, replace, edges) => {
38
+ const objectElement = edges.get(search);
39
+ if (!isObjectElement(objectElement)) {
40
+ return;
41
+ }
42
+ objectElement.content = objectElement.map((value, key, member) => {
43
+ if (member === search) {
44
+ edges.delete(search);
45
+ edges.set(replace, objectElement);
46
+ return replace;
47
+ }
48
+ return member;
49
+ });
50
+ };
51
+ const transcludeChildOfArrayElement = (search, replace, edges) => {
52
+ const arrayElement = edges.get(search);
53
+ if (!isArrayElement(arrayElement)) {
54
+ return;
55
+ }
56
+ arrayElement.content = arrayElement.map(element => {
57
+ if (element === search) {
58
+ edges.delete(search);
59
+ edges.set(replace, arrayElement);
60
+ return replace;
61
+ }
62
+ return element;
63
+ });
64
+ };
65
+
66
+ /**
67
+ * This is a mutating stamp. If you don't want your Element to be mutated,
68
+ * clone in before passing it to initializer of this stamp.
69
+ * @public
70
+ */
71
+
72
+ class Transcluder {
73
+ element;
74
+ edges;
75
+ constructor({
76
+ element
77
+ }) {
78
+ this.element = element;
79
+ }
80
+ transclude(search, replace) {
81
+ // shortcut 1. - replacing entire ApiDOM tree
82
+ if (search === this.element) return replace;
83
+ // shortcut 2. - replacing nothing
84
+ if (search === replace) return this.element;
85
+ this.edges = this.edges ?? computeEdges(this.element);
86
+ const parent = this.edges.get(search);
87
+ if (isUndefined(parent)) {
88
+ return undefined;
89
+ }
90
+
91
+ /**
92
+ * This predicate must be first because ObjectElement extends ArrayElement.
93
+ * isArrayElement returns true for ObjectElements.
94
+ * (classical problems with polymorphism)
95
+ */
96
+ if (isObjectElement(parent)) {
97
+ // @ts-ignore
98
+ transcludeChildOfObjectElement(search, replace, this.edges);
99
+ } else if (isArrayElement(parent)) {
100
+ transcludeChildOfArrayElement(search, replace, this.edges);
101
+ } else if (isMemberElement(parent)) {
102
+ transcludeChildOfMemberElement(search, replace, this.edges);
103
+ }
104
+ return this.element;
105
+ }
106
+ }
107
+ export default Transcluder;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
+ exports.__esModule = true;
5
+ exports.transclude = exports.default = void 0;
6
+ var _Transcluder = _interopRequireDefault(require("./Transcluder.cjs"));
7
+ /**
8
+ * This is a mutating function. If you don't want your Element to be mutated,
9
+ * clone in before passing it to this function.
10
+ * @public
11
+ */
12
+ const transclude = (search, replace, element) => {
13
+ const transcluder = new _Transcluder.default({
14
+ element
15
+ });
16
+ return transcluder.transclude(search, replace);
17
+ };
18
+ exports.transclude = transclude;
19
+ var _default = exports.default = _Transcluder.default;
@@ -0,0 +1,13 @@
1
+ import Transcluder from "./Transcluder.mjs";
2
+ /**
3
+ * This is a mutating function. If you don't want your Element to be mutated,
4
+ * clone in before passing it to this function.
5
+ * @public
6
+ */
7
+ export const transclude = (search, replace, element) => {
8
+ const transcluder = new Transcluder({
9
+ element
10
+ });
11
+ return transcluder.transclude(search, replace);
12
+ };
13
+ export default Transcluder;
@@ -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
+ /**
8
+ * Creates a refract representation of an Element.
9
+ * https://github.com/refractproject/refract-spec
10
+ * @public
11
+ */
12
+ const dehydrate = (element, namespace = _namespace.default) => {
13
+ return namespace.toRefract(element);
14
+ };
15
+ var _default = exports.default = dehydrate;
@@ -0,0 +1,10 @@
1
+ import defaultNamespaceInstance from "../namespace.mjs";
2
+ /**
3
+ * Creates a refract representation of an Element.
4
+ * https://github.com/refractproject/refract-spec
5
+ * @public
6
+ */
7
+ const dehydrate = (element, namespace = defaultNamespaceInstance) => {
8
+ return namespace.toRefract(element);
9
+ };
10
+ export default dehydrate;
@@ -0,0 +1,34 @@
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
+ * The name of the function was originally `from`,
13
+ * but it was renamed to `fromFn` to avoid issues with Parcel.js:
14
+ *
15
+ * - https://github.com/parcel-bundler/parcel/issues/9473
16
+ * - https://github.com/swagger-api/swagger-ui/issues/9466#issuecomment-1881053410
17
+ * @public
18
+ */
19
+ const fromFn = (data, namespace = _namespace.default) => {
20
+ if ((0, _ramdaAdjunct.isString)(data)) {
21
+ // JSON serialized refract
22
+ try {
23
+ return namespace.fromRefract(JSON.parse(data));
24
+ } catch {
25
+ // noop
26
+ }
27
+ }
28
+ if ((0, _ramdaAdjunct.isPlainObject)(data) && (0, _ramda.has)('element', data)) {
29
+ // refract javascript structure
30
+ return namespace.fromRefract(data);
31
+ }
32
+ return namespace.toElement(data);
33
+ };
34
+ var _default = exports.default = fromFn;
@@ -0,0 +1,29 @@
1
+ import { has } from 'ramda';
2
+ import { isPlainObject, isString } from 'ramda-adjunct';
3
+ import defaultNamespaceInstance from "../namespace.mjs";
4
+ /**
5
+ * Transforms data to an Element from a particular namespace.
6
+ *
7
+ * The name of the function was originally `from`,
8
+ * but it was renamed to `fromFn` to avoid issues with Parcel.js:
9
+ *
10
+ * - https://github.com/parcel-bundler/parcel/issues/9473
11
+ * - https://github.com/swagger-api/swagger-ui/issues/9466#issuecomment-1881053410
12
+ * @public
13
+ */
14
+ const fromFn = (data, namespace = defaultNamespaceInstance) => {
15
+ if (isString(data)) {
16
+ // JSON serialized refract
17
+ try {
18
+ return namespace.fromRefract(JSON.parse(data));
19
+ } catch {
20
+ // noop
21
+ }
22
+ }
23
+ if (isPlainObject(data) && has('element', data)) {
24
+ // refract javascript structure
25
+ return namespace.fromRefract(data);
26
+ }
27
+ return namespace.toElement(data);
28
+ };
29
+ export default fromFn;
@@ -0,0 +1,11 @@
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 _index = _interopRequireDefault(require("./value/index.cjs"));
7
+ /**
8
+ * @public
9
+ */
10
+ const serializer = (element, replacer, space) => JSON.stringify((0, _index.default)(element), replacer, space);
11
+ var _default = exports.default = serializer;
@@ -0,0 +1,6 @@
1
+ import serializeValue from "./value/index.mjs";
2
+ /**
3
+ * @public
4
+ */
5
+ const serializer = (element, replacer, space) => JSON.stringify(serializeValue(element), replacer, space);
6
+ export default serializer;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+ class EphemeralArray {
6
+ type = 'EphemeralArray';
7
+ content = [];
8
+ reference = undefined;
9
+ constructor(content) {
10
+ this.content = content;
11
+ this.reference = [];
12
+ }
13
+ toReference() {
14
+ return this.reference;
15
+ }
16
+ toArray() {
17
+ this.reference.push(...this.content);
18
+ return this.reference;
19
+ }
20
+ }
21
+ var _default = exports.default = EphemeralArray;
@@ -0,0 +1,17 @@
1
+ class EphemeralArray {
2
+ type = 'EphemeralArray';
3
+ content = [];
4
+ reference = undefined;
5
+ constructor(content) {
6
+ this.content = content;
7
+ this.reference = [];
8
+ }
9
+ toReference() {
10
+ return this.reference;
11
+ }
12
+ toArray() {
13
+ this.reference.push(...this.content);
14
+ return this.reference;
15
+ }
16
+ }
17
+ export default EphemeralArray;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+ class EphemeralObject {
6
+ type = 'EphemeralObject';
7
+ content = [];
8
+ reference = undefined;
9
+ constructor(content) {
10
+ this.content = content;
11
+ this.reference = {};
12
+ }
13
+ toReference() {
14
+ return this.reference;
15
+ }
16
+ toObject() {
17
+ return Object.assign(this.reference, Object.fromEntries(this.content));
18
+ }
19
+ }
20
+ var _default = exports.default = EphemeralObject;
@@ -0,0 +1,16 @@
1
+ class EphemeralObject {
2
+ type = 'EphemeralObject';
3
+ content = [];
4
+ reference = undefined;
5
+ constructor(content) {
6
+ this.content = content;
7
+ this.reference = {};
8
+ }
9
+ toReference() {
10
+ return this.reference;
11
+ }
12
+ toObject() {
13
+ return Object.assign(this.reference, Object.fromEntries(this.content));
14
+ }
15
+ }
16
+ export default EphemeralObject;