@speclynx/apidom-core 3.2.1 → 4.0.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.
- package/CHANGELOG.md +4 -0
- package/dist/apidom-core.browser.js +24 -20
- package/package.json +5 -5
- package/src/fields/fixed-fields.cjs +0 -47
- package/src/fields/fixed-fields.mjs +0 -43
- package/src/fields/index.cjs +0 -8
- package/src/fields/index.mjs +0 -1
- package/src/identity/errors/ElementIdentityError.cjs +0 -22
- package/src/identity/errors/ElementIdentityError.mjs +0 -19
- package/src/identity/index.cjs +0 -64
- package/src/identity/index.mjs +0 -58
- package/src/index.cjs +0 -48
- package/src/index.mjs +0 -41
- package/src/media-types.cjs +0 -21
- package/src/media-types.mjs +0 -18
- package/src/merge/deepmerge.cjs +0 -165
- package/src/merge/deepmerge.mjs +0 -149
- package/src/merge/merge-left.cjs +0 -16
- package/src/merge/merge-left.mjs +0 -11
- package/src/merge/merge-right.cjs +0 -35
- package/src/merge/merge-right.mjs +0 -29
- package/src/namespace.cjs +0 -10
- package/src/namespace.mjs +0 -7
- package/src/refractor/plugins/dispatcher/index.cjs +0 -64
- package/src/refractor/plugins/dispatcher/index.mjs +0 -54
- package/src/refractor/plugins/element-identity.cjs +0 -31
- package/src/refractor/plugins/element-identity.mjs +0 -26
- package/src/refractor/plugins/semantic-element-identity.cjs +0 -33
- package/src/refractor/plugins/semantic-element-identity.mjs +0 -29
- package/src/refractor/toolbox.cjs +0 -47
- package/src/refractor/toolbox.mjs +0 -41
- package/src/specification.cjs +0 -63
- package/src/specification.mjs +0 -59
- package/src/transcluder/Transcluder.cjs +0 -111
- package/src/transcluder/Transcluder.mjs +0 -107
- package/src/transcluder/index.cjs +0 -19
- package/src/transcluder/index.mjs +0 -13
- package/src/transformers/dehydrate.cjs +0 -15
- package/src/transformers/dehydrate.mjs +0 -10
- package/src/transformers/from.cjs +0 -34
- package/src/transformers/from.mjs +0 -29
- package/src/transformers/serializers/json.cjs +0 -75
- package/src/transformers/serializers/json.mjs +0 -70
- package/src/transformers/serializers/value.cjs +0 -50
- package/src/transformers/serializers/value.mjs +0 -47
- package/src/transformers/serializers/yaml-1-2.cjs +0 -142
- package/src/transformers/serializers/yaml-1-2.mjs +0 -137
- package/src/transformers/sexprs.cjs +0 -31
- package/src/transformers/sexprs.mjs +0 -28
- package/src/transformers/to-string.cjs +0 -16
- package/src/transformers/to-string.mjs +0 -11
package/src/merge/deepmerge.cjs
DELETED
|
@@ -1,165 +0,0 @@
|
|
|
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 _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
7
|
-
var _value = _interopRequireDefault(require("../transformers/serializers/value.cjs"));
|
|
8
|
-
/**
|
|
9
|
-
* @public
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* @public
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* @public
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* @public
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* @public
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* @public
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* @public
|
|
34
|
-
*/
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* @public
|
|
38
|
-
*/
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* @public
|
|
42
|
-
*/
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* @public
|
|
46
|
-
*/
|
|
47
|
-
|
|
48
|
-
const emptyElement = element => {
|
|
49
|
-
const meta = !element.isMetaEmpty ? element.meta.cloneDeep() : undefined;
|
|
50
|
-
const attributes = !element.isAttributesEmpty ? (0, _apidomDatamodel.cloneDeep)(element.attributes) : undefined;
|
|
51
|
-
|
|
52
|
-
// @ts-ignore
|
|
53
|
-
return new element.constructor(undefined, meta, attributes);
|
|
54
|
-
};
|
|
55
|
-
exports.emptyElement = emptyElement;
|
|
56
|
-
const cloneUnlessOtherwiseSpecified = (element, options) => options.clone && options.isMergeableElement(element) ? deepmerge(emptyElement(element), element, options) : element;
|
|
57
|
-
const getMergeFunction = (keyElement, options) => {
|
|
58
|
-
if (typeof options.customMerge !== 'function') {
|
|
59
|
-
return deepmerge;
|
|
60
|
-
}
|
|
61
|
-
const customMerge = options.customMerge(keyElement, options);
|
|
62
|
-
return typeof customMerge === 'function' ? customMerge : deepmerge;
|
|
63
|
-
};
|
|
64
|
-
const getMetaMergeFunction = options => {
|
|
65
|
-
if (typeof options.customMetaMerge !== 'function') {
|
|
66
|
-
return targetMeta => targetMeta.cloneDeep();
|
|
67
|
-
}
|
|
68
|
-
return options.customMetaMerge;
|
|
69
|
-
};
|
|
70
|
-
const getAttributesMergeFunction = options => {
|
|
71
|
-
if (typeof options.customAttributesMerge !== 'function') {
|
|
72
|
-
return targetAttributes => (0, _apidomDatamodel.cloneDeep)(targetAttributes);
|
|
73
|
-
}
|
|
74
|
-
return options.customAttributesMerge;
|
|
75
|
-
};
|
|
76
|
-
const mergeArrayElement = (targetElement, sourceElement, options) => {
|
|
77
|
-
const Ctor = targetElement.constructor;
|
|
78
|
-
const merged = targetElement.concat(sourceElement);
|
|
79
|
-
return new Ctor(merged.map(item => cloneUnlessOtherwiseSpecified(item, options)));
|
|
80
|
-
};
|
|
81
|
-
const mergeObjectElement = (targetElement, sourceElement, options) => {
|
|
82
|
-
const destination = (0, _apidomDatamodel.isObjectElement)(targetElement) ? emptyElement(targetElement) : emptyElement(sourceElement);
|
|
83
|
-
if ((0, _apidomDatamodel.isObjectElement)(targetElement)) {
|
|
84
|
-
targetElement.forEach((value, key, member) => {
|
|
85
|
-
const clonedMember = (0, _apidomDatamodel.cloneShallow)(member);
|
|
86
|
-
clonedMember.value = cloneUnlessOtherwiseSpecified(value, options);
|
|
87
|
-
destination.content.push(clonedMember);
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
sourceElement.forEach((value, key, member) => {
|
|
91
|
-
const keyValue = (0, _value.default)(key);
|
|
92
|
-
let clonedMember;
|
|
93
|
-
if ((0, _apidomDatamodel.isObjectElement)(targetElement) && targetElement.hasKey(keyValue) && options.isMergeableElement(value)) {
|
|
94
|
-
const targetValue = targetElement.get(keyValue);
|
|
95
|
-
clonedMember = (0, _apidomDatamodel.cloneShallow)(member);
|
|
96
|
-
clonedMember.value = getMergeFunction(key, options)(targetValue, value, options);
|
|
97
|
-
} else {
|
|
98
|
-
clonedMember = (0, _apidomDatamodel.cloneShallow)(member);
|
|
99
|
-
clonedMember.value = cloneUnlessOtherwiseSpecified(value, options);
|
|
100
|
-
}
|
|
101
|
-
destination.remove(keyValue);
|
|
102
|
-
destination.content.push(clonedMember);
|
|
103
|
-
});
|
|
104
|
-
return destination;
|
|
105
|
-
};
|
|
106
|
-
const defaultOptions = exports.defaultOptions = {
|
|
107
|
-
clone: true,
|
|
108
|
-
isMergeableElement: element => (0, _apidomDatamodel.isObjectElement)(element) || (0, _apidomDatamodel.isArrayElement)(element),
|
|
109
|
-
arrayElementMerge: mergeArrayElement,
|
|
110
|
-
objectElementMerge: mergeObjectElement,
|
|
111
|
-
customMerge: undefined,
|
|
112
|
-
customMetaMerge: undefined,
|
|
113
|
-
customAttributesMerge: undefined
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* @public
|
|
118
|
-
*/
|
|
119
|
-
const deepmerge = (targetElement, sourceElement, options) => {
|
|
120
|
-
const mergedOptions = {
|
|
121
|
-
...defaultOptions,
|
|
122
|
-
...options
|
|
123
|
-
};
|
|
124
|
-
mergedOptions.isMergeableElement = mergedOptions.isMergeableElement ?? defaultOptions.isMergeableElement;
|
|
125
|
-
mergedOptions.arrayElementMerge = mergedOptions.arrayElementMerge ?? defaultOptions.arrayElementMerge;
|
|
126
|
-
mergedOptions.objectElementMerge = mergedOptions.objectElementMerge ?? defaultOptions.objectElementMerge;
|
|
127
|
-
const sourceIsArrayElement = (0, _apidomDatamodel.isArrayElement)(sourceElement);
|
|
128
|
-
const targetIsArrayElement = (0, _apidomDatamodel.isArrayElement)(targetElement);
|
|
129
|
-
const sourceAndTargetTypesMatch = sourceIsArrayElement === targetIsArrayElement;
|
|
130
|
-
if (!sourceAndTargetTypesMatch) {
|
|
131
|
-
return cloneUnlessOtherwiseSpecified(sourceElement, mergedOptions);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// merging two elements
|
|
135
|
-
const mergedElement = sourceIsArrayElement && typeof mergedOptions.arrayElementMerge === 'function' ? mergedOptions.arrayElementMerge(targetElement, sourceElement, mergedOptions) : mergedOptions.objectElementMerge(targetElement, sourceElement, mergedOptions);
|
|
136
|
-
|
|
137
|
-
// merging meta & attributes
|
|
138
|
-
if (!targetElement.isMetaEmpty && !sourceElement.isMetaEmpty) {
|
|
139
|
-
mergedElement.meta = getMetaMergeFunction(mergedOptions)(targetElement.meta, sourceElement.meta);
|
|
140
|
-
} else if (!targetElement.isMetaEmpty) {
|
|
141
|
-
mergedElement.meta = targetElement.meta.cloneDeep();
|
|
142
|
-
} else if (!sourceElement.isMetaEmpty) {
|
|
143
|
-
mergedElement.meta = sourceElement.meta.cloneDeep();
|
|
144
|
-
}
|
|
145
|
-
if (!targetElement.isAttributesEmpty && !sourceElement.isAttributesEmpty) {
|
|
146
|
-
mergedElement.attributes = getAttributesMergeFunction(mergedOptions)(targetElement.attributes, sourceElement.attributes);
|
|
147
|
-
} else if (!targetElement.isAttributesEmpty) {
|
|
148
|
-
mergedElement.attributes = (0, _apidomDatamodel.cloneDeep)(targetElement.attributes);
|
|
149
|
-
} else if (!sourceElement.isAttributesEmpty) {
|
|
150
|
-
mergedElement.attributes = (0, _apidomDatamodel.cloneDeep)(sourceElement.attributes);
|
|
151
|
-
}
|
|
152
|
-
return mergedElement;
|
|
153
|
-
};
|
|
154
|
-
deepmerge.all = (list, options) => {
|
|
155
|
-
if (!Array.isArray(list)) {
|
|
156
|
-
throw new TypeError('First argument of deepmerge should be an array.');
|
|
157
|
-
}
|
|
158
|
-
if (list.length === 0) {
|
|
159
|
-
return new _apidomDatamodel.ObjectElement();
|
|
160
|
-
}
|
|
161
|
-
return list.reduce((target, source) => {
|
|
162
|
-
return deepmerge(target, source, options);
|
|
163
|
-
}, emptyElement(list[0]));
|
|
164
|
-
};
|
|
165
|
-
var _default = exports.default = deepmerge;
|
package/src/merge/deepmerge.mjs
DELETED
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
import { ObjectElement, isObjectElement, isArrayElement, cloneDeep, cloneShallow } from '@speclynx/apidom-datamodel';
|
|
2
|
-
import toValue from "../transformers/serializers/value.mjs";
|
|
3
|
-
/**
|
|
4
|
-
* @public
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* @public
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* @public
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* @public
|
|
14
|
-
*/
|
|
15
|
-
/**
|
|
16
|
-
* @public
|
|
17
|
-
*/
|
|
18
|
-
/**
|
|
19
|
-
* @public
|
|
20
|
-
*/
|
|
21
|
-
/**
|
|
22
|
-
* @public
|
|
23
|
-
*/
|
|
24
|
-
/**
|
|
25
|
-
* @public
|
|
26
|
-
*/
|
|
27
|
-
/**
|
|
28
|
-
* @public
|
|
29
|
-
*/
|
|
30
|
-
/**
|
|
31
|
-
* @public
|
|
32
|
-
*/
|
|
33
|
-
export const emptyElement = element => {
|
|
34
|
-
const meta = !element.isMetaEmpty ? element.meta.cloneDeep() : undefined;
|
|
35
|
-
const attributes = !element.isAttributesEmpty ? cloneDeep(element.attributes) : undefined;
|
|
36
|
-
|
|
37
|
-
// @ts-ignore
|
|
38
|
-
return new element.constructor(undefined, meta, attributes);
|
|
39
|
-
};
|
|
40
|
-
const cloneUnlessOtherwiseSpecified = (element, options) => options.clone && options.isMergeableElement(element) ? deepmerge(emptyElement(element), element, options) : element;
|
|
41
|
-
const getMergeFunction = (keyElement, options) => {
|
|
42
|
-
if (typeof options.customMerge !== 'function') {
|
|
43
|
-
return deepmerge;
|
|
44
|
-
}
|
|
45
|
-
const customMerge = options.customMerge(keyElement, options);
|
|
46
|
-
return typeof customMerge === 'function' ? customMerge : deepmerge;
|
|
47
|
-
};
|
|
48
|
-
const getMetaMergeFunction = options => {
|
|
49
|
-
if (typeof options.customMetaMerge !== 'function') {
|
|
50
|
-
return targetMeta => targetMeta.cloneDeep();
|
|
51
|
-
}
|
|
52
|
-
return options.customMetaMerge;
|
|
53
|
-
};
|
|
54
|
-
const getAttributesMergeFunction = options => {
|
|
55
|
-
if (typeof options.customAttributesMerge !== 'function') {
|
|
56
|
-
return targetAttributes => cloneDeep(targetAttributes);
|
|
57
|
-
}
|
|
58
|
-
return options.customAttributesMerge;
|
|
59
|
-
};
|
|
60
|
-
const mergeArrayElement = (targetElement, sourceElement, options) => {
|
|
61
|
-
const Ctor = targetElement.constructor;
|
|
62
|
-
const merged = targetElement.concat(sourceElement);
|
|
63
|
-
return new Ctor(merged.map(item => cloneUnlessOtherwiseSpecified(item, options)));
|
|
64
|
-
};
|
|
65
|
-
const mergeObjectElement = (targetElement, sourceElement, options) => {
|
|
66
|
-
const destination = isObjectElement(targetElement) ? emptyElement(targetElement) : emptyElement(sourceElement);
|
|
67
|
-
if (isObjectElement(targetElement)) {
|
|
68
|
-
targetElement.forEach((value, key, member) => {
|
|
69
|
-
const clonedMember = cloneShallow(member);
|
|
70
|
-
clonedMember.value = cloneUnlessOtherwiseSpecified(value, options);
|
|
71
|
-
destination.content.push(clonedMember);
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
sourceElement.forEach((value, key, member) => {
|
|
75
|
-
const keyValue = toValue(key);
|
|
76
|
-
let clonedMember;
|
|
77
|
-
if (isObjectElement(targetElement) && targetElement.hasKey(keyValue) && options.isMergeableElement(value)) {
|
|
78
|
-
const targetValue = targetElement.get(keyValue);
|
|
79
|
-
clonedMember = cloneShallow(member);
|
|
80
|
-
clonedMember.value = getMergeFunction(key, options)(targetValue, value, options);
|
|
81
|
-
} else {
|
|
82
|
-
clonedMember = cloneShallow(member);
|
|
83
|
-
clonedMember.value = cloneUnlessOtherwiseSpecified(value, options);
|
|
84
|
-
}
|
|
85
|
-
destination.remove(keyValue);
|
|
86
|
-
destination.content.push(clonedMember);
|
|
87
|
-
});
|
|
88
|
-
return destination;
|
|
89
|
-
};
|
|
90
|
-
export const defaultOptions = {
|
|
91
|
-
clone: true,
|
|
92
|
-
isMergeableElement: element => isObjectElement(element) || isArrayElement(element),
|
|
93
|
-
arrayElementMerge: mergeArrayElement,
|
|
94
|
-
objectElementMerge: mergeObjectElement,
|
|
95
|
-
customMerge: undefined,
|
|
96
|
-
customMetaMerge: undefined,
|
|
97
|
-
customAttributesMerge: undefined
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* @public
|
|
102
|
-
*/
|
|
103
|
-
const deepmerge = (targetElement, sourceElement, options) => {
|
|
104
|
-
const mergedOptions = {
|
|
105
|
-
...defaultOptions,
|
|
106
|
-
...options
|
|
107
|
-
};
|
|
108
|
-
mergedOptions.isMergeableElement = mergedOptions.isMergeableElement ?? defaultOptions.isMergeableElement;
|
|
109
|
-
mergedOptions.arrayElementMerge = mergedOptions.arrayElementMerge ?? defaultOptions.arrayElementMerge;
|
|
110
|
-
mergedOptions.objectElementMerge = mergedOptions.objectElementMerge ?? defaultOptions.objectElementMerge;
|
|
111
|
-
const sourceIsArrayElement = isArrayElement(sourceElement);
|
|
112
|
-
const targetIsArrayElement = isArrayElement(targetElement);
|
|
113
|
-
const sourceAndTargetTypesMatch = sourceIsArrayElement === targetIsArrayElement;
|
|
114
|
-
if (!sourceAndTargetTypesMatch) {
|
|
115
|
-
return cloneUnlessOtherwiseSpecified(sourceElement, mergedOptions);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// merging two elements
|
|
119
|
-
const mergedElement = sourceIsArrayElement && typeof mergedOptions.arrayElementMerge === 'function' ? mergedOptions.arrayElementMerge(targetElement, sourceElement, mergedOptions) : mergedOptions.objectElementMerge(targetElement, sourceElement, mergedOptions);
|
|
120
|
-
|
|
121
|
-
// merging meta & attributes
|
|
122
|
-
if (!targetElement.isMetaEmpty && !sourceElement.isMetaEmpty) {
|
|
123
|
-
mergedElement.meta = getMetaMergeFunction(mergedOptions)(targetElement.meta, sourceElement.meta);
|
|
124
|
-
} else if (!targetElement.isMetaEmpty) {
|
|
125
|
-
mergedElement.meta = targetElement.meta.cloneDeep();
|
|
126
|
-
} else if (!sourceElement.isMetaEmpty) {
|
|
127
|
-
mergedElement.meta = sourceElement.meta.cloneDeep();
|
|
128
|
-
}
|
|
129
|
-
if (!targetElement.isAttributesEmpty && !sourceElement.isAttributesEmpty) {
|
|
130
|
-
mergedElement.attributes = getAttributesMergeFunction(mergedOptions)(targetElement.attributes, sourceElement.attributes);
|
|
131
|
-
} else if (!targetElement.isAttributesEmpty) {
|
|
132
|
-
mergedElement.attributes = cloneDeep(targetElement.attributes);
|
|
133
|
-
} else if (!sourceElement.isAttributesEmpty) {
|
|
134
|
-
mergedElement.attributes = cloneDeep(sourceElement.attributes);
|
|
135
|
-
}
|
|
136
|
-
return mergedElement;
|
|
137
|
-
};
|
|
138
|
-
deepmerge.all = (list, options) => {
|
|
139
|
-
if (!Array.isArray(list)) {
|
|
140
|
-
throw new TypeError('First argument of deepmerge should be an array.');
|
|
141
|
-
}
|
|
142
|
-
if (list.length === 0) {
|
|
143
|
-
return new ObjectElement();
|
|
144
|
-
}
|
|
145
|
-
return list.reduce((target, source) => {
|
|
146
|
-
return deepmerge(target, source, options);
|
|
147
|
-
}, emptyElement(list[0]));
|
|
148
|
-
};
|
|
149
|
-
export default deepmerge;
|
package/src/merge/merge-left.cjs
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
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;
|
package/src/merge/merge-left.mjs
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
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;
|
|
@@ -1,35 +0,0 @@
|
|
|
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 _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
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 _apidomDatamodel.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;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { ObjectElement } from '@speclynx/apidom-datamodel';
|
|
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;
|
package/src/namespace.cjs
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
exports.__esModule = true;
|
|
4
|
-
exports.default = void 0;
|
|
5
|
-
var _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
6
|
-
/**
|
|
7
|
-
* Default namespace instance with all base elements registered.
|
|
8
|
-
*/
|
|
9
|
-
const namespace = new _apidomDatamodel.Namespace();
|
|
10
|
-
var _default = exports.default = namespace;
|
package/src/namespace.mjs
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
|
-
exports.__esModule = true;
|
|
5
|
-
exports.dispatchPluginsSync = exports.dispatchPluginsAsync = void 0;
|
|
6
|
-
var _apidomTraverse = require("@speclynx/apidom-traverse");
|
|
7
|
-
var _ramda = require("ramda");
|
|
8
|
-
var _ramdaAdjunct = require("ramda-adjunct");
|
|
9
|
-
var _toolbox = _interopRequireDefault(require("../../toolbox.cjs"));
|
|
10
|
-
/**
|
|
11
|
-
* @public
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @public
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* @public
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
const defaultDispatchPluginsOptions = {
|
|
23
|
-
toolboxCreator: _toolbox.default,
|
|
24
|
-
visitorOptions: {
|
|
25
|
-
exposeEdits: true
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* @public
|
|
31
|
-
*/
|
|
32
|
-
const dispatchPluginsSync = (element, plugins, options = {}) => {
|
|
33
|
-
if (plugins.length === 0) return element;
|
|
34
|
-
const mergedOptions = (0, _ramda.mergeDeepRight)(defaultDispatchPluginsOptions, options);
|
|
35
|
-
const {
|
|
36
|
-
toolboxCreator,
|
|
37
|
-
visitorOptions
|
|
38
|
-
} = mergedOptions;
|
|
39
|
-
const toolbox = toolboxCreator();
|
|
40
|
-
const pluginsSpecs = plugins.map(plugin => plugin(toolbox));
|
|
41
|
-
const mergedPluginsVisitor = (0, _apidomTraverse.mergeVisitors)(pluginsSpecs.map((0, _ramda.propOr)({}, 'visitor')), visitorOptions);
|
|
42
|
-
pluginsSpecs.forEach((0, _ramdaAdjunct.invokeArgs)(['pre'], []));
|
|
43
|
-
const newElement = (0, _apidomTraverse.traverse)(element, mergedPluginsVisitor);
|
|
44
|
-
pluginsSpecs.forEach((0, _ramdaAdjunct.invokeArgs)(['post'], []));
|
|
45
|
-
return newElement;
|
|
46
|
-
};
|
|
47
|
-
exports.dispatchPluginsSync = dispatchPluginsSync;
|
|
48
|
-
const dispatchPluginsAsync = async (element, plugins, options = {}) => {
|
|
49
|
-
if (plugins.length === 0) return element;
|
|
50
|
-
const mergedOptions = (0, _ramda.mergeDeepRight)(defaultDispatchPluginsOptions, options);
|
|
51
|
-
const {
|
|
52
|
-
toolboxCreator,
|
|
53
|
-
visitorOptions
|
|
54
|
-
} = mergedOptions;
|
|
55
|
-
const toolbox = toolboxCreator();
|
|
56
|
-
const pluginsSpecs = plugins.map(plugin => plugin(toolbox));
|
|
57
|
-
const mergedPluginsVisitor = (0, _apidomTraverse.mergeVisitorsAsync)(pluginsSpecs.map((0, _ramda.propOr)({}, 'visitor')), visitorOptions);
|
|
58
|
-
await Promise.allSettled(pluginsSpecs.map((0, _ramdaAdjunct.invokeArgs)(['pre'], [])));
|
|
59
|
-
const newElement = await (0, _apidomTraverse.traverseAsync)(element, mergedPluginsVisitor);
|
|
60
|
-
await Promise.allSettled(pluginsSpecs.map((0, _ramdaAdjunct.invokeArgs)(['post'], [])));
|
|
61
|
-
return newElement;
|
|
62
|
-
};
|
|
63
|
-
exports.dispatchPluginsAsync = dispatchPluginsAsync;
|
|
64
|
-
dispatchPluginsSync[Symbol.for('nodejs.util.promisify.custom')] = dispatchPluginsAsync;
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { traverse, traverseAsync, mergeVisitors, mergeVisitorsAsync } from '@speclynx/apidom-traverse';
|
|
2
|
-
import { mergeDeepRight, propOr } from 'ramda';
|
|
3
|
-
import { invokeArgs } from 'ramda-adjunct';
|
|
4
|
-
import createToolbox from "../../toolbox.mjs";
|
|
5
|
-
/**
|
|
6
|
-
* @public
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* @public
|
|
10
|
-
*/
|
|
11
|
-
/**
|
|
12
|
-
* @public
|
|
13
|
-
*/
|
|
14
|
-
const defaultDispatchPluginsOptions = {
|
|
15
|
-
toolboxCreator: createToolbox,
|
|
16
|
-
visitorOptions: {
|
|
17
|
-
exposeEdits: true
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* @public
|
|
23
|
-
*/
|
|
24
|
-
export const dispatchPluginsSync = (element, plugins, options = {}) => {
|
|
25
|
-
if (plugins.length === 0) return element;
|
|
26
|
-
const mergedOptions = mergeDeepRight(defaultDispatchPluginsOptions, options);
|
|
27
|
-
const {
|
|
28
|
-
toolboxCreator,
|
|
29
|
-
visitorOptions
|
|
30
|
-
} = mergedOptions;
|
|
31
|
-
const toolbox = toolboxCreator();
|
|
32
|
-
const pluginsSpecs = plugins.map(plugin => plugin(toolbox));
|
|
33
|
-
const mergedPluginsVisitor = mergeVisitors(pluginsSpecs.map(propOr({}, 'visitor')), visitorOptions);
|
|
34
|
-
pluginsSpecs.forEach(invokeArgs(['pre'], []));
|
|
35
|
-
const newElement = traverse(element, mergedPluginsVisitor);
|
|
36
|
-
pluginsSpecs.forEach(invokeArgs(['post'], []));
|
|
37
|
-
return newElement;
|
|
38
|
-
};
|
|
39
|
-
export const dispatchPluginsAsync = async (element, plugins, options = {}) => {
|
|
40
|
-
if (plugins.length === 0) return element;
|
|
41
|
-
const mergedOptions = mergeDeepRight(defaultDispatchPluginsOptions, options);
|
|
42
|
-
const {
|
|
43
|
-
toolboxCreator,
|
|
44
|
-
visitorOptions
|
|
45
|
-
} = mergedOptions;
|
|
46
|
-
const toolbox = toolboxCreator();
|
|
47
|
-
const pluginsSpecs = plugins.map(plugin => plugin(toolbox));
|
|
48
|
-
const mergedPluginsVisitor = mergeVisitorsAsync(pluginsSpecs.map(propOr({}, 'visitor')), visitorOptions);
|
|
49
|
-
await Promise.allSettled(pluginsSpecs.map(invokeArgs(['pre'], [])));
|
|
50
|
-
const newElement = await traverseAsync(element, mergedPluginsVisitor);
|
|
51
|
-
await Promise.allSettled(pluginsSpecs.map(invokeArgs(['post'], [])));
|
|
52
|
-
return newElement;
|
|
53
|
-
};
|
|
54
|
-
dispatchPluginsSync[Symbol.for('nodejs.util.promisify.custom')] = dispatchPluginsAsync;
|
|
@@ -1,31 +0,0 @@
|
|
|
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(path) {
|
|
23
|
-
path.node.id = identityManager.identify(path.node);
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
post() {
|
|
27
|
-
identityManager = null;
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
var _default = exports.default = plugin;
|
|
@@ -1,26 +0,0 @@
|
|
|
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(path) {
|
|
18
|
-
path.node.id = identityManager.identify(path.node);
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
post() {
|
|
22
|
-
identityManager = null;
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
};
|
|
26
|
-
export default plugin;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
exports.__esModule = true;
|
|
4
|
-
exports.default = void 0;
|
|
5
|
-
var _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
6
|
-
var _index = require("../../identity/index.cjs");
|
|
7
|
-
/**
|
|
8
|
-
* Plugin for decorating every semantic element in ApiDOM tree with UUID.
|
|
9
|
-
* @public
|
|
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(path) {
|
|
23
|
-
if (!(0, _apidomDatamodel.isPrimitiveElement)(path.node)) {
|
|
24
|
-
path.node.id = identityManager.identify(path.node);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
post() {
|
|
29
|
-
identityManager = null;
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
var _default = exports.default = plugin;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { isPrimitiveElement } from '@speclynx/apidom-datamodel';
|
|
2
|
-
import { IdentityManager } from "../../identity/index.mjs";
|
|
3
|
-
/**
|
|
4
|
-
* Plugin for decorating every semantic element in ApiDOM tree with UUID.
|
|
5
|
-
* @public
|
|
6
|
-
*/
|
|
7
|
-
const plugin = ({
|
|
8
|
-
length = 6
|
|
9
|
-
} = {}) => () => {
|
|
10
|
-
let identityManager;
|
|
11
|
-
return {
|
|
12
|
-
pre() {
|
|
13
|
-
identityManager = new IdentityManager({
|
|
14
|
-
length
|
|
15
|
-
});
|
|
16
|
-
},
|
|
17
|
-
visitor: {
|
|
18
|
-
enter(path) {
|
|
19
|
-
if (!isPrimitiveElement(path.node)) {
|
|
20
|
-
path.node.id = identityManager.identify(path.node);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
post() {
|
|
25
|
-
identityManager = null;
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
};
|
|
29
|
-
export default plugin;
|