“use strict”;

Object.defineProperty(exports, “__esModule”, {

value: true

}); exports.default = void 0;

function _helperPluginUtils() {

const data = require("@babel/helper-plugin-utils");

_helperPluginUtils = function () {
  return data;
};

return data;

}

var _params = _interopRequireDefault(require(“./params”));

var _rest = _interopRequireDefault(require(“./rest”));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var _default = (0, _helperPluginUtils().declare)((api, options) => {

api.assertVersion(7);
const {
  loose
} = options;
return {
  name: "transform-parameters",
  visitor: {
    Function(path) {
      if (path.isArrowFunctionExpression() && path.get("params").some(param => param.isRestElement() || param.isAssignmentPattern())) {
        path.arrowFunctionToExpression();
      }

      const convertedRest = (0, _rest.default)(path);
      const convertedParams = (0, _params.default)(path, loose);

      if (convertedRest || convertedParams) {
        path.scope.crawl();
      }
    }

  }
};

});

exports.default = _default;