@@ -167,36 +167,46 @@ export function getDependencies(
167
167
contains : string = '' ,
168
168
revision : Revision = Revision . LEGACY
169
169
) : string [ ] {
170
+ let dependencyTypes : string [ ] = [ type ] ;
171
+
170
172
// Include pointers (struct arrays)
171
173
if ( type [ type . length - 1 ] === '*' ) {
172
- type = type . slice ( 0 , - 1 ) ;
174
+ dependencyTypes = [ type . slice ( 0 , - 1 ) ] ;
173
175
} else if ( revision === Revision . ACTIVE ) {
174
176
// enum base
175
177
if ( type === 'enum' ) {
176
- type = contains ;
178
+ dependencyTypes = [ contains ] ;
177
179
}
178
180
// enum element types
179
181
else if ( type . match ( / ^ \( .* \) $ / ) ) {
180
- type = type . slice ( 1 , - 1 ) ;
182
+ dependencyTypes = type
183
+ . slice ( 1 , - 1 )
184
+ . split ( ',' )
185
+ . map ( ( depType ) => ( depType [ depType . length - 1 ] === '*' ? depType . slice ( 0 , - 1 ) : depType ) ) ;
181
186
}
182
187
}
183
188
184
- if ( dependencies . includes ( type ) || ! types [ type ] ) {
185
- return dependencies ;
186
- }
187
-
188
- return [
189
- type ,
190
- ...( types [ type ] as StarknetEnumType [ ] ) . reduce < string [ ] > (
191
- ( previous , t ) => [
192
- ...previous ,
193
- ...getDependencies ( types , t . type , previous , t . contains , revision ) . filter (
194
- ( dependency ) => ! previous . includes ( dependency )
195
- ) ,
189
+ return dependencyTypes
190
+ . filter ( ( t ) => ! dependencies . includes ( t ) && types [ t ] )
191
+ . reduce < string [ ] > (
192
+ // This comment prevents prettier from rolling everything here into a single line.
193
+ ( p , depType ) => [
194
+ ...p ,
195
+ ...[
196
+ depType ,
197
+ ...( types [ depType ] as StarknetEnumType [ ] ) . reduce < string [ ] > (
198
+ ( previous , t ) => [
199
+ ...previous ,
200
+ ...getDependencies ( types , t . type , previous , t . contains , revision ) . filter (
201
+ ( dependency ) => ! previous . includes ( dependency )
202
+ ) ,
203
+ ] ,
204
+ [ ]
205
+ ) ,
206
+ ] . filter ( ( dependency ) => ! p . includes ( dependency ) ) ,
196
207
] ,
197
208
[ ]
198
- ) ,
199
- ] ;
209
+ ) ;
200
210
}
201
211
202
212
function getMerkleTreeType ( types : TypedData [ 'types' ] , ctx : Context ) {
0 commit comments