@@ -505,6 +505,86 @@ impl ESTree for ExportAllDeclarationWithClause<'_, '_> {
505
505
}
506
506
}
507
507
508
+ #[ ast_meta]
509
+ #[ estree(
510
+ ts_type = "ObjectExpression" ,
511
+ raw_deser = "
512
+ const start = DESER[u32](POS_OFFSET.span.start);
513
+ const end = DESER[u32](POS_OFFSET.span.end);
514
+ const attributesKeyword = DESER[IdentifierName](POS_OFFSET.attributes_keyword);
515
+ const properties = DESER[Vec<TSImportAttribute>](POS_OFFSET.elements);
516
+ const result = {
517
+ type: 'ObjectExpression',
518
+ start,
519
+ end,
520
+ properties: [
521
+ {
522
+ type: 'Property',
523
+ start,
524
+ end,
525
+ method: false,
526
+ shorthand: false,
527
+ computed: false,
528
+ key: attributesKeyword,
529
+ value: {
530
+ type: 'ObjectExpression',
531
+ start,
532
+ end,
533
+ properties,
534
+ },
535
+ kind: 'init',
536
+ },
537
+ ],
538
+ };
539
+ result
540
+ "
541
+ ) ]
542
+ pub struct TSImportAttributesConverter < ' a , ' b > ( pub & ' b TSImportAttributes < ' a > ) ;
543
+
544
+ impl ESTree for TSImportAttributesConverter < ' _ , ' _ > {
545
+ fn serialize < S : Serializer > ( & self , serializer : S ) {
546
+ let mut state = serializer. serialize_struct ( ) ;
547
+ state. serialize_field ( "type" , & JsonSafeString ( "ObjectExpression" ) ) ;
548
+ state. serialize_field ( "start" , & self . 0 . span . start ) ;
549
+ state. serialize_field ( "end" , & self . 0 . span . end ) ;
550
+ state. serialize_field ( "properties" , & [ TSImportAttributesWithClauseConverter ( self . 0 ) ] ) ;
551
+ state. end ( ) ;
552
+ }
553
+ }
554
+
555
+ struct TSImportAttributesWithClauseConverter < ' a , ' b > ( & ' b TSImportAttributes < ' a > ) ;
556
+
557
+ impl ESTree for TSImportAttributesWithClauseConverter < ' _ , ' _ > {
558
+ fn serialize < S : Serializer > ( & self , serializer : S ) {
559
+ let mut state = serializer. serialize_struct ( ) ;
560
+ state. serialize_field ( "type" , & JsonSafeString ( "Property" ) ) ;
561
+ // TODO: span
562
+ state. serialize_field ( "start" , & self . 0 . span . end ) ;
563
+ state. serialize_field ( "end" , & self . 0 . span . end ) ;
564
+ state. serialize_field ( "method" , & false ) ;
565
+ state. serialize_field ( "shorthand" , & false ) ;
566
+ state. serialize_field ( "computed" , & false ) ;
567
+ state. serialize_field ( "key" , & self . 0 . attributes_keyword ) ;
568
+ state. serialize_field ( "value" , & TSImportAttributesElementsConverter ( self . 0 ) ) ;
569
+ state. serialize_field ( "kind" , & "init" ) ;
570
+ state. end ( ) ;
571
+ }
572
+ }
573
+
574
+ struct TSImportAttributesElementsConverter < ' a , ' b > ( & ' b TSImportAttributes < ' a > ) ;
575
+
576
+ impl ESTree for TSImportAttributesElementsConverter < ' _ , ' _ > {
577
+ fn serialize < S : Serializer > ( & self , serializer : S ) {
578
+ let mut state = serializer. serialize_struct ( ) ;
579
+ state. serialize_field ( "type" , & JsonSafeString ( "ObjectExpression" ) ) ;
580
+ // TODO: span
581
+ state. serialize_field ( "start" , & self . 0 . span . start ) ;
582
+ state. serialize_field ( "end" , & self . 0 . span . end ) ;
583
+ state. serialize_field ( "properties" , & self . 0 . elements ) ;
584
+ state. end ( ) ;
585
+ }
586
+ }
587
+
508
588
// --------------------
509
589
// JSX
510
590
// --------------------
0 commit comments