UNPKG

babel-core

Version:

Turn ES6 code into readable vanilla ES5 with source maps

107 lines (76 loc) 2.55 kB
"use strict"; var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; }; exports.push = push; exports.toClassObject = toClassObject; exports.toDefineObject = toDefineObject; var cloneDeep = _interopRequire(require("lodash/lang/cloneDeep")); var traverse = _interopRequire(require("../../traversal")); var each = _interopRequire(require("lodash/collection/each")); var has = _interopRequire(require("lodash/object/has")); var t = _interopRequire(require("../../types")); function push(mutatorMap, key, kind, computed, value) { var alias; if (t.isIdentifier(key)) { alias = key.name; if (computed) alias = "computed:" + alias; } else if (t.isLiteral(key)) { alias = String(key.value); } else { alias = JSON.stringify(traverse.removeProperties(t.cloneDeep(key))); } var map; if (has(mutatorMap, alias)) { map = mutatorMap[alias]; } else { map = {}; } mutatorMap[alias] = map; map._key = key; if (computed) { map._computed = true; } map[kind] = value; } function toClassObject(mutatorMap) { var objExpr = t.objectExpression([]); each(mutatorMap, function (map) { var mapNode = t.objectExpression([]); var propNode = t.property("init", map._key, mapNode, map._computed); each(map, function (node, key) { if (key[0] === "_") return; var inheritNode = node; if (t.isMethodDefinition(node)) node = node.value; var prop = t.property("init", t.identifier(key), node); t.inheritsComments(prop, inheritNode); t.removeComments(inheritNode); mapNode.properties.push(prop); }); objExpr.properties.push(propNode); }); return objExpr; } function toDefineObject(mutatorMap) { var objExpr = t.objectExpression([]); each(mutatorMap, function (map) { var mapNode = t.objectExpression([]); var propNode = t.property("init", map._key, mapNode, map._computed); if (map.value) { map.writable = t.literal(true); } map.configurable = t.literal(true); map.enumerable = t.literal(true); each(map, function (node, key) { if (key[0] === "_") return; node = t.clone(node); var inheritNode = node; if (t.isMethodDefinition(node)) node = node.value; var prop = t.property("init", t.identifier(key), node); t.inheritsComments(prop, inheritNode); t.removeComments(inheritNode); mapNode.properties.push(prop); }); objExpr.properties.push(propNode); }); return objExpr; } exports.__esModule = true;