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