@@ -13,14 +13,33 @@ const astNodeTypes = require("typescript-estree").AST_NODE_TYPES;
13
13
const traverser = require ( "eslint/lib/util/traverser" ) ;
14
14
const visitorKeys = require ( "./visitor-keys" ) ;
15
15
16
+ /**
17
+ * Formats the parser options object for typescript-estree
18
+ * @param {Object } options - ESLint parser options object
19
+ * @returns {Object } formatted typescript-estree options object
20
+ */
21
+ function formatOptions ( options ) {
22
+ const formattedOptions = Object . assign ( { } , options ) ;
23
+
24
+ if ( options . ecmaFeatures ) {
25
+ delete formattedOptions . ecmaFeatures ;
26
+
27
+ if ( options . ecmaFeatures . jsx ) {
28
+ formattedOptions . jsx = options . ecmaFeatures . jsx ;
29
+ }
30
+ }
31
+
32
+ return formattedOptions ;
33
+ }
34
+
16
35
//------------------------------------------------------------------------------
17
36
// Public
18
37
//------------------------------------------------------------------------------
19
38
20
39
exports . version = require ( "./package.json" ) . version ;
21
40
22
41
exports . parseForESLint = function parseForESLint ( code , options ) {
23
- const ast = parse ( code , options ) ;
42
+ const ast = parse ( code , formatOptions ( options ) ) ;
24
43
traverser . traverse ( ast , {
25
44
enter : node => {
26
45
if ( node . type === "DeclareFunction" || node . type === "FunctionExpression" || node . type === "FunctionDeclaration" ) {
@@ -34,7 +53,7 @@ exports.parseForESLint = function parseForESLint(code, options) {
34
53
} ;
35
54
36
55
exports . parse = function ( code , options ) {
37
- return this . parseForESLint ( code , options ) . ast ;
56
+ return this . parseForESLint ( code , formatOptions ( options ) ) . ast ;
38
57
} ;
39
58
40
59
// Deep copy.
0 commit comments