2023-10-03 11:14:36 +08:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
Object . defineProperty ( exports , "Hub" , {
enumerable : true ,
get : function ( ) {
return _hub . default ;
}
} ) ;
Object . defineProperty ( exports , "NodePath" , {
enumerable : true ,
get : function ( ) {
return _path . default ;
}
} ) ;
Object . defineProperty ( exports , "Scope" , {
enumerable : true ,
get : function ( ) {
return _scope . default ;
}
} ) ;
exports . visitors = exports . default = void 0 ;
var visitors = require ( "./visitors" ) ;
exports . visitors = visitors ;
var _t = require ( "@babel/types" ) ;
var cache = require ( "./cache" ) ;
var _traverseNode = require ( "./traverse-node" ) ;
var _path = require ( "./path" ) ;
var _scope = require ( "./scope" ) ;
var _hub = require ( "./hub" ) ;
const {
VISITOR _KEYS ,
removeProperties ,
traverseFast
} = _t ;
function traverse ( parent , opts = { } , scope , state , parentPath ) {
if ( ! parent ) return ;
if ( ! opts . noScope && ! scope ) {
if ( parent . type !== "Program" && parent . type !== "File" ) {
throw new Error ( "You must pass a scope and parentPath unless traversing a Program/File. " + ` Instead of that you tried to traverse a ${ parent . type } node without ` + "passing scope and parentPath." ) ;
}
}
if ( ! VISITOR _KEYS [ parent . type ] ) {
return ;
}
visitors . explode ( opts ) ;
( 0 , _traverseNode . traverseNode ) ( parent , opts , scope , state , parentPath ) ;
}
var _default = traverse ;
exports . default = _default ;
traverse . visitors = visitors ;
traverse . verify = visitors . verify ;
traverse . explode = visitors . explode ;
traverse . cheap = function ( node , enter ) {
traverseFast ( node , enter ) ;
return ;
} ;
traverse . node = function ( node , opts , scope , state , path , skipKeys ) {
( 0 , _traverseNode . traverseNode ) ( node , opts , scope , state , path , skipKeys ) ;
} ;
traverse . clearNode = function ( node , opts ) {
removeProperties ( node , opts ) ;
cache . path . delete ( node ) ;
} ;
traverse . removeProperties = function ( tree , opts ) {
traverseFast ( tree , traverse . clearNode , opts ) ;
return tree ;
} ;
function hasDenylistedType ( path , state ) {
if ( path . node . type === state . type ) {
state . has = true ;
path . stop ( ) ;
}
}
traverse . hasType = function ( tree , type , denylistTypes ) {
if ( denylistTypes != null && denylistTypes . includes ( tree . type ) ) return false ;
if ( tree . type === type ) return true ;
const state = {
has : false ,
type : type
} ;
traverse ( tree , {
noScope : true ,
denylist : denylistTypes ,
enter : hasDenylistedType
} , null , state ) ;
return state . has ;
} ;
traverse . cache = cache ;
//# sourceMappingURL=index.js.map