@swagger-api/apidom-core 0.76.2 → 0.78.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 +17 -0
- package/README.md +53 -5
- package/cjs/clone/errors/CloneError.cjs +7 -0
- package/cjs/clone/errors/DeepCloneError.cjs +8 -0
- package/cjs/clone/errors/ShallowCloneError.cjs +8 -0
- package/cjs/clone/index.cjs +105 -0
- package/cjs/deepmerge.cjs +9 -7
- package/cjs/elements/Annotation.cjs +1 -2
- package/cjs/elements/Comment.cjs +1 -2
- package/cjs/elements/ParseResult.cjs +1 -2
- package/cjs/elements/SourceMap.cjs +1 -2
- package/cjs/index.cjs +61 -101
- package/cjs/media-types.cjs +4 -5
- package/cjs/namespace.cjs +1 -2
- package/cjs/predicates/helpers.cjs +1 -2
- package/cjs/predicates/index.cjs +14 -28
- package/cjs/refractor/index.cjs +1 -2
- package/cjs/refractor/plugins/element-identity.cjs +1 -2
- package/cjs/refractor/plugins/semantic-element-identity.cjs +1 -2
- package/cjs/refractor/toolbox.cjs +1 -2
- package/cjs/transcluder/Transcluder.cjs +1 -2
- package/cjs/transcluder/index.cjs +1 -2
- package/cjs/transformers/dehydrate.cjs +14 -0
- package/cjs/transformers/from.cjs +27 -0
- package/cjs/{serializers → transformers/serializers}/json.cjs +1 -2
- package/cjs/{serializers → transformers/serializers}/value/ast/ephemeral-array.cjs +1 -2
- package/cjs/{serializers → transformers/serializers}/value/ast/ephemeral-object.cjs +1 -2
- package/cjs/{serializers → transformers/serializers}/value/index.cjs +8 -2
- package/cjs/{serializers → transformers/serializers}/value/visitor.cjs +1 -1
- package/cjs/{serializers → transformers/serializers}/yaml-1-2.cjs +2 -3
- package/cjs/{sexprs.cjs → transformers/sexprs.cjs} +2 -3
- package/cjs/transformers/to-string.cjs +15 -0
- package/cjs/traversal/filter.cjs +1 -2
- package/cjs/traversal/find.cjs +1 -2
- package/cjs/traversal/findAtOffset.cjs +4 -4
- package/cjs/traversal/parents.cjs +1 -2
- package/cjs/traversal/reject.cjs +1 -2
- package/cjs/traversal/some.cjs +1 -2
- package/cjs/traversal/traverse.cjs +2 -4
- package/cjs/traversal/visitor.cjs +17 -8
- package/dist/apidom-core.browser.js +4554 -17668
- package/dist/apidom-core.browser.min.js +1 -1
- package/es/clone/errors/CloneError.mjs +3 -0
- package/es/clone/errors/DeepCloneError.mjs +3 -0
- package/es/clone/errors/ShallowCloneError.mjs +3 -0
- package/es/clone/index.mjs +98 -0
- package/es/deepmerge.mjs +9 -8
- package/es/index.mjs +12 -38
- package/es/media-types.mjs +3 -3
- package/es/transformers/dehydrate.mjs +9 -0
- package/es/transformers/from.mjs +22 -0
- package/es/{serializers → transformers/serializers}/value/index.mjs +7 -0
- package/es/{serializers → transformers/serializers}/value/visitor.mjs +1 -1
- package/es/{serializers → transformers/serializers}/yaml-1-2.mjs +1 -1
- package/es/{sexprs.mjs → transformers/sexprs.mjs} +1 -1
- package/es/transformers/to-string.mjs +10 -0
- package/es/traversal/findAtOffset.mjs +3 -2
- package/es/traversal/visitor.mjs +13 -2
- package/package.json +5 -5
- package/types/dist.d.ts +52 -38
- package/types/minim.d.ts +14 -2
- /package/es/{serializers → transformers/serializers}/json.mjs +0 -0
- /package/es/{serializers → transformers/serializers}/value/ast/ephemeral-array.mjs +0 -0
- /package/es/{serializers → transformers/serializers}/value/ast/ephemeral-object.mjs +0 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { ArraySlice, ObjectSlice, KeyValuePair } from 'minim';
|
|
2
|
+
import { isElement } from "../predicates/index.mjs";
|
|
3
|
+
import DeepCloneError from "./errors/DeepCloneError.mjs";
|
|
4
|
+
import ShallowCloneError from "./errors/ShallowCloneError.mjs";
|
|
5
|
+
const invokeClone = value => {
|
|
6
|
+
if (typeof (value === null || value === void 0 ? void 0 : value.clone) === 'function') {
|
|
7
|
+
return value.clone();
|
|
8
|
+
}
|
|
9
|
+
return value;
|
|
10
|
+
};
|
|
11
|
+
export const cloneDeep = value => {
|
|
12
|
+
if (value instanceof ObjectSlice) {
|
|
13
|
+
const items = [...value].map(invokeClone);
|
|
14
|
+
return new ObjectSlice(items);
|
|
15
|
+
}
|
|
16
|
+
if (value instanceof ArraySlice) {
|
|
17
|
+
const items = [...value].map(invokeClone);
|
|
18
|
+
return new ArraySlice(items);
|
|
19
|
+
}
|
|
20
|
+
if (typeof (value === null || value === void 0 ? void 0 : value.clone) === 'function') {
|
|
21
|
+
return value.clone();
|
|
22
|
+
}
|
|
23
|
+
throw new DeepCloneError("Value provided to cloneDeep function couldn't be cloned", {
|
|
24
|
+
value
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
cloneDeep.safe = value => {
|
|
28
|
+
try {
|
|
29
|
+
return cloneDeep(value);
|
|
30
|
+
} catch {
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const cloneShallowKeyValuePair = keyValuePair => {
|
|
35
|
+
const {
|
|
36
|
+
key,
|
|
37
|
+
value
|
|
38
|
+
} = keyValuePair;
|
|
39
|
+
return new KeyValuePair(key, value);
|
|
40
|
+
};
|
|
41
|
+
const cloneShallowArraySlice = arraySlice => {
|
|
42
|
+
const items = [...arraySlice];
|
|
43
|
+
return new ArraySlice(items);
|
|
44
|
+
};
|
|
45
|
+
const cloneShallowObjectSlice = objectSlice => {
|
|
46
|
+
const items = [...objectSlice];
|
|
47
|
+
return new ObjectSlice(items);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
/* eslint-disable no-underscore-dangle */
|
|
51
|
+
const cloneShallowElement = element => {
|
|
52
|
+
// @ts-ignore
|
|
53
|
+
const copy = new element.constructor();
|
|
54
|
+
copy.element = element.element;
|
|
55
|
+
if (element.meta.length > 0) {
|
|
56
|
+
copy._meta = cloneDeep(element.meta);
|
|
57
|
+
}
|
|
58
|
+
if (element.attributes.length > 0) {
|
|
59
|
+
copy._attributes = cloneDeep(element.attributes);
|
|
60
|
+
}
|
|
61
|
+
if (isElement(element.content)) {
|
|
62
|
+
const content = element.content;
|
|
63
|
+
copy.content = cloneShallowElement(content);
|
|
64
|
+
} else if (Array.isArray(element.content)) {
|
|
65
|
+
copy.content = [...element.content];
|
|
66
|
+
} else if (element.content instanceof KeyValuePair) {
|
|
67
|
+
copy.content = cloneShallowKeyValuePair(element.content);
|
|
68
|
+
} else {
|
|
69
|
+
copy.content = element.content;
|
|
70
|
+
}
|
|
71
|
+
return copy;
|
|
72
|
+
};
|
|
73
|
+
/* eslint-enable */
|
|
74
|
+
|
|
75
|
+
export const cloneShallow = value => {
|
|
76
|
+
if (value instanceof KeyValuePair) {
|
|
77
|
+
return cloneShallowKeyValuePair(value);
|
|
78
|
+
}
|
|
79
|
+
if (value instanceof ObjectSlice) {
|
|
80
|
+
return cloneShallowObjectSlice(value);
|
|
81
|
+
}
|
|
82
|
+
if (value instanceof ArraySlice) {
|
|
83
|
+
return cloneShallowArraySlice(value);
|
|
84
|
+
}
|
|
85
|
+
if (isElement(value)) {
|
|
86
|
+
return cloneShallowElement(value);
|
|
87
|
+
}
|
|
88
|
+
throw new ShallowCloneError("Value provided to cloneShallow function couldn't be cloned", {
|
|
89
|
+
value
|
|
90
|
+
});
|
|
91
|
+
};
|
|
92
|
+
cloneShallow.safe = value => {
|
|
93
|
+
try {
|
|
94
|
+
return cloneShallow(value);
|
|
95
|
+
} catch {
|
|
96
|
+
return value;
|
|
97
|
+
}
|
|
98
|
+
};
|
package/es/deepmerge.mjs
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { ObjectElement
|
|
1
|
+
import { ObjectElement } from 'minim';
|
|
2
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";
|
|
3
5
|
/* eslint-disable @typescript-eslint/no-use-before-define */
|
|
4
6
|
const emptyElement = element => {
|
|
5
|
-
const meta = element.meta
|
|
6
|
-
const attributes = element.attributes
|
|
7
|
+
const meta = cloneDeep(element.meta);
|
|
8
|
+
const attributes = cloneDeep(element.attributes);
|
|
7
9
|
|
|
8
10
|
// @ts-ignore
|
|
9
11
|
return new element.constructor(undefined, meta, attributes);
|
|
10
12
|
};
|
|
11
|
-
const cloneMemberElement = memberElement => new MemberElement(memberElement.key, memberElement.value, memberElement.meta.clone(), memberElement.attributes.clone());
|
|
12
13
|
const cloneUnlessOtherwiseSpecified = (element, options) => options.clone && options.isMergeableElement(element) ? deepmerge(emptyElement(element), element, options) : element;
|
|
13
14
|
const getMergeFunction = (keyElement, options) => {
|
|
14
15
|
if (typeof options.customMerge !== 'function') {
|
|
@@ -22,20 +23,20 @@ const mergeObjectElement = (targetElement, sourceElement, options) => {
|
|
|
22
23
|
const destination = isObjectElement(targetElement) ? emptyElement(targetElement) : emptyElement(sourceElement);
|
|
23
24
|
if (isObjectElement(targetElement)) {
|
|
24
25
|
targetElement.forEach((value, key, member) => {
|
|
25
|
-
const clonedMember =
|
|
26
|
+
const clonedMember = cloneShallow(member);
|
|
26
27
|
clonedMember.value = cloneUnlessOtherwiseSpecified(value, options);
|
|
27
28
|
destination.content.push(clonedMember);
|
|
28
29
|
});
|
|
29
30
|
}
|
|
30
31
|
sourceElement.forEach((value, key, member) => {
|
|
31
|
-
const keyValue =
|
|
32
|
+
const keyValue = toValue(key);
|
|
32
33
|
let clonedMember;
|
|
33
34
|
if (isObjectElement(targetElement) && targetElement.hasKey(keyValue) && options.isMergeableElement(value)) {
|
|
34
35
|
const targetValue = targetElement.get(keyValue);
|
|
35
|
-
clonedMember =
|
|
36
|
+
clonedMember = cloneShallow(member);
|
|
36
37
|
clonedMember.value = getMergeFunction(key, options)(targetValue, value);
|
|
37
38
|
} else {
|
|
38
|
-
clonedMember =
|
|
39
|
+
clonedMember = cloneShallow(member);
|
|
39
40
|
clonedMember.value = cloneUnlessOtherwiseSpecified(value, options);
|
|
40
41
|
}
|
|
41
42
|
destination.remove(keyValue);
|
package/es/index.mjs
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
import { has } from 'ramda';
|
|
2
|
-
import { isPlainObject, isString } from 'ramda-adjunct';
|
|
3
|
-
import defaultNamespaceInstance from "./namespace.mjs";
|
|
4
|
-
import serializeValue from "./serializers/value/index.mjs";
|
|
5
|
-
import serializeJSON from "./serializers/json.mjs";
|
|
6
|
-
import serializeYAML from "./serializers/yaml-1-2.mjs";
|
|
7
1
|
export { dispatchPlugins as dispatchRefractorPlugins } from "./refractor/plugins/utils/index.mjs";
|
|
8
2
|
export { default as refractorPluginElementIdentity } from "./refractor/plugins/element-identity.mjs";
|
|
9
3
|
export { default as refractorPluginSemanticElementIdentity } from "./refractor/plugins/semantic-element-identity.mjs";
|
|
@@ -14,59 +8,39 @@ export { ObjectElement, ArrayElement, BooleanElement, NullElement, NumberElement
|
|
|
14
8
|
export { isElement, isStringElement, isNumberElement, isNullElement, isBooleanElement, isArrayElement, isObjectElement, isMemberElement, isLinkElement, isRefElement, isAnnotationElement, isParseResultElement, isSourceMapElement, isPrimitiveElement, hasElementSourceMap, includesSymbols, includesClasses } from "./predicates/index.mjs";
|
|
15
9
|
export { default as createPredicate } from "./predicates/helpers.mjs";
|
|
16
10
|
export { filter, reject, find, findAtOffset, some, traverse, parents } from "./traversal/index.mjs";
|
|
17
|
-
export { visit, BREAK, mergeAllVisitors, getNodeType, keyMapDefault as keyMap } from "./traversal/visitor.mjs";
|
|
11
|
+
export { visit, BREAK, mergeAllVisitors, getNodeType, cloneNode, keyMapDefault as keyMap } from "./traversal/visitor.mjs";
|
|
18
12
|
export { transclude, default as Transcluder } from "./transcluder/index.mjs";
|
|
19
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";
|
|
20
18
|
/**
|
|
21
19
|
* Transforms data to an Element from a particular namespace.
|
|
22
20
|
*/
|
|
23
|
-
export
|
|
24
|
-
if (isString(data)) {
|
|
25
|
-
// JSON serialized refract
|
|
26
|
-
try {
|
|
27
|
-
return namespace.fromRefract(JSON.parse(data));
|
|
28
|
-
} catch {
|
|
29
|
-
// noop
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
if (isPlainObject(data) && has('element', data)) {
|
|
33
|
-
// refract javascript structure
|
|
34
|
-
return namespace.fromRefract(data);
|
|
35
|
-
}
|
|
36
|
-
return namespace.toElement(data);
|
|
37
|
-
};
|
|
38
|
-
|
|
21
|
+
export { default as from } from "./transformers/from.mjs";
|
|
39
22
|
/**
|
|
40
23
|
* Transforms the ApiDOM into JavaScript POJO.
|
|
41
24
|
* This POJO would be the result of interpreting the ApiDOM
|
|
42
25
|
* into JavaScript structure.
|
|
43
26
|
*/
|
|
44
|
-
export
|
|
45
|
-
|
|
27
|
+
export { default as toValue } from "./transformers/serializers/value/index.mjs";
|
|
46
28
|
/**
|
|
47
29
|
* Transforms the ApiDOM into JSON string.
|
|
48
30
|
*/
|
|
49
|
-
export
|
|
50
|
-
|
|
31
|
+
export { default as toJSON } from "./transformers/serializers/json.mjs";
|
|
51
32
|
/**
|
|
52
33
|
* Transforms the ApiDOM into YAML string.
|
|
53
34
|
*/
|
|
54
|
-
export
|
|
55
|
-
|
|
35
|
+
export { default as toYAML } from "./transformers/serializers/yaml-1-2.mjs";
|
|
56
36
|
/**
|
|
57
37
|
* Creates a refract representation of an Element.
|
|
58
38
|
* https://github.com/refractproject/refract-spec
|
|
59
39
|
*/
|
|
60
|
-
export
|
|
61
|
-
return namespace.toRefract(element);
|
|
62
|
-
};
|
|
63
|
-
|
|
40
|
+
export { default as dehydrate } from "./transformers/dehydrate.mjs";
|
|
64
41
|
/**
|
|
65
42
|
* Create a refracted string representation of an Element.
|
|
66
43
|
*/
|
|
67
|
-
export
|
|
68
|
-
|
|
69
|
-
return JSON.stringify(refractStructure);
|
|
70
|
-
};
|
|
71
|
-
export { default as sexprs } from "./sexprs.mjs";
|
|
44
|
+
export { default as toString } from "./transformers/to-string.mjs";
|
|
45
|
+
export { default as sexprs } from "./transformers/sexprs.mjs";
|
|
72
46
|
export { default as deepmerge } from "./deepmerge.mjs";
|
package/es/media-types.mjs
CHANGED
|
@@ -4,17 +4,17 @@ class MediaTypes extends Array {
|
|
|
4
4
|
|
|
5
5
|
// eslint-disable-next-line class-methods-use-this
|
|
6
6
|
filterByFormat() {
|
|
7
|
-
throw new NotImplementedError('
|
|
7
|
+
throw new NotImplementedError('filterByFormat method in MediaTypes class is not yet implemented.');
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
// eslint-disable-next-line class-methods-use-this
|
|
11
11
|
findBy() {
|
|
12
|
-
throw new NotImplementedError('
|
|
12
|
+
throw new NotImplementedError('findBy method in MediaTypes class is not yet implemented.');
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
// eslint-disable-next-line class-methods-use-this
|
|
16
16
|
latest() {
|
|
17
|
-
throw new NotImplementedError('
|
|
17
|
+
throw new NotImplementedError('latest method in MediaTypes class is not yet implemented.');
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
export default MediaTypes;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import defaultNamespaceInstance from "../namespace.mjs";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a refract representation of an Element.
|
|
4
|
+
* https://github.com/refractproject/refract-spec
|
|
5
|
+
*/
|
|
6
|
+
const dehydrate = (element, namespace = defaultNamespaceInstance) => {
|
|
7
|
+
return namespace.toRefract(element);
|
|
8
|
+
};
|
|
9
|
+
export default dehydrate;
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
const from = (data, namespace = defaultNamespaceInstance) => {
|
|
8
|
+
if (isString(data)) {
|
|
9
|
+
// JSON serialized refract
|
|
10
|
+
try {
|
|
11
|
+
return namespace.fromRefract(JSON.parse(data));
|
|
12
|
+
} catch {
|
|
13
|
+
// noop
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
if (isPlainObject(data) && has('element', data)) {
|
|
17
|
+
// refract javascript structure
|
|
18
|
+
return namespace.fromRefract(data);
|
|
19
|
+
}
|
|
20
|
+
return namespace.toElement(data);
|
|
21
|
+
};
|
|
22
|
+
export default from;
|
|
@@ -2,6 +2,7 @@ import stampit from 'stampit';
|
|
|
2
2
|
import { visit } from "./visitor.mjs";
|
|
3
3
|
import EphemeralArray from "./ast/ephemeral-array.mjs";
|
|
4
4
|
import EphemeralObject from "./ast/ephemeral-object.mjs";
|
|
5
|
+
import { isElement, isBooleanElement, isNumberElement, isStringElement, isNullElement } from "../../../predicates/index.mjs";
|
|
5
6
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
6
7
|
const Visitor = stampit.init(function _Visitor() {
|
|
7
8
|
const references = new WeakMap();
|
|
@@ -56,6 +57,12 @@ const Visitor = stampit.init(function _Visitor() {
|
|
|
56
57
|
/* eslint-enable */
|
|
57
58
|
|
|
58
59
|
const serializer = element => {
|
|
60
|
+
if (!isElement(element)) return element;
|
|
61
|
+
|
|
62
|
+
// shortcut optimization for certain element types
|
|
63
|
+
if (isStringElement(element) || isNumberElement(element) || isBooleanElement(element) || isNullElement(element)) {
|
|
64
|
+
return element.toValue();
|
|
65
|
+
}
|
|
59
66
|
return visit(element, Visitor());
|
|
60
67
|
};
|
|
61
68
|
export default serializer;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { T as stubTrue } from 'ramda';
|
|
2
|
-
import { visit as astVisit, keyMapDefault as baseKeyMap, getNodeType as baseGetNodeType } from "
|
|
2
|
+
import { visit as astVisit, keyMapDefault as baseKeyMap, getNodeType as baseGetNodeType } from "../../../traversal/visitor.mjs";
|
|
3
3
|
const nodeTypeGetter = node => {
|
|
4
4
|
if (typeof (node === null || node === void 0 ? void 0 : node.type) === 'string') {
|
|
5
5
|
return node.type;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import defaultNamespaceInstance from "../namespace.mjs";
|
|
2
|
+
import dehydrate from "./dehydrate.mjs";
|
|
3
|
+
/**
|
|
4
|
+
* Create a refracted string representation of an Element.
|
|
5
|
+
*/
|
|
6
|
+
const toString = (element, namespace = defaultNamespaceInstance) => {
|
|
7
|
+
const refractStructure = dehydrate(element, namespace);
|
|
8
|
+
return JSON.stringify(refractStructure);
|
|
9
|
+
};
|
|
10
|
+
export default toString;
|
|
@@ -3,6 +3,7 @@ import { last, pathOr } from 'ramda';
|
|
|
3
3
|
import { isNumber } from 'ramda-adjunct';
|
|
4
4
|
import { hasElementSourceMap } from "../predicates/index.mjs";
|
|
5
5
|
import { visit } from "./visitor.mjs";
|
|
6
|
+
import toValue from "../transformers/serializers/value/index.mjs";
|
|
6
7
|
const Visitor = stampit({
|
|
7
8
|
props: {
|
|
8
9
|
result: [],
|
|
@@ -25,8 +26,8 @@ const Visitor = stampit({
|
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
const sourceMapElement = element.getMetaProperty('sourceMap');
|
|
28
|
-
const charStart = sourceMapElement.positionStart.get(2)
|
|
29
|
-
const charEnd = sourceMapElement.positionEnd.get(2)
|
|
29
|
+
const charStart = toValue(sourceMapElement.positionStart.get(2));
|
|
30
|
+
const charEnd = toValue(sourceMapElement.positionEnd.get(2));
|
|
30
31
|
const isWithinOffsetRange = this.offset >= charStart && (this.offset < charEnd || this.includeRightBound && this.offset <= charEnd);
|
|
31
32
|
if (isWithinOffsetRange) {
|
|
32
33
|
this.result.push(element);
|
package/es/traversal/visitor.mjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import stampit from 'stampit';
|
|
2
2
|
import { F as stubFalse, pipe } from 'ramda';
|
|
3
3
|
import { isString } from 'ramda-adjunct';
|
|
4
|
-
import { visit as astVisit, BREAK, mergeAllVisitors } from '@swagger-api/apidom-ast';
|
|
5
|
-
import { isMemberElement, isArrayElement, isStringElement, isBooleanElement, isLinkElement, isRefElement, isObjectElement, isNullElement, isNumberElement } from "../predicates/index.mjs";
|
|
4
|
+
import { visit as astVisit, BREAK, mergeAllVisitors, cloneNode as cloneNodeDefault } from '@swagger-api/apidom-ast';
|
|
5
|
+
import { isElement, isMemberElement, isArrayElement, isStringElement, isBooleanElement, isLinkElement, isRefElement, isObjectElement, isNullElement, isNumberElement } from "../predicates/index.mjs";
|
|
6
|
+
import { cloneShallow } from "../clone/index.mjs";
|
|
6
7
|
export { BREAK, mergeAllVisitors };
|
|
7
8
|
|
|
8
9
|
// getNodeType :: Node -> String
|
|
@@ -19,6 +20,14 @@ export const getNodeType = element => {
|
|
|
19
20
|
/* eslint-enable */
|
|
20
21
|
};
|
|
21
22
|
|
|
23
|
+
// cloneNode :: a -> a
|
|
24
|
+
export const cloneNode = node => {
|
|
25
|
+
if (isElement(node)) {
|
|
26
|
+
return cloneShallow(node);
|
|
27
|
+
}
|
|
28
|
+
return cloneNodeDefault(node);
|
|
29
|
+
};
|
|
30
|
+
|
|
22
31
|
// isNode :: Node -> Boolean
|
|
23
32
|
export const isNode = pipe(getNodeType, isString);
|
|
24
33
|
export const keyMapDefault = {
|
|
@@ -81,6 +90,7 @@ visitor, {
|
|
|
81
90
|
// @ts-ignore
|
|
82
91
|
nodeTypeGetter: getNodeType,
|
|
83
92
|
nodePredicate: isNode,
|
|
93
|
+
nodeCloneFn: cloneNode,
|
|
84
94
|
...rest
|
|
85
95
|
});
|
|
86
96
|
};
|
|
@@ -99,6 +109,7 @@ visitor, {
|
|
|
99
109
|
// @ts-ignore
|
|
100
110
|
nodeTypeGetter: getNodeType,
|
|
101
111
|
nodePredicate: isNode,
|
|
112
|
+
nodeCloneFn: cloneNode,
|
|
102
113
|
...rest
|
|
103
114
|
});
|
|
104
115
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@swagger-api/apidom-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.78.0",
|
|
4
4
|
"description": "Tools for manipulating ApiDOM structures.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -42,9 +42,9 @@
|
|
|
42
42
|
"license": "Apache-2.0",
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@babel/runtime-corejs3": "^7.20.7",
|
|
45
|
-
"@swagger-api/apidom-ast": "^0.
|
|
46
|
-
"@swagger-api/apidom-error": "^0.
|
|
47
|
-
"@types/ramda": "~0.29.
|
|
45
|
+
"@swagger-api/apidom-ast": "^0.78.0",
|
|
46
|
+
"@swagger-api/apidom-error": "^0.78.0",
|
|
47
|
+
"@types/ramda": "~0.29.6",
|
|
48
48
|
"minim": "~0.23.8",
|
|
49
49
|
"ramda": "~0.29.0",
|
|
50
50
|
"ramda-adjunct": "^4.1.1",
|
|
@@ -62,5 +62,5 @@
|
|
|
62
62
|
"README.md",
|
|
63
63
|
"CHANGELOG.md"
|
|
64
64
|
],
|
|
65
|
-
"gitHead": "
|
|
65
|
+
"gitHead": "d6587217f8a7bec5bbc49ca4dabff8d3d66e0913"
|
|
66
66
|
}
|
package/types/dist.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/// <reference path="./minim.d.ts" />
|
|
2
|
-
import { Element, ArrayElement, Meta, Attributes, Namespace as Namespace$1, NamespacePlugin, StringElement, ArraySlice, ObjectElement } from 'minim';
|
|
2
|
+
import { Element, ArrayElement, Meta, Attributes, Namespace as Namespace$1, NamespacePlugin, StringElement, ArraySlice, KeyValuePair, ObjectSlice, ObjectElement } from 'minim';
|
|
3
3
|
export { ArrayElement, ArraySlice, Attributes, BooleanElement, Element, KeyValuePair, LinkElement, MemberElement, Meta, NamespacePluginOptions, NullElement, NumberElement, ObjectElement, ObjectSlice, RefElement, StringElement, refract } from 'minim';
|
|
4
|
-
import { Pred } from 'ramda';
|
|
5
4
|
import stampit from 'stampit';
|
|
5
|
+
import { ApiDOMStructuredError } from '@swagger-api/apidom-error';
|
|
6
6
|
export { BREAK, mergeAllVisitors } from '@swagger-api/apidom-ast';
|
|
7
7
|
|
|
8
8
|
declare const dispatchPlugins: <T extends Element>(element: T, plugins: any[], options?: {}) => T;
|
|
@@ -122,9 +122,9 @@ interface PredicateHelpers {
|
|
|
122
122
|
type PredicateCreator = (helpers: PredicateHelpers) => (element: any) => boolean;
|
|
123
123
|
declare const createPredicate: (predicateCreator: PredicateCreator) => (element: any) => boolean;
|
|
124
124
|
|
|
125
|
-
declare const filter: <T extends Element>(predicate:
|
|
125
|
+
declare const filter: <T extends Element>(predicate: (element: any) => boolean, element: T) => ArraySlice;
|
|
126
126
|
|
|
127
|
-
declare const find: <T extends Element>(predicate:
|
|
127
|
+
declare const find: <T extends Element>(predicate: (element: any) => boolean, element: T) => T | undefined;
|
|
128
128
|
|
|
129
129
|
interface FindAtOffsetOptions {
|
|
130
130
|
offset: number;
|
|
@@ -132,20 +132,21 @@ interface FindAtOffsetOptions {
|
|
|
132
132
|
}
|
|
133
133
|
declare const findAtOffset: <T extends Element>(options: number | FindAtOffsetOptions, element: T) => T | undefined;
|
|
134
134
|
|
|
135
|
-
declare const reject: <T extends Element>(predicate:
|
|
135
|
+
declare const reject: <T extends Element>(predicate: (element: any) => boolean, element: T) => ArraySlice;
|
|
136
136
|
|
|
137
|
-
declare const some: <T extends Element>(predicate:
|
|
137
|
+
declare const some: <T extends Element>(predicate: (element: any) => boolean, element: T) => boolean;
|
|
138
138
|
|
|
139
139
|
type Callback = <T extends Element>(element: T) => void;
|
|
140
140
|
interface TraverseOptions {
|
|
141
141
|
callback?: Callback;
|
|
142
|
-
predicate?:
|
|
142
|
+
predicate?: (element: any) => boolean;
|
|
143
143
|
}
|
|
144
144
|
declare const traverse: <T extends Element>(options: Callback | TraverseOptions, element: T) => void;
|
|
145
145
|
|
|
146
146
|
declare const parents: <T extends Element>(element: T) => WeakMap<Element, Element>;
|
|
147
147
|
|
|
148
148
|
declare const getNodeType: <T extends Element>(element: T) => string | undefined;
|
|
149
|
+
declare const cloneNode: <T>(node: T) => T;
|
|
149
150
|
declare const keyMapDefault: {
|
|
150
151
|
ObjectElement: string[];
|
|
151
152
|
ArrayElement: string[];
|
|
@@ -200,6 +201,49 @@ declare const transclude: (search: Element, replace: Element, element: Element)
|
|
|
200
201
|
*/
|
|
201
202
|
declare const dereference: (object: Record<string, any>, root?: Record<string, any>) => Record<string, any>;
|
|
202
203
|
|
|
204
|
+
type FinalCloneTypes = KeyValuePair | ArraySlice | ObjectSlice;
|
|
205
|
+
declare const cloneDeep: {
|
|
206
|
+
<T extends Element | FinalCloneTypes>(value: T): T;
|
|
207
|
+
safe<T_1>(value: T_1): T_1;
|
|
208
|
+
};
|
|
209
|
+
declare const cloneShallow: {
|
|
210
|
+
<T extends Element | FinalCloneTypes>(value: T): T;
|
|
211
|
+
safe<T_1>(value: T_1): T_1;
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
declare class CloneError extends ApiDOMStructuredError {
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
declare class DeepCloneError extends CloneError {
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
declare class ShallowCloneError extends CloneError {
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Transforms data to an Element from a particular namespace.
|
|
225
|
+
*/
|
|
226
|
+
declare const from: (data: any, namespace?: Namespace$1) => Element;
|
|
227
|
+
|
|
228
|
+
declare const serializer$2: <T extends unknown>(element: T) => any;
|
|
229
|
+
|
|
230
|
+
declare const serializer$1: (element: Element, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number) => string;
|
|
231
|
+
|
|
232
|
+
declare const serializer: (element: Element, { directive }?: {
|
|
233
|
+
directive?: boolean | undefined;
|
|
234
|
+
}) => string;
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Creates a refract representation of an Element.
|
|
238
|
+
* https://github.com/refractproject/refract-spec
|
|
239
|
+
*/
|
|
240
|
+
declare const dehydrate: (element: Element, namespace?: Namespace$1) => any;
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Create a refracted string representation of an Element.
|
|
244
|
+
*/
|
|
245
|
+
declare const toString: (element: Element, namespace?: Namespace$1) => string;
|
|
246
|
+
|
|
203
247
|
declare const sexprs: (element: Element) => string;
|
|
204
248
|
|
|
205
249
|
type ObjectOrArrayElement = ObjectElement | ArrayElement;
|
|
@@ -227,34 +271,4 @@ declare namespace deepmerge {
|
|
|
227
271
|
var all: (list: ObjectOrArrayElement[], options?: DeepMergeOptions | undefined) => any;
|
|
228
272
|
}
|
|
229
273
|
|
|
230
|
-
|
|
231
|
-
* Transforms data to an Element from a particular namespace.
|
|
232
|
-
*/
|
|
233
|
-
declare const from: (data: any, namespace?: Namespace$1) => Element;
|
|
234
|
-
/**
|
|
235
|
-
* Transforms the ApiDOM into JavaScript POJO.
|
|
236
|
-
* This POJO would be the result of interpreting the ApiDOM
|
|
237
|
-
* into JavaScript structure.
|
|
238
|
-
*/
|
|
239
|
-
declare const toValue: <T extends Element>(element: T) => any;
|
|
240
|
-
/**
|
|
241
|
-
* Transforms the ApiDOM into JSON string.
|
|
242
|
-
*/
|
|
243
|
-
declare const toJSON: (element: Element, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined) => string;
|
|
244
|
-
/**
|
|
245
|
-
* Transforms the ApiDOM into YAML string.
|
|
246
|
-
*/
|
|
247
|
-
declare const toYAML: (element: Element, { directive }?: {
|
|
248
|
-
directive?: boolean | undefined;
|
|
249
|
-
}) => string;
|
|
250
|
-
/**
|
|
251
|
-
* Creates a refract representation of an Element.
|
|
252
|
-
* https://github.com/refractproject/refract-spec
|
|
253
|
-
*/
|
|
254
|
-
declare const dehydrate: (element: Element, namespace?: Namespace$1) => any;
|
|
255
|
-
/**
|
|
256
|
-
* Create a refracted string representation of an Element.
|
|
257
|
-
*/
|
|
258
|
-
declare const toString: (element: Element, namespace?: Namespace$1) => string;
|
|
259
|
-
|
|
260
|
-
export { Annotation as AnnotationElement, Comment as CommentElement, MediaTypes, Namespace, ParseResult as ParseResultElement, Position, PositionRange, SourceMap as SourceMapElement, Transcluder, createNamespace, createPredicate, deepmerge, dehydrate, dereference, dispatchPlugins as dispatchRefractorPlugins, filter, find, findAtOffset, from, getNodeType, hasElementSourceMap, includesClasses, includesSymbols, isAnnotationElement, isArrayElement, isBooleanElement, isElement, isLinkElement, isMemberElement, isNullElement, isNumberElement, isObjectElement, isParseResultElement, isPrimitiveElement, isRefElement, isSourceMapElement, isStringElement, keyMapDefault as keyMap, namespace, parents, plugin$1 as refractorPluginElementIdentity, plugin as refractorPluginSemanticElementIdentity, reject, sexprs, some, toJSON, toString, toValue, toYAML, transclude, traverse, visit };
|
|
274
|
+
export { Annotation as AnnotationElement, CloneError, Comment as CommentElement, DeepCloneError, MediaTypes, Namespace, ParseResult as ParseResultElement, type Position, type PositionRange, ShallowCloneError, SourceMap as SourceMapElement, Transcluder, cloneDeep, cloneNode, cloneShallow, createNamespace, createPredicate, deepmerge, dehydrate, dereference, dispatchPlugins as dispatchRefractorPlugins, filter, find, findAtOffset, from, getNodeType, hasElementSourceMap, includesClasses, includesSymbols, isAnnotationElement, isArrayElement, isBooleanElement, isElement, isLinkElement, isMemberElement, isNullElement, isNumberElement, isObjectElement, isParseResultElement, isPrimitiveElement, isRefElement, isSourceMapElement, isStringElement, keyMapDefault as keyMap, namespace, parents, plugin$1 as refractorPluginElementIdentity, plugin as refractorPluginSemanticElementIdentity, reject, sexprs, some, serializer$1 as toJSON, toString, serializer$2 as toValue, serializer as toYAML, transclude, traverse, visit };
|
package/types/minim.d.ts
CHANGED
|
@@ -214,9 +214,21 @@ declare module 'minim' {
|
|
|
214
214
|
[Symbol.iterator](): IterableIterator<any>;
|
|
215
215
|
|
|
216
216
|
toValue(): any;
|
|
217
|
+
|
|
218
|
+
clone(): ArraySlice;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
export class ObjectSlice extends ArraySlice {
|
|
222
|
+
clone(): ObjectSlice;
|
|
217
223
|
}
|
|
218
224
|
|
|
219
|
-
export class
|
|
225
|
+
export class KeyValuePair {
|
|
226
|
+
public key: Element | undefined;
|
|
220
227
|
|
|
221
|
-
|
|
228
|
+
public value: Element | undefined;
|
|
229
|
+
|
|
230
|
+
constructor(key?: Element, value?: Element);
|
|
231
|
+
|
|
232
|
+
clone(): KeyValuePair;
|
|
233
|
+
}
|
|
222
234
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|