1
1
var acorn = require ( 'acorn' )
2
2
var xtend = require ( 'xtend' )
3
+ var setPrototypeOf = require ( 'setprototypeof' )
3
4
4
5
var CJSParser = acorn . Parser
5
6
. extend ( require ( './lib/bigint' ) )
6
7
. extend ( require ( './lib/class-fields' ) )
7
8
. extend ( require ( './lib/static-class-features' ) )
8
9
. extend ( require ( './lib/numeric-separator' ) )
10
+ . extend ( defaultOptionsPlugin )
9
11
var ESModulesParser = CJSParser
10
12
. extend ( require ( './lib/export-ns-from' ) )
11
13
. extend ( require ( './lib/import-meta' ) )
@@ -19,19 +21,31 @@ function mapOptions (opts) {
19
21
} , opts )
20
22
}
21
23
24
+ function defaultOptionsPlugin ( P ) {
25
+ function DefaultOptionsParser ( opts , src ) {
26
+ P . call ( this , mapOptions ( opts ) , src )
27
+ }
28
+ setPrototypeOf ( DefaultOptionsParser , P )
29
+ DefaultOptionsParser . prototype = P . prototype
30
+ return DefaultOptionsParser
31
+ }
32
+
22
33
function getParser ( opts ) {
23
34
if ( ! opts ) opts = { }
24
35
return opts . sourceType === 'module' ? ESModulesParser : CJSParser
25
36
}
26
37
27
38
module . exports = exports = xtend ( acorn , {
39
+ Parser : CJSParser ,
40
+ ESModulesParser : ESModulesParser ,
41
+
28
42
parse : function parse ( src , opts ) {
29
- return getParser ( opts ) . parse ( src , mapOptions ( opts ) )
43
+ return getParser ( opts ) . parse ( src , opts )
30
44
} ,
31
45
parseExpressionAt : function parseExpressionAt ( src , offset , opts ) {
32
- return getParser ( opts ) . parseExpressionAt ( src , offset , mapOptions ( opts ) )
46
+ return getParser ( opts ) . parseExpressionAt ( src , offset , opts )
33
47
} ,
34
48
tokenizer : function tokenizer ( src , opts ) {
35
- return getParser ( opts ) . tokenizer ( src , mapOptions ( opts ) )
49
+ return getParser ( opts ) . tokenizer ( src , opts )
36
50
}
37
51
} )
0 commit comments