babel-plugin-transform-typescript-metadata-macro
Version:
Babel plugin to emit decorator metadata like typescript compiler
41 lines (30 loc) • 1.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _babelPluginMacros = require("babel-plugin-macros");
var _transform = require("./transform");
const metadataMacro = ({
references
}) => {
references.default.forEach(reference => {
const decorator = reference.findParent(parent => parent.isDecorator());
if (!decorator) {
throw new Error("Metadata macro should be used as class decorator");
}
const classDeclaration = decorator.findParent(parent => parent.isClassDeclaration());
if (!classDeclaration) {
throw new Error("Metadata macro should be used as class decorator");
}
if (classDeclaration.isClassDeclaration()) {
if (!classDeclaration.node.decorators) {
classDeclaration.node.decorators = [];
}
(0, _transform.transform)(classDeclaration);
classDeclaration.node.decorators = classDeclaration.node.decorators.filter(it => it !== decorator.node);
}
});
};
var _default = (0, _babelPluginMacros.createMacro)(metadataMacro);
exports.default = _default;