Skip to content

Commit 2831419

Browse files
Move option validation
1 parent 3301a7c commit 2831419

2 files changed

Lines changed: 33 additions & 35 deletions

File tree

packages/babel-preset-typescript/src/normalize-options.js

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,19 @@ import { OptionValidator } from "@babel/helper-validator-option";
22
const v = new OptionValidator("@babel/preset-typescript");
33

44
export default function normalizeOptions(options = {}) {
5-
let {
6-
allowNamespaces = true,
7-
jsxPragma,
8-
onlyRemoveTypeImports,
9-
optimizeConstEnums,
10-
} = options;
5+
let { allowNamespaces = true, jsxPragma, onlyRemoveTypeImports } = options;
6+
7+
const TopLevelOptions = {
8+
allExtensions: "allExtensions",
9+
allowNamespaces: "allowNamespaces",
10+
isTSX: "isTSX",
11+
jsxPragma: "jsxPragma",
12+
jsxPragmaFrag: "jsxPragmaFrag",
13+
onlyRemoveTypeImports: "onlyRemoveTypeImports",
14+
optimizeConstEnums: "optimizeConstEnums",
15+
};
1116

1217
if (process.env.BABEL_8_BREAKING) {
13-
const TopLevelOptions = {
14-
allExtensions: "allExtensions",
15-
allowNamespaces: "allowNamespaces",
16-
isTSX: "isTSX",
17-
jsxPragma: "jsxPragma",
18-
jsxPragmaFrag: "jsxPragmaFrag",
19-
onlyRemoveTypeImports: "onlyRemoveTypeImports",
20-
optimizeConstEnums: "optimizeConstEnums",
21-
};
2218
v.validateTopLevelOptions(options, TopLevelOptions);
2319
allowNamespaces = v.validateBooleanOption(
2420
TopLevelOptions.allowNamespaces,
@@ -35,31 +31,35 @@ export default function normalizeOptions(options = {}) {
3531
options.onlyRemoveTypeImports,
3632
true,
3733
);
38-
optimizeConstEnums = v.validateBooleanOption(
39-
TopLevelOptions.optimizeConstEnums,
40-
options.optimizeConstEnums,
41-
true,
42-
);
4334
}
4435

4536
const jsxPragmaFrag = v.validateStringOption(
46-
"jsxPragmaFrag",
37+
TopLevelOptions.jsxPragmaFrag,
4738
options.jsxPragmaFrag,
4839
"React.Fragment",
4940
);
5041

5142
const allExtensions = v.validateBooleanOption(
52-
"allExtensions",
43+
TopLevelOptions.allExtensions,
5344
options.allExtensions,
5445
false,
5546
);
5647

57-
const isTSX = v.validateBooleanOption("isTSX", options.isTSX, false);
58-
48+
const isTSX = v.validateBooleanOption(
49+
TopLevelOptions.isTSX,
50+
options.isTSX,
51+
false,
52+
);
5953
if (isTSX) {
6054
v.invariant(allExtensions, "isTSX:true requires allExtensions:true");
6155
}
6256

57+
const optimizeConstEnums = v.validateBooleanOption(
58+
TopLevelOptions.optimizeConstEnums,
59+
options.optimizeConstEnums,
60+
false,
61+
);
62+
6363
return {
6464
allExtensions,
6565
allowNamespaces,

packages/babel-preset-typescript/test/normalize-options.spec.js

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ describe("normalize options", () => {
3737
"jsxPragma": "React",
3838
"jsxPragmaFrag": "React.Fragment",
3939
"onlyRemoveTypeImports": true,
40-
"optimizeConstEnums": true,
40+
"optimizeConstEnums": false,
4141
}
4242
`);
4343
});
@@ -48,21 +48,19 @@ describe("normalize options", () => {
4848
normalizeOptions({ allowNamespace: true }),
4949
).not.toThrowError();
5050
});
51-
it.each([
52-
"allowDeclareFields",
53-
"allowNamespaces",
54-
"onlyRemoveTypeImports",
55-
"optimizeConstEnums",
56-
])("should not throw when `%p` is not a boolean", optionName => {
57-
expect(() => normalizeOptions({ [optionName]: 0 })).not.toThrowError();
58-
});
51+
it.each(["allowDeclareFields", "allowNamespaces", "onlyRemoveTypeImports"])(
52+
"should not throw when `%p` is not a boolean",
53+
optionName => {
54+
expect(() => normalizeOptions({ [optionName]: 0 })).not.toThrowError();
55+
},
56+
);
5957
it.each(["jsxPragma"])(
6058
"should throw when `%p` is not a string",
6159
optionName => {
6260
expect(() => normalizeOptions({ [optionName]: 0 })).not.toThrowError();
6361
},
6462
);
65-
it.each(["allExtensions", "isTSX"])(
63+
it.each(["allExtensions", "isTSX", "optimizeConstEnums"])(
6664
"should throw when `%p` is not a boolean",
6765
optionName => {
6866
expect(() => normalizeOptions({ [optionName]: 0 })).toThrow(
@@ -87,7 +85,7 @@ describe("normalize options", () => {
8785
"jsxPragma": undefined,
8886
"jsxPragmaFrag": "React.Fragment",
8987
"onlyRemoveTypeImports": undefined,
90-
"optimizeConstEnums": undefined,
88+
"optimizeConstEnums": false,
9189
}
9290
`);
9391
});

0 commit comments

Comments
 (0)