@@ -137,11 +137,15 @@ import {
137
137
IfStatement ,
138
138
ImmediatelyInvokedArrowFunction ,
139
139
ImmediatelyInvokedFunctionExpression ,
140
+ ImportAttribute ,
141
+ ImportAttributeName ,
142
+ ImportAttributes ,
140
143
ImportClause ,
141
144
ImportDeclaration ,
142
145
ImportEqualsDeclaration ,
143
146
ImportSpecifier ,
144
147
ImportTypeAssertionContainer ,
148
+ ImportTypeAttributes ,
145
149
ImportTypeNode ,
146
150
IndexedAccessTypeNode ,
147
151
IndexSignatureDeclaration ,
@@ -791,6 +795,12 @@ export function createNodeFactory(flags: NodeFactoryFlags, baseFactory: BaseNode
791
795
updateAssertEntry,
792
796
createImportTypeAssertionContainer,
793
797
updateImportTypeAssertionContainer,
798
+ createImportTypeAttributes,
799
+ updateImportTypeAttributes,
800
+ createImportAttributes,
801
+ updateImportAttributes,
802
+ createImportAttribute,
803
+ updateImportAttribute,
794
804
createNamespaceImport,
795
805
updateNamespaceImport,
796
806
createNamespaceExport,
@@ -2644,13 +2654,15 @@ export function createNodeFactory(flags: NodeFactoryFlags, baseFactory: BaseNode
2644
2654
function createImportTypeNode (
2645
2655
argument : TypeNode ,
2646
2656
assertions ?: ImportTypeAssertionContainer ,
2657
+ attributes ?: ImportTypeAttributes ,
2647
2658
qualifier ?: EntityName ,
2648
2659
typeArguments ?: readonly TypeNode [ ] ,
2649
2660
isTypeOf = false ,
2650
2661
) : ImportTypeNode {
2651
2662
const node = createBaseNode < ImportTypeNode > ( SyntaxKind . ImportType ) ;
2652
2663
node . argument = argument ;
2653
2664
node . assertions = assertions ;
2665
+ node . attributes = attributes ;
2654
2666
node . qualifier = qualifier ;
2655
2667
node . typeArguments = typeArguments && parenthesizerRules ( ) . parenthesizeTypeArguments ( typeArguments ) ;
2656
2668
node . isTypeOf = isTypeOf ;
@@ -2663,16 +2675,18 @@ export function createNodeFactory(flags: NodeFactoryFlags, baseFactory: BaseNode
2663
2675
node : ImportTypeNode ,
2664
2676
argument : TypeNode ,
2665
2677
assertions : ImportTypeAssertionContainer | undefined ,
2678
+ attributes : ImportTypeAttributes | undefined ,
2666
2679
qualifier : EntityName | undefined ,
2667
2680
typeArguments : readonly TypeNode [ ] | undefined ,
2668
2681
isTypeOf : boolean = node . isTypeOf ,
2669
2682
) : ImportTypeNode {
2670
2683
return node . argument !== argument
2684
+ || node . attributes !== attributes
2671
2685
|| node . assertions !== assertions
2672
2686
|| node . qualifier !== qualifier
2673
2687
|| node . typeArguments !== typeArguments
2674
2688
|| node . isTypeOf !== isTypeOf
2675
- ? update ( createImportTypeNode ( argument , assertions , qualifier , typeArguments , isTypeOf ) , node )
2689
+ ? update ( createImportTypeNode ( argument , assertions , attributes , qualifier , typeArguments , isTypeOf ) , node )
2676
2690
: node ;
2677
2691
}
2678
2692
@@ -4697,12 +4711,14 @@ export function createNodeFactory(flags: NodeFactoryFlags, baseFactory: BaseNode
4697
4711
importClause : ImportClause | undefined ,
4698
4712
moduleSpecifier : Expression ,
4699
4713
assertClause : AssertClause | undefined ,
4714
+ attributes : ImportAttributes | undefined ,
4700
4715
) : ImportDeclaration {
4701
4716
const node = createBaseNode < ImportDeclaration > ( SyntaxKind . ImportDeclaration ) ;
4702
4717
node . modifiers = asNodeArray ( modifiers ) ;
4703
4718
node . importClause = importClause ;
4704
4719
node . moduleSpecifier = moduleSpecifier ;
4705
4720
node . assertClause = assertClause ;
4721
+ node . attributes = attributes ;
4706
4722
node . transformFlags |= propagateChildFlags ( node . importClause ) |
4707
4723
propagateChildFlags ( node . moduleSpecifier ) ;
4708
4724
node . transformFlags &= ~ TransformFlags . ContainsPossibleTopLevelAwait ; // always parsed in an Await context
@@ -4718,12 +4734,14 @@ export function createNodeFactory(flags: NodeFactoryFlags, baseFactory: BaseNode
4718
4734
importClause : ImportClause | undefined ,
4719
4735
moduleSpecifier : Expression ,
4720
4736
assertClause : AssertClause | undefined ,
4737
+ attributes : ImportAttributes | undefined ,
4721
4738
) {
4722
4739
return node . modifiers !== modifiers
4723
4740
|| node . importClause !== importClause
4724
4741
|| node . moduleSpecifier !== moduleSpecifier
4725
4742
|| node . assertClause !== assertClause
4726
- ? update ( createImportDeclaration ( modifiers , importClause , moduleSpecifier , assertClause ) , node )
4743
+ || node . attributes !== attributes
4744
+ ? update ( createImportDeclaration ( modifiers , importClause , moduleSpecifier , assertClause , attributes ) , node )
4727
4745
: node ;
4728
4746
}
4729
4747
@@ -4801,6 +4819,56 @@ export function createNodeFactory(flags: NodeFactoryFlags, baseFactory: BaseNode
4801
4819
: node ;
4802
4820
}
4803
4821
4822
+ // @api
4823
+ function createImportTypeAttributes ( attributes : ImportAttributes , multiLine ?: boolean ) : ImportTypeAttributes {
4824
+ const node = createBaseNode < ImportTypeAttributes > ( SyntaxKind . ImportTypeAttributes ) ;
4825
+ node . attributes = attributes ;
4826
+ node . multiLine = multiLine ;
4827
+ return node ;
4828
+ }
4829
+
4830
+ // @api
4831
+ function updateImportTypeAttributes ( node : ImportTypeAttributes , attributes : ImportAttributes , multiLine ?: boolean ) : ImportTypeAttributes {
4832
+ return node . attributes !== attributes
4833
+ || node . multiLine !== multiLine
4834
+ ? update ( createImportTypeAttributes ( attributes , multiLine ) , node )
4835
+ : node ;
4836
+ }
4837
+
4838
+ // @api
4839
+ function createImportAttributes ( elements : readonly ImportAttribute [ ] , multiLine ?: boolean ) : ImportAttributes {
4840
+ const node = createBaseNode < ImportAttributes > ( SyntaxKind . ImportAttributes ) ;
4841
+ node . elements = createNodeArray ( elements ) ;
4842
+ node . multiLine = multiLine ;
4843
+ node . transformFlags |= TransformFlags . ContainsESNext ;
4844
+ return node ;
4845
+ }
4846
+
4847
+ // @api
4848
+ function updateImportAttributes ( node : ImportAttributes , elements : readonly ImportAttribute [ ] , multiLine ?: boolean ) : ImportAttributes {
4849
+ return node . elements !== elements
4850
+ || node . multiLine !== multiLine
4851
+ ? update ( createImportAttributes ( elements , multiLine ) , node )
4852
+ : node ;
4853
+ }
4854
+
4855
+ // @api
4856
+ function createImportAttribute ( name : ImportAttributeName , value : Expression ) : ImportAttribute {
4857
+ const node = createBaseNode < ImportAttribute > ( SyntaxKind . ImportAttribute ) ;
4858
+ node . name = name ;
4859
+ node . value = value ;
4860
+ node . transformFlags |= TransformFlags . ContainsESNext ;
4861
+ return node ;
4862
+ }
4863
+
4864
+ // @api
4865
+ function updateImportAttribute ( node : ImportAttribute , name : ImportAttributeName , value : Expression ) : ImportAttribute {
4866
+ return node . name !== name
4867
+ || node . value !== value
4868
+ ? update ( createImportAttribute ( name , value ) , node )
4869
+ : node ;
4870
+ }
4871
+
4804
4872
// @api
4805
4873
function createNamespaceImport ( name : Identifier ) : NamespaceImport {
4806
4874
const node = createBaseDeclaration < NamespaceImport > ( SyntaxKind . NamespaceImport ) ;
@@ -4909,13 +4977,15 @@ export function createNodeFactory(flags: NodeFactoryFlags, baseFactory: BaseNode
4909
4977
exportClause : NamedExportBindings | undefined ,
4910
4978
moduleSpecifier ?: Expression ,
4911
4979
assertClause ?: AssertClause ,
4980
+ attributes ?: ImportAttributes ,
4912
4981
) {
4913
4982
const node = createBaseDeclaration < ExportDeclaration > ( SyntaxKind . ExportDeclaration ) ;
4914
4983
node . modifiers = asNodeArray ( modifiers ) ;
4915
4984
node . isTypeOnly = isTypeOnly ;
4916
4985
node . exportClause = exportClause ;
4917
4986
node . moduleSpecifier = moduleSpecifier ;
4918
4987
node . assertClause = assertClause ;
4988
+ node . attributes = attributes ;
4919
4989
node . transformFlags |= propagateChildrenFlags ( node . modifiers ) |
4920
4990
propagateChildFlags ( node . exportClause ) |
4921
4991
propagateChildFlags ( node . moduleSpecifier ) ;
@@ -4933,13 +5003,15 @@ export function createNodeFactory(flags: NodeFactoryFlags, baseFactory: BaseNode
4933
5003
exportClause : NamedExportBindings | undefined ,
4934
5004
moduleSpecifier : Expression | undefined ,
4935
5005
assertClause : AssertClause | undefined ,
5006
+ attributes : ImportAttributes | undefined ,
4936
5007
) {
4937
5008
return node . modifiers !== modifiers
4938
5009
|| node . isTypeOnly !== isTypeOnly
4939
5010
|| node . exportClause !== exportClause
4940
5011
|| node . moduleSpecifier !== moduleSpecifier
4941
5012
|| node . assertClause !== assertClause
4942
- ? finishUpdateExportDeclaration ( createExportDeclaration ( modifiers , isTypeOnly , exportClause , moduleSpecifier , assertClause ) , node )
5013
+ || node . attributes !== attributes
5014
+ ? finishUpdateExportDeclaration ( createExportDeclaration ( modifiers , isTypeOnly , exportClause , moduleSpecifier , assertClause , attributes ) , node )
4943
5015
: node ;
4944
5016
}
4945
5017
@@ -7084,9 +7156,9 @@ export function createNodeFactory(flags: NodeFactoryFlags, baseFactory: BaseNode
7084
7156
isEnumDeclaration ( node ) ? updateEnumDeclaration ( node , modifierArray , node . name , node . members ) :
7085
7157
isModuleDeclaration ( node ) ? updateModuleDeclaration ( node , modifierArray , node . name , node . body ) :
7086
7158
isImportEqualsDeclaration ( node ) ? updateImportEqualsDeclaration ( node , modifierArray , node . isTypeOnly , node . name , node . moduleReference ) :
7087
- isImportDeclaration ( node ) ? updateImportDeclaration ( node , modifierArray , node . importClause , node . moduleSpecifier , node . assertClause ) :
7159
+ isImportDeclaration ( node ) ? updateImportDeclaration ( node , modifierArray , node . importClause , node . moduleSpecifier , node . assertClause , node . attributes ) :
7088
7160
isExportAssignment ( node ) ? updateExportAssignment ( node , modifierArray , node . expression ) :
7089
- isExportDeclaration ( node ) ? updateExportDeclaration ( node , modifierArray , node . isTypeOnly , node . exportClause , node . moduleSpecifier , node . assertClause ) :
7161
+ isExportDeclaration ( node ) ? updateExportDeclaration ( node , modifierArray , node . isTypeOnly , node . exportClause , node . moduleSpecifier , node . assertClause , node . attributes ) :
7090
7162
Debug . assertNever ( node ) ;
7091
7163
}
7092
7164
0 commit comments