package.cjs.refractor.index.cjs Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of apidom-core Show documentation
Show all versions of apidom-core Show documentation
Tools for manipulating ApiDOM structures.
The newest version!
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
exports.__esModule = true;
exports.default = exports.createRefractor = void 0;
var _index = require("./plugins/dispatcher/index.cjs");
var _visitor = require("../traversal/visitor.cjs");
var _index2 = require("../clone/index.cjs");
var _index3 = require("../predicates/index.cjs");
var _toolbox = _interopRequireDefault(require("./toolbox.cjs"));
const refract = (value, {
Type,
plugins = []
}) => {
/**
* This is where values gets refracted into generic ApiDOM.
* We don't allow consumers to hook into this translation.
* Though we allow consumers to define their onw plugins on already transformed ApiDOM.
*/
const element = new Type(value);
if ((0, _index3.isElement)(value)) {
if (value.meta.length > 0) {
element.meta = (0, _index2.cloneDeep)(value.meta);
}
if (value.attributes.length > 0) {
element.attributes = (0, _index2.cloneDeep)(value.attributes);
}
}
/**
* Run plugins only when necessary.
* Running plugins visitors means extra single traversal === performance hit.
*/
return (0, _index.dispatchPluginsSync)(element, plugins, {
toolboxCreator: _toolbox.default,
visitorOptions: {
nodeTypeGetter: _visitor.getNodeType
}
});
};
const createRefractor = Type => (value, options = {}) => refract(value, {
...options,
Type
});
exports.createRefractor = createRefractor;
var _default = exports.default = refract;