"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = generateCode; function _convertSourceMap() { const data = _interopRequireDefault(require("convert-source-map")); _convertSourceMap = function () { return data; }; return data; } function _generator() { const data = _interopRequireDefault(require("@babel/generator")); _generator = function () { return data; }; return data; } var _mergeMap = _interopRequireDefault(require("./merge-map")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function generateCode(pluginPasses, file) { const { opts, ast, code, inputMap } = file; const results = []; for (const plugins of pluginPasses) { for (const plugin of plugins) { const { generatorOverride } = plugin; if (generatorOverride) { const result = generatorOverride(ast, opts.generatorOpts, code, _generator().default); if (result !== undefined) results.push(result); } } } let result; if (results.length === 0) { result = (0, _generator().default)(ast, opts.generatorOpts, code); } else if (results.length === 1) { result = results[0]; if (typeof result.then === "function") { throw new Error(`You appear to be using an async codegen plugin, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, ` + `you may need to upgrade your @babel/core version.`); } } else { throw new Error("More than one plugin attempted to override codegen."); } let { code: outputCode, map: outputMap } = result; if (outputMap && inputMap) { outputMap = (0, _mergeMap.default)(inputMap.toObject(), outputMap); } if (opts.sourceMaps === "inline" || opts.sourceMaps === "both") { outputCode += "\n" + _convertSourceMap().default.fromObject(outputMap).toComment(); } if (opts.sourceMaps === "inline") { outputMap = null; } return { outputCode, outputMap }; }