@babel/preset-flow
Version:
Babel preset for all Flow plugins.
57 lines (53 loc) • 1.81 kB
JavaScript
import { declarePreset } from '@babel/helper-plugin-utils';
import transformFlowStripTypes from '@babel/plugin-transform-flow-strip-types';
import { OptionValidator } from '@babel/helper-validator-option';
const v = new OptionValidator("@babel/preset-flow");
function normalizeOptions(options = {}) {
let {
all,
ignoreExtensions,
experimental_useHermesParser
} = options;
v.invariant(!("allowDeclareFields" in options), `Since Babel 8, \`declare property: A\` is always supported, and the "allowDeclareFields" option is no longer available. Please remove it from your config.`);
const TopLevelOptions = {
all: "all",
ignoreExtensions: "ignoreExtensions",
experimental_useHermesParser: "experimental_useHermesParser"
};
v.validateTopLevelOptions(options, TopLevelOptions);
all = v.validateBooleanOption(TopLevelOptions.all, all);
ignoreExtensions = v.validateBooleanOption(TopLevelOptions.ignoreExtensions, ignoreExtensions);
experimental_useHermesParser = v.validateBooleanOption(TopLevelOptions.experimental_useHermesParser, experimental_useHermesParser);
return {
all,
ignoreExtensions,
experimental_useHermesParser
};
}
const index = declarePreset((api, opts) => {
api.assertVersion("^7.0.0-0 || ^8.0.0");
const {
all,
ignoreExtensions = false,
experimental_useHermesParser: useHermesParser = false
} = normalizeOptions(opts);
const plugins = [[transformFlowStripTypes, {
all
}]];
if (useHermesParser) {
plugins.unshift("babel-plugin-syntax-hermes-parser");
}
if (ignoreExtensions) {
return {
plugins
};
}
return {
overrides: [{
test: filename => filename == null || !/\.tsx?$/.test(filename),
plugins
}]
};
});
export { index as default };
//# sourceMappingURL=index.js.map