@@ -62,12 +62,15 @@ class TypeScriptGenerator(BaseGenerator):
6262 PrimitiveKind .VAR_UINT64 : "bigint | number" ,
6363 PrimitiveKind .TAGGED_UINT64 : "bigint | number" ,
6464 PrimitiveKind .FLOAT16 : "number" ,
65+ PrimitiveKind .BFLOAT16 : "number" ,
6566 PrimitiveKind .FLOAT32 : "number" ,
6667 PrimitiveKind .FLOAT64 : "number" ,
6768 PrimitiveKind .STRING : "string" ,
6869 PrimitiveKind .BYTES : "Uint8Array" ,
6970 PrimitiveKind .DATE : "Date" ,
7071 PrimitiveKind .TIMESTAMP : "Date" ,
72+ PrimitiveKind .DURATION : "number" ,
73+ PrimitiveKind .DECIMAL : "number" ,
7174 PrimitiveKind .ANY : "any" ,
7275 }
7376
@@ -108,7 +111,7 @@ def split_imported_types(
108111 imported .append (item )
109112 else :
110113 local .append (item )
111- return local , imported # Return (local, imported ) tuple
114+ return imported , local # Return (imported, local ) tuple
112115
113116 def get_module_name (self ) -> str :
114117 """Get the TypeScript module name from package."""
@@ -178,7 +181,7 @@ def generate_module(self) -> GeneratedFile:
178181 lines .append ("" )
179182
180183 # Generate enums (top-level only)
181- local_enums , _ = self .split_imported_types (self .schema .enums )
184+ _ , local_enums = self .split_imported_types (self .schema .enums )
182185 if local_enums :
183186 lines .append ("// Enums" )
184187 lines .append ("" )
@@ -187,7 +190,7 @@ def generate_module(self) -> GeneratedFile:
187190 lines .append ("" )
188191
189192 # Generate unions (top-level only)
190- local_unions , _ = self .split_imported_types (self .schema .unions )
193+ _ , local_unions = self .split_imported_types (self .schema .unions )
191194 if local_unions :
192195 lines .append ("// Unions" )
193196 lines .append ("" )
@@ -196,7 +199,7 @@ def generate_module(self) -> GeneratedFile:
196199 lines .append ("" )
197200
198201 # Generate messages (including nested types)
199- local_messages , _ = self .split_imported_types (self .schema .messages )
202+ _ , local_messages = self .split_imported_types (self .schema .messages )
200203 if local_messages :
201204 lines .append ("// Messages" )
202205 lines .append ("" )
@@ -244,17 +247,7 @@ def generate_message(
244247 if comment :
245248 lines .append (comment )
246249
247- # Generate nested enums first
248- for nested_enum in message .nested_enums :
249- lines .extend (self .generate_enum (nested_enum , indent = indent ))
250- lines .append ("" )
251-
252- # Generate nested unions
253- for nested_union in message .nested_unions :
254- lines .extend (self .generate_union (nested_union , indent = indent ))
255- lines .append ("" )
256-
257- # Generate the main interface
250+ # Generate the main interface first
258251 lines .append (f"{ ind } export interface { message .name } {{" )
259252
260253 # Generate fields
@@ -266,7 +259,17 @@ def generate_message(
266259
267260 lines .append (f"{ ind } }}" )
268261
269- # Generate nested messages
262+ # Generate nested enums after parent interface
263+ for nested_enum in message .nested_enums :
264+ lines .append ("" )
265+ lines .extend (self .generate_enum (nested_enum , indent = indent ))
266+
267+ # Generate nested unions after parent interface
268+ for nested_union in message .nested_unions :
269+ lines .append ("" )
270+ lines .extend (self .generate_union (nested_union , indent = indent ))
271+
272+ # Generate nested messages after parent interface
270273 for nested_msg in message .nested_messages :
271274 lines .append ("" )
272275 lines .extend (
@@ -350,33 +353,25 @@ def generate_registration(self) -> List[str]:
350353
351354 return lines
352355
353- def _generate_message_registration (
354- self , message : Message , lines : List [str ], parent : Optional [str ] = None
355- ):
356+ def _generate_message_registration (self , message : Message , lines : List [str ]):
356357 """Generate registration for a message and its nested types."""
357- qual_name = f"{ parent } .{ message .name } " if parent else message .name
358-
359- # Register nested enums
358+ # Register nested enums with simple names
360359 for nested_enum in message .nested_enums :
361360 if self .should_register_by_id (nested_enum ):
362361 type_id = nested_enum .type_id
363- lines .append (
364- f" fory.register({ qual_name } .{ nested_enum .name } , { type_id } );"
365- )
362+ lines .append (f" fory.register({ nested_enum .name } , { type_id } );" )
366363
367- # Register nested unions
364+ # Register nested unions with simple names
368365 for nested_union in message .nested_unions :
369366 if self .should_register_by_id (nested_union ):
370367 type_id = nested_union .type_id
371- lines .append (
372- f" fory.registerUnion({ qual_name } .{ nested_union .name } , { type_id } );"
373- )
368+ lines .append (f" fory.registerUnion({ nested_union .name } , { type_id } );" )
374369
375- # Register nested messages
370+ # Register nested messages recursively
376371 for nested_msg in message .nested_messages :
377- self ._generate_message_registration (nested_msg , lines , qual_name )
372+ self ._generate_message_registration (nested_msg , lines )
378373
379- # Register the message itself
374+ # Register the message itself with simple name
380375 if self .should_register_by_id (message ):
381376 type_id = message .type_id
382- lines .append (f" fory.register({ qual_name } , { type_id } );" )
377+ lines .append (f" fory.register({ message . name } , { type_id } );" )
0 commit comments