Sha256: 57b3a6559bed24c816514ec2af41165223223f213d372716aa57f59e1c8bbd74

Contents?: true

Size: 1.63 KB

Versions: 31

Compression:

Stored size: 1.63 KB

Contents

/* */ 
"format cjs";
// https://github.com/sebmarkbage/ecmascript-rest-spread

"use strict";

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; } }

var _types = require("../../../types");

var t = _interopRequireWildcard(_types);

var metadata = {
  stage: 2,
  dependencies: ["es6.destructuring"]
};

exports.metadata = metadata;
/**
 * [Please add a description.]
 */

var hasSpread = function hasSpread(node) {
  for (var i = 0; i < node.properties.length; i++) {
    if (t.isSpreadProperty(node.properties[i])) {
      return true;
    }
  }
  return false;
};

/**
 * [Please add a description.]
 */

var visitor = {

  /**
   * [Please add a description.]
   */

  ObjectExpression: function ObjectExpression(node, parent, scope, file) {
    if (!hasSpread(node)) return;

    var args = [];
    var props = [];

    var push = function push() {
      if (!props.length) return;
      args.push(t.objectExpression(props));
      props = [];
    };

    for (var i = 0; i < node.properties.length; i++) {
      var prop = node.properties[i];
      if (t.isSpreadProperty(prop)) {
        push();
        args.push(prop.argument);
      } else {
        props.push(prop);
      }
    }

    push();

    if (!t.isObjectExpression(args[0])) {
      args.unshift(t.objectExpression([]));
    }

    return t.callExpression(file.addHelper("extends"), args);
  }
};
exports.visitor = visitor;

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
sequenceserver-3.1.3 public/vendor/npm/babel-core@5.8.23/lib/transformation/transformers/es7/object-rest-spread.js
sequenceserver-3.1.2 public/vendor/npm/babel-core@5.8.23/lib/transformation/transformers/es7/object-rest-spread.js
sequenceserver-3.1.1 public/vendor/npm/babel-core@5.8.23/lib/transformation/transformers/es7/object-rest-spread.js
sequenceserver-3.1.0 public/vendor/npm/babel-core@5.8.23/lib/transformation/transformers/es7/object-rest-spread.js
sequenceserver-3.0.1 public/vendor/npm/babel-core@5.8.23/lib/transformation/transformers/es7/object-rest-spread.js
sequenceserver-3.0 public/vendor/npm/babel-core@5.8.23/lib/transformation/transformers/es7/object-rest-spread.js
sequenceserver-2.2.0 public/vendor/npm/babel-core@5.8.23/lib/transformation/transformers/es7/object-rest-spread.js
sequenceserver-2.1.0 public/vendor/npm/babel-core@5.8.23/lib/transformation/transformers/es7/object-rest-spread.js
sequenceserver-2.0.0 public/vendor/npm/babel-core@5.8.23/lib/transformation/transformers/es7/object-rest-spread.js
sequenceserver-2.0.0.rc8 public/vendor/npm/babel-core@5.8.23/lib/transformation/transformers/es7/object-rest-spread.js
sequenceserver-2.0.0.rc7 public/vendor/npm/babel-core@5.8.23/lib/transformation/transformers/es7/object-rest-spread.js
sequenceserver-2.0.0.rc6 public/vendor/npm/babel-core@5.8.23/lib/transformation/transformers/es7/object-rest-spread.js
sequenceserver-2.0.0.rc5 public/vendor/npm/babel-core@5.8.23/lib/transformation/transformers/es7/object-rest-spread.js
sequenceserver-2.0.0.rc4 public/vendor/npm/babel-core@5.8.23/lib/transformation/transformers/es7/object-rest-spread.js
sequenceserver-2.0.0.rc3 public/vendor/npm/babel-core@5.8.23/lib/transformation/transformers/es7/object-rest-spread.js
sequenceserver-2.0.0.rc2 public/vendor/npm/babel-core@5.8.23/lib/transformation/transformers/es7/object-rest-spread.js
sequenceserver-2.0.0.rc1 public/vendor/npm/babel-core@5.8.23/lib/transformation/transformers/es7/object-rest-spread.js
sequenceserver-2.0.0.beta4 public/vendor/npm/babel-core@5.8.23/lib/transformation/transformers/es7/object-rest-spread.js
sequenceserver-2.0.0.beta3 public/vendor/npm/babel-core@5.8.23/lib/transformation/transformers/es7/object-rest-spread.js
sequenceserver-2.0.0.beta1 public/vendor/npm/babel-core@5.8.23/lib/transformation/transformers/es7/object-rest-spread.js