1
1
import { parseIgnoreSpec , findIndexOfAutoImportSpec } from './adjustAutoImports'
2
2
import { GetConfig } from './types'
3
3
import { getChangesTracker } from './utils'
4
+ import { camelCase } from 'change-case'
4
5
5
6
export default (
6
7
c : GetConfig ,
@@ -11,6 +12,7 @@ export default (
11
12
position : number ,
12
13
symbolName : string ,
13
14
entryDetailsPrior ?: ts . CompletionEntryDetails ,
15
+ skipCreatingImport = false ,
14
16
) => {
15
17
const changeToNamespaceImport = Object . entries ( c ( 'autoImport.changeToNamespaceImport' ) ) . map ( ( [ key , value ] ) => {
16
18
return [ parseIgnoreSpec ( key ) , value ] as const
@@ -36,7 +38,7 @@ export default (
36
38
}
37
39
38
40
const { module } = changeToNamespaceImport [ indexOfAutoImportSpec ] ! [ 0 ]
39
- const { namespace = module , addImport = true , useDefaultImport } = changeToNamespaceImport [ indexOfAutoImportSpec ] ! [ 1 ]
41
+ const { namespace = camelCase ( module ) , addImport = true , useDefaultImport } = changeToNamespaceImport [ indexOfAutoImportSpec ] ! [ 1 ]
40
42
const textChanges = [
41
43
{
42
44
newText : `${ namespace } .` ,
@@ -47,19 +49,22 @@ export default (
47
49
} ,
48
50
] as ts . TextChange [ ]
49
51
if ( ! addImport ) return { textChanges, description : `Change to '${ namespace } .${ symbolName } '` }
50
- const { factory } = ts
51
- const namespaceIdentifier = factory . createIdentifier ( namespace )
52
- const importDeclaration = factory . createImportDeclaration (
53
- /*modifiers*/ undefined ,
54
- useDefaultImport
55
- ? factory . createImportClause ( false , namespaceIdentifier , undefined )
56
- : factory . createImportClause ( false , undefined , factory . createNamespaceImport ( namespaceIdentifier ) ) ,
57
- factory . createStringLiteral ( importPath , preferences . quotePreference === 'single' ) ,
58
- )
59
- const changeTracker = getChangesTracker ( formatOptions )
60
- // todo respect sorting?
61
- changeTracker . insertNodeAtTopOfFile ( sourceFile as any , importDeclaration as any , true )
62
- const changes = changeTracker . getChanges ( )
63
- const { textChanges : importTextChanges } = changes [ 0 ] !
64
- return { textChanges : [ ...importTextChanges , ...textChanges ] , description : `+ ${ importTextChanges [ 0 ] ! . newText } ` , namespace, useDefaultImport }
52
+ if ( ! skipCreatingImport ) {
53
+ const { factory } = ts
54
+ const namespaceIdentifier = factory . createIdentifier ( namespace )
55
+ const importDeclaration = factory . createImportDeclaration (
56
+ /*modifiers*/ undefined ,
57
+ useDefaultImport
58
+ ? factory . createImportClause ( false , namespaceIdentifier , undefined )
59
+ : factory . createImportClause ( false , undefined , factory . createNamespaceImport ( namespaceIdentifier ) ) ,
60
+ factory . createStringLiteral ( importPath , preferences . quotePreference === 'single' ) ,
61
+ )
62
+ const changeTracker = getChangesTracker ( formatOptions )
63
+ // todo respect sorting?
64
+ changeTracker . insertNodeAtTopOfFile ( sourceFile as any , importDeclaration as any , true )
65
+ const changes = changeTracker . getChanges ( )
66
+ const { textChanges : importTextChanges } = changes [ 0 ] !
67
+ textChanges . unshift ( ...importTextChanges )
68
+ }
69
+ return { textChanges, description : `Add namespace import from '${ importPath } '` , namespace, useDefaultImport }
65
70
}
0 commit comments