10
10
*/
11
11
import { replace , Syntax as syntax } from 'estraverse' ;
12
12
13
- function defaultOptions ( ) {
14
- return {
15
- modules : [
16
- 'assert' ,
17
- 'assert/strict' ,
18
- 'node:assert' ,
19
- 'node:assert/strict'
20
- ]
21
- } ;
22
- }
23
-
24
- function isBodyOfIfStatement ( parentNode , key ) {
25
- return isIfStatement ( parentNode ) && ( key === 'consequent' || key === 'alternate' ) ;
26
- }
27
-
28
- function isNodeHavingNonBlockStatementAsBody ( node ) {
29
- if ( ! node ) return false ;
30
- switch ( node . type ) {
31
- case syntax . DoWhileStatement :
32
- case syntax . ForInStatement :
33
- case syntax . ForOfStatement :
34
- case syntax . ForStatement :
35
- case syntax . LabeledStatement :
36
- case syntax . WithStatement :
37
- case syntax . WhileStatement :
38
- return true ;
39
- }
40
- return false ;
41
- }
42
-
43
- function isBodyOfIterationStatement ( parentNode , key ) {
44
- return isNodeHavingNonBlockStatementAsBody ( parentNode ) && key === 'body' ;
45
- }
46
-
47
- function isNonBlockChildOfParentNode ( currentNode , parentNode , key ) {
48
- return isExpressionStatement ( currentNode ) && isCallExpression ( currentNode . expression ) &&
49
- ( isBodyOfIfStatement ( parentNode , key ) || isBodyOfIterationStatement ( parentNode , key ) ) ;
50
- }
51
-
52
13
function isLiteral ( node ) {
53
14
return node && node . type === syntax . Literal ;
54
15
}
@@ -74,6 +35,35 @@ function isImportDeclaration (node) {
74
35
return node && node . type === syntax . ImportDeclaration ;
75
36
}
76
37
38
+ function isBodyOfNodeHavingNonBlockStatementAsBody ( node , key ) {
39
+ if ( ! node ) {
40
+ return false ;
41
+ }
42
+ if ( key !== 'body' ) {
43
+ return false ;
44
+ }
45
+ switch ( node . type ) {
46
+ case syntax . DoWhileStatement :
47
+ case syntax . ForInStatement :
48
+ case syntax . ForOfStatement :
49
+ case syntax . ForStatement :
50
+ case syntax . LabeledStatement :
51
+ case syntax . WithStatement :
52
+ case syntax . WhileStatement :
53
+ return true ;
54
+ }
55
+ return false ;
56
+ }
57
+
58
+ function isBodyOfIfStatement ( node , key ) {
59
+ return isIfStatement ( node ) && ( key === 'consequent' || key === 'alternate' ) ;
60
+ }
61
+
62
+ function isNonBlockChildOfParentNode ( currentNode , parentNode , key ) {
63
+ return isExpressionStatement ( currentNode ) && isCallExpression ( currentNode . expression ) &&
64
+ ( isBodyOfIfStatement ( parentNode , key ) || isBodyOfNodeHavingNonBlockStatementAsBody ( parentNode , key ) ) ;
65
+ }
66
+
77
67
function createVisitor ( options ) {
78
68
const config = Object . assign ( defaultOptions ( ) , options ) ;
79
69
const targetModules = new Set ( config . modules ) ;
@@ -277,6 +267,17 @@ function unassertAst (ast, options) {
277
267
return replace ( ast , createVisitor ( options ) ) ;
278
268
}
279
269
270
+ function defaultOptions ( ) {
271
+ return {
272
+ modules : [
273
+ 'assert' ,
274
+ 'assert/strict' ,
275
+ 'node:assert' ,
276
+ 'node:assert/strict'
277
+ ]
278
+ } ;
279
+ }
280
+
280
281
export {
281
282
unassertAst ,
282
283
defaultOptions ,
0 commit comments