@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,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.default = void 0;
|
|
6
|
+
var _shortUniqueId = _interopRequireDefault(require("short-unique-id"));
|
|
7
|
+
var _minim = require("minim");
|
|
8
|
+
// @ts-ignore
|
|
9
|
+
|
|
10
|
+
const plugin = ({
|
|
11
|
+
length = 6
|
|
12
|
+
} = {}) => ({
|
|
13
|
+
predicates
|
|
14
|
+
}) => {
|
|
15
|
+
let uuid;
|
|
16
|
+
return {
|
|
17
|
+
pre() {
|
|
18
|
+
uuid = new _shortUniqueId.default({
|
|
19
|
+
length
|
|
20
|
+
});
|
|
21
|
+
},
|
|
22
|
+
visitor: {
|
|
23
|
+
enter(element) {
|
|
24
|
+
if (!predicates.isPrimitiveElement(element)) {
|
|
25
|
+
// eslint-disable-next-line no-param-reassign
|
|
26
|
+
element.id = new _minim.StringElement(uuid());
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
post() {
|
|
31
|
+
uuid = null;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
var _default = plugin;
|
|
36
|
+
exports.default = _default;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.dispatchPlugins = void 0;
|
|
6
|
+
var _ramda = require("ramda");
|
|
7
|
+
var _ramdaAdjunct = require("ramda-adjunct");
|
|
8
|
+
var _toolbox = _interopRequireDefault(require("../../toolbox.cjs"));
|
|
9
|
+
var _visitor = require("../../../traversal/visitor.cjs");
|
|
10
|
+
// eslint-disable-next-line import/prefer-default-export
|
|
11
|
+
const dispatchPlugins = (element, plugins, options = {}) => {
|
|
12
|
+
if (plugins.length === 0) return element;
|
|
13
|
+
const toolboxCreator = (0, _ramda.propOr)(_toolbox.default, 'toolboxCreator', options);
|
|
14
|
+
const visitorOptions = (0, _ramda.propOr)({}, 'visitorOptions', options);
|
|
15
|
+
const nodeTypeGetter = (0, _ramda.propOr)(_visitor.getNodeType, 'nodeTypeGetter', visitorOptions);
|
|
16
|
+
const toolbox = toolboxCreator();
|
|
17
|
+
const pluginsSpecs = plugins.map(plugin => plugin(toolbox));
|
|
18
|
+
const pluginsVisitor = (0, _visitor.mergeAllVisitors)(pluginsSpecs.map((0, _ramda.propOr)({}, 'visitor')), {
|
|
19
|
+
nodeTypeGetter
|
|
20
|
+
});
|
|
21
|
+
pluginsSpecs.forEach((0, _ramdaAdjunct.invokeArgs)(['pre'], []));
|
|
22
|
+
const newElement = (0, _visitor.visit)(element, pluginsVisitor, visitorOptions);
|
|
23
|
+
pluginsSpecs.forEach((0, _ramdaAdjunct.invokeArgs)(['post'], []));
|
|
24
|
+
return newElement;
|
|
25
|
+
};
|
|
26
|
+
exports.dispatchPlugins = dispatchPlugins;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
var _minim = require("minim");
|
|
6
|
+
exports.ObjectElement = _minim.ObjectElement;
|
|
7
|
+
exports.ArrayElement = _minim.ArrayElement;
|
|
8
|
+
exports.StringElement = _minim.StringElement;
|
|
9
|
+
exports.BooleanElement = _minim.BooleanElement;
|
|
10
|
+
exports.NullElement = _minim.NullElement;
|
|
11
|
+
exports.NumberElement = _minim.NumberElement;
|
|
12
|
+
exports.LinkElement = _minim.LinkElement;
|
|
13
|
+
exports.RefElement = _minim.RefElement;
|
|
14
|
+
var _Annotation = _interopRequireDefault(require("../elements/Annotation.cjs"));
|
|
15
|
+
exports.AnnotationElement = _Annotation.default;
|
|
16
|
+
var _Comment = _interopRequireDefault(require("../elements/Comment.cjs"));
|
|
17
|
+
exports.CommentElement = _Comment.default;
|
|
18
|
+
var _ParseResult = _interopRequireDefault(require("../elements/ParseResult.cjs"));
|
|
19
|
+
exports.ParseResultElement = _ParseResult.default;
|
|
20
|
+
var _SourceMap = _interopRequireDefault(require("../elements/SourceMap.cjs"));
|
|
21
|
+
exports.SourceMapElement = _SourceMap.default;
|
|
22
|
+
var _index = require("./index.cjs");
|
|
23
|
+
_minim.ObjectElement.refract = (0, _index.createRefractor)(_minim.ObjectElement);
|
|
24
|
+
_minim.ArrayElement.refract = (0, _index.createRefractor)(_minim.ArrayElement);
|
|
25
|
+
_minim.StringElement.refract = (0, _index.createRefractor)(_minim.StringElement);
|
|
26
|
+
_minim.BooleanElement.refract = (0, _index.createRefractor)(_minim.BooleanElement);
|
|
27
|
+
_minim.NullElement.refract = (0, _index.createRefractor)(_minim.NullElement);
|
|
28
|
+
_minim.NumberElement.refract = (0, _index.createRefractor)(_minim.NumberElement);
|
|
29
|
+
_minim.LinkElement.refract = (0, _index.createRefractor)(_minim.LinkElement);
|
|
30
|
+
_minim.RefElement.refract = (0, _index.createRefractor)(_minim.RefElement);
|
|
31
|
+
_Annotation.default.refract = (0, _index.createRefractor)(_Annotation.default);
|
|
32
|
+
_Comment.default.refract = (0, _index.createRefractor)(_Comment.default);
|
|
33
|
+
_ParseResult.default.refract = (0, _index.createRefractor)(_ParseResult.default);
|
|
34
|
+
_SourceMap.default.refract = (0, _index.createRefractor)(_SourceMap.default);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.default = void 0;
|
|
6
|
+
var basePredicates = _interopRequireWildcard(require("../predicates/index.cjs"));
|
|
7
|
+
var _namespace = _interopRequireDefault(require("../namespace.cjs"));
|
|
8
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
9
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
10
|
+
const createToolbox = () => {
|
|
11
|
+
const predicates = {
|
|
12
|
+
...basePredicates
|
|
13
|
+
};
|
|
14
|
+
return {
|
|
15
|
+
predicates,
|
|
16
|
+
namespace: _namespace.default
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
var _default = createToolbox;
|
|
20
|
+
exports.default = _default;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.default = void 0;
|
|
6
|
+
var _index = _interopRequireDefault(require("./value/index.cjs"));
|
|
7
|
+
const serializer = element => JSON.stringify((0, _index.default)(element));
|
|
8
|
+
var _default = serializer;
|
|
9
|
+
exports.default = _default;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
class EphemeralArray {
|
|
6
|
+
type = 'EphemeralArray';
|
|
7
|
+
content = [];
|
|
8
|
+
reference = undefined;
|
|
9
|
+
constructor(content) {
|
|
10
|
+
this.content = content;
|
|
11
|
+
this.reference = [];
|
|
12
|
+
}
|
|
13
|
+
toReference() {
|
|
14
|
+
return this.reference;
|
|
15
|
+
}
|
|
16
|
+
toArray() {
|
|
17
|
+
this.reference.push(...this.content);
|
|
18
|
+
return this.reference;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
var _default = EphemeralArray;
|
|
22
|
+
exports.default = _default;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
class EphemeralObject {
|
|
6
|
+
type = 'EphemeralObject';
|
|
7
|
+
content = [];
|
|
8
|
+
reference = undefined;
|
|
9
|
+
constructor(content) {
|
|
10
|
+
this.content = content;
|
|
11
|
+
this.reference = {};
|
|
12
|
+
}
|
|
13
|
+
toReference() {
|
|
14
|
+
return this.reference;
|
|
15
|
+
}
|
|
16
|
+
toObject() {
|
|
17
|
+
return Object.assign(this.reference, Object.fromEntries(this.content));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
var _default = EphemeralObject;
|
|
21
|
+
exports.default = _default;
|
|
@@ -0,0 +1,67 @@
|
|
|
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
|
+
var _ephemeralArray = _interopRequireDefault(require("./ast/ephemeral-array.cjs"));
|
|
9
|
+
var _ephemeralObject = _interopRequireDefault(require("./ast/ephemeral-object.cjs"));
|
|
10
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
11
|
+
const Visitor = _stampit.default.init(function _Visitor() {
|
|
12
|
+
const references = new WeakMap();
|
|
13
|
+
this.BooleanElement = function _BooleanElement(element) {
|
|
14
|
+
return element.toValue();
|
|
15
|
+
};
|
|
16
|
+
this.NumberElement = function _NumberElement(element) {
|
|
17
|
+
return element.toValue();
|
|
18
|
+
};
|
|
19
|
+
this.StringElement = function _StringElement(element) {
|
|
20
|
+
return element.toValue();
|
|
21
|
+
};
|
|
22
|
+
this.NullElement = function _NullElement() {
|
|
23
|
+
return null;
|
|
24
|
+
};
|
|
25
|
+
this.ObjectElement = {
|
|
26
|
+
enter(element) {
|
|
27
|
+
if (references.has(element)) {
|
|
28
|
+
return references.get(element).toReference();
|
|
29
|
+
}
|
|
30
|
+
const ephemeral = new _ephemeralObject.default(element.content);
|
|
31
|
+
references.set(element, ephemeral);
|
|
32
|
+
return ephemeral;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
this.EphemeralObject = {
|
|
36
|
+
leave(ephemeral) {
|
|
37
|
+
return ephemeral.toObject();
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
this.MemberElement = {
|
|
41
|
+
enter(element) {
|
|
42
|
+
return [element.key, element.value];
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
this.ArrayElement = {
|
|
46
|
+
enter(element) {
|
|
47
|
+
if (references.has(element)) {
|
|
48
|
+
return references.get(element).toReference();
|
|
49
|
+
}
|
|
50
|
+
const ephemeral = new _ephemeralArray.default(element.content);
|
|
51
|
+
references.set(element, ephemeral);
|
|
52
|
+
return ephemeral;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
this.EphemeralArray = {
|
|
56
|
+
leave(ephemeral) {
|
|
57
|
+
return ephemeral.toArray();
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
/* eslint-enable */
|
|
62
|
+
|
|
63
|
+
const serializer = element => {
|
|
64
|
+
return (0, _visitor.visit)(element, Visitor());
|
|
65
|
+
};
|
|
66
|
+
var _default = serializer;
|
|
67
|
+
exports.default = _default;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.visit = void 0;
|
|
5
|
+
var _ramda = require("ramda");
|
|
6
|
+
var _visitor = require("../../traversal/visitor.cjs");
|
|
7
|
+
const nodeTypeGetter = node => {
|
|
8
|
+
if (typeof (node === null || node === void 0 ? void 0 : node.type) === 'string') {
|
|
9
|
+
return node.type;
|
|
10
|
+
}
|
|
11
|
+
return (0, _visitor.getNodeType)(node);
|
|
12
|
+
};
|
|
13
|
+
const keyMapDefault = {
|
|
14
|
+
EphemeralObject: ['content'],
|
|
15
|
+
EphemeralArray: ['content'],
|
|
16
|
+
..._visitor.keyMapDefault
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
// eslint-disable-next-line import/prefer-default-export
|
|
20
|
+
const visit = (root,
|
|
21
|
+
// @ts-ignore
|
|
22
|
+
visitor, {
|
|
23
|
+
keyMap = keyMapDefault,
|
|
24
|
+
...rest
|
|
25
|
+
} = {}) => {
|
|
26
|
+
return (0, _visitor.visit)(root, visitor, {
|
|
27
|
+
keyMap,
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
nodeTypeGetter,
|
|
30
|
+
nodePredicate: _ramda.T,
|
|
31
|
+
detectCycles: false,
|
|
32
|
+
deleteNodeSymbol: Symbol.for('delete-node'),
|
|
33
|
+
skipVisitingNodeSymbol: Symbol.for('skip-visiting-node'),
|
|
34
|
+
...rest
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
// @ts-ignore
|
|
39
|
+
exports.visit = visit;
|
|
40
|
+
visit[Symbol.for('nodejs.util.promisify.custom')] = async (root, {
|
|
41
|
+
keyMap = keyMapDefault,
|
|
42
|
+
...rest
|
|
43
|
+
} = {}) => {
|
|
44
|
+
// @ts-ignore
|
|
45
|
+
return _visitor.visit[Symbol.for('nodejs.util.promisify.custom')](root, visitor, {
|
|
46
|
+
keyMap,
|
|
47
|
+
nodeTypeGetter,
|
|
48
|
+
nodePredicate: _ramda.T,
|
|
49
|
+
detectCycles: false,
|
|
50
|
+
deleteNodeSymbol: Symbol.for('delete-node'),
|
|
51
|
+
skipVisitingNodeSymbol: Symbol.for('skip-visiting-node'),
|
|
52
|
+
...rest
|
|
53
|
+
});
|
|
54
|
+
};
|
|
@@ -0,0 +1,93 @@
|
|
|
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("../traversal/visitor.cjs");
|
|
8
|
+
var _index = _interopRequireDefault(require("./value/index.cjs"));
|
|
9
|
+
const YamlVisitor = (0, _stampit.default)({
|
|
10
|
+
props: {
|
|
11
|
+
result: '',
|
|
12
|
+
indent: 0,
|
|
13
|
+
indentChar: ' '
|
|
14
|
+
},
|
|
15
|
+
init({
|
|
16
|
+
signature = '',
|
|
17
|
+
indent = 0,
|
|
18
|
+
indentChar = ' '
|
|
19
|
+
} = {}) {
|
|
20
|
+
this.result = signature;
|
|
21
|
+
this.indent = indent;
|
|
22
|
+
this.indentChard = indentChar;
|
|
23
|
+
},
|
|
24
|
+
methods: {
|
|
25
|
+
NumberElement(element) {
|
|
26
|
+
this.result += (0, _index.default)(element);
|
|
27
|
+
},
|
|
28
|
+
BooleanElement(element) {
|
|
29
|
+
const value = (0, _index.default)(element);
|
|
30
|
+
this.result += value ? 'true' : 'false';
|
|
31
|
+
},
|
|
32
|
+
StringElement(element) {
|
|
33
|
+
// for simplicity and avoiding ambiguity we always wrap strings in quotes
|
|
34
|
+
this.result += JSON.stringify((0, _index.default)(element));
|
|
35
|
+
},
|
|
36
|
+
NullElement() {
|
|
37
|
+
this.result += 'null';
|
|
38
|
+
},
|
|
39
|
+
ArrayElement(element) {
|
|
40
|
+
if (element.length === 0) {
|
|
41
|
+
this.result += '[]';
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
element.forEach(item => {
|
|
45
|
+
const visitor = YamlVisitor({
|
|
46
|
+
indent: this.indent + 1
|
|
47
|
+
});
|
|
48
|
+
const indent = this.indentChar.repeat(this.indent);
|
|
49
|
+
(0, _visitor.visit)(item, visitor);
|
|
50
|
+
const {
|
|
51
|
+
result
|
|
52
|
+
} = visitor;
|
|
53
|
+
this.result += result.startsWith('\n') ? `\n${indent}-${visitor.result}` : `\n${indent}- ${visitor.result}`;
|
|
54
|
+
});
|
|
55
|
+
return false;
|
|
56
|
+
},
|
|
57
|
+
ObjectElement(element) {
|
|
58
|
+
if (element.length === 0) {
|
|
59
|
+
this.result += '{}';
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
element.forEach((value, key) => {
|
|
63
|
+
const keyVisitor = YamlVisitor({
|
|
64
|
+
indent: this.indent + 1
|
|
65
|
+
});
|
|
66
|
+
const valueVisitor = YamlVisitor({
|
|
67
|
+
indent: this.indent + 1
|
|
68
|
+
});
|
|
69
|
+
const indent = this.indentChar.repeat(this.indent);
|
|
70
|
+
(0, _visitor.visit)(key, keyVisitor);
|
|
71
|
+
(0, _visitor.visit)(value, valueVisitor);
|
|
72
|
+
const {
|
|
73
|
+
result: keyResult
|
|
74
|
+
} = keyVisitor;
|
|
75
|
+
const {
|
|
76
|
+
result: valueResult
|
|
77
|
+
} = valueVisitor;
|
|
78
|
+
this.result += valueResult.startsWith('\n') ? `\n${indent}${keyResult}:${valueResult}` : `\n${indent}${keyResult}: ${valueResult}`;
|
|
79
|
+
});
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
const serializer = element => {
|
|
85
|
+
const signature = '%YAML 1.2\n---\n';
|
|
86
|
+
const visitor = YamlVisitor({
|
|
87
|
+
signature
|
|
88
|
+
});
|
|
89
|
+
(0, _visitor.visit)(element, visitor);
|
|
90
|
+
return visitor.result;
|
|
91
|
+
};
|
|
92
|
+
var _default = serializer;
|
|
93
|
+
exports.default = _default;
|
package/cjs/sexprs.cjs
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
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("./traversal/visitor.cjs");
|
|
8
|
+
const SymbolicExpressionsVisitor = (0, _stampit.default)({
|
|
9
|
+
props: {
|
|
10
|
+
nestingLevel: 0,
|
|
11
|
+
result: ''
|
|
12
|
+
},
|
|
13
|
+
methods: {
|
|
14
|
+
enter(element) {
|
|
15
|
+
const {
|
|
16
|
+
element: elementName
|
|
17
|
+
} = element;
|
|
18
|
+
const capitalizedElementName = elementName.charAt(0).toUpperCase() + elementName.slice(1);
|
|
19
|
+
const indent = ' '.repeat(this.nestingLevel);
|
|
20
|
+
this.result += this.nestingLevel > 0 ? '\n' : '';
|
|
21
|
+
this.result += `${indent}(${capitalizedElementName}Element`;
|
|
22
|
+
this.nestingLevel += 1;
|
|
23
|
+
},
|
|
24
|
+
leave() {
|
|
25
|
+
this.nestingLevel -= 1;
|
|
26
|
+
this.result += ')';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// transforms ApiDOM into S-expressions (Symbolic Expressions)
|
|
32
|
+
const sexprs = element => {
|
|
33
|
+
const visitor = SymbolicExpressionsVisitor();
|
|
34
|
+
(0, _visitor.visit)(element, visitor);
|
|
35
|
+
return visitor.result;
|
|
36
|
+
};
|
|
37
|
+
var _default = sexprs;
|
|
38
|
+
exports.default = _default;
|
|
@@ -0,0 +1,110 @@
|
|
|
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 _ramdaAdjunct = require("ramda-adjunct");
|
|
8
|
+
var _index = require("../predicates/index.cjs");
|
|
9
|
+
const computeEdges = (element, edges = new WeakMap()) => {
|
|
10
|
+
if ((0, _index.isMemberElement)(element)) {
|
|
11
|
+
// @ts-ignore
|
|
12
|
+
edges.set(element.key, element);
|
|
13
|
+
// @ts-ignore
|
|
14
|
+
computeEdges(element.key, edges);
|
|
15
|
+
// @ts-ignore
|
|
16
|
+
edges.set(element.value, element);
|
|
17
|
+
// @ts-ignore
|
|
18
|
+
computeEdges(element.value, edges);
|
|
19
|
+
} else {
|
|
20
|
+
element.children.forEach(childElement => {
|
|
21
|
+
edges.set(childElement, element);
|
|
22
|
+
computeEdges(childElement, edges);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
return edges;
|
|
26
|
+
};
|
|
27
|
+
const transcludeChildOfMemberElement = (search, replace, edges) => {
|
|
28
|
+
const memberElement = edges.get(search);
|
|
29
|
+
if (!(0, _index.isMemberElement)(memberElement)) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (memberElement.key === search) {
|
|
33
|
+
memberElement.key = replace;
|
|
34
|
+
edges.delete(search);
|
|
35
|
+
edges.set(replace, memberElement);
|
|
36
|
+
}
|
|
37
|
+
if (memberElement.value === search) {
|
|
38
|
+
memberElement.value = replace;
|
|
39
|
+
edges.delete(search);
|
|
40
|
+
edges.set(replace, memberElement);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
const transcludeChildOfObjectElement = (search, replace, edges) => {
|
|
44
|
+
const objectElement = edges.get(search);
|
|
45
|
+
if (!(0, _index.isObjectElement)(objectElement)) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
objectElement.content = objectElement.map((value, key, member) => {
|
|
49
|
+
if (member === search) {
|
|
50
|
+
edges.delete(search);
|
|
51
|
+
edges.set(replace, objectElement);
|
|
52
|
+
return replace;
|
|
53
|
+
}
|
|
54
|
+
return member;
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
const transcludeChildOfArrayElement = (search, replace, edges) => {
|
|
58
|
+
const arrayElement = edges.get(search);
|
|
59
|
+
if (!(0, _index.isArrayElement)(arrayElement)) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
arrayElement.content = arrayElement.map(element => {
|
|
63
|
+
if (element === search) {
|
|
64
|
+
edges.delete(search);
|
|
65
|
+
edges.set(replace, arrayElement);
|
|
66
|
+
return replace;
|
|
67
|
+
}
|
|
68
|
+
return element;
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* This is a mutating stamp. If you don't want your Element to be mutated,
|
|
74
|
+
* clone in before passing it to initializer of this stamp.
|
|
75
|
+
*/
|
|
76
|
+
|
|
77
|
+
const Transcluder = _stampit.default.init(function TranscluderConstructor({
|
|
78
|
+
element
|
|
79
|
+
}) {
|
|
80
|
+
let edges;
|
|
81
|
+
this.transclude = function transclude(search, replace) {
|
|
82
|
+
var _edges;
|
|
83
|
+
// shortcut 1. - replacing entire ApiDOM tree
|
|
84
|
+
if (search === element) return replace;
|
|
85
|
+
// shortcut 2. - replacing nothing
|
|
86
|
+
if (search === replace) return element;
|
|
87
|
+
edges = (_edges = edges) !== null && _edges !== void 0 ? _edges : computeEdges(element);
|
|
88
|
+
const parent = edges.get(search);
|
|
89
|
+
if ((0, _ramdaAdjunct.isUndefined)(parent)) {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* This predicate must be first because ObjectElement extends ArrayElement.
|
|
95
|
+
* isArrayElement returns true for ObjectElements.
|
|
96
|
+
* (classical problems with polymorphism)
|
|
97
|
+
*/
|
|
98
|
+
if ((0, _index.isObjectElement)(parent)) {
|
|
99
|
+
// @ts-ignore
|
|
100
|
+
transcludeChildOfObjectElement(search, replace, edges);
|
|
101
|
+
} else if ((0, _index.isArrayElement)(parent)) {
|
|
102
|
+
transcludeChildOfArrayElement(search, replace, edges);
|
|
103
|
+
} else if ((0, _index.isMemberElement)(parent)) {
|
|
104
|
+
transcludeChildOfMemberElement(search, replace, edges);
|
|
105
|
+
}
|
|
106
|
+
return element;
|
|
107
|
+
};
|
|
108
|
+
});
|
|
109
|
+
var _default = Transcluder;
|
|
110
|
+
exports.default = _default;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.transclude = exports.default = void 0;
|
|
6
|
+
var _Transcluder = _interopRequireDefault(require("./Transcluder.cjs"));
|
|
7
|
+
/**
|
|
8
|
+
* This is a mutating function. If you don't want your Element to be mutated,
|
|
9
|
+
* clone in before passing it to this function.
|
|
10
|
+
*/
|
|
11
|
+
const transclude = (search, replace, element) => {
|
|
12
|
+
const transcluder = (0, _Transcluder.default)({
|
|
13
|
+
element
|
|
14
|
+
});
|
|
15
|
+
return transcluder.transclude(search, replace);
|
|
16
|
+
};
|
|
17
|
+
exports.transclude = transclude;
|
|
18
|
+
var _default = _Transcluder.default;
|
|
19
|
+
exports.default = _default;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
var _ramda = require("ramda");
|
|
6
|
+
var _minim = require("minim");
|
|
7
|
+
var _visitor = require("./visitor.cjs");
|
|
8
|
+
// finds all elements matching the predicate
|
|
9
|
+
// filter :: Pred -> Element -> ArraySlice
|
|
10
|
+
const filter = (0, _ramda.curry)((predicate, element) => {
|
|
11
|
+
const visitor = (0, _visitor.PredicateVisitor)({
|
|
12
|
+
predicate
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
// @ts-ignore
|
|
16
|
+
(0, _visitor.visit)(element, visitor);
|
|
17
|
+
return new _minim.ArraySlice(visitor.result);
|
|
18
|
+
});
|
|
19
|
+
var _default = filter;
|
|
20
|
+
exports.default = _default;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
var _ramda = require("ramda");
|
|
6
|
+
var _visitor = require("./visitor.cjs");
|
|
7
|
+
// find first element that satisfies the provided predicate
|
|
8
|
+
// find :: Pred -> Element -> Element | Undefined
|
|
9
|
+
const find = (0, _ramda.curry)((predicate, element) => {
|
|
10
|
+
const visitor = (0, _visitor.PredicateVisitor)({
|
|
11
|
+
predicate,
|
|
12
|
+
returnOnTrue: _visitor.BREAK
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
// @ts-ignore
|
|
16
|
+
(0, _visitor.visit)(element, visitor);
|
|
17
|
+
return (0, _ramda.pathOr)(undefined, [0], visitor.result);
|
|
18
|
+
});
|
|
19
|
+
var _default = find;
|
|
20
|
+
exports.default = _default;
|
|
@@ -0,0 +1,71 @@
|
|
|
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 _ramda = require("ramda");
|
|
8
|
+
var _ramdaAdjunct = require("ramda-adjunct");
|
|
9
|
+
var _index = require("../predicates/index.cjs");
|
|
10
|
+
var _visitor = require("./visitor.cjs");
|
|
11
|
+
const Visitor = (0, _stampit.default)({
|
|
12
|
+
props: {
|
|
13
|
+
result: [],
|
|
14
|
+
offset: 0,
|
|
15
|
+
includeRightBound: false
|
|
16
|
+
},
|
|
17
|
+
// @ts-ignore
|
|
18
|
+
init({
|
|
19
|
+
offset = this.offset,
|
|
20
|
+
includeRightBound = this.includeRightBound
|
|
21
|
+
}) {
|
|
22
|
+
this.result = [];
|
|
23
|
+
this.offset = offset;
|
|
24
|
+
this.includeRightBound = includeRightBound;
|
|
25
|
+
},
|
|
26
|
+
methods: {
|
|
27
|
+
enter(element) {
|
|
28
|
+
if (!(0, _index.hasElementSourceMap)(element)) {
|
|
29
|
+
return undefined; // dive in
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const sourceMapElement = element.getMetaProperty('sourceMap');
|
|
33
|
+
const charStart = sourceMapElement.positionStart.get(2).toValue();
|
|
34
|
+
const charEnd = sourceMapElement.positionEnd.get(2).toValue();
|
|
35
|
+
const isWithinOffsetRange = this.offset >= charStart && (this.offset < charEnd || this.includeRightBound && this.offset <= charEnd);
|
|
36
|
+
if (isWithinOffsetRange) {
|
|
37
|
+
this.result.push(element);
|
|
38
|
+
return undefined; // push to stack and dive in
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return false; // skip entire sub-tree
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
// Finds the most inner node at the given offset.
|
|
47
|
+
// If includeRightBound is set, also finds nodes that end at the given offset.
|
|
48
|
+
// findAtOffset :: Number -> Element -> Element | Undefined
|
|
49
|
+
const findAtOffset = (0, _ramda.curry)((options, element) => {
|
|
50
|
+
let offset;
|
|
51
|
+
let includeRightBound;
|
|
52
|
+
if ((0, _ramdaAdjunct.isNumber)(options)) {
|
|
53
|
+
offset = options;
|
|
54
|
+
includeRightBound = false;
|
|
55
|
+
} else {
|
|
56
|
+
offset = (0, _ramda.pathOr)(0, ['offset'], options);
|
|
57
|
+
includeRightBound = (0, _ramda.pathOr)(false, ['includeRightBound'], options);
|
|
58
|
+
}
|
|
59
|
+
const visitor = Visitor({
|
|
60
|
+
offset,
|
|
61
|
+
includeRightBound
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
// @ts-ignore
|
|
65
|
+
(0, _visitor.visit)(element, visitor);
|
|
66
|
+
|
|
67
|
+
// @ts-ignore
|
|
68
|
+
return (0, _ramda.last)(visitor.result);
|
|
69
|
+
});
|
|
70
|
+
var _default = findAtOffset;
|
|
71
|
+
exports.default = _default;
|