babel-core
Version:
A compiler for writing next generation JavaScript
71 lines (51 loc) • 2.05 kB
JavaScript
;
exports.__esModule = true;
// istanbul ignore next
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj["default"] = obj; return newObj; } }
// istanbul ignore next
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _helpersMemoiseDecorators = require("../../helpers/memoise-decorators");
var _helpersMemoiseDecorators2 = _interopRequireDefault(_helpersMemoiseDecorators);
var _helpersDefineMap = require("../../helpers/define-map");
var defineMap = _interopRequireWildcard(_helpersDefineMap);
var _types = require("../../../types");
var t = _interopRequireWildcard(_types);
var metadata = {
dependencies: ["es6.classes"],
optional: true,
stage: 1
};
exports.metadata = metadata;
/**
* [Please add a description.]
*/
var visitor = {
/**
* [Please add a description.]
*/
ObjectExpression: function ObjectExpression(node, parent, scope, file) {
var hasDecorators = false;
for (var i = 0; i < node.properties.length; i++) {
var prop = node.properties[i];
if (prop.decorators) {
hasDecorators = true;
break;
}
}
if (!hasDecorators) return;
var mutatorMap = {};
for (var i = 0; i < node.properties.length; i++) {
var prop = node.properties[i];
if (prop.decorators) _helpersMemoiseDecorators2["default"](prop.decorators, scope);
if (prop.kind === "init" && !prop.method) {
prop.kind = "";
prop.value = t.functionExpression(null, [], t.blockStatement([t.returnStatement(prop.value)]));
}
defineMap.push(mutatorMap, prop, "initializer", file);
}
var obj = defineMap.toClassObject(mutatorMap);
obj = defineMap.toComputedObjectFromClass(obj);
return t.callExpression(file.addHelper("create-decorated-object"), [obj]);
}
};
exports.visitor = visitor;