/**
* 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;