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.  
  12.   var findBareSupers = {
  13.     Super: function Super(path) {
  14.       if (path.parentPath.isCallExpression({ callee: path.node })) {
  15.         this.push(path.parentPath);
  16.       }
  17.     }
  18.   };
  19.  
  20.   var referenceVisitor = {
  21.     ReferencedIdentifier: function ReferencedIdentifier(path) {
  22.       if (this.scope.hasOwnBinding(path.node.name)) {
  23.         this.collision = true;
  24.         path.skip();
  25.       }
  26.     }
  27.   };
  28.  
  29.   var buildObjectDefineProperty = (0, _babelTemplate2.default)("\n    Object.defineProperty(REF, KEY, {\n      // configurable is false by default\n      enumerable: true,\n      writable: true,\n      value: VALUE\n    });\n  ");
  30.  
  31.   var buildClassPropertySpec = function buildClassPropertySpec(ref, _ref2) {
  32.     var key = _ref2.key,
  33.         value = _ref2.value,
  34.         computed = _ref2.computed;
  35.     return buildObjectDefineProperty({
  36.       REF: ref,
  37.       KEY: t.isIdentifier(key) && !computed ? t.stringLiteral(key.name) : key,
  38.       VALUE: value ? value : t.identifier("undefined")
  39.     });
  40.   };
  41.  
  42.   var buildClassPropertyNonSpec = function buildClassPropertyNonSpec(ref, _ref3) {
  43.     var key = _ref3.key,
  44.         value = _ref3.value,
  45.         computed = _ref3.computed;
  46.     return t.expressionStatement(t.assignmentExpression("=", t.memberExpression(ref, key, computed || t.isLiteral(key)), value));
  47.   };
  48.  
  49.   return {
  50.     inherits: require("babel-plugin-syntax-class-properties"),
  51.  
  52.     visitor: {
  53.       Class: function Class(path, state) {
  54.         var buildClassProperty = state.opts.spec ? buildClassPropertySpec : buildClassPropertyNonSpec;
  55.         var isDerived = !!path.node.superClass;
  56.         var constructor = void 0;
  57.         var props = [];
  58.         var body = path.get("body");
  59.  
  60.         for (var _iterator = body.get("body"), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
  61.           var _ref4;
  62.  
  63.           if (_isArray) {
  64.             if (_i >= _iterator.length) break;
  65.             _ref4 = _iterator[_i++];
  66.           } else {
  67.             _i = _iterator.next();
  68.             if (_i.done) break;
  69.             _ref4 = _i.value;
  70.           }
  71.  
  72.           var _path = _ref4;
  73.  
  74.           if (_path.isClassProperty()) {
  75.             props.push(_path);
  76.           } else if (_path.isClassMethod({ kind: "constructor" })) {
  77.             constructor = _path;
  78.           }
  79.         }
  80.  
  81.         if (!props.length) return;
  82.  
  83.         var nodes = [];
  84.         var ref = void 0;
  85.  
  86.         if (path.isClassExpression() || !path.node.id) {
  87.           (0, _babelHelperFunctionName2.default)(path);
  88.           ref = path.scope.generateUidIdentifier("class");
  89.         } else {
  90.           ref = path.node.id;
  91.         }
  92.  
  93.         var instanceBody = [];
  94.  
  95.         for (var _iterator2 = props, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) {
  96.           var _ref5;
  97.  
  98.           if (_isArray2) {
  99.             if (_i2 >= _iterator2.length) break;
  100.             _ref5 = _iterator2[_i2++];
  101.           } else {
  102.             _i2 = _iterator2.next();
  103.             if (_i2.done) break;
  104.             _ref5 = _i2.value;
  105.           }
  106.  
  107.           var _prop = _ref5;
  108.  
  109.           var propNode = _prop.node;
  110.           if (propNode.decorators && propNode.decorators.length > 0) continue;
  111.  
  112.           if (!state.opts.spec && !propNode.value) continue;
  113.  
  114.           var isStatic = propNode.static;
  115.  
  116.           if (isStatic) {
  117.             nodes.push(buildClassProperty(ref, propNode));
  118.           } else {
  119.             if (!propNode.value) continue;
  120.             instanceBody.push(buildClassProperty(t.thisExpression(), propNode));
  121.           }
  122.         }
  123.  
  124.         if (instanceBody.length) {
  125.           if (!constructor) {
  126.             var newConstructor = t.classMethod("constructor", t.identifier("constructor"), [], t.blockStatement([]));
  127.             if (isDerived) {
  128.               newConstructor.params = [t.restElement(t.identifier("args"))];
  129.               newConstructor.body.body.push(t.returnStatement(t.callExpression(t.super(), [t.spreadElement(t.identifier("args"))])));
  130.             }
  131.  
  132.             var _body$unshiftContaine = body.unshiftContainer("body", newConstructor);
  133.  
  134.             constructor = _body$unshiftContaine[0];
  135.           }
  136.  
  137.           var collisionState = {
  138.             collision: false,
  139.             scope: constructor.scope
  140.           };
  141.  
  142.           for (var _iterator3 = props, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, _getIterator3.default)(_iterator3);;) {
  143.             var _ref6;
  144.  
  145.             if (_isArray3) {
  146.               if (_i3 >= _iterator3.length) break;
  147.               _ref6 = _iterator3[_i3++];
  148.             } else {
  149.               _i3 = _iterator3.next();
  150.               if (_i3.done) break;
  151.               _ref6 = _i3.value;
  152.             }
  153.  
  154.             var prop = _ref6;
  155.  
  156.             prop.traverse(referenceVisitor, collisionState);
  157.             if (collisionState.collision) break;
  158.           }
  159.  
  160.           if (collisionState.collision) {
  161.             var initialisePropsRef = path.scope.generateUidIdentifier("initialiseProps");
  162.  
  163.             nodes.push(t.variableDeclaration("var", [t.variableDeclarator(initialisePropsRef, t.functionExpression(null, [], t.blockStatement(instanceBody)))]));
  164.  
  165.             instanceBody = [t.expressionStatement(t.callExpression(t.memberExpression(initialisePropsRef, t.identifier("call")), [t.thisExpression()]))];
  166.           }
  167.  
  168.           if (isDerived) {
  169.             var bareSupers = [];
  170.             constructor.traverse(findBareSupers, bareSupers);
  171.             for (var _iterator4 = bareSupers, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : (0, _getIterator3.default)(_iterator4);;) {
  172.               var _ref7;
  173.  
  174.               if (_isArray4) {
  175.                 if (_i4 >= _iterator4.length) break;
  176.                 _ref7 = _iterator4[_i4++];
  177.               } else {
  178.                 _i4 = _iterator4.next();
  179.                 if (_i4.done) break;
  180.                 _ref7 = _i4.value;
  181.               }
  182.  
  183.               var bareSuper = _ref7;
  184.  
  185.               bareSuper.insertAfter(instanceBody);
  186.             }
  187.           } else {
  188.             constructor.get("body").unshiftContainer("body", instanceBody);
  189.           }
  190.         }
  191.  
  192.         for (var _iterator5 = props, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : (0, _getIterator3.default)(_iterator5);;) {
  193.           var _ref8;
  194.  
  195.           if (_isArray5) {
  196.             if (_i5 >= _iterator5.length) break;
  197.             _ref8 = _iterator5[_i5++];
  198.           } else {
  199.             _i5 = _iterator5.next();
  200.             if (_i5.done) break;
  201.             _ref8 = _i5.value;
  202.           }
  203.  
  204.           var _prop2 = _ref8;
  205.  
  206.           _prop2.remove();
  207.         }
  208.  
  209.         if (!nodes.length) return;
  210.  
  211.         if (path.isClassExpression()) {
  212.           path.scope.push({ id: ref });
  213.           path.replaceWith(t.assignmentExpression("=", ref, path.node));
  214.         } else {
  215.           if (!path.node.id) {
  216.             path.node.id = ref;
  217.           }
  218.  
  219.           if (path.parentPath.isExportDeclaration()) {
  220.             path = path.parentPath;
  221.           }
  222.         }
  223.  
  224.         path.insertAfter(nodes);
  225.       },
  226.       ArrowFunctionExpression: function ArrowFunctionExpression(path) {
  227.         var classExp = path.get("body");
  228.         if (!classExp.isClassExpression()) return;
  229.  
  230.         var body = classExp.get("body");
  231.         var members = body.get("body");
  232.         if (members.some(function (member) {
  233.           return member.isClassProperty();
  234.         })) {
  235.           path.ensureBlock();
  236.         }
  237.       }
  238.     }
  239.   };
  240. };
  241.  
  242. var _babelHelperFunctionName = require("babel-helper-function-name");
  243.  
  244. var _babelHelperFunctionName2 = _interopRequireDefault(_babelHelperFunctionName);
  245.  
  246. var _babelTemplate = require("babel-template");
  247.  
  248. var _babelTemplate2 = _interopRequireDefault(_babelTemplate);
  249.  
  250. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  251.  
  252. 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