Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

pfchangs / babel-relay-plugin   js

Repository URL to install this package:

Version: 0.6.3-ccinternal 

/ lib / babelAdapter.js

// @generated
/**
 * Copyright 2013-2015, Facebook, Inc.
 * All rights reserved.
 *
 * This source code is licensed under the BSD-style license found in the
 * LICENSE file in the root directory of this source tree. An additional grant
 * of patent rights can be found in the PATENTS file in the same directory.
 *
 * 
 * @fullSyntaxTransform
 */

'use strict';

var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

var path = require('path');

function babelAdapter(Plugin, t, name, visitorsBuilder) {
  if (Plugin == null) {
    var _ret = (function () {
      // Babel 6.

      var _visitorsBuilder = visitorsBuilder(t);

      var _visitorsBuilder$visitor = _visitorsBuilder.visitor;
      var _Program = _visitorsBuilder$visitor.Program;
      var _TaggedTemplateExpression = _visitorsBuilder$visitor.TaggedTemplateExpression;

      var taggedTemplateExpressionVisitor = {
        TaggedTemplateExpression: function TaggedTemplateExpression(path) {
          _TaggedTemplateExpression(path, this);
        }
      };

      /**
       * Run both transforms on Program to make sure that they run before other plugins.
       */
      return {
        v: {
          visitor: {
            Program: function Program(path, state) {
              _Program(path, state);
              path.traverse(taggedTemplateExpressionVisitor, state);
            }
          }
        }
      };
    })();

    if (typeof _ret === 'object') return _ret.v;
  }
  // Babel 5.
  var legacyT = _extends({}, t, {
    nullLiteral: function nullLiteral() {
      return t.literal(null);
    },
    valueToNode: function valueToNode(value) {
      return t.literal(value);
    },
    objectProperty: function objectProperty(ident, value) {
      return t.property('init', ident, value);
    }
  });

  var visitors = visitorsBuilder(legacyT).visitor;
  var legacyVisitors = {};
  Object.keys(visitors).forEach(function (key) {
    legacyVisitors[key] = function (node, parent, scope, state) {
      var _this = this;

      var compatPath = {
        get: function get() {
          return _this.get.apply(_this, arguments);
        },
        node: node,
        parent: parent
      };
      var compatState = state.opts.compatState;
      if (!compatState) {
        var filename = state.opts.filename;
        state.opts.compatState = compatState = {
          file: {
            opts: {
              basename: path.basename(filename, path.extname(filename)),
              filename: filename
            }
          },
          isLegacyState: true
        };
      }
      return visitors[key](compatPath, compatState);
    };
  });
  return new Plugin(name, { visitor: legacyVisitors });
}

module.exports = babelAdapter;