@swagger-api/apidom-core 0.68.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.
- package/CHANGELOG.md +366 -0
- package/LICENSES/Apache-2.0.txt +202 -0
- package/LICENSES/MIT.txt +9 -0
- package/README.md +679 -0
- package/cjs/deepmerge.cjs +87 -0
- package/cjs/elements/Annotation.cjs +21 -0
- package/cjs/elements/Comment.cjs +13 -0
- package/cjs/elements/ParseResult.cjs +51 -0
- package/cjs/elements/SourceMap.cjs +29 -0
- package/cjs/index.cjs +144 -0
- package/cjs/media-types.cjs +24 -0
- package/cjs/namespace.cjs +32 -0
- package/cjs/predicates/helpers.cjs +28 -0
- package/cjs/predicates/index.cjs +149 -0
- package/cjs/refractor/index.cjs +37 -0
- package/cjs/refractor/plugins/element-identity.cjs +36 -0
- package/cjs/refractor/plugins/semantic-element-identity.cjs +36 -0
- package/cjs/refractor/plugins/utils/index.cjs +26 -0
- package/cjs/refractor/registration.cjs +34 -0
- package/cjs/refractor/toolbox.cjs +20 -0
- package/cjs/serializers/json.cjs +9 -0
- package/cjs/serializers/value/ast/ephemeral-array.cjs +22 -0
- package/cjs/serializers/value/ast/ephemeral-object.cjs +21 -0
- package/cjs/serializers/value/index.cjs +67 -0
- package/cjs/serializers/value/visitor.cjs +54 -0
- package/cjs/serializers/yaml-1-2.cjs +93 -0
- package/cjs/sexprs.cjs +38 -0
- package/cjs/transcluder/Transcluder.cjs +110 -0
- package/cjs/transcluder/index.cjs +19 -0
- package/cjs/traversal/filter.cjs +20 -0
- package/cjs/traversal/find.cjs +20 -0
- package/cjs/traversal/findAtOffset.cjs +71 -0
- package/cjs/traversal/index.cjs +19 -0
- package/cjs/traversal/parents.cjs +47 -0
- package/cjs/traversal/reject.cjs +14 -0
- package/cjs/traversal/some.cjs +15 -0
- package/cjs/traversal/traverse.cjs +54 -0
- package/cjs/traversal/visitor.cjs +114 -0
- package/cjs/util.cjs +27 -0
- package/dist/apidom-core.browser.js +30952 -0
- package/dist/apidom-core.browser.min.js +1 -0
- package/es/deepmerge.js +84 -0
- package/es/elements/Annotation.js +16 -0
- package/es/elements/Comment.js +8 -0
- package/es/elements/ParseResult.js +46 -0
- package/es/elements/SourceMap.js +24 -0
- package/es/index.js +72 -0
- package/es/media-types.js +22 -0
- package/es/namespace.js +24 -0
- package/es/predicates/helpers.js +22 -0
- package/es/predicates/index.js +124 -0
- package/es/refractor/index.js +32 -0
- package/es/refractor/plugins/element-identity.js +30 -0
- package/es/refractor/plugins/semantic-element-identity.js +34 -0
- package/es/refractor/plugins/utils/index.js +19 -0
- package/es/refractor/registration.js +19 -0
- package/es/refractor/toolbox.js +13 -0
- package/es/serializers/json.js +3 -0
- package/es/serializers/value/ast/ephemeral-array.js +18 -0
- package/es/serializers/value/ast/ephemeral-object.js +17 -0
- package/es/serializers/value/index.js +61 -0
- package/es/serializers/value/visitor.js +54 -0
- package/es/serializers/yaml-1-2.js +87 -0
- package/es/sexprs.js +32 -0
- package/es/transcluder/Transcluder.js +104 -0
- package/es/transcluder/index.js +12 -0
- package/es/traversal/filter.js +14 -0
- package/es/traversal/find.js +14 -0
- package/es/traversal/findAtOffset.js +65 -0
- package/es/traversal/index.js +7 -0
- package/es/traversal/parents.js +40 -0
- package/es/traversal/reject.js +7 -0
- package/es/traversal/some.js +8 -0
- package/es/traversal/traverse.js +47 -0
- package/es/traversal/visitor.js +110 -0
- package/es/util.js +23 -0
- package/package.json +65 -0
- package/types/dist.d.ts +260 -0
- package/types/minim.d.ts +222 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.traverse = exports.some = exports.reject = exports.parents = exports.findAtOffset = exports.find = exports.filter = void 0;
|
|
6
|
+
var _filter = _interopRequireDefault(require("./filter.cjs"));
|
|
7
|
+
exports.filter = _filter.default;
|
|
8
|
+
var _find = _interopRequireDefault(require("./find.cjs"));
|
|
9
|
+
exports.find = _find.default;
|
|
10
|
+
var _findAtOffset = _interopRequireDefault(require("./findAtOffset.cjs"));
|
|
11
|
+
exports.findAtOffset = _findAtOffset.default;
|
|
12
|
+
var _reject = _interopRequireDefault(require("./reject.cjs"));
|
|
13
|
+
exports.reject = _reject.default;
|
|
14
|
+
var _some = _interopRequireDefault(require("./some.cjs"));
|
|
15
|
+
exports.some = _some.default;
|
|
16
|
+
var _traverse = _interopRequireDefault(require("./traverse.cjs"));
|
|
17
|
+
exports.traverse = _traverse.default;
|
|
18
|
+
var _parents = _interopRequireDefault(require("./parents.cjs"));
|
|
19
|
+
exports.parents = _parents.default;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.default = void 0;
|
|
6
|
+
var _stampit = _interopRequireDefault(require("stampit"));
|
|
7
|
+
var _visitor = require("./visitor.cjs");
|
|
8
|
+
/* eslint-disable no-param-reassign */
|
|
9
|
+
|
|
10
|
+
const Visitor = (0, _stampit.default)({
|
|
11
|
+
props: {
|
|
12
|
+
parent: null,
|
|
13
|
+
parentEdges: null
|
|
14
|
+
},
|
|
15
|
+
init() {
|
|
16
|
+
this.parentEdges = new WeakMap();
|
|
17
|
+
},
|
|
18
|
+
methods: {
|
|
19
|
+
ObjectElement(objectElement) {
|
|
20
|
+
this.parentEdges.set(objectElement, this.parent);
|
|
21
|
+
this.parent = objectElement;
|
|
22
|
+
},
|
|
23
|
+
ArrayElement(arrayElement) {
|
|
24
|
+
this.parentEdges.set(arrayElement, this.parent);
|
|
25
|
+
this.parent = arrayElement;
|
|
26
|
+
},
|
|
27
|
+
MemberElement(memberElement) {
|
|
28
|
+
this.parentEdges.set(memberElement, this.parent);
|
|
29
|
+
this.parent = memberElement;
|
|
30
|
+
},
|
|
31
|
+
enter(element) {
|
|
32
|
+
this.parentEdges.set(element, this.parent);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
/* eslint-enable */
|
|
38
|
+
|
|
39
|
+
// computes upwards edges from every child to its parent
|
|
40
|
+
// find :: Element -> WeakMap<Element, Element>
|
|
41
|
+
const parents = element => {
|
|
42
|
+
const visitor = Visitor();
|
|
43
|
+
(0, _visitor.visit)(element, visitor);
|
|
44
|
+
return visitor.parentEdges;
|
|
45
|
+
};
|
|
46
|
+
var _default = parents;
|
|
47
|
+
exports.default = _default;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.default = void 0;
|
|
6
|
+
var _ramda = require("ramda");
|
|
7
|
+
var _filter = _interopRequireDefault(require("./filter.cjs"));
|
|
8
|
+
// complement of filter
|
|
9
|
+
// reject :: Pred -> Element -> ArraySlice
|
|
10
|
+
const reject = (0, _ramda.curry)((predicate, element) => {
|
|
11
|
+
return (0, _filter.default)((0, _ramda.complement)(predicate))(element);
|
|
12
|
+
});
|
|
13
|
+
var _default = reject;
|
|
14
|
+
exports.default = _default;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.default = void 0;
|
|
6
|
+
var _ramda = require("ramda");
|
|
7
|
+
var _ramdaAdjunct = require("ramda-adjunct");
|
|
8
|
+
var _find = _interopRequireDefault(require("./find.cjs"));
|
|
9
|
+
// tests whether at least one element passes the predicate
|
|
10
|
+
// some :: Pred -> Element -> Boolean
|
|
11
|
+
const some = (0, _ramda.curry)((predicate, element) => {
|
|
12
|
+
return (0, _ramdaAdjunct.isNotUndefined)((0, _find.default)(predicate)(element));
|
|
13
|
+
});
|
|
14
|
+
var _default = some;
|
|
15
|
+
exports.default = _default;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.default = exports.CallbackVisitor = void 0;
|
|
6
|
+
var _stampit = _interopRequireDefault(require("stampit"));
|
|
7
|
+
var _ramda = require("ramda");
|
|
8
|
+
var _ramdaAdjunct = require("ramda-adjunct");
|
|
9
|
+
var _visitor = require("./visitor.cjs");
|
|
10
|
+
var _index = require("../predicates/index.cjs");
|
|
11
|
+
const CallbackVisitor = (0, _stampit.default)(_visitor.PredicateVisitor, {
|
|
12
|
+
props: {
|
|
13
|
+
callback: _ramdaAdjunct.noop
|
|
14
|
+
},
|
|
15
|
+
// @ts-ignore
|
|
16
|
+
init({
|
|
17
|
+
callback = this.callback
|
|
18
|
+
} = {}) {
|
|
19
|
+
this.callback = callback;
|
|
20
|
+
},
|
|
21
|
+
methods: {
|
|
22
|
+
enter(element) {
|
|
23
|
+
if (this.predicate(element)) {
|
|
24
|
+
this.callback(element);
|
|
25
|
+
return this.returnOnTrue;
|
|
26
|
+
}
|
|
27
|
+
return this.returnOnFalse;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
// executes the callback on this element and all descendants
|
|
33
|
+
// traverse :: Callback | { predicate: Pred, callback: Callback } -> Element -> Undefined
|
|
34
|
+
exports.CallbackVisitor = CallbackVisitor;
|
|
35
|
+
const traverse = (0, _ramda.curry)((options, element) => {
|
|
36
|
+
let callback;
|
|
37
|
+
let predicate;
|
|
38
|
+
if ((0, _ramdaAdjunct.isFunction)(options)) {
|
|
39
|
+
callback = options;
|
|
40
|
+
predicate = _index.isElement;
|
|
41
|
+
} else {
|
|
42
|
+
callback = (0, _ramda.pathOr)(_ramdaAdjunct.noop, ['callback'], options);
|
|
43
|
+
predicate = (0, _ramda.pathOr)(_index.isElement, ['predicate'], options);
|
|
44
|
+
}
|
|
45
|
+
const visitor = CallbackVisitor({
|
|
46
|
+
callback,
|
|
47
|
+
predicate
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
// @ts-ignore
|
|
51
|
+
(0, _visitor.visit)(element, visitor);
|
|
52
|
+
});
|
|
53
|
+
var _default = traverse;
|
|
54
|
+
exports.default = _default;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.visit = exports.keyMapDefault = exports.isNode = exports.getNodeType = exports.PredicateVisitor = void 0;
|
|
6
|
+
var _stampit = _interopRequireDefault(require("stampit"));
|
|
7
|
+
var _ramda = require("ramda");
|
|
8
|
+
var _ramdaAdjunct = require("ramda-adjunct");
|
|
9
|
+
var _apidomAst = require("@swagger-api/apidom-ast");
|
|
10
|
+
exports.BREAK = _apidomAst.BREAK;
|
|
11
|
+
exports.mergeAllVisitors = _apidomAst.mergeAllVisitors;
|
|
12
|
+
var _index = require("../predicates/index.cjs");
|
|
13
|
+
// getNodeType :: Node -> String
|
|
14
|
+
const getNodeType = element => {
|
|
15
|
+
/*
|
|
16
|
+
* We're translating every possible higher element type to primitive minim type here.
|
|
17
|
+
* We're using polymorphism to recognize any higher element type as ObjectElement or ArrayElement.
|
|
18
|
+
* Using polymorphism allows us to assume any namespace.
|
|
19
|
+
*
|
|
20
|
+
* There is a problem with naming visitor methods described here: https://github.com/babel/babel/discussions/12874
|
|
21
|
+
*/
|
|
22
|
+
/* eslint-disable no-nested-ternary */
|
|
23
|
+
return (0, _index.isObjectElement)(element) ? 'ObjectElement' : (0, _index.isArrayElement)(element) ? 'ArrayElement' : (0, _index.isMemberElement)(element) ? 'MemberElement' : (0, _index.isStringElement)(element) ? 'StringElement' : (0, _index.isBooleanElement)(element) ? 'BooleanElement' : (0, _index.isNumberElement)(element) ? 'NumberElement' : (0, _index.isNullElement)(element) ? 'NullElement' : (0, _index.isLinkElement)(element) ? 'LinkElement' : (0, _index.isRefElement)(element) ? 'RefElement' : undefined;
|
|
24
|
+
/* eslint-enable */
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
// isNode :: Node -> Boolean
|
|
28
|
+
exports.getNodeType = getNodeType;
|
|
29
|
+
const isNode = (0, _ramda.curryN)(1, (0, _ramda.pipe)(getNodeType, _ramdaAdjunct.isString));
|
|
30
|
+
exports.isNode = isNode;
|
|
31
|
+
const keyMapDefault = {
|
|
32
|
+
ObjectElement: ['content'],
|
|
33
|
+
ArrayElement: ['content'],
|
|
34
|
+
MemberElement: ['key', 'value'],
|
|
35
|
+
StringElement: [],
|
|
36
|
+
BooleanElement: [],
|
|
37
|
+
NumberElement: [],
|
|
38
|
+
NullElement: [],
|
|
39
|
+
RefElement: [],
|
|
40
|
+
LinkElement: [],
|
|
41
|
+
Annotation: [],
|
|
42
|
+
Comment: [],
|
|
43
|
+
ParseResultElement: ['content'],
|
|
44
|
+
SourceMap: ['content']
|
|
45
|
+
};
|
|
46
|
+
exports.keyMapDefault = keyMapDefault;
|
|
47
|
+
const PredicateVisitor = (0, _stampit.default)({
|
|
48
|
+
props: {
|
|
49
|
+
result: [],
|
|
50
|
+
predicate: _ramda.F,
|
|
51
|
+
returnOnTrue: undefined,
|
|
52
|
+
returnOnFalse: undefined
|
|
53
|
+
},
|
|
54
|
+
init({
|
|
55
|
+
// @ts-ignore
|
|
56
|
+
predicate = this.predicate,
|
|
57
|
+
// @ts-ignore
|
|
58
|
+
returnOnTrue = this.returnOnTrue,
|
|
59
|
+
// @ts-ignore
|
|
60
|
+
returnOnFalse = this.returnOnFalse
|
|
61
|
+
} = {}) {
|
|
62
|
+
this.result = [];
|
|
63
|
+
this.predicate = predicate;
|
|
64
|
+
this.returnOnTrue = returnOnTrue;
|
|
65
|
+
this.returnOnFalse = returnOnFalse;
|
|
66
|
+
},
|
|
67
|
+
methods: {
|
|
68
|
+
enter(element) {
|
|
69
|
+
if (this.predicate(element)) {
|
|
70
|
+
this.result.push(element);
|
|
71
|
+
return this.returnOnTrue;
|
|
72
|
+
}
|
|
73
|
+
return this.returnOnFalse;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
// @ts-ignore
|
|
79
|
+
exports.PredicateVisitor = PredicateVisitor;
|
|
80
|
+
const visit = (root,
|
|
81
|
+
// @ts-ignore
|
|
82
|
+
visitor, {
|
|
83
|
+
keyMap = keyMapDefault,
|
|
84
|
+
...rest
|
|
85
|
+
} = {}) => {
|
|
86
|
+
// @ts-ignore
|
|
87
|
+
return (0, _apidomAst.visit)(root, visitor, {
|
|
88
|
+
// @ts-ignore
|
|
89
|
+
keyMap,
|
|
90
|
+
// @ts-ignore
|
|
91
|
+
nodeTypeGetter: getNodeType,
|
|
92
|
+
nodePredicate: isNode,
|
|
93
|
+
...rest
|
|
94
|
+
});
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
// @ts-ignore
|
|
98
|
+
exports.visit = visit;
|
|
99
|
+
visit[Symbol.for('nodejs.util.promisify.custom')] = async (root,
|
|
100
|
+
// @ts-ignore
|
|
101
|
+
visitor, {
|
|
102
|
+
keyMap = keyMapDefault,
|
|
103
|
+
...rest
|
|
104
|
+
} = {}) => {
|
|
105
|
+
// @ts-ignore
|
|
106
|
+
return _apidomAst.visit[Symbol.for('nodejs.util.promisify.custom')](root, visitor, {
|
|
107
|
+
// @ts-ignore
|
|
108
|
+
keyMap,
|
|
109
|
+
// @ts-ignore
|
|
110
|
+
nodeTypeGetter: getNodeType,
|
|
111
|
+
nodePredicate: isNode,
|
|
112
|
+
...rest
|
|
113
|
+
});
|
|
114
|
+
};
|
package/cjs/util.cjs
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.dereference = void 0;
|
|
5
|
+
var _ramda = require("ramda");
|
|
6
|
+
var _ramdaAdjunct = require("ramda-adjunct");
|
|
7
|
+
/**
|
|
8
|
+
* This dereference algorithm is used exclusively for dereferencing specification objects.
|
|
9
|
+
* It doesn't handle circular references of external references and works on objects only (not arrays).
|
|
10
|
+
*/
|
|
11
|
+
// eslint-disable-next-line import/prefer-default-export
|
|
12
|
+
const dereference = (object, root) => {
|
|
13
|
+
const rootObject = (0, _ramda.defaultTo)(object, root);
|
|
14
|
+
return (0, _ramda.mapObjIndexed)(val => {
|
|
15
|
+
if ((0, _ramdaAdjunct.isPlainObject)(val) && (0, _ramda.has)('$ref', val) && (0, _ramda.propSatisfies)(_ramdaAdjunct.isString, '$ref', val)) {
|
|
16
|
+
const $ref = (0, _ramda.path)(['$ref'], val);
|
|
17
|
+
// @ts-ignore
|
|
18
|
+
const pointer = (0, _ramdaAdjunct.trimCharsStart)('#/', $ref);
|
|
19
|
+
return (0, _ramda.path)(pointer.split('/'), rootObject);
|
|
20
|
+
}
|
|
21
|
+
if ((0, _ramdaAdjunct.isPlainObject)(val)) {
|
|
22
|
+
return dereference(val, rootObject);
|
|
23
|
+
}
|
|
24
|
+
return val;
|
|
25
|
+
}, object);
|
|
26
|
+
};
|
|
27
|
+
exports.dereference = dereference;
|