1
- import jscodeshift , {
2
- type Identifier ,
3
- type TSArrayType ,
4
- type TSTypeLiteral ,
5
- type TSTypeReference ,
6
- } from "jscodeshift" ;
1
+ import jscodeshift from "jscodeshift" ;
7
2
8
3
import { CLIENT_NAMES_MAP , DOCUMENT_CLIENT } from "../../src/transforms/v2-to-v3/config" ;
9
4
import { getClientTypesMapWithKeysRemovedFromValues } from "./getClientTypesMapWithKeysRemovedFromValues" ;
@@ -39,20 +34,21 @@ export const getClientTypesMap = async (clientName: string): Promise<Record<stri
39
34
} ) ;
40
35
}
41
36
42
- tsTypes
43
- . filter ( ( tsType ) => tsType . typeAnnotation . type === "TSTypeReference" )
44
- . forEach ( ( tsType ) => {
45
- const name = tsType . id . name ;
46
- const typeName = ( ( tsType . typeAnnotation as TSTypeReference ) . typeName as Identifier ) . name ;
47
- if ( typeName === "Date" ) {
48
- clientTypesMap [ name ] = typeName ;
49
- } else if ( typeName === "EventStream" ) {
50
- // Exception for SelectObjectContentEventStream
51
- clientTypesMap [ name ] = "AsyncIterable<KEY>" ;
52
- } else {
53
- console . log ( "TSTypeReference with unsupported type:" , name , typeName ) ;
54
- }
55
- } ) ;
37
+ tsTypes . forEach ( ( tsType ) => {
38
+ if ( tsType . typeAnnotation . type !== "TSTypeReference" ) return ;
39
+ const typeAnnotationName = tsType . typeAnnotation . typeName ;
40
+ if ( typeAnnotationName . type !== "Identifier" ) return ;
41
+ const name = tsType . id . name ;
42
+ const typeName = typeAnnotationName . name ;
43
+ if ( typeName === "Date" ) {
44
+ clientTypesMap [ name ] = typeName ;
45
+ } else if ( typeName === "EventStream" ) {
46
+ // Exception for SelectObjectContentEventStream
47
+ clientTypesMap [ name ] = "AsyncIterable<KEY>" ;
48
+ } else {
49
+ console . log ( "TSTypeReference with unsupported type:" , name , typeName ) ;
50
+ }
51
+ } ) ;
56
52
57
53
tsTypes
58
54
. filter ( ( tsType ) => tsType . typeAnnotation . type === "TSUnionType" )
@@ -63,62 +59,60 @@ export const getClientTypesMap = async (clientName: string): Promise<Record<stri
63
59
}
64
60
} ) ;
65
61
66
- tsTypes
67
- . filter ( ( tsType ) => tsType . typeAnnotation . type === "TSArrayType" )
68
- . forEach ( ( tsType ) => {
69
- const name = tsType . id . name ;
70
- const elementType = ( tsType . typeAnnotation as TSArrayType ) . elementType ;
71
- if ( elementType . type === "TSTypeReference" ) {
72
- const typeName = elementType . typeName ;
73
- if ( typeName . type === "Identifier" ) {
74
- if ( clientTypesMap [ typeName . name ] ) {
75
- clientTypesMap [ name ] = `Array<${ clientTypesMap [ typeName . name ] } >` ;
76
- } else {
77
- // Assume it's an interface which would be available in v3.
78
- clientTypesMap [ name ] = `Array<${ typeName . name } >` ;
79
- }
62
+ tsTypes . forEach ( ( tsType ) => {
63
+ if ( tsType . typeAnnotation . type !== "TSArrayType" ) return ;
64
+ const name = tsType . id . name ;
65
+ const elementType = tsType . typeAnnotation . elementType ;
66
+ if ( elementType . type === "TSTypeReference" ) {
67
+ const typeName = elementType . typeName ;
68
+ if ( typeName . type === "Identifier" ) {
69
+ if ( clientTypesMap [ typeName . name ] ) {
70
+ clientTypesMap [ name ] = `Array<${ clientTypesMap [ typeName . name ] } >` ;
80
71
} else {
81
- console . log ( "TSArrayType TSTypeReference without Identifier type:" , name ) ;
72
+ // Assume it's an interface which would be available in v3.
73
+ clientTypesMap [ name ] = `Array<${ typeName . name } >` ;
82
74
}
83
- } else if ( Object . keys ( ElementTypeToNativeTypeMap ) . includes ( elementType . type ) ) {
84
- clientTypesMap [ name ] = `Array<${ ElementTypeToNativeTypeMap [ elementType . type ] } >` ;
85
75
} else {
86
- console . log ( "TSArrayType with unsupported elemental type:" , name ) ;
76
+ console . log ( "TSArrayType TSTypeReference without Identifier type:" , name ) ;
87
77
}
88
- } ) ;
78
+ } else if ( Object . keys ( ElementTypeToNativeTypeMap ) . includes ( elementType . type ) ) {
79
+ clientTypesMap [ name ] = `Array<${ ElementTypeToNativeTypeMap [ elementType . type ] } >` ;
80
+ } else {
81
+ console . log ( "TSArrayType with unsupported elemental type:" , name ) ;
82
+ }
83
+ } ) ;
89
84
90
- tsTypes
91
- . filter ( ( tsType ) => tsType . typeAnnotation . type === "TSTypeLiteral" )
92
- . forEach ( ( tsType ) => {
93
- const name = tsType . id . name ;
94
- const member = ( tsType . typeAnnotation as TSTypeLiteral ) . members [ 0 ] ;
95
- if ( member . type === "TSIndexSignature" ) {
96
- if ( member . typeAnnotation ) {
97
- if ( member . typeAnnotation . typeAnnotation ) {
98
- const typeAnnotation = member . typeAnnotation . typeAnnotation ;
99
- if ( typeAnnotation . type === "TSTypeReference" ) {
100
- const typeName = typeAnnotation . typeName ;
101
- if ( typeName . type === "Identifier" ) {
102
- if ( clientTypesMap [ typeName . name ] ) {
103
- clientTypesMap [ name ] = `Record<string, ${ clientTypesMap [ typeName . name ] } >` ;
104
- } else {
105
- // Assume it's an interface which would be available in v3.
106
- clientTypesMap [ name ] = `Record<string, ${ typeName . name } >` ;
107
- }
85
+ tsTypes . forEach ( ( tsType ) => {
86
+ if ( tsType . typeAnnotation . type !== "TSTypeLiteral" ) return ;
87
+ const name = tsType . id . name ;
88
+ const member = tsType . typeAnnotation . members [ 0 ] ;
89
+ if ( member . type === "TSIndexSignature" ) {
90
+ if ( member . typeAnnotation ) {
91
+ if ( member . typeAnnotation . typeAnnotation ) {
92
+ const typeAnnotation = member . typeAnnotation . typeAnnotation ;
93
+ if ( typeAnnotation . type === "TSTypeReference" ) {
94
+ const typeName = typeAnnotation . typeName ;
95
+ if ( typeName . type === "Identifier" ) {
96
+ if ( clientTypesMap [ typeName . name ] ) {
97
+ clientTypesMap [ name ] = `Record<string, ${ clientTypesMap [ typeName . name ] } >` ;
108
98
} else {
109
- console . log ( "TSTypeLiteral TSTypeReference without Identifier type:" , name ) ;
99
+ // Assume it's an interface which would be available in v3.
100
+ clientTypesMap [ name ] = `Record<string, ${ typeName . name } >` ;
110
101
}
111
- } else if ( Object . keys ( ElementTypeToNativeTypeMap ) . includes ( typeAnnotation . type ) ) {
112
- clientTypesMap [ name ] = `Record<string, ${
113
- ElementTypeToNativeTypeMap [ typeAnnotation . type ]
114
- } >`;
115
102
} else {
116
- console . log ( "TSTypeLiteral with unsupported typeAnnotation type:" , name ) ;
103
+ console . log ( "TSTypeLiteral TSTypeReference without Identifier type:" , name ) ;
117
104
}
105
+ } else if ( Object . keys ( ElementTypeToNativeTypeMap ) . includes ( typeAnnotation . type ) ) {
106
+ clientTypesMap [ name ] = `Record<string, ${
107
+ ElementTypeToNativeTypeMap [ typeAnnotation . type ]
108
+ } >`;
109
+ } else {
110
+ console . log ( "TSTypeLiteral with unsupported typeAnnotation type:" , name ) ;
118
111
}
119
112
}
120
113
}
121
- } ) ;
114
+ }
115
+ } ) ;
122
116
123
117
tsTypes . forEach ( ( tsType ) => {
124
118
const name = tsType . id . name ;
0 commit comments