1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, '__esModule', { value: true });
|
4 |
|
5 | var helperPluginUtils = require('@babel/helper-plugin-utils');
|
6 | var transformTypeScript = require('@babel/plugin-transform-typescript');
|
7 | var helperValidatorOption = require('@babel/helper-validator-option');
|
8 |
|
9 | function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
10 |
|
11 | var transformTypeScript__default = _interopDefaultLegacy(transformTypeScript);
|
12 |
|
13 | const v = new helperValidatorOption.OptionValidator("@babel/preset-typescript");
|
14 | function normalizeOptions(options = {}) {
|
15 | let {
|
16 | allowNamespaces = true,
|
17 | jsxPragma,
|
18 | onlyRemoveTypeImports
|
19 | } = options;
|
20 | const jsxPragmaFrag = v.validateStringOption("jsxPragmaFrag", options.jsxPragmaFrag, "React.Fragment");
|
21 | const allExtensions = v.validateBooleanOption("allExtensions", options.allExtensions, false);
|
22 | const isTSX = v.validateBooleanOption("isTSX", options.isTSX, false);
|
23 |
|
24 | if (isTSX) {
|
25 | v.invariant(allExtensions, "isTSX:true requires allExtensions:true");
|
26 | }
|
27 |
|
28 | return {
|
29 | allExtensions,
|
30 | allowNamespaces,
|
31 | isTSX,
|
32 | jsxPragma,
|
33 | jsxPragmaFrag,
|
34 | onlyRemoveTypeImports
|
35 | };
|
36 | }
|
37 |
|
38 | var index = helperPluginUtils.declare((api, opts) => {
|
39 | api.assertVersion(7);
|
40 | const {
|
41 | allExtensions,
|
42 | allowNamespaces,
|
43 | isTSX,
|
44 | jsxPragma,
|
45 | jsxPragmaFrag,
|
46 | onlyRemoveTypeImports
|
47 | } = normalizeOptions(opts);
|
48 |
|
49 | const pluginOptions = isTSX => ({
|
50 | allowDeclareFields: opts.allowDeclareFields,
|
51 | allowNamespaces,
|
52 | isTSX,
|
53 | jsxPragma,
|
54 | jsxPragmaFrag,
|
55 | onlyRemoveTypeImports
|
56 | });
|
57 |
|
58 | return {
|
59 | overrides: allExtensions ? [{
|
60 | plugins: [[transformTypeScript__default['default'], pluginOptions(isTSX)]]
|
61 | }] : [{
|
62 | test: /\.ts$/,
|
63 | plugins: [[transformTypeScript__default['default'], pluginOptions(false)]]
|
64 | }, {
|
65 | test: /\.tsx$/,
|
66 | plugins: [[transformTypeScript__default['default'], pluginOptions(true)]]
|
67 | }]
|
68 | };
|
69 | });
|
70 |
|
71 | exports.default = index;
|
72 |
|