@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.
Files changed (79) hide show
  1. package/CHANGELOG.md +366 -0
  2. package/LICENSES/Apache-2.0.txt +202 -0
  3. package/LICENSES/MIT.txt +9 -0
  4. package/README.md +679 -0
  5. package/cjs/deepmerge.cjs +87 -0
  6. package/cjs/elements/Annotation.cjs +21 -0
  7. package/cjs/elements/Comment.cjs +13 -0
  8. package/cjs/elements/ParseResult.cjs +51 -0
  9. package/cjs/elements/SourceMap.cjs +29 -0
  10. package/cjs/index.cjs +144 -0
  11. package/cjs/media-types.cjs +24 -0
  12. package/cjs/namespace.cjs +32 -0
  13. package/cjs/predicates/helpers.cjs +28 -0
  14. package/cjs/predicates/index.cjs +149 -0
  15. package/cjs/refractor/index.cjs +37 -0
  16. package/cjs/refractor/plugins/element-identity.cjs +36 -0
  17. package/cjs/refractor/plugins/semantic-element-identity.cjs +36 -0
  18. package/cjs/refractor/plugins/utils/index.cjs +26 -0
  19. package/cjs/refractor/registration.cjs +34 -0
  20. package/cjs/refractor/toolbox.cjs +20 -0
  21. package/cjs/serializers/json.cjs +9 -0
  22. package/cjs/serializers/value/ast/ephemeral-array.cjs +22 -0
  23. package/cjs/serializers/value/ast/ephemeral-object.cjs +21 -0
  24. package/cjs/serializers/value/index.cjs +67 -0
  25. package/cjs/serializers/value/visitor.cjs +54 -0
  26. package/cjs/serializers/yaml-1-2.cjs +93 -0
  27. package/cjs/sexprs.cjs +38 -0
  28. package/cjs/transcluder/Transcluder.cjs +110 -0
  29. package/cjs/transcluder/index.cjs +19 -0
  30. package/cjs/traversal/filter.cjs +20 -0
  31. package/cjs/traversal/find.cjs +20 -0
  32. package/cjs/traversal/findAtOffset.cjs +71 -0
  33. package/cjs/traversal/index.cjs +19 -0
  34. package/cjs/traversal/parents.cjs +47 -0
  35. package/cjs/traversal/reject.cjs +14 -0
  36. package/cjs/traversal/some.cjs +15 -0
  37. package/cjs/traversal/traverse.cjs +54 -0
  38. package/cjs/traversal/visitor.cjs +114 -0
  39. package/cjs/util.cjs +27 -0
  40. package/dist/apidom-core.browser.js +30952 -0
  41. package/dist/apidom-core.browser.min.js +1 -0
  42. package/es/deepmerge.js +84 -0
  43. package/es/elements/Annotation.js +16 -0
  44. package/es/elements/Comment.js +8 -0
  45. package/es/elements/ParseResult.js +46 -0
  46. package/es/elements/SourceMap.js +24 -0
  47. package/es/index.js +72 -0
  48. package/es/media-types.js +22 -0
  49. package/es/namespace.js +24 -0
  50. package/es/predicates/helpers.js +22 -0
  51. package/es/predicates/index.js +124 -0
  52. package/es/refractor/index.js +32 -0
  53. package/es/refractor/plugins/element-identity.js +30 -0
  54. package/es/refractor/plugins/semantic-element-identity.js +34 -0
  55. package/es/refractor/plugins/utils/index.js +19 -0
  56. package/es/refractor/registration.js +19 -0
  57. package/es/refractor/toolbox.js +13 -0
  58. package/es/serializers/json.js +3 -0
  59. package/es/serializers/value/ast/ephemeral-array.js +18 -0
  60. package/es/serializers/value/ast/ephemeral-object.js +17 -0
  61. package/es/serializers/value/index.js +61 -0
  62. package/es/serializers/value/visitor.js +54 -0
  63. package/es/serializers/yaml-1-2.js +87 -0
  64. package/es/sexprs.js +32 -0
  65. package/es/transcluder/Transcluder.js +104 -0
  66. package/es/transcluder/index.js +12 -0
  67. package/es/traversal/filter.js +14 -0
  68. package/es/traversal/find.js +14 -0
  69. package/es/traversal/findAtOffset.js +65 -0
  70. package/es/traversal/index.js +7 -0
  71. package/es/traversal/parents.js +40 -0
  72. package/es/traversal/reject.js +7 -0
  73. package/es/traversal/some.js +8 -0
  74. package/es/traversal/traverse.js +47 -0
  75. package/es/traversal/visitor.js +110 -0
  76. package/es/util.js +23 -0
  77. package/package.json +65 -0
  78. package/types/dist.d.ts +260 -0
  79. 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;