BVB Source Codes

reactide Show index.js Source code

Return Download reactide: download index.js Source code - Download reactide Source code - Type:.js
  1. "use strict";
  2.  
  3. exports.__esModule = true;
  4.  
  5. var _getIterator2 = require("babel-runtime/core-js/get-iterator");
  6.  
  7. var _getIterator3 = _interopRequireDefault(_getIterator2);
  8.  
  9. exports.default = function (_ref) {
  10.   var t = _ref.types,
  11.       template = _ref.template;
  12.  
  13.   var buildMutatorMapAssign = template("\n    MUTATOR_MAP_REF[KEY] = MUTATOR_MAP_REF[KEY] || {};\n    MUTATOR_MAP_REF[KEY].KIND = VALUE;\n  ");
  14.  
  15.   function getValue(prop) {
  16.     if (t.isObjectProperty(prop)) {
  17.       return prop.value;
  18.     } else if (t.isObjectMethod(prop)) {
  19.       return t.functionExpression(null, prop.params, prop.body, prop.generator, prop.async);
  20.     }
  21.   }
  22.  
  23.   function pushAssign(objId, prop, body) {
  24.     if (prop.kind === "get" && prop.kind === "set") {
  25.       pushMutatorDefine(objId, prop, body);
  26.     } else {
  27.       body.push(t.expressionStatement(t.assignmentExpression("=", t.memberExpression(objId, prop.key, prop.computed || t.isLiteral(prop.key)), getValue(prop))));
  28.     }
  29.   }
  30.  
  31.   function pushMutatorDefine(_ref2, prop) {
  32.     var objId = _ref2.objId,
  33.         body = _ref2.body,
  34.         getMutatorId = _ref2.getMutatorId,
  35.         scope = _ref2.scope;
  36.  
  37.     var key = !prop.computed && t.isIdentifier(prop.key) ? t.stringLiteral(prop.key.name) : prop.key;
  38.  
  39.     var maybeMemoise = scope.maybeGenerateMemoised(key);
  40.     if (maybeMemoise) {
  41.       body.push(t.expressionStatement(t.assignmentExpression("=", maybeMemoise, key)));
  42.       key = maybeMemoise;
  43.     }
  44.  
  45.     body.push.apply(body, buildMutatorMapAssign({
  46.       MUTATOR_MAP_REF: getMutatorId(),
  47.       KEY: key,
  48.       VALUE: getValue(prop),
  49.       KIND: t.identifier(prop.kind)
  50.     }));
  51.   }
  52.  
  53.   function loose(info) {
  54.     for (var _iterator = info.computedProps, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
  55.       var _ref3;
  56.  
  57.       if (_isArray) {
  58.         if (_i >= _iterator.length) break;
  59.         _ref3 = _iterator[_i++];
  60.       } else {
  61.         _i = _iterator.next();
  62.         if (_i.done) break;
  63.         _ref3 = _i.value;
  64.       }
  65.  
  66.       var prop = _ref3;
  67.  
  68.       if (prop.kind === "get" || prop.kind === "set") {
  69.         pushMutatorDefine(info, prop);
  70.       } else {
  71.         pushAssign(info.objId, prop, info.body);
  72.       }
  73.     }
  74.   }
  75.  
  76.   function spec(info) {
  77.     var objId = info.objId,
  78.         body = info.body,
  79.         computedProps = info.computedProps,
  80.         state = info.state;
  81.  
  82.  
  83.     for (var _iterator2 = computedProps, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) {
  84.       var _ref4;
  85.  
  86.       if (_isArray2) {
  87.         if (_i2 >= _iterator2.length) break;
  88.         _ref4 = _iterator2[_i2++];
  89.       } else {
  90.         _i2 = _iterator2.next();
  91.         if (_i2.done) break;
  92.         _ref4 = _i2.value;
  93.       }
  94.  
  95.       var prop = _ref4;
  96.  
  97.       var key = t.toComputedKey(prop);
  98.  
  99.       if (prop.kind === "get" || prop.kind === "set") {
  100.         pushMutatorDefine(info, prop);
  101.       } else if (t.isStringLiteral(key, { value: "__proto__" })) {
  102.         pushAssign(objId, prop, body);
  103.       } else {
  104.         if (computedProps.length === 1) {
  105.           return t.callExpression(state.addHelper("defineProperty"), [info.initPropExpression, key, getValue(prop)]);
  106.         } else {
  107.           body.push(t.expressionStatement(t.callExpression(state.addHelper("defineProperty"), [objId, key, getValue(prop)])));
  108.         }
  109.       }
  110.     }
  111.   }
  112.  
  113.   return {
  114.     visitor: {
  115.       ObjectExpression: {
  116.         exit: function exit(path, state) {
  117.           var node = path.node,
  118.               parent = path.parent,
  119.               scope = path.scope;
  120.  
  121.           var hasComputed = false;
  122.           for (var _iterator3 = node.properties, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, _getIterator3.default)(_iterator3);;) {
  123.             var _ref5;
  124.  
  125.             if (_isArray3) {
  126.               if (_i3 >= _iterator3.length) break;
  127.               _ref5 = _iterator3[_i3++];
  128.             } else {
  129.               _i3 = _iterator3.next();
  130.               if (_i3.done) break;
  131.               _ref5 = _i3.value;
  132.             }
  133.  
  134.             var prop = _ref5;
  135.  
  136.             hasComputed = prop.computed === true;
  137.             if (hasComputed) break;
  138.           }
  139.           if (!hasComputed) return;
  140.  
  141.           var initProps = [];
  142.           var computedProps = [];
  143.           var foundComputed = false;
  144.  
  145.           for (var _iterator4 = node.properties, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : (0, _getIterator3.default)(_iterator4);;) {
  146.             var _ref6;
  147.  
  148.             if (_isArray4) {
  149.               if (_i4 >= _iterator4.length) break;
  150.               _ref6 = _iterator4[_i4++];
  151.             } else {
  152.               _i4 = _iterator4.next();
  153.               if (_i4.done) break;
  154.               _ref6 = _i4.value;
  155.             }
  156.  
  157.             var _prop = _ref6;
  158.  
  159.             if (_prop.computed) {
  160.               foundComputed = true;
  161.             }
  162.  
  163.             if (foundComputed) {
  164.               computedProps.push(_prop);
  165.             } else {
  166.               initProps.push(_prop);
  167.             }
  168.           }
  169.  
  170.           var objId = scope.generateUidIdentifierBasedOnNode(parent);
  171.           var initPropExpression = t.objectExpression(initProps);
  172.           var body = [];
  173.  
  174.           body.push(t.variableDeclaration("var", [t.variableDeclarator(objId, initPropExpression)]));
  175.  
  176.           var callback = spec;
  177.           if (state.opts.loose) callback = loose;
  178.  
  179.           var mutatorRef = void 0;
  180.  
  181.           var getMutatorId = function getMutatorId() {
  182.             if (!mutatorRef) {
  183.               mutatorRef = scope.generateUidIdentifier("mutatorMap");
  184.  
  185.               body.push(t.variableDeclaration("var", [t.variableDeclarator(mutatorRef, t.objectExpression([]))]));
  186.             }
  187.  
  188.             return mutatorRef;
  189.           };
  190.  
  191.           var single = callback({
  192.             scope: scope,
  193.             objId: objId,
  194.             body: body,
  195.             computedProps: computedProps,
  196.             initPropExpression: initPropExpression,
  197.             getMutatorId: getMutatorId,
  198.             state: state
  199.           });
  200.  
  201.           if (mutatorRef) {
  202.             body.push(t.expressionStatement(t.callExpression(state.addHelper("defineEnumerableProperties"), [objId, mutatorRef])));
  203.           }
  204.  
  205.           if (single) {
  206.             path.replaceWith(single);
  207.           } else {
  208.             body.push(t.expressionStatement(objId));
  209.             path.replaceWithMultiple(body);
  210.           }
  211.         }
  212.       }
  213.     }
  214.   };
  215. };
  216.  
  217. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  218.  
  219. module.exports = exports["default"];
downloadindex.js Source code - Download reactide Source code
Related Source Codes/Software:
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
postal - 2017-06-11
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top