"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = require("../lib/util");
function getBabelOptions(options) {
    // The goal here is to tolerate as much syntax as possible, since Recast
    // is not in the business of forbidding anything. If you want your
    // parser to be more restrictive for some reason, you can always pass
    // your own parser object to recast.parse.
    return {
        sourceType: util_1.getOption(options, "sourceType", "module"),
        strictMode: util_1.getOption(options, "strictMode", false),
        allowImportExportEverywhere: true,
        allowReturnOutsideFunction: true,
        startLine: 1,
        tokens: true,
        plugins: [
            "asyncGenerators",
            "bigInt",
            "classPrivateMethods",
            "classPrivateProperties",
            "classProperties",
            "decorators-legacy",
            "doExpressions",
            "dynamicImport",
            "exportDefaultFrom",
            "exportExtensions",
            "exportNamespaceFrom",
            "functionBind",
            "functionSent",
            "importMeta",
            "nullishCoalescingOperator",
            "numericSeparator",
            "objectRestSpread",
            "optionalCatchBinding",
            "optionalChaining",
            ["pipelineOperator", { proposal: "minimal" }],
            "throwExpressions",
        ]
    };
}
exports.default = getBabelOptions;
;
