@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
package/src/index.mjs ADDED
@@ -0,0 +1,50 @@
1
+ export { dispatchPluginsSync as dispatchRefractorPlugins } from "./refractor/plugins/dispatcher/index.mjs";
2
+ export { default as refractorPluginElementIdentity } from "./refractor/plugins/element-identity.mjs";
3
+ export { default as refractorPluginSemanticElementIdentity } from "./refractor/plugins/semantic-element-identity.mjs";
4
+ export { default as MediaTypes } from "./media-types.mjs";
5
+ export { Element, MemberElement, KeyValuePair, ObjectSlice, ArraySlice, refract } from 'minim';
6
+ export { default as namespace, Namespace, createNamespace } from "./namespace.mjs";
7
+ export { ObjectElement, ArrayElement, BooleanElement, NullElement, NumberElement, StringElement, LinkElement, RefElement, AnnotationElement, CommentElement, ParseResultElement, SourceMapElement } from "./refractor/registration.mjs";
8
+ export { isElement, isStringElement, isNumberElement, isNullElement, isBooleanElement, isArrayElement, isObjectElement, isMemberElement, isLinkElement, isRefElement, isAnnotationElement, isParseResultElement, isSourceMapElement, isPrimitiveElement, hasElementSourceMap, includesSymbols, includesClasses } from "./predicates/index.mjs";
9
+ export { default as createPredicate } from "./predicates/helpers.mjs";
10
+ export { filter, reject, find, findAtOffset, some, traverse, parents } from "./traversal/index.mjs";
11
+ export { visit, BREAK, mergeAllVisitors, getNodeType, cloneNode, keyMapDefault as keyMap } from "./traversal/visitor.mjs";
12
+ export { transclude, default as Transcluder } from "./transcluder/index.mjs";
13
+ export { dereference } from "./util.mjs";
14
+ export { cloneShallow, cloneDeep } from "./clone/index.mjs";
15
+ export { default as CloneError } from "./clone/errors/CloneError.mjs";
16
+ export { default as DeepCloneError } from "./clone/errors/DeepCloneError.mjs";
17
+ export { default as ShallowCloneError } from "./clone/errors/ShallowCloneError.mjs";
18
+ export { defaultIdentityManager, IdentityManager } from "./identity/index.mjs";
19
+ export { default as ElementIdentityError } from "./identity/errors/ElementIdentityError.mjs";
20
+ /**
21
+ * Transforms data to an Element from a particular namespace.
22
+ */
23
+ export { default as from } from "./transformers/from.mjs";
24
+ /**
25
+ * Transforms the ApiDOM into JavaScript POJO.
26
+ * This POJO would be the result of interpreting the ApiDOM
27
+ * into JavaScript structure.
28
+ */
29
+ export { default as toValue } from "./transformers/serializers/value/index.mjs";
30
+ /**
31
+ * Transforms the ApiDOM into JSON string.
32
+ */
33
+ export { default as toJSON } from "./transformers/serializers/json.mjs";
34
+ /**
35
+ * Transforms the ApiDOM into YAML string.
36
+ */
37
+ export { default as toYAML } from "./transformers/serializers/yaml-1-2.mjs";
38
+ /**
39
+ * Creates a refract representation of an Element.
40
+ * https://github.com/refractproject/refract-spec
41
+ */
42
+ export { default as dehydrate } from "./transformers/dehydrate.mjs";
43
+ /**
44
+ * Create a refracted string representation of an Element.
45
+ */
46
+ export { default as toString } from "./transformers/to-string.mjs";
47
+ export { default as sexprs } from "./transformers/sexprs.mjs";
48
+ export { default as deepmerge } from "./merge/deepmerge.mjs";
49
+ export { default as mergeRight } from "./merge/merge-right.mjs";
50
+ export { default as mergeLeft } from "./merge/merge-left.mjs";
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+ var _apidomError = require("@speclynx/apidom-error");
6
+ /**
7
+ * @public
8
+ */
9
+ class MediaTypes extends Array {
10
+ unknownMediaType = 'application/octet-stream';
11
+ filterByFormat() {
12
+ throw new _apidomError.NotImplementedError('filterByFormat method in MediaTypes class is not yet implemented.');
13
+ }
14
+ findBy() {
15
+ throw new _apidomError.NotImplementedError('findBy method in MediaTypes class is not yet implemented.');
16
+ }
17
+ latest() {
18
+ throw new _apidomError.NotImplementedError('latest method in MediaTypes class is not yet implemented.');
19
+ }
20
+ }
21
+ var _default = exports.default = MediaTypes;
@@ -0,0 +1,18 @@
1
+ import { NotImplementedError } from '@speclynx/apidom-error';
2
+
3
+ /**
4
+ * @public
5
+ */
6
+ class MediaTypes extends Array {
7
+ unknownMediaType = 'application/octet-stream';
8
+ filterByFormat() {
9
+ throw new NotImplementedError('filterByFormat method in MediaTypes class is not yet implemented.');
10
+ }
11
+ findBy() {
12
+ throw new NotImplementedError('findBy method in MediaTypes class is not yet implemented.');
13
+ }
14
+ latest() {
15
+ throw new NotImplementedError('latest method in MediaTypes class is not yet implemented.');
16
+ }
17
+ }
18
+ export default MediaTypes;
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
+ exports.__esModule = true;
5
+ exports.emptyElement = exports.defaultOptions = exports.default = void 0;
6
+ var _minim = require("minim");
7
+ var _index = require("../predicates/index.cjs");
8
+ var _index2 = require("../clone/index.cjs");
9
+ var _index3 = _interopRequireDefault(require("../transformers/serializers/value/index.cjs"));
10
+ /**
11
+ * @public
12
+ */
13
+
14
+ /**
15
+ * @public
16
+ */
17
+
18
+ /**
19
+ * @public
20
+ */
21
+
22
+ /**
23
+ * @public
24
+ */
25
+
26
+ /**
27
+ * @public
28
+ */
29
+
30
+ /**
31
+ * @public
32
+ */
33
+
34
+ /**
35
+ * @public
36
+ */
37
+
38
+ /**
39
+ * @public
40
+ */
41
+
42
+ /**
43
+ * @public
44
+ */
45
+
46
+ /**
47
+ * @public
48
+ */
49
+
50
+ const emptyElement = element => {
51
+ const meta = element.meta.length > 0 ? (0, _index2.cloneDeep)(element.meta) : undefined;
52
+ const attributes = element.attributes.length > 0 ? (0, _index2.cloneDeep)(element.attributes) : undefined;
53
+
54
+ // @ts-ignore
55
+ return new element.constructor(undefined, meta, attributes);
56
+ };
57
+ exports.emptyElement = emptyElement;
58
+ const cloneUnlessOtherwiseSpecified = (element, options) => options.clone && options.isMergeableElement(element) ? deepmerge(emptyElement(element), element, options) : element;
59
+ const getMergeFunction = (keyElement, options) => {
60
+ if (typeof options.customMerge !== 'function') {
61
+ return deepmerge;
62
+ }
63
+ const customMerge = options.customMerge(keyElement, options);
64
+ return typeof customMerge === 'function' ? customMerge : deepmerge;
65
+ };
66
+ const getMetaMergeFunction = options => {
67
+ if (typeof options.customMetaMerge !== 'function') {
68
+ return targetMeta => (0, _index2.cloneDeep)(targetMeta);
69
+ }
70
+ return options.customMetaMerge;
71
+ };
72
+ const getAttributesMergeFunction = options => {
73
+ if (typeof options.customAttributesMerge !== 'function') {
74
+ return targetAttributes => (0, _index2.cloneDeep)(targetAttributes);
75
+ }
76
+ return options.customAttributesMerge;
77
+ };
78
+ const mergeArrayElement = (targetElement, sourceElement, options) => targetElement.concat(sourceElement)['fantasy-land/map'](item => cloneUnlessOtherwiseSpecified(item, options));
79
+ const mergeObjectElement = (targetElement, sourceElement, options) => {
80
+ const destination = (0, _index.isObjectElement)(targetElement) ? emptyElement(targetElement) : emptyElement(sourceElement);
81
+ if ((0, _index.isObjectElement)(targetElement)) {
82
+ targetElement.forEach((value, key, member) => {
83
+ const clonedMember = (0, _index2.cloneShallow)(member);
84
+ clonedMember.value = cloneUnlessOtherwiseSpecified(value, options);
85
+ destination.content.push(clonedMember);
86
+ });
87
+ }
88
+ sourceElement.forEach((value, key, member) => {
89
+ const keyValue = (0, _index3.default)(key);
90
+ let clonedMember;
91
+ if ((0, _index.isObjectElement)(targetElement) && targetElement.hasKey(keyValue) && options.isMergeableElement(value)) {
92
+ const targetValue = targetElement.get(keyValue);
93
+ clonedMember = (0, _index2.cloneShallow)(member);
94
+ clonedMember.value = getMergeFunction(key, options)(targetValue, value, options);
95
+ } else {
96
+ clonedMember = (0, _index2.cloneShallow)(member);
97
+ clonedMember.value = cloneUnlessOtherwiseSpecified(value, options);
98
+ }
99
+ destination.remove(keyValue);
100
+ destination.content.push(clonedMember);
101
+ });
102
+ return destination;
103
+ };
104
+ const defaultOptions = exports.defaultOptions = {
105
+ clone: true,
106
+ isMergeableElement: element => (0, _index.isObjectElement)(element) || (0, _index.isArrayElement)(element),
107
+ arrayElementMerge: mergeArrayElement,
108
+ objectElementMerge: mergeObjectElement,
109
+ customMerge: undefined,
110
+ customMetaMerge: undefined,
111
+ customAttributesMerge: undefined
112
+ };
113
+
114
+ /**
115
+ * @public
116
+ */
117
+ const deepmerge = (targetElement, sourceElement, options) => {
118
+ const mergedOptions = {
119
+ ...defaultOptions,
120
+ ...options
121
+ };
122
+ mergedOptions.isMergeableElement = mergedOptions.isMergeableElement ?? defaultOptions.isMergeableElement;
123
+ mergedOptions.arrayElementMerge = mergedOptions.arrayElementMerge ?? defaultOptions.arrayElementMerge;
124
+ mergedOptions.objectElementMerge = mergedOptions.objectElementMerge ?? defaultOptions.objectElementMerge;
125
+ const sourceIsArrayElement = (0, _index.isArrayElement)(sourceElement);
126
+ const targetIsArrayElement = (0, _index.isArrayElement)(targetElement);
127
+ const sourceAndTargetTypesMatch = sourceIsArrayElement === targetIsArrayElement;
128
+ if (!sourceAndTargetTypesMatch) {
129
+ return cloneUnlessOtherwiseSpecified(sourceElement, mergedOptions);
130
+ }
131
+
132
+ // merging two elements
133
+ const mergedElement = sourceIsArrayElement && typeof mergedOptions.arrayElementMerge === 'function' ? mergedOptions.arrayElementMerge(targetElement, sourceElement, mergedOptions) : mergedOptions.objectElementMerge(targetElement, sourceElement, mergedOptions);
134
+
135
+ // merging meta & attributes
136
+ mergedElement.meta = getMetaMergeFunction(mergedOptions)(targetElement.meta, sourceElement.meta);
137
+ mergedElement.attributes = getAttributesMergeFunction(mergedOptions)(targetElement.attributes, sourceElement.attributes);
138
+ return mergedElement;
139
+ };
140
+ deepmerge.all = (list, options) => {
141
+ if (!Array.isArray(list)) {
142
+ throw new TypeError('First argument of deepmerge should be an array.');
143
+ }
144
+ if (list.length === 0) {
145
+ return new _minim.ObjectElement();
146
+ }
147
+ return list.reduce((target, source) => {
148
+ return deepmerge(target, source, options);
149
+ }, emptyElement(list[0]));
150
+ };
151
+ var _default = exports.default = deepmerge;
@@ -0,0 +1,135 @@
1
+ import { ObjectElement } from 'minim';
2
+ import { isObjectElement, isArrayElement } from "../predicates/index.mjs";
3
+ import { cloneDeep, cloneShallow } from "../clone/index.mjs";
4
+ import toValue from "../transformers/serializers/value/index.mjs";
5
+ /**
6
+ * @public
7
+ */
8
+ /**
9
+ * @public
10
+ */
11
+ /**
12
+ * @public
13
+ */
14
+ /**
15
+ * @public
16
+ */
17
+ /**
18
+ * @public
19
+ */
20
+ /**
21
+ * @public
22
+ */
23
+ /**
24
+ * @public
25
+ */
26
+ /**
27
+ * @public
28
+ */
29
+ /**
30
+ * @public
31
+ */
32
+ /**
33
+ * @public
34
+ */
35
+ export const emptyElement = element => {
36
+ const meta = element.meta.length > 0 ? cloneDeep(element.meta) : undefined;
37
+ const attributes = element.attributes.length > 0 ? cloneDeep(element.attributes) : undefined;
38
+
39
+ // @ts-ignore
40
+ return new element.constructor(undefined, meta, attributes);
41
+ };
42
+ const cloneUnlessOtherwiseSpecified = (element, options) => options.clone && options.isMergeableElement(element) ? deepmerge(emptyElement(element), element, options) : element;
43
+ const getMergeFunction = (keyElement, options) => {
44
+ if (typeof options.customMerge !== 'function') {
45
+ return deepmerge;
46
+ }
47
+ const customMerge = options.customMerge(keyElement, options);
48
+ return typeof customMerge === 'function' ? customMerge : deepmerge;
49
+ };
50
+ const getMetaMergeFunction = options => {
51
+ if (typeof options.customMetaMerge !== 'function') {
52
+ return targetMeta => cloneDeep(targetMeta);
53
+ }
54
+ return options.customMetaMerge;
55
+ };
56
+ const getAttributesMergeFunction = options => {
57
+ if (typeof options.customAttributesMerge !== 'function') {
58
+ return targetAttributes => cloneDeep(targetAttributes);
59
+ }
60
+ return options.customAttributesMerge;
61
+ };
62
+ const mergeArrayElement = (targetElement, sourceElement, options) => targetElement.concat(sourceElement)['fantasy-land/map'](item => cloneUnlessOtherwiseSpecified(item, options));
63
+ const mergeObjectElement = (targetElement, sourceElement, options) => {
64
+ const destination = isObjectElement(targetElement) ? emptyElement(targetElement) : emptyElement(sourceElement);
65
+ if (isObjectElement(targetElement)) {
66
+ targetElement.forEach((value, key, member) => {
67
+ const clonedMember = cloneShallow(member);
68
+ clonedMember.value = cloneUnlessOtherwiseSpecified(value, options);
69
+ destination.content.push(clonedMember);
70
+ });
71
+ }
72
+ sourceElement.forEach((value, key, member) => {
73
+ const keyValue = toValue(key);
74
+ let clonedMember;
75
+ if (isObjectElement(targetElement) && targetElement.hasKey(keyValue) && options.isMergeableElement(value)) {
76
+ const targetValue = targetElement.get(keyValue);
77
+ clonedMember = cloneShallow(member);
78
+ clonedMember.value = getMergeFunction(key, options)(targetValue, value, options);
79
+ } else {
80
+ clonedMember = cloneShallow(member);
81
+ clonedMember.value = cloneUnlessOtherwiseSpecified(value, options);
82
+ }
83
+ destination.remove(keyValue);
84
+ destination.content.push(clonedMember);
85
+ });
86
+ return destination;
87
+ };
88
+ export const defaultOptions = {
89
+ clone: true,
90
+ isMergeableElement: element => isObjectElement(element) || isArrayElement(element),
91
+ arrayElementMerge: mergeArrayElement,
92
+ objectElementMerge: mergeObjectElement,
93
+ customMerge: undefined,
94
+ customMetaMerge: undefined,
95
+ customAttributesMerge: undefined
96
+ };
97
+
98
+ /**
99
+ * @public
100
+ */
101
+ const deepmerge = (targetElement, sourceElement, options) => {
102
+ const mergedOptions = {
103
+ ...defaultOptions,
104
+ ...options
105
+ };
106
+ mergedOptions.isMergeableElement = mergedOptions.isMergeableElement ?? defaultOptions.isMergeableElement;
107
+ mergedOptions.arrayElementMerge = mergedOptions.arrayElementMerge ?? defaultOptions.arrayElementMerge;
108
+ mergedOptions.objectElementMerge = mergedOptions.objectElementMerge ?? defaultOptions.objectElementMerge;
109
+ const sourceIsArrayElement = isArrayElement(sourceElement);
110
+ const targetIsArrayElement = isArrayElement(targetElement);
111
+ const sourceAndTargetTypesMatch = sourceIsArrayElement === targetIsArrayElement;
112
+ if (!sourceAndTargetTypesMatch) {
113
+ return cloneUnlessOtherwiseSpecified(sourceElement, mergedOptions);
114
+ }
115
+
116
+ // merging two elements
117
+ const mergedElement = sourceIsArrayElement && typeof mergedOptions.arrayElementMerge === 'function' ? mergedOptions.arrayElementMerge(targetElement, sourceElement, mergedOptions) : mergedOptions.objectElementMerge(targetElement, sourceElement, mergedOptions);
118
+
119
+ // merging meta & attributes
120
+ mergedElement.meta = getMetaMergeFunction(mergedOptions)(targetElement.meta, sourceElement.meta);
121
+ mergedElement.attributes = getAttributesMergeFunction(mergedOptions)(targetElement.attributes, sourceElement.attributes);
122
+ return mergedElement;
123
+ };
124
+ deepmerge.all = (list, options) => {
125
+ if (!Array.isArray(list)) {
126
+ throw new TypeError('First argument of deepmerge should be an array.');
127
+ }
128
+ if (list.length === 0) {
129
+ return new ObjectElement();
130
+ }
131
+ return list.reduce((target, source) => {
132
+ return deepmerge(target, source, options);
133
+ }, emptyElement(list[0]));
134
+ };
135
+ export default deepmerge;
@@ -0,0 +1,16 @@
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 _mergeRight = _interopRequireDefault(require("./merge-right.cjs"));
7
+ /**
8
+ * @public
9
+ */
10
+ const mergeLeft = (...[sourceElement, targetElement, options]) => {
11
+ return (0, _mergeRight.default)(targetElement, sourceElement, options);
12
+ };
13
+ mergeLeft.all = (...[list, options]) => {
14
+ return _mergeRight.default.all([...list].reverse(), options);
15
+ };
16
+ var _default = exports.default = mergeLeft;
@@ -0,0 +1,11 @@
1
+ import mergeRight from "./merge-right.mjs";
2
+ /**
3
+ * @public
4
+ */
5
+ const mergeLeft = (...[sourceElement, targetElement, options]) => {
6
+ return mergeRight(targetElement, sourceElement, options);
7
+ };
8
+ mergeLeft.all = (...[list, options]) => {
9
+ return mergeRight.all([...list].reverse(), options);
10
+ };
11
+ export default mergeLeft;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
4
+ exports.__esModule = true;
5
+ exports.default = void 0;
6
+ var _minim = require("minim");
7
+ var _deepmerge = _interopRequireWildcard(require("./deepmerge.cjs"));
8
+ /**
9
+ * @public
10
+ */
11
+
12
+ /**
13
+ * @public
14
+ */
15
+ const mergeRight = (targetElement, sourceElement, options) => {
16
+ const mergedOptions = {
17
+ ..._deepmerge.defaultOptions,
18
+ ...options,
19
+ customMerge: () => (target, source) => source,
20
+ clone: false
21
+ };
22
+ return (0, _deepmerge.default)(targetElement, sourceElement, mergedOptions);
23
+ };
24
+ mergeRight.all = (list, options) => {
25
+ if (!Array.isArray(list)) {
26
+ throw new TypeError('First argument of mergeRight should be an array.');
27
+ }
28
+ if (list.length === 0) {
29
+ return new _minim.ObjectElement();
30
+ }
31
+ return list.reduce((target, source) => {
32
+ return mergeRight(target, source, options);
33
+ }, (0, _deepmerge.emptyElement)(list[0]));
34
+ };
35
+ var _default = exports.default = mergeRight;
@@ -0,0 +1,29 @@
1
+ import { ObjectElement } from 'minim';
2
+ import deepmerge, { defaultOptions as defaultDeepmergeOptions, emptyElement } from "./deepmerge.mjs";
3
+ /**
4
+ * @public
5
+ */
6
+ /**
7
+ * @public
8
+ */
9
+ const mergeRight = (targetElement, sourceElement, options) => {
10
+ const mergedOptions = {
11
+ ...defaultDeepmergeOptions,
12
+ ...options,
13
+ customMerge: () => (target, source) => source,
14
+ clone: false
15
+ };
16
+ return deepmerge(targetElement, sourceElement, mergedOptions);
17
+ };
18
+ mergeRight.all = (list, options) => {
19
+ if (!Array.isArray(list)) {
20
+ throw new TypeError('First argument of mergeRight should be an array.');
21
+ }
22
+ if (list.length === 0) {
23
+ return new ObjectElement();
24
+ }
25
+ return list.reduce((target, source) => {
26
+ return mergeRight(target, source, options);
27
+ }, emptyElement(list[0]));
28
+ };
29
+ export default mergeRight;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
+ exports.__esModule = true;
5
+ exports.default = exports.createNamespace = exports.Namespace = void 0;
6
+ var _minim = require("minim");
7
+ var _ramdaAdjunct = require("ramda-adjunct");
8
+ var _Annotation = _interopRequireDefault(require("./elements/Annotation.cjs"));
9
+ var _Comment = _interopRequireDefault(require("./elements/Comment.cjs"));
10
+ var _ParseResult = _interopRequireDefault(require("./elements/ParseResult.cjs"));
11
+ var _SourceMap = _interopRequireDefault(require("./elements/SourceMap.cjs"));
12
+ /**
13
+ * @public
14
+ */
15
+ class Namespace extends _minim.Namespace {
16
+ constructor() {
17
+ super();
18
+ this.register('annotation', _Annotation.default);
19
+ this.register('comment', _Comment.default);
20
+ this.register('parseResult', _ParseResult.default);
21
+ this.register('sourceMap', _SourceMap.default);
22
+ }
23
+ }
24
+
25
+ /**
26
+ * @public
27
+ */
28
+ exports.Namespace = Namespace;
29
+ const namespace = new Namespace();
30
+
31
+ /**
32
+ * @public
33
+ */
34
+ const createNamespace = namespacePlugin => {
35
+ const namespaceInstance = new Namespace();
36
+ if ((0, _ramdaAdjunct.isPlainObject)(namespacePlugin)) {
37
+ namespaceInstance.use(namespacePlugin);
38
+ }
39
+ return namespaceInstance;
40
+ };
41
+ exports.createNamespace = createNamespace;
42
+ var _default = exports.default = namespace;
@@ -0,0 +1,35 @@
1
+ import { Namespace as MinimNamespace } from 'minim';
2
+ import { isPlainObject } from 'ramda-adjunct';
3
+ import AnnotationElement from "./elements/Annotation.mjs";
4
+ import CommentElement from "./elements/Comment.mjs";
5
+ import ParseResultElement from "./elements/ParseResult.mjs";
6
+ import SourceMapElement from "./elements/SourceMap.mjs";
7
+ /**
8
+ * @public
9
+ */
10
+ export class Namespace extends MinimNamespace {
11
+ constructor() {
12
+ super();
13
+ this.register('annotation', AnnotationElement);
14
+ this.register('comment', CommentElement);
15
+ this.register('parseResult', ParseResultElement);
16
+ this.register('sourceMap', SourceMapElement);
17
+ }
18
+ }
19
+
20
+ /**
21
+ * @public
22
+ */
23
+ const namespace = new Namespace();
24
+
25
+ /**
26
+ * @public
27
+ */
28
+ export const createNamespace = namespacePlugin => {
29
+ const namespaceInstance = new Namespace();
30
+ if (isPlainObject(namespacePlugin)) {
31
+ namespaceInstance.use(namespacePlugin);
32
+ }
33
+ return namespaceInstance;
34
+ };
35
+ export default namespace;
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.primitiveEq = exports.isElementType = exports.hasMethod = exports.hasClass = exports.hasBasicElementProps = exports.default = void 0;
5
+ var _minim = require("minim");
6
+ /**
7
+ * @public
8
+ */
9
+
10
+ /**
11
+ * @public
12
+ */
13
+
14
+ /**
15
+ * @public
16
+ */
17
+
18
+ /**
19
+ * @public
20
+ */
21
+
22
+ /**
23
+ * @public
24
+ */
25
+
26
+ /**
27
+ * @public
28
+ */
29
+
30
+ /**
31
+ * @public
32
+ */
33
+
34
+ /**
35
+ * @public
36
+ */
37
+ const hasMethod = (name, element) => {
38
+ return typeof element === 'object' && element !== null && name in element && typeof element[name] === 'function';
39
+ };
40
+
41
+ /**
42
+ * @public
43
+ */
44
+ exports.hasMethod = hasMethod;
45
+ const hasBasicElementProps = element => typeof element === 'object' && element != null && '_storedElement' in element && typeof element._storedElement === 'string' && '_content' in element;
46
+
47
+ /**
48
+ * @public
49
+ */
50
+ exports.hasBasicElementProps = hasBasicElementProps;
51
+ const primitiveEq = (val, element) => {
52
+ if (typeof element === 'object' && element !== null && 'primitive' in element) {
53
+ return typeof element.primitive === 'function' && element.primitive() === val;
54
+ }
55
+ return false;
56
+ };
57
+
58
+ /**
59
+ * @public
60
+ */
61
+ exports.primitiveEq = primitiveEq;
62
+ const hasClass = (cls, element) => {
63
+ return typeof element === 'object' && element !== null && 'classes' in element && (Array.isArray(element.classes) || element.classes instanceof _minim.ArrayElement) && element.classes.includes(cls);
64
+ };
65
+
66
+ /**
67
+ * @public
68
+ */
69
+ exports.hasClass = hasClass;
70
+ const isElementType = (name, element) => typeof element === 'object' && element !== null && 'element' in element && element.element === name;
71
+
72
+ /**
73
+ * @public
74
+ */
75
+ exports.isElementType = isElementType;
76
+ const createPredicate = predicateCreator => {
77
+ return predicateCreator({
78
+ hasMethod,
79
+ hasBasicElementProps,
80
+ primitiveEq,
81
+ isElementType,
82
+ hasClass
83
+ });
84
+ };
85
+ var _default = exports.default = createPredicate;