/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @emails oncall+js_foundation * @format */ "use strict"; const generate = require("@babel/generator").default; const _require = require("@babel/core"), transformSync = _require.transformSync; function transform(code, plugins, options) { const optionsPlugins = plugins.length ? plugins.map(plugin => [plugin, options]) : [ () => ({ visitor: {} }) ]; const babelOptions = { ast: true, babelrc: false, code: false, compact: true, configFile: false, plugins: optionsPlugins, sourceType: "module" }; return generate(transformSync(code, babelOptions).ast).code; } function compare(plugins, code, expected) { let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; const result = transform(code, plugins, options); const reference = transform(expected, [], {}); expect(result).toBe(reference); } exports.transform = transform; exports.compare = compare;