UNPKG

@babel/preset-flow

Version:

Babel preset for all Flow plugins.

57 lines (53 loc) 1.81 kB
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