11import { dirname , join } from 'path' ;
22import { fileURLToPath } from 'url' ;
33
4- import { createSyncFn } from 'synckit ' ;
4+ import { parseImportsExports } from 'parse-imports-exports ' ;
55import {
66 getJSDocComment ,
77 parse as parseType ,
@@ -13,7 +13,6 @@ import iterateJsdoc, {
1313} from '../iterateJsdoc.js' ;
1414
1515const __dirname = dirname ( fileURLToPath ( import . meta. url ) ) ;
16- const pathName = join ( __dirname , '../import-worker.mjs' ) ;
1716
1817const extraTypes = [
1918 'null' , 'undefined' , 'void' , 'string' , 'boolean' , 'object' ,
@@ -152,30 +151,30 @@ export default iterateJsdoc(({
152151 ? `${ typePart } ${ name } ${ description } `
153152 : `${ typePart } ${ name } ` ) ;
154153
155- const getImports = createSyncFn ( pathName ) ;
156- const imports = /** @type {import('parse-imports').Import[] } */ ( getImports ( imprt ) ) ;
157- if ( ! imports ) {
158- return null ;
159- }
154+ const importsExports = parseImportsExports ( imprt ) ;
160155
161- return imports . flatMap ( ( { importClause} ) => {
162- /* c8 ignore next */
163- const { default : dflt , named, namespace} = importClause || { } ;
164- const types = [ ] ;
165- if ( dflt ) {
166- types . push ( dflt ) ;
156+ const types = [ ] ;
157+ const namedImports = Object . values ( importsExports . namedImports || { } ) [ 0 ] ?. [ 0 ] ;
158+ if ( namedImports ) {
159+ if ( namedImports . default ) {
160+ types . push ( namedImports . default ) ;
167161 }
168- if ( namespace ) {
169- types . push ( namespace ) ;
162+ if ( namedImports . names ) {
163+ types . push ( ... Object . keys ( namedImports . names ) ) ;
170164 }
171- if ( named ) {
172- for ( const { binding} of named ) {
173- types . push ( binding ) ;
174- }
165+ }
166+
167+ const namespaceImports = Object . values ( importsExports . namespaceImports || { } ) [ 0 ] ?. [ 0 ] ;
168+ if ( namespaceImports ) {
169+ if ( namespaceImports . namespace ) {
170+ types . push ( namespaceImports . namespace ) ;
175171 }
172+ if ( namespaceImports . default ) {
173+ types . push ( namespaceImports . default ) ;
174+ }
175+ }
176176
177- return types ;
178- } ) ;
177+ return types ;
179178 } ) . filter ( Boolean ) ) : [ ] ;
180179
181180 const ancestorNodes = [ ] ;
0 commit comments