"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; function _helperPluginUtils() { const data = require("@babel/helper-plugin-utils"); _helperPluginUtils = function _helperPluginUtils() { return data; }; return data; } function _core() { const data = require("@babel/core"); _core = function _core() { return data; }; return data; } function getName(key) { if (_core().types.isIdentifier(key)) { return key.name; } return key.value.toString(); } var _default = (0, _helperPluginUtils().declare)(api => { api.assertVersion(7); return { visitor: { ObjectExpression(path) { const node = path.node; const plainProps = node.properties.filter(prop => !_core().types.isSpreadElement(prop) && !prop.computed); const alreadySeenData = Object.create(null); const alreadySeenGetters = Object.create(null); const alreadySeenSetters = Object.create(null); for (var _iterator = plainProps, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { var _ref; if (_isArray) { if (_i >= _iterator.length) break; _ref = _iterator[_i++]; } else { _i = _iterator.next(); if (_i.done) break; _ref = _i.value; } const prop = _ref; const name = getName(prop.key); let isDuplicate = false; switch (prop.kind) { case "get": if (alreadySeenData[name] || alreadySeenGetters[name]) { isDuplicate = true; } alreadySeenGetters[name] = true; break; case "set": if (alreadySeenData[name] || alreadySeenSetters[name]) { isDuplicate = true; } alreadySeenSetters[name] = true; break; default: if (alreadySeenData[name] || alreadySeenGetters[name] || alreadySeenSetters[name]) { isDuplicate = true; } alreadySeenData[name] = true; } if (isDuplicate) { prop.computed = true; prop.key = _core().types.stringLiteral(name); } } } } }; }); exports.default = _default;