Repository navigation
Expand file tree
/
Copy pathTypeScript.fs
More file actions
6447 lines (5769 loc) · 344 KB
/
Copy pathTypeScript.fs
File metadata and controls
6447 lines (5769 loc) · 344 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
// ts2fable 0.0.0
module rec TypeScript
#nowarn "3390" // disable warnings for invalid XML comments
#nowarn "0044" // disable warnings for `Obsolete` usage
open System
open Fable.Core
open Fable.Core.JS
type Array<'T> = System.Collections.Generic.IList<'T>
type ReadonlyArray<'T> = System.Collections.Generic.IReadOnlyList<'T>
type ReadonlyMap<'K, 'V> = Map<'K, 'V>
type Symbol = obj
let [<ImportAll("typescript")>] ts: Ts.IExports = jsNative
type [<AllowNullLiteral>] IExports =
abstract setTimeout: handler: (ResizeArray<obj option> -> unit) * timeout: float -> obj option
abstract clearTimeout: handle: obj option -> unit
module Ts =
let [<Import("ScriptSnapshot","typescript/ts")>] scriptSnapshot: ScriptSnapshot.IExports = jsNative
type [<AllowNullLiteral>] IExports =
abstract versionMajorMinor: obj
/// The version of the TypeScript compiler release
abstract version: string
abstract OperationCanceledException: OperationCanceledExceptionStatic
abstract getNodeMajorVersion: unit -> float option
abstract sys: System with get, set
abstract tokenToString: t: SyntaxKind -> string option
abstract getPositionOfLineAndCharacter: sourceFile: SourceFileLike * line: float * character: float -> float
abstract getLineAndCharacterOfPosition: sourceFile: SourceFileLike * position: float -> LineAndCharacter
abstract isWhiteSpaceLike: ch: float -> bool
/// Does not include line breaks. For that, see isWhiteSpaceLike.
abstract isWhiteSpaceSingleLine: ch: float -> bool
abstract isLineBreak: ch: float -> bool
abstract couldStartTrivia: text: string * pos: float -> bool
abstract forEachLeadingCommentRange: text: string * pos: float * cb: (float -> float -> CommentKind -> bool -> 'U) -> 'U option
abstract forEachLeadingCommentRange: text: string * pos: float * cb: (float -> float -> CommentKind -> bool -> 'T -> 'U) * state: 'T -> 'U option
abstract forEachTrailingCommentRange: text: string * pos: float * cb: (float -> float -> CommentKind -> bool -> 'U) -> 'U option
abstract forEachTrailingCommentRange: text: string * pos: float * cb: (float -> float -> CommentKind -> bool -> 'T -> 'U) * state: 'T -> 'U option
abstract reduceEachLeadingCommentRange: text: string * pos: float * cb: (float -> float -> CommentKind -> bool -> 'T -> 'U -> 'U) * state: 'T * initial: 'U -> 'U option
abstract reduceEachTrailingCommentRange: text: string * pos: float * cb: (float -> float -> CommentKind -> bool -> 'T -> 'U -> 'U) * state: 'T * initial: 'U -> 'U option
abstract getLeadingCommentRanges: text: string * pos: float -> ResizeArray<CommentRange> option
abstract getTrailingCommentRanges: text: string * pos: float -> ResizeArray<CommentRange> option
/// Optionally, get the shebang
abstract getShebang: text: string -> string option
abstract isIdentifierStart: ch: float * languageVersion: ScriptTarget option -> bool
abstract isIdentifierPart: ch: float * languageVersion: ScriptTarget option -> bool
abstract createScanner: languageVersion: ScriptTarget * skipTrivia: bool * ?languageVariant: LanguageVariant * ?textInitial: string * ?onError: ErrorCallback * ?start: float * ?length: float -> Scanner
abstract isExternalModuleNameRelative: moduleName: string -> bool
abstract sortAndDeduplicateDiagnostics: diagnostics: ResizeArray<'T> -> SortedReadonlyArray<'T> when 'T :> Diagnostic
abstract getDefaultLibFileName: options: CompilerOptions -> string
abstract textSpanEnd: span: TextSpan -> float
abstract textSpanIsEmpty: span: TextSpan -> bool
abstract textSpanContainsPosition: span: TextSpan * position: float -> bool
abstract textSpanContainsTextSpan: span: TextSpan * other: TextSpan -> bool
abstract textSpanOverlapsWith: span: TextSpan * other: TextSpan -> bool
abstract textSpanOverlap: span1: TextSpan * span2: TextSpan -> TextSpan option
abstract textSpanIntersectsWithTextSpan: span: TextSpan * other: TextSpan -> bool
abstract textSpanIntersectsWith: span: TextSpan * start: float * length: float -> bool
abstract decodedTextSpanIntersectsWith: start1: float * length1: float * start2: float * length2: float -> bool
abstract textSpanIntersectsWithPosition: span: TextSpan * position: float -> bool
abstract textSpanIntersection: span1: TextSpan * span2: TextSpan -> TextSpan option
abstract createTextSpan: start: float * length: float -> TextSpan
abstract createTextSpanFromBounds: start: float * ``end``: float -> TextSpan
abstract textChangeRangeNewSpan: range: TextChangeRange -> TextSpan
abstract textChangeRangeIsUnchanged: range: TextChangeRange -> bool
abstract createTextChangeRange: span: TextSpan * newLength: float -> TextChangeRange
abstract unchangedTextChangeRange: TextChangeRange with get, set
/// Called to merge all the changes that occurred across several versions of a script snapshot
/// into a single change. i.e. if a user keeps making successive edits to a script we will
/// have a text change from V1 to V2, V2 to V3, ..., Vn.
///
/// This function will then merge those changes into a single change range valid between V1 and
/// Vn.
abstract collapseTextChangeRangesAcrossMultipleVersions: changes: ResizeArray<TextChangeRange> -> TextChangeRange
abstract getTypeParameterOwner: d: Declaration -> Declaration option
abstract isParameterPropertyDeclaration: node: Node * parent: Node -> bool
abstract isEmptyBindingPattern: node: BindingName -> bool
abstract isEmptyBindingElement: node: BindingElement -> bool
abstract walkUpBindingElementsAndPatterns: binding: BindingElement -> U2<VariableDeclaration, ParameterDeclaration>
abstract getCombinedModifierFlags: node: Declaration -> ModifierFlags
abstract getCombinedNodeFlags: node: Node -> NodeFlags
/// Checks to see if the locale is in the appropriate format,
/// and if it is, attempts to set the appropriate language.
abstract validateLocaleAndSetLanguage: locale: string * sys: {| getExecutingFilePath: unit -> string; resolvePath: string -> string; fileExists: string -> bool; readFile: string -> string option |} * ?errors: Push<Diagnostic> -> unit
abstract getOriginalNode: node: Node -> Node
abstract getOriginalNode: node: Node * nodeTest: (Node -> bool) -> 'T when 'T :> Node
abstract getOriginalNode: node: Node option -> Node option
abstract getOriginalNode: node: Node option * nodeTest: (Node option -> bool) -> 'T option when 'T :> Node
/// <summary>Gets a value indicating whether a node originated in the parse tree.</summary>
/// <param name="node">The node to test.</param>
abstract isParseTreeNode: node: Node -> bool
/// <summary>Gets the original parse tree node for a node.</summary>
/// <param name="node">The original node.</param>
/// <returns>The original parse tree node if found; otherwise, undefined.</returns>
abstract getParseTreeNode: node: Node -> Node
/// <summary>Gets the original parse tree node for a node.</summary>
/// <param name="node">The original node.</param>
/// <param name="nodeTest">A callback used to ensure the correct type of parse tree node is returned.</param>
/// <returns>The original parse tree node if found; otherwise, undefined.</returns>
abstract getParseTreeNode: node: Node option * ?nodeTest: (Node -> bool) -> 'T option when 'T :> Node
/// Add an extra underscore to identifiers that start with two underscores to avoid issues with magic names like '__proto__'
abstract escapeLeadingUnderscores: identifier: string -> __String
/// <summary>Remove extra underscore from escaped identifier text content.</summary>
/// <param name="identifier">The escaped identifier text.</param>
/// <returns>The unescaped identifier text.</returns>
abstract unescapeLeadingUnderscores: identifier: __String -> string
abstract idText: identifier: Identifier -> string
abstract symbolName: symbol: Symbol -> string
abstract getNameOfJSDocTypedef: declaration: JSDocTypedefTag -> Identifier option
abstract getNameOfDeclaration: declaration: U2<Declaration, Expression> -> DeclarationName option
/// <summary>Gets the JSDoc parameter tags for the node if present.</summary>
/// <remarks>
/// Returns any JSDoc param tag whose name matches the provided
/// parameter, whether a param tag on a containing function
/// expression, or a param tag on a variable declaration whose
/// initializer is the containing function. The tags closest to the
/// node are returned first, so in the previous example, the param
/// tag on the containing function expression would be first.
///
/// For binding patterns, parameter tags are matched by position.
/// </remarks>
abstract getJSDocParameterTags: param: ParameterDeclaration -> ResizeArray<JSDocParameterTag>
/// <summary>Gets the JSDoc type parameter tags for the node if present.</summary>
/// <remarks>
/// Returns any JSDoc template tag whose names match the provided
/// parameter, whether a template tag on a containing function
/// expression, or a template tag on a variable declaration whose
/// initializer is the containing function. The tags closest to the
/// node are returned first, so in the previous example, the template
/// tag on the containing function expression would be first.
/// </remarks>
abstract getJSDocTypeParameterTags: param: TypeParameterDeclaration -> ResizeArray<JSDocTemplateTag>
/// <summary>Return true if the node has JSDoc parameter tags.</summary>
/// <remarks>
/// Includes parameter tags that are not directly on the node,
/// for example on a variable declaration whose initializer is a function expression.
/// </remarks>
abstract hasJSDocParameterTags: node: U2<FunctionLikeDeclaration, SignatureDeclaration> -> bool
/// Gets the JSDoc augments tag for the node if present
abstract getJSDocAugmentsTag: node: Node -> JSDocAugmentsTag option
/// Gets the JSDoc class tag for the node if present
abstract getJSDocClassTag: node: Node -> JSDocClassTag option
/// Gets the JSDoc enum tag for the node if present
abstract getJSDocEnumTag: node: Node -> JSDocEnumTag option
/// Gets the JSDoc this tag for the node if present
abstract getJSDocThisTag: node: Node -> JSDocThisTag option
/// Gets the JSDoc return tag for the node if present
abstract getJSDocReturnTag: node: Node -> JSDocReturnTag option
/// Gets the JSDoc template tag for the node if present
abstract getJSDocTemplateTag: node: Node -> JSDocTemplateTag option
/// Gets the JSDoc type tag for the node if present and valid
abstract getJSDocTypeTag: node: Node -> JSDocTypeTag option
/// <summary>Gets the type node for the node if provided via JSDoc.</summary>
/// <remarks>
/// The search includes any JSDoc param tag that relates
/// to the provided parameter, for example a type tag on the
/// parameter itself, or a param tag on a containing function
/// expression, or a param tag on a variable declaration whose
/// initializer is the containing function. The tags closest to the
/// node are examined first, so in the previous example, the type
/// tag directly on the node would be returned.
/// </remarks>
abstract getJSDocType: node: Node -> TypeNode option
/// <summary>Gets the return type node for the node if provided via JSDoc return tag or type tag.</summary>
/// <remarks>
/// <c>getJSDocReturnTag</c> just gets the whole JSDoc tag. This function
/// gets the type from inside the braces, after the fat arrow, etc.
/// </remarks>
abstract getJSDocReturnType: node: Node -> TypeNode option
/// Get all JSDoc tags related to a node, including those on parent nodes.
abstract getJSDocTags: node: Node -> ResizeArray<JSDocTag>
/// Gets all JSDoc tags of a specified kind, or undefined if not present.
abstract getAllJSDocTagsOfKind: node: Node * kind: SyntaxKind -> ResizeArray<JSDocTag>
/// <summary>
/// Gets the effective type parameters. If the node was parsed in a
/// JavaScript file, gets the type parameters from the <c>@template</c> tag from JSDoc.
/// </summary>
abstract getEffectiveTypeParameterDeclarations: node: DeclarationWithTypeParameters -> ResizeArray<TypeParameterDeclaration>
abstract getEffectiveConstraintOfTypeParameter: node: TypeParameterDeclaration -> TypeNode option
abstract isNumericLiteral: node: Node -> bool
abstract isBigIntLiteral: node: Node -> bool
abstract isStringLiteral: node: Node -> bool
abstract isJsxText: node: Node -> bool
abstract isRegularExpressionLiteral: node: Node -> bool
abstract isNoSubstitutionTemplateLiteral: node: Node -> bool
abstract isTemplateHead: node: Node -> bool
abstract isTemplateMiddle: node: Node -> bool
abstract isTemplateTail: node: Node -> bool
abstract isIdentifier: node: Node -> bool
abstract isQualifiedName: node: Node -> bool
abstract isComputedPropertyName: node: Node -> bool
abstract isTypeParameterDeclaration: node: Node -> bool
abstract isParameter: node: Node -> bool
abstract isDecorator: node: Node -> bool
abstract isPropertySignature: node: Node -> bool
abstract isPropertyDeclaration: node: Node -> bool
abstract isMethodSignature: node: Node -> bool
abstract isMethodDeclaration: node: Node -> bool
abstract isConstructorDeclaration: node: Node -> bool
abstract isGetAccessorDeclaration: node: Node -> bool
abstract isSetAccessorDeclaration: node: Node -> bool
abstract isCallSignatureDeclaration: node: Node -> bool
abstract isConstructSignatureDeclaration: node: Node -> bool
abstract isIndexSignatureDeclaration: node: Node -> bool
abstract isTypePredicateNode: node: Node -> bool
abstract isTypeReferenceNode: node: Node -> bool
abstract isFunctionTypeNode: node: Node -> bool
abstract isConstructorTypeNode: node: Node -> bool
abstract isTypeQueryNode: node: Node -> bool
abstract isTypeLiteralNode: node: Node -> bool
abstract isArrayTypeNode: node: Node -> bool
abstract isTupleTypeNode: node: Node -> bool
abstract isUnionTypeNode: node: Node -> bool
abstract isIntersectionTypeNode: node: Node -> bool
abstract isConditionalTypeNode: node: Node -> bool
abstract isInferTypeNode: node: Node -> bool
abstract isParenthesizedTypeNode: node: Node -> bool
abstract isThisTypeNode: node: Node -> bool
abstract isTypeOperatorNode: node: Node -> bool
abstract isIndexedAccessTypeNode: node: Node -> bool
abstract isMappedTypeNode: node: Node -> bool
abstract isLiteralTypeNode: node: Node -> bool
abstract isImportTypeNode: node: Node -> bool
abstract isObjectBindingPattern: node: Node -> bool
abstract isArrayBindingPattern: node: Node -> bool
abstract isBindingElement: node: Node -> bool
abstract isArrayLiteralExpression: node: Node -> bool
abstract isObjectLiteralExpression: node: Node -> bool
abstract isPropertyAccessExpression: node: Node -> bool
abstract isPropertyAccessChain: node: Node -> bool
abstract isElementAccessExpression: node: Node -> bool
abstract isElementAccessChain: node: Node -> bool
abstract isCallExpression: node: Node -> bool
abstract isCallChain: node: Node -> bool
abstract isOptionalChain: node: Node -> bool
abstract isNullishCoalesce: node: Node -> bool
abstract isNewExpression: node: Node -> bool
abstract isTaggedTemplateExpression: node: Node -> bool
abstract isTypeAssertion: node: Node -> bool
abstract isConstTypeReference: node: Node -> bool
abstract isParenthesizedExpression: node: Node -> bool
abstract skipPartiallyEmittedExpressions: node: Expression -> Expression
abstract skipPartiallyEmittedExpressions: node: Node -> Node
abstract isFunctionExpression: node: Node -> bool
abstract isArrowFunction: node: Node -> bool
abstract isDeleteExpression: node: Node -> bool
abstract isTypeOfExpression: node: Node -> bool
abstract isVoidExpression: node: Node -> bool
abstract isAwaitExpression: node: Node -> bool
abstract isPrefixUnaryExpression: node: Node -> bool
abstract isPostfixUnaryExpression: node: Node -> bool
abstract isBinaryExpression: node: Node -> bool
abstract isConditionalExpression: node: Node -> bool
abstract isTemplateExpression: node: Node -> bool
abstract isYieldExpression: node: Node -> bool
abstract isSpreadElement: node: Node -> bool
abstract isClassExpression: node: Node -> bool
abstract isOmittedExpression: node: Node -> bool
abstract isExpressionWithTypeArguments: node: Node -> bool
abstract isAsExpression: node: Node -> bool
abstract isNonNullExpression: node: Node -> bool
abstract isMetaProperty: node: Node -> bool
abstract isTemplateSpan: node: Node -> bool
abstract isSemicolonClassElement: node: Node -> bool
abstract isBlock: node: Node -> bool
abstract isVariableStatement: node: Node -> bool
abstract isEmptyStatement: node: Node -> bool
abstract isExpressionStatement: node: Node -> bool
abstract isIfStatement: node: Node -> bool
abstract isDoStatement: node: Node -> bool
abstract isWhileStatement: node: Node -> bool
abstract isForStatement: node: Node -> bool
abstract isForInStatement: node: Node -> bool
abstract isForOfStatement: node: Node -> bool
abstract isContinueStatement: node: Node -> bool
abstract isBreakStatement: node: Node -> bool
abstract isBreakOrContinueStatement: node: Node -> bool
abstract isReturnStatement: node: Node -> bool
abstract isWithStatement: node: Node -> bool
abstract isSwitchStatement: node: Node -> bool
abstract isLabeledStatement: node: Node -> bool
abstract isThrowStatement: node: Node -> bool
abstract isTryStatement: node: Node -> bool
abstract isDebuggerStatement: node: Node -> bool
abstract isVariableDeclaration: node: Node -> bool
abstract isVariableDeclarationList: node: Node -> bool
abstract isFunctionDeclaration: node: Node -> bool
abstract isClassDeclaration: node: Node -> bool
abstract isInterfaceDeclaration: node: Node -> bool
abstract isTypeAliasDeclaration: node: Node -> bool
abstract isEnumDeclaration: node: Node -> bool
abstract isModuleDeclaration: node: Node -> bool
abstract isModuleBlock: node: Node -> bool
abstract isCaseBlock: node: Node -> bool
abstract isNamespaceExportDeclaration: node: Node -> bool
abstract isImportEqualsDeclaration: node: Node -> bool
abstract isImportDeclaration: node: Node -> bool
abstract isImportClause: node: Node -> bool
abstract isNamespaceImport: node: Node -> bool
abstract isNamedImports: node: Node -> bool
abstract isImportSpecifier: node: Node -> bool
abstract isExportAssignment: node: Node -> bool
abstract isExportDeclaration: node: Node -> bool
abstract isNamedExports: node: Node -> bool
abstract isExportSpecifier: node: Node -> bool
abstract isMissingDeclaration: node: Node -> bool
abstract isExternalModuleReference: node: Node -> bool
abstract isJsxElement: node: Node -> bool
abstract isJsxSelfClosingElement: node: Node -> bool
abstract isJsxOpeningElement: node: Node -> bool
abstract isJsxClosingElement: node: Node -> bool
abstract isJsxFragment: node: Node -> bool
abstract isJsxOpeningFragment: node: Node -> bool
abstract isJsxClosingFragment: node: Node -> bool
abstract isJsxAttribute: node: Node -> bool
abstract isJsxAttributes: node: Node -> bool
abstract isJsxSpreadAttribute: node: Node -> bool
abstract isJsxExpression: node: Node -> bool
abstract isCaseClause: node: Node -> bool
abstract isDefaultClause: node: Node -> bool
abstract isHeritageClause: node: Node -> bool
abstract isCatchClause: node: Node -> bool
abstract isPropertyAssignment: node: Node -> bool
abstract isShorthandPropertyAssignment: node: Node -> bool
abstract isSpreadAssignment: node: Node -> bool
abstract isEnumMember: node: Node -> bool
abstract isSourceFile: node: Node -> bool
abstract isBundle: node: Node -> bool
abstract isUnparsedSource: node: Node -> bool
abstract isUnparsedPrepend: node: Node -> bool
abstract isUnparsedTextLike: node: Node -> bool
abstract isUnparsedNode: node: Node -> bool
abstract isJSDocTypeExpression: node: Node -> bool
abstract isJSDocAllType: node: Node -> bool
abstract isJSDocUnknownType: node: Node -> bool
abstract isJSDocNullableType: node: Node -> bool
abstract isJSDocNonNullableType: node: Node -> bool
abstract isJSDocOptionalType: node: Node -> bool
abstract isJSDocFunctionType: node: Node -> bool
abstract isJSDocVariadicType: node: Node -> bool
abstract isJSDoc: node: Node -> bool
abstract isJSDocAuthorTag: node: Node -> bool
abstract isJSDocAugmentsTag: node: Node -> bool
abstract isJSDocClassTag: node: Node -> bool
abstract isJSDocEnumTag: node: Node -> bool
abstract isJSDocThisTag: node: Node -> bool
abstract isJSDocParameterTag: node: Node -> bool
abstract isJSDocReturnTag: node: Node -> bool
abstract isJSDocTypeTag: node: Node -> bool
abstract isJSDocTemplateTag: node: Node -> bool
abstract isJSDocTypedefTag: node: Node -> bool
abstract isJSDocPropertyTag: node: Node -> bool
abstract isJSDocPropertyLikeTag: node: Node -> bool
abstract isJSDocTypeLiteral: node: Node -> bool
abstract isJSDocCallbackTag: node: Node -> bool
abstract isJSDocSignature: node: Node -> bool
/// True if node is of some token syntax kind.
/// For example, this is true for an IfKeyword but not for an IfStatement.
/// Literals are considered tokens, except TemplateLiteral, but does include TemplateHead/Middle/Tail.
abstract isToken: n: Node -> bool
abstract isLiteralExpression: node: Node -> bool
abstract isTemplateLiteralToken: node: Node -> bool
abstract isTemplateMiddleOrTemplateTail: node: Node -> bool
abstract isImportOrExportSpecifier: node: Node -> bool
abstract isStringTextContainingNode: node: Node -> bool
abstract isModifier: node: Node -> bool
abstract isEntityName: node: Node -> bool
abstract isPropertyName: node: Node -> bool
abstract isBindingName: node: Node -> bool
abstract isFunctionLike: node: Node -> bool
abstract isClassElement: node: Node -> bool
abstract isClassLike: node: Node -> bool
abstract isAccessor: node: Node -> bool
abstract isTypeElement: node: Node -> bool
abstract isClassOrTypeElement: node: Node -> bool
abstract isObjectLiteralElementLike: node: Node -> bool
/// <summary>
/// Node test that determines whether a node is a valid type node.
/// This differs from the <c>isPartOfTypeNode</c> function which determines whether a node is *part*
/// of a TypeNode.
/// </summary>
abstract isTypeNode: node: Node -> bool
abstract isFunctionOrConstructorTypeNode: node: Node -> bool
abstract isPropertyAccessOrQualifiedName: node: Node -> bool
abstract isCallLikeExpression: node: Node -> bool
abstract isCallOrNewExpression: node: Node -> bool
abstract isTemplateLiteral: node: Node -> bool
abstract isAssertionExpression: node: Node -> bool
[<Emit("$0.isIterationStatement($1,false)")>] abstract isIterationStatement_false: node: Node -> bool
abstract isIterationStatement: node: Node * lookInLabeledStatements: bool -> bool
abstract isJsxOpeningLikeElement: node: Node -> bool
abstract isCaseOrDefaultClause: node: Node -> bool
/// True if node is of a kind that may contain comment text.
abstract isJSDocCommentContainingNode: node: Node -> bool
abstract isSetAccessor: node: Node -> bool
abstract isGetAccessor: node: Node -> bool
abstract isObjectLiteralElement: node: Node -> bool
abstract isStringLiteralLike: node: Node -> bool
abstract createNode: kind: SyntaxKind * ?pos: float * ?``end``: float -> Node
/// <summary>
/// Invokes a callback for each child of the given node. The 'cbNode' callback is invoked for all child nodes
/// stored in properties. If a 'cbNodes' callback is specified, it is invoked for embedded arrays; otherwise,
/// embedded arrays are flattened and the 'cbNode' callback is invoked for each element. If a callback returns
/// a truthy value, iteration stops and that value is returned. Otherwise, undefined is returned.
/// </summary>
/// <param name="node">a given node to visit its children</param>
/// <param name="cbNode">a callback to be invoked for all child nodes</param>
/// <param name="cbNodes">a callback to be invoked for embedded array</param>
/// <remarks>
/// <c>forEachChild</c> must visit the children of a node in the order
/// that they appear in the source code. The language service depends on this property to locate nodes by position.
/// </remarks>
abstract forEachChild: node: Node * cbNode: (Node -> 'T option) * ?cbNodes: (ResizeArray<Node> -> 'T option) -> 'T option
abstract createSourceFile: fileName: string * sourceText: string * languageVersion: ScriptTarget * ?setParentNodes: bool * ?scriptKind: ScriptKind -> SourceFile
abstract parseIsolatedEntityName: text: string * languageVersion: ScriptTarget -> EntityName option
/// <summary>Parse json text into SyntaxTree and return node and parse errors if any</summary>
/// <param name="fileName" />
/// <param name="sourceText" />
abstract parseJsonText: fileName: string * sourceText: string -> JsonSourceFile
abstract isExternalModule: file: SourceFile -> bool
abstract updateSourceFile: sourceFile: SourceFile * newText: string * textChangeRange: TextChangeRange * ?aggressiveChecks: bool -> SourceFile
abstract parseCommandLine: commandLine: ResizeArray<string> * ?readFile: (string -> string option) -> ParsedCommandLine
/// Reads the config file, reports errors if any and exits if the config file cannot be found
abstract getParsedCommandLineOfConfigFile: configFileName: string * optionsToExtend: CompilerOptions * host: ParseConfigFileHost * ?extendedConfigCache: Map<ExtendedConfigCacheEntry> -> ParsedCommandLine option
/// <summary>Read tsconfig.json file</summary>
/// <param name="fileName">The path to the config file</param>
abstract readConfigFile: fileName: string * readFile: (string -> string option) -> {| config: obj option; error: Diagnostic option |}
/// <summary>Parse the text of the tsconfig.json file</summary>
/// <param name="fileName">The path to the config file</param>
/// <param name="jsonText">The text of the config file</param>
abstract parseConfigFileTextToJson: fileName: string * jsonText: string -> {| config: obj option; error: Diagnostic option |}
/// <summary>Read tsconfig.json file</summary>
/// <param name="fileName">The path to the config file</param>
abstract readJsonConfigFile: fileName: string * readFile: (string -> string option) -> TsConfigSourceFile
/// Convert the json syntax tree into the json value
abstract convertToObject: sourceFile: JsonSourceFile * errors: Push<Diagnostic> -> obj option
/// <summary>Parse the contents of a config file (tsconfig.json).</summary>
/// <param name="json">The contents of the config file to parse</param>
/// <param name="host">Instance of ParseConfigHost used to enumerate files in folder.</param>
/// <param name="basePath">
/// A root directory to resolve relative path entries in the config
/// file to. e.g. outDir
/// </param>
abstract parseJsonConfigFileContent: json: obj option * host: ParseConfigHost * basePath: string * ?existingOptions: CompilerOptions * ?configFileName: string * ?resolutionStack: ResizeArray<Path> * ?extraFileExtensions: ResizeArray<FileExtensionInfo> * ?extendedConfigCache: Map<ExtendedConfigCacheEntry> -> ParsedCommandLine
/// <summary>Parse the contents of a config file (tsconfig.json).</summary>
/// <param name="jsonNode">The contents of the config file to parse</param>
/// <param name="host">Instance of ParseConfigHost used to enumerate files in folder.</param>
/// <param name="basePath">
/// A root directory to resolve relative path entries in the config
/// file to. e.g. outDir
/// </param>
abstract parseJsonSourceFileConfigFileContent: sourceFile: TsConfigSourceFile * host: ParseConfigHost * basePath: string * ?existingOptions: CompilerOptions * ?configFileName: string * ?resolutionStack: ResizeArray<Path> * ?extraFileExtensions: ResizeArray<FileExtensionInfo> * ?extendedConfigCache: Map<ExtendedConfigCacheEntry> -> ParsedCommandLine
abstract convertCompilerOptionsFromJson: jsonOptions: obj option * basePath: string * ?configFileName: string -> {| options: CompilerOptions; errors: ResizeArray<Diagnostic> |}
abstract convertTypeAcquisitionFromJson: jsonOptions: obj option * basePath: string * ?configFileName: string -> {| options: TypeAcquisition; errors: ResizeArray<Diagnostic> |}
abstract getEffectiveTypeRoots: options: CompilerOptions * host: GetEffectiveTypeRootsHost -> ResizeArray<string> option
/// <param name="containingFile">
/// file that contains type reference directive, can be undefined if containing file is unknown.
/// This is possible in case if resolution is performed for directives specified via 'types' parameter. In this case initial path for secondary lookups
/// is assumed to be the same as root directory of the project.
/// </param>
abstract resolveTypeReferenceDirective: typeReferenceDirectiveName: string * containingFile: string option * options: CompilerOptions * host: ModuleResolutionHost * ?redirectedReference: ResolvedProjectReference -> ResolvedTypeReferenceDirectiveWithFailedLookupLocations
/// Given a set of options, returns the set of type directive names
/// that should be included for this program automatically.
/// This list could either come from the config file,
/// or from enumerating the types root + initial secondary types lookup location.
/// More type directives might appear in the program later as a result of loading actual source files;
/// this list is only the set of defaults that are implicitly included.
abstract getAutomaticTypeDirectiveNames: options: CompilerOptions * host: ModuleResolutionHost -> ResizeArray<string>
abstract createModuleResolutionCache: currentDirectory: string * getCanonicalFileName: (string -> string) * ?options: CompilerOptions -> ModuleResolutionCache
abstract resolveModuleNameFromCache: moduleName: string * containingFile: string * cache: ModuleResolutionCache -> ResolvedModuleWithFailedLookupLocations option
abstract resolveModuleName: moduleName: string * containingFile: string * compilerOptions: CompilerOptions * host: ModuleResolutionHost * ?cache: ModuleResolutionCache * ?redirectedReference: ResolvedProjectReference -> ResolvedModuleWithFailedLookupLocations
abstract nodeModuleNameResolver: moduleName: string * containingFile: string * compilerOptions: CompilerOptions * host: ModuleResolutionHost * ?cache: ModuleResolutionCache * ?redirectedReference: ResolvedProjectReference -> ResolvedModuleWithFailedLookupLocations
abstract classicNameResolver: moduleName: string * containingFile: string * compilerOptions: CompilerOptions * host: ModuleResolutionHost * ?cache: NonRelativeModuleNameResolutionCache * ?redirectedReference: ResolvedProjectReference -> ResolvedModuleWithFailedLookupLocations
abstract createNodeArray: ?elements: ResizeArray<'T> * ?hasTrailingComma: bool -> ResizeArray<'T> when 'T :> Node
/// If a node is passed, creates a string literal whose source text is read from a source node during emit.
abstract createLiteral: value: U5<string, StringLiteral, NoSubstitutionTemplateLiteral, NumericLiteral, Identifier> -> StringLiteral
abstract createLiteral: value: U2<float, PseudoBigInt> -> NumericLiteral
abstract createLiteral: value: bool -> BooleanLiteral
abstract createLiteral: value: U4<string, float, PseudoBigInt, bool> -> PrimaryExpression
abstract createNumericLiteral: value: string * ?numericLiteralFlags: TokenFlags -> NumericLiteral
abstract createBigIntLiteral: value: string -> BigIntLiteral
abstract createStringLiteral: text: string -> StringLiteral
abstract createRegularExpressionLiteral: text: string -> RegularExpressionLiteral
abstract createIdentifier: text: string -> Identifier
abstract updateIdentifier: node: Identifier -> Identifier
/// Create a unique temporary variable.
abstract createTempVariable: recordTempVariable: (Identifier -> unit) option -> Identifier
/// Create a unique temporary variable for use in a loop.
abstract createLoopVariable: unit -> Identifier
/// Create a unique name based on the supplied text.
abstract createUniqueName: text: string -> Identifier
/// Create a unique name based on the supplied text.
abstract createOptimisticUniqueName: text: string -> Identifier
/// Create a unique name based on the supplied text. This does not consider names injected by the transformer.
abstract createFileLevelUniqueName: text: string -> Identifier
/// Create a unique name generated for a node.
abstract getGeneratedNameForNode: node: Node option -> Identifier
abstract createToken: token: 'TKind -> Token<'TKind>
abstract createSuper: unit -> SuperExpression
abstract createThis: unit -> obj
abstract createNull: unit -> obj
abstract createTrue: unit -> obj
abstract createFalse: unit -> obj
abstract createModifier: kind: 'T -> Token<'T>
abstract createModifiersFromModifierFlags: flags: ModifierFlags -> ResizeArray<Modifier>
abstract createQualifiedName: left: EntityName * right: U2<string, Identifier> -> QualifiedName
abstract updateQualifiedName: node: QualifiedName * left: EntityName * right: Identifier -> QualifiedName
abstract createComputedPropertyName: expression: Expression -> ComputedPropertyName
abstract updateComputedPropertyName: node: ComputedPropertyName * expression: Expression -> ComputedPropertyName
abstract createTypeParameterDeclaration: name: U2<string, Identifier> * ?``constraint``: TypeNode * ?defaultType: TypeNode -> TypeParameterDeclaration
abstract updateTypeParameterDeclaration: node: TypeParameterDeclaration * name: Identifier * ``constraint``: TypeNode option * defaultType: TypeNode option -> TypeParameterDeclaration
abstract createParameter: decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * dotDotDotToken: DotDotDotToken option * name: U2<string, BindingName> * ?questionToken: QuestionToken * ?``type``: TypeNode * ?initializer: Expression -> ParameterDeclaration
abstract updateParameter: node: ParameterDeclaration * decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * dotDotDotToken: DotDotDotToken option * name: U2<string, BindingName> * questionToken: QuestionToken option * ``type``: TypeNode option * initializer: Expression option -> ParameterDeclaration
abstract createDecorator: expression: Expression -> Decorator
abstract updateDecorator: node: Decorator * expression: Expression -> Decorator
abstract createPropertySignature: modifiers: ResizeArray<Modifier> option * name: U2<PropertyName, string> * questionToken: QuestionToken option * ``type``: TypeNode option * initializer: Expression option -> PropertySignature
abstract updatePropertySignature: node: PropertySignature * modifiers: ResizeArray<Modifier> option * name: PropertyName * questionToken: QuestionToken option * ``type``: TypeNode option * initializer: Expression option -> PropertySignature
abstract createProperty: decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * name: U2<string, PropertyName> * questionOrExclamationToken: U2<QuestionToken, ExclamationToken> option * ``type``: TypeNode option * initializer: Expression option -> PropertyDeclaration
abstract updateProperty: node: PropertyDeclaration * decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * name: U2<string, PropertyName> * questionOrExclamationToken: U2<QuestionToken, ExclamationToken> option * ``type``: TypeNode option * initializer: Expression option -> PropertyDeclaration
abstract createMethodSignature: typeParameters: ResizeArray<TypeParameterDeclaration> option * parameters: ResizeArray<ParameterDeclaration> * ``type``: TypeNode option * name: U2<string, PropertyName> * questionToken: QuestionToken option -> MethodSignature
abstract updateMethodSignature: node: MethodSignature * typeParameters: ResizeArray<TypeParameterDeclaration> option * parameters: ResizeArray<ParameterDeclaration> * ``type``: TypeNode option * name: PropertyName * questionToken: QuestionToken option -> MethodSignature
abstract createMethod: decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * asteriskToken: AsteriskToken option * name: U2<string, PropertyName> * questionToken: QuestionToken option * typeParameters: ResizeArray<TypeParameterDeclaration> option * parameters: ResizeArray<ParameterDeclaration> * ``type``: TypeNode option * body: Block option -> MethodDeclaration
abstract updateMethod: node: MethodDeclaration * decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * asteriskToken: AsteriskToken option * name: PropertyName * questionToken: QuestionToken option * typeParameters: ResizeArray<TypeParameterDeclaration> option * parameters: ResizeArray<ParameterDeclaration> * ``type``: TypeNode option * body: Block option -> MethodDeclaration
abstract createConstructor: decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * parameters: ResizeArray<ParameterDeclaration> * body: Block option -> ConstructorDeclaration
abstract updateConstructor: node: ConstructorDeclaration * decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * parameters: ResizeArray<ParameterDeclaration> * body: Block option -> ConstructorDeclaration
abstract createGetAccessor: decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * name: U2<string, PropertyName> * parameters: ResizeArray<ParameterDeclaration> * ``type``: TypeNode option * body: Block option -> GetAccessorDeclaration
abstract updateGetAccessor: node: GetAccessorDeclaration * decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * name: PropertyName * parameters: ResizeArray<ParameterDeclaration> * ``type``: TypeNode option * body: Block option -> GetAccessorDeclaration
abstract createSetAccessor: decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * name: U2<string, PropertyName> * parameters: ResizeArray<ParameterDeclaration> * body: Block option -> SetAccessorDeclaration
abstract updateSetAccessor: node: SetAccessorDeclaration * decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * name: PropertyName * parameters: ResizeArray<ParameterDeclaration> * body: Block option -> SetAccessorDeclaration
abstract createCallSignature: typeParameters: ResizeArray<TypeParameterDeclaration> option * parameters: ResizeArray<ParameterDeclaration> * ``type``: TypeNode option -> CallSignatureDeclaration
abstract updateCallSignature: node: CallSignatureDeclaration * typeParameters: ResizeArray<TypeParameterDeclaration> option * parameters: ResizeArray<ParameterDeclaration> * ``type``: TypeNode option -> CallSignatureDeclaration
abstract createConstructSignature: typeParameters: ResizeArray<TypeParameterDeclaration> option * parameters: ResizeArray<ParameterDeclaration> * ``type``: TypeNode option -> ConstructSignatureDeclaration
abstract updateConstructSignature: node: ConstructSignatureDeclaration * typeParameters: ResizeArray<TypeParameterDeclaration> option * parameters: ResizeArray<ParameterDeclaration> * ``type``: TypeNode option -> ConstructSignatureDeclaration
abstract createIndexSignature: decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * parameters: ResizeArray<ParameterDeclaration> * ``type``: TypeNode -> IndexSignatureDeclaration
abstract updateIndexSignature: node: IndexSignatureDeclaration * decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * parameters: ResizeArray<ParameterDeclaration> * ``type``: TypeNode -> IndexSignatureDeclaration
abstract createKeywordTypeNode: kind: obj -> KeywordTypeNode
abstract createTypePredicateNode: parameterName: U3<Identifier, ThisTypeNode, string> * ``type``: TypeNode -> TypePredicateNode
abstract createTypePredicateNodeWithModifier: assertsModifier: AssertsToken option * parameterName: U3<Identifier, ThisTypeNode, string> * ``type``: TypeNode option -> TypePredicateNode
abstract updateTypePredicateNode: node: TypePredicateNode * parameterName: U2<Identifier, ThisTypeNode> * ``type``: TypeNode -> TypePredicateNode
abstract updateTypePredicateNodeWithModifier: node: TypePredicateNode * assertsModifier: AssertsToken option * parameterName: U2<Identifier, ThisTypeNode> * ``type``: TypeNode option -> TypePredicateNode
abstract createTypeReferenceNode: typeName: U2<string, EntityName> * typeArguments: ResizeArray<TypeNode> option -> TypeReferenceNode
abstract updateTypeReferenceNode: node: TypeReferenceNode * typeName: EntityName * typeArguments: ResizeArray<TypeNode> option -> TypeReferenceNode
abstract createFunctionTypeNode: typeParameters: ResizeArray<TypeParameterDeclaration> option * parameters: ResizeArray<ParameterDeclaration> * ``type``: TypeNode option -> FunctionTypeNode
abstract updateFunctionTypeNode: node: FunctionTypeNode * typeParameters: ResizeArray<TypeParameterDeclaration> option * parameters: ResizeArray<ParameterDeclaration> * ``type``: TypeNode option -> FunctionTypeNode
abstract createConstructorTypeNode: typeParameters: ResizeArray<TypeParameterDeclaration> option * parameters: ResizeArray<ParameterDeclaration> * ``type``: TypeNode option -> ConstructorTypeNode
abstract updateConstructorTypeNode: node: ConstructorTypeNode * typeParameters: ResizeArray<TypeParameterDeclaration> option * parameters: ResizeArray<ParameterDeclaration> * ``type``: TypeNode option -> ConstructorTypeNode
abstract createTypeQueryNode: exprName: EntityName -> TypeQueryNode
abstract updateTypeQueryNode: node: TypeQueryNode * exprName: EntityName -> TypeQueryNode
abstract createTypeLiteralNode: members: ResizeArray<TypeElement> option -> TypeLiteralNode
abstract updateTypeLiteralNode: node: TypeLiteralNode * members: ResizeArray<TypeElement> -> TypeLiteralNode
abstract createArrayTypeNode: elementType: TypeNode -> ArrayTypeNode
abstract updateArrayTypeNode: node: ArrayTypeNode * elementType: TypeNode -> ArrayTypeNode
abstract createTupleTypeNode: elementTypes: ResizeArray<TypeNode> -> TupleTypeNode
abstract updateTupleTypeNode: node: TupleTypeNode * elementTypes: ResizeArray<TypeNode> -> TupleTypeNode
abstract createOptionalTypeNode: ``type``: TypeNode -> OptionalTypeNode
abstract updateOptionalTypeNode: node: OptionalTypeNode * ``type``: TypeNode -> OptionalTypeNode
abstract createRestTypeNode: ``type``: TypeNode -> RestTypeNode
abstract updateRestTypeNode: node: RestTypeNode * ``type``: TypeNode -> RestTypeNode
abstract createUnionTypeNode: types: ResizeArray<TypeNode> -> UnionTypeNode
abstract updateUnionTypeNode: node: UnionTypeNode * types: ResizeArray<TypeNode> -> UnionTypeNode
abstract createIntersectionTypeNode: types: ResizeArray<TypeNode> -> IntersectionTypeNode
abstract updateIntersectionTypeNode: node: IntersectionTypeNode * types: ResizeArray<TypeNode> -> IntersectionTypeNode
abstract createUnionOrIntersectionTypeNode: kind: SyntaxKind * types: ResizeArray<TypeNode> -> UnionOrIntersectionTypeNode
abstract createConditionalTypeNode: checkType: TypeNode * extendsType: TypeNode * trueType: TypeNode * falseType: TypeNode -> ConditionalTypeNode
abstract updateConditionalTypeNode: node: ConditionalTypeNode * checkType: TypeNode * extendsType: TypeNode * trueType: TypeNode * falseType: TypeNode -> ConditionalTypeNode
abstract createInferTypeNode: typeParameter: TypeParameterDeclaration -> InferTypeNode
abstract updateInferTypeNode: node: InferTypeNode * typeParameter: TypeParameterDeclaration -> InferTypeNode
abstract createImportTypeNode: argument: TypeNode * ?qualifier: EntityName * ?typeArguments: ResizeArray<TypeNode> * ?isTypeOf: bool -> ImportTypeNode
abstract updateImportTypeNode: node: ImportTypeNode * argument: TypeNode * ?qualifier: EntityName * ?typeArguments: ResizeArray<TypeNode> * ?isTypeOf: bool -> ImportTypeNode
abstract createParenthesizedType: ``type``: TypeNode -> ParenthesizedTypeNode
abstract updateParenthesizedType: node: ParenthesizedTypeNode * ``type``: TypeNode -> ParenthesizedTypeNode
abstract createThisTypeNode: unit -> ThisTypeNode
abstract createTypeOperatorNode: ``type``: TypeNode -> TypeOperatorNode
abstract createTypeOperatorNode: operator: SyntaxKind * ``type``: TypeNode -> TypeOperatorNode
abstract updateTypeOperatorNode: node: TypeOperatorNode * ``type``: TypeNode -> TypeOperatorNode
abstract createIndexedAccessTypeNode: objectType: TypeNode * indexType: TypeNode -> IndexedAccessTypeNode
abstract updateIndexedAccessTypeNode: node: IndexedAccessTypeNode * objectType: TypeNode * indexType: TypeNode -> IndexedAccessTypeNode
abstract createMappedTypeNode: readonlyToken: U3<ReadonlyToken, PlusToken, MinusToken> option * typeParameter: TypeParameterDeclaration * questionToken: U3<QuestionToken, PlusToken, MinusToken> option * ``type``: TypeNode option -> MappedTypeNode
abstract updateMappedTypeNode: node: MappedTypeNode * readonlyToken: U3<ReadonlyToken, PlusToken, MinusToken> option * typeParameter: TypeParameterDeclaration * questionToken: U3<QuestionToken, PlusToken, MinusToken> option * ``type``: TypeNode option -> MappedTypeNode
abstract createLiteralTypeNode: literal: obj -> LiteralTypeNode
abstract updateLiteralTypeNode: node: LiteralTypeNode * literal: obj -> LiteralTypeNode
abstract createObjectBindingPattern: elements: ResizeArray<BindingElement> -> ObjectBindingPattern
abstract updateObjectBindingPattern: node: ObjectBindingPattern * elements: ResizeArray<BindingElement> -> ObjectBindingPattern
abstract createArrayBindingPattern: elements: ResizeArray<ArrayBindingElement> -> ArrayBindingPattern
abstract updateArrayBindingPattern: node: ArrayBindingPattern * elements: ResizeArray<ArrayBindingElement> -> ArrayBindingPattern
abstract createBindingElement: dotDotDotToken: DotDotDotToken option * propertyName: U2<string, PropertyName> option * name: U2<string, BindingName> * ?initializer: Expression -> BindingElement
abstract updateBindingElement: node: BindingElement * dotDotDotToken: DotDotDotToken option * propertyName: PropertyName option * name: BindingName * initializer: Expression option -> BindingElement
abstract createArrayLiteral: ?elements: ResizeArray<Expression> * ?multiLine: bool -> ArrayLiteralExpression
abstract updateArrayLiteral: node: ArrayLiteralExpression * elements: ResizeArray<Expression> -> ArrayLiteralExpression
abstract createObjectLiteral: ?properties: ResizeArray<ObjectLiteralElementLike> * ?multiLine: bool -> ObjectLiteralExpression
abstract updateObjectLiteral: node: ObjectLiteralExpression * properties: ResizeArray<ObjectLiteralElementLike> -> ObjectLiteralExpression
abstract createPropertyAccess: expression: Expression * name: U2<string, Identifier> -> PropertyAccessExpression
abstract updatePropertyAccess: node: PropertyAccessExpression * expression: Expression * name: Identifier -> PropertyAccessExpression
abstract createPropertyAccessChain: expression: Expression * questionDotToken: QuestionDotToken option * name: U2<string, Identifier> -> PropertyAccessChain
abstract updatePropertyAccessChain: node: PropertyAccessChain * expression: Expression * questionDotToken: QuestionDotToken option * name: Identifier -> PropertyAccessChain
abstract createElementAccess: expression: Expression * index: U2<float, Expression> -> ElementAccessExpression
abstract updateElementAccess: node: ElementAccessExpression * expression: Expression * argumentExpression: Expression -> ElementAccessExpression
abstract createElementAccessChain: expression: Expression * questionDotToken: QuestionDotToken option * index: U2<float, Expression> -> ElementAccessChain
abstract updateElementAccessChain: node: ElementAccessChain * expression: Expression * questionDotToken: QuestionDotToken option * argumentExpression: Expression -> ElementAccessChain
abstract createCall: expression: Expression * typeArguments: ResizeArray<TypeNode> option * argumentsArray: ResizeArray<Expression> option -> CallExpression
abstract updateCall: node: CallExpression * expression: Expression * typeArguments: ResizeArray<TypeNode> option * argumentsArray: ResizeArray<Expression> -> CallExpression
abstract createCallChain: expression: Expression * questionDotToken: QuestionDotToken option * typeArguments: ResizeArray<TypeNode> option * argumentsArray: ResizeArray<Expression> option -> CallChain
abstract updateCallChain: node: CallChain * expression: Expression * questionDotToken: QuestionDotToken option * typeArguments: ResizeArray<TypeNode> option * argumentsArray: ResizeArray<Expression> -> CallChain
abstract createNew: expression: Expression * typeArguments: ResizeArray<TypeNode> option * argumentsArray: ResizeArray<Expression> option -> NewExpression
abstract updateNew: node: NewExpression * expression: Expression * typeArguments: ResizeArray<TypeNode> option * argumentsArray: ResizeArray<Expression> option -> NewExpression
[<Obsolete("")>]
abstract createTaggedTemplate: tag: Expression * template: TemplateLiteral -> TaggedTemplateExpression
abstract createTaggedTemplate: tag: Expression * typeArguments: ResizeArray<TypeNode> option * template: TemplateLiteral -> TaggedTemplateExpression
[<Obsolete("")>]
abstract updateTaggedTemplate: node: TaggedTemplateExpression * tag: Expression * template: TemplateLiteral -> TaggedTemplateExpression
abstract updateTaggedTemplate: node: TaggedTemplateExpression * tag: Expression * typeArguments: ResizeArray<TypeNode> option * template: TemplateLiteral -> TaggedTemplateExpression
abstract createTypeAssertion: ``type``: TypeNode * expression: Expression -> TypeAssertion
abstract updateTypeAssertion: node: TypeAssertion * ``type``: TypeNode * expression: Expression -> TypeAssertion
abstract createParen: expression: Expression -> ParenthesizedExpression
abstract updateParen: node: ParenthesizedExpression * expression: Expression -> ParenthesizedExpression
abstract createFunctionExpression: modifiers: ResizeArray<Modifier> option * asteriskToken: AsteriskToken option * name: U2<string, Identifier> option * typeParameters: ResizeArray<TypeParameterDeclaration> option * parameters: ResizeArray<ParameterDeclaration> option * ``type``: TypeNode option * body: Block -> FunctionExpression
abstract updateFunctionExpression: node: FunctionExpression * modifiers: ResizeArray<Modifier> option * asteriskToken: AsteriskToken option * name: Identifier option * typeParameters: ResizeArray<TypeParameterDeclaration> option * parameters: ResizeArray<ParameterDeclaration> * ``type``: TypeNode option * body: Block -> FunctionExpression
abstract createArrowFunction: modifiers: ResizeArray<Modifier> option * typeParameters: ResizeArray<TypeParameterDeclaration> option * parameters: ResizeArray<ParameterDeclaration> * ``type``: TypeNode option * equalsGreaterThanToken: EqualsGreaterThanToken option * body: ConciseBody -> ArrowFunction
abstract updateArrowFunction: node: ArrowFunction * modifiers: ResizeArray<Modifier> option * typeParameters: ResizeArray<TypeParameterDeclaration> option * parameters: ResizeArray<ParameterDeclaration> * ``type``: TypeNode option * equalsGreaterThanToken: Token<SyntaxKind> * body: ConciseBody -> ArrowFunction
abstract createDelete: expression: Expression -> DeleteExpression
abstract updateDelete: node: DeleteExpression * expression: Expression -> DeleteExpression
abstract createTypeOf: expression: Expression -> TypeOfExpression
abstract updateTypeOf: node: TypeOfExpression * expression: Expression -> TypeOfExpression
abstract createVoid: expression: Expression -> VoidExpression
abstract updateVoid: node: VoidExpression * expression: Expression -> VoidExpression
abstract createAwait: expression: Expression -> AwaitExpression
abstract updateAwait: node: AwaitExpression * expression: Expression -> AwaitExpression
abstract createPrefix: operator: PrefixUnaryOperator * operand: Expression -> PrefixUnaryExpression
abstract updatePrefix: node: PrefixUnaryExpression * operand: Expression -> PrefixUnaryExpression
abstract createPostfix: operand: Expression * operator: PostfixUnaryOperator -> PostfixUnaryExpression
abstract updatePostfix: node: PostfixUnaryExpression * operand: Expression -> PostfixUnaryExpression
abstract createBinary: left: Expression * operator: U2<BinaryOperator, BinaryOperatorToken> * right: Expression -> BinaryExpression
abstract updateBinary: node: BinaryExpression * left: Expression * right: Expression * ?operator: U2<BinaryOperator, BinaryOperatorToken> -> BinaryExpression
[<Obsolete("")>]
abstract createConditional: condition: Expression * whenTrue: Expression * whenFalse: Expression -> ConditionalExpression
abstract createConditional: condition: Expression * questionToken: QuestionToken * whenTrue: Expression * colonToken: ColonToken * whenFalse: Expression -> ConditionalExpression
abstract updateConditional: node: ConditionalExpression * condition: Expression * questionToken: Token<SyntaxKind> * whenTrue: Expression * colonToken: Token<SyntaxKind> * whenFalse: Expression -> ConditionalExpression
abstract createTemplateExpression: head: TemplateHead * templateSpans: ResizeArray<TemplateSpan> -> TemplateExpression
abstract updateTemplateExpression: node: TemplateExpression * head: TemplateHead * templateSpans: ResizeArray<TemplateSpan> -> TemplateExpression
abstract createTemplateHead: text: string * ?rawText: string -> TemplateHead
abstract createTemplateMiddle: text: string * ?rawText: string -> TemplateMiddle
abstract createTemplateTail: text: string * ?rawText: string -> TemplateTail
abstract createNoSubstitutionTemplateLiteral: text: string * ?rawText: string -> NoSubstitutionTemplateLiteral
abstract createYield: ?expression: Expression -> YieldExpression
abstract createYield: asteriskToken: AsteriskToken option * expression: Expression -> YieldExpression
abstract updateYield: node: YieldExpression * asteriskToken: AsteriskToken option * expression: Expression -> YieldExpression
abstract createSpread: expression: Expression -> SpreadElement
abstract updateSpread: node: SpreadElement * expression: Expression -> SpreadElement
abstract createClassExpression: modifiers: ResizeArray<Modifier> option * name: U2<string, Identifier> option * typeParameters: ResizeArray<TypeParameterDeclaration> option * heritageClauses: ResizeArray<HeritageClause> option * members: ResizeArray<ClassElement> -> ClassExpression
abstract updateClassExpression: node: ClassExpression * modifiers: ResizeArray<Modifier> option * name: Identifier option * typeParameters: ResizeArray<TypeParameterDeclaration> option * heritageClauses: ResizeArray<HeritageClause> option * members: ResizeArray<ClassElement> -> ClassExpression
abstract createOmittedExpression: unit -> OmittedExpression
abstract createExpressionWithTypeArguments: typeArguments: ResizeArray<TypeNode> option * expression: Expression -> ExpressionWithTypeArguments
abstract updateExpressionWithTypeArguments: node: ExpressionWithTypeArguments * typeArguments: ResizeArray<TypeNode> option * expression: Expression -> ExpressionWithTypeArguments
abstract createAsExpression: expression: Expression * ``type``: TypeNode -> AsExpression
abstract updateAsExpression: node: AsExpression * expression: Expression * ``type``: TypeNode -> AsExpression
abstract createNonNullExpression: expression: Expression -> NonNullExpression
abstract updateNonNullExpression: node: NonNullExpression * expression: Expression -> NonNullExpression
abstract createMetaProperty: keywordToken: obj * name: Identifier -> MetaProperty
abstract updateMetaProperty: node: MetaProperty * name: Identifier -> MetaProperty
abstract createTemplateSpan: expression: Expression * literal: U2<TemplateMiddle, TemplateTail> -> TemplateSpan
abstract updateTemplateSpan: node: TemplateSpan * expression: Expression * literal: U2<TemplateMiddle, TemplateTail> -> TemplateSpan
abstract createSemicolonClassElement: unit -> SemicolonClassElement
abstract createBlock: statements: ResizeArray<Statement> * ?multiLine: bool -> Block
abstract updateBlock: node: Block * statements: ResizeArray<Statement> -> Block
abstract createVariableStatement: modifiers: ResizeArray<Modifier> option * declarationList: U2<VariableDeclarationList, ResizeArray<VariableDeclaration>> -> VariableStatement
abstract updateVariableStatement: node: VariableStatement * modifiers: ResizeArray<Modifier> option * declarationList: VariableDeclarationList -> VariableStatement
abstract createEmptyStatement: unit -> EmptyStatement
abstract createExpressionStatement: expression: Expression -> ExpressionStatement
abstract updateExpressionStatement: node: ExpressionStatement * expression: Expression -> ExpressionStatement
[<Obsolete("Use `createExpressionStatement` instead.")>]
abstract createStatement: obj
[<Obsolete("Use `updateExpressionStatement` instead.")>]
abstract updateStatement: obj
abstract createIf: expression: Expression * thenStatement: Statement * ?elseStatement: Statement -> IfStatement
abstract updateIf: node: IfStatement * expression: Expression * thenStatement: Statement * elseStatement: Statement option -> IfStatement
abstract createDo: statement: Statement * expression: Expression -> DoStatement
abstract updateDo: node: DoStatement * statement: Statement * expression: Expression -> DoStatement
abstract createWhile: expression: Expression * statement: Statement -> WhileStatement
abstract updateWhile: node: WhileStatement * expression: Expression * statement: Statement -> WhileStatement
abstract createFor: initializer: ForInitializer option * condition: Expression option * incrementor: Expression option * statement: Statement -> ForStatement
abstract updateFor: node: ForStatement * initializer: ForInitializer option * condition: Expression option * incrementor: Expression option * statement: Statement -> ForStatement
abstract createForIn: initializer: ForInitializer * expression: Expression * statement: Statement -> ForInStatement
abstract updateForIn: node: ForInStatement * initializer: ForInitializer * expression: Expression * statement: Statement -> ForInStatement
abstract createForOf: awaitModifier: AwaitKeywordToken option * initializer: ForInitializer * expression: Expression * statement: Statement -> ForOfStatement
abstract updateForOf: node: ForOfStatement * awaitModifier: AwaitKeywordToken option * initializer: ForInitializer * expression: Expression * statement: Statement -> ForOfStatement
abstract createContinue: ?label: U2<string, Identifier> -> ContinueStatement
abstract updateContinue: node: ContinueStatement * label: Identifier option -> ContinueStatement
abstract createBreak: ?label: U2<string, Identifier> -> BreakStatement
abstract updateBreak: node: BreakStatement * label: Identifier option -> BreakStatement
abstract createReturn: ?expression: Expression -> ReturnStatement
abstract updateReturn: node: ReturnStatement * expression: Expression option -> ReturnStatement
abstract createWith: expression: Expression * statement: Statement -> WithStatement
abstract updateWith: node: WithStatement * expression: Expression * statement: Statement -> WithStatement
abstract createSwitch: expression: Expression * caseBlock: CaseBlock -> SwitchStatement
abstract updateSwitch: node: SwitchStatement * expression: Expression * caseBlock: CaseBlock -> SwitchStatement
abstract createLabel: label: U2<string, Identifier> * statement: Statement -> LabeledStatement
abstract updateLabel: node: LabeledStatement * label: Identifier * statement: Statement -> LabeledStatement
abstract createThrow: expression: Expression -> ThrowStatement
abstract updateThrow: node: ThrowStatement * expression: Expression -> ThrowStatement
abstract createTry: tryBlock: Block * catchClause: CatchClause option * finallyBlock: Block option -> TryStatement
abstract updateTry: node: TryStatement * tryBlock: Block * catchClause: CatchClause option * finallyBlock: Block option -> TryStatement
abstract createDebuggerStatement: unit -> DebuggerStatement
abstract createVariableDeclaration: name: U2<string, BindingName> * ?``type``: TypeNode * ?initializer: Expression -> VariableDeclaration
abstract updateVariableDeclaration: node: VariableDeclaration * name: BindingName * ``type``: TypeNode option * initializer: Expression option -> VariableDeclaration
abstract createVariableDeclarationList: declarations: ResizeArray<VariableDeclaration> * ?flags: NodeFlags -> VariableDeclarationList
abstract updateVariableDeclarationList: node: VariableDeclarationList * declarations: ResizeArray<VariableDeclaration> -> VariableDeclarationList
abstract createFunctionDeclaration: decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * asteriskToken: AsteriskToken option * name: U2<string, Identifier> option * typeParameters: ResizeArray<TypeParameterDeclaration> option * parameters: ResizeArray<ParameterDeclaration> * ``type``: TypeNode option * body: Block option -> FunctionDeclaration
abstract updateFunctionDeclaration: node: FunctionDeclaration * decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * asteriskToken: AsteriskToken option * name: Identifier option * typeParameters: ResizeArray<TypeParameterDeclaration> option * parameters: ResizeArray<ParameterDeclaration> * ``type``: TypeNode option * body: Block option -> FunctionDeclaration
abstract createClassDeclaration: decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * name: U2<string, Identifier> option * typeParameters: ResizeArray<TypeParameterDeclaration> option * heritageClauses: ResizeArray<HeritageClause> option * members: ResizeArray<ClassElement> -> ClassDeclaration
abstract updateClassDeclaration: node: ClassDeclaration * decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * name: Identifier option * typeParameters: ResizeArray<TypeParameterDeclaration> option * heritageClauses: ResizeArray<HeritageClause> option * members: ResizeArray<ClassElement> -> ClassDeclaration
abstract createInterfaceDeclaration: decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * name: U2<string, Identifier> * typeParameters: ResizeArray<TypeParameterDeclaration> option * heritageClauses: ResizeArray<HeritageClause> option * members: ResizeArray<TypeElement> -> InterfaceDeclaration
abstract updateInterfaceDeclaration: node: InterfaceDeclaration * decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * name: Identifier * typeParameters: ResizeArray<TypeParameterDeclaration> option * heritageClauses: ResizeArray<HeritageClause> option * members: ResizeArray<TypeElement> -> InterfaceDeclaration
abstract createTypeAliasDeclaration: decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * name: U2<string, Identifier> * typeParameters: ResizeArray<TypeParameterDeclaration> option * ``type``: TypeNode -> TypeAliasDeclaration
abstract updateTypeAliasDeclaration: node: TypeAliasDeclaration * decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * name: Identifier * typeParameters: ResizeArray<TypeParameterDeclaration> option * ``type``: TypeNode -> TypeAliasDeclaration
abstract createEnumDeclaration: decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * name: U2<string, Identifier> * members: ResizeArray<EnumMember> -> EnumDeclaration
abstract updateEnumDeclaration: node: EnumDeclaration * decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * name: Identifier * members: ResizeArray<EnumMember> -> EnumDeclaration
abstract createModuleDeclaration: decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * name: ModuleName * body: ModuleBody option * ?flags: NodeFlags -> ModuleDeclaration
abstract updateModuleDeclaration: node: ModuleDeclaration * decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * name: ModuleName * body: ModuleBody option -> ModuleDeclaration
abstract createModuleBlock: statements: ResizeArray<Statement> -> ModuleBlock
abstract updateModuleBlock: node: ModuleBlock * statements: ResizeArray<Statement> -> ModuleBlock
abstract createCaseBlock: clauses: ResizeArray<CaseOrDefaultClause> -> CaseBlock
abstract updateCaseBlock: node: CaseBlock * clauses: ResizeArray<CaseOrDefaultClause> -> CaseBlock
abstract createNamespaceExportDeclaration: name: U2<string, Identifier> -> NamespaceExportDeclaration
abstract updateNamespaceExportDeclaration: node: NamespaceExportDeclaration * name: Identifier -> NamespaceExportDeclaration
abstract createImportEqualsDeclaration: decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * name: U2<string, Identifier> * moduleReference: ModuleReference -> ImportEqualsDeclaration
abstract updateImportEqualsDeclaration: node: ImportEqualsDeclaration * decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * name: Identifier * moduleReference: ModuleReference -> ImportEqualsDeclaration
abstract createImportDeclaration: decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * importClause: ImportClause option * moduleSpecifier: Expression -> ImportDeclaration
abstract updateImportDeclaration: node: ImportDeclaration * decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * importClause: ImportClause option * moduleSpecifier: Expression -> ImportDeclaration
abstract createImportClause: name: Identifier option * namedBindings: NamedImportBindings option -> ImportClause
abstract updateImportClause: node: ImportClause * name: Identifier option * namedBindings: NamedImportBindings option -> ImportClause
abstract createNamespaceImport: name: Identifier -> NamespaceImport
abstract updateNamespaceImport: node: NamespaceImport * name: Identifier -> NamespaceImport
abstract createNamedImports: elements: ResizeArray<ImportSpecifier> -> NamedImports
abstract updateNamedImports: node: NamedImports * elements: ResizeArray<ImportSpecifier> -> NamedImports
abstract createImportSpecifier: propertyName: Identifier option * name: Identifier -> ImportSpecifier
abstract updateImportSpecifier: node: ImportSpecifier * propertyName: Identifier option * name: Identifier -> ImportSpecifier
abstract createExportAssignment: decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * isExportEquals: bool option * expression: Expression -> ExportAssignment
abstract updateExportAssignment: node: ExportAssignment * decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * expression: Expression -> ExportAssignment
abstract createExportDeclaration: decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * exportClause: NamedExports option * ?moduleSpecifier: Expression -> ExportDeclaration
abstract updateExportDeclaration: node: ExportDeclaration * decorators: ResizeArray<Decorator> option * modifiers: ResizeArray<Modifier> option * exportClause: NamedExports option * moduleSpecifier: Expression option -> ExportDeclaration
abstract createNamedExports: elements: ResizeArray<ExportSpecifier> -> NamedExports
abstract updateNamedExports: node: NamedExports * elements: ResizeArray<ExportSpecifier> -> NamedExports
abstract createExportSpecifier: propertyName: U2<string, Identifier> option * name: U2<string, Identifier> -> ExportSpecifier
abstract updateExportSpecifier: node: ExportSpecifier * propertyName: Identifier option * name: Identifier -> ExportSpecifier
abstract createExternalModuleReference: expression: Expression -> ExternalModuleReference
abstract updateExternalModuleReference: node: ExternalModuleReference * expression: Expression -> ExternalModuleReference
abstract createJsxElement: openingElement: JsxOpeningElement * children: ResizeArray<JsxChild> * closingElement: JsxClosingElement -> JsxElement
abstract updateJsxElement: node: JsxElement * openingElement: JsxOpeningElement * children: ResizeArray<JsxChild> * closingElement: JsxClosingElement -> JsxElement
abstract createJsxSelfClosingElement: tagName: JsxTagNameExpression * typeArguments: ResizeArray<TypeNode> option * attributes: JsxAttributes -> JsxSelfClosingElement
abstract updateJsxSelfClosingElement: node: JsxSelfClosingElement * tagName: JsxTagNameExpression * typeArguments: ResizeArray<TypeNode> option * attributes: JsxAttributes -> JsxSelfClosingElement
abstract createJsxOpeningElement: tagName: JsxTagNameExpression * typeArguments: ResizeArray<TypeNode> option * attributes: JsxAttributes -> JsxOpeningElement
abstract updateJsxOpeningElement: node: JsxOpeningElement * tagName: JsxTagNameExpression * typeArguments: ResizeArray<TypeNode> option * attributes: JsxAttributes -> JsxOpeningElement
abstract createJsxClosingElement: tagName: JsxTagNameExpression -> JsxClosingElement
abstract updateJsxClosingElement: node: JsxClosingElement * tagName: JsxTagNameExpression -> JsxClosingElement
abstract createJsxFragment: openingFragment: JsxOpeningFragment * children: ResizeArray<JsxChild> * closingFragment: JsxClosingFragment -> JsxFragment
abstract createJsxText: text: string * ?containsOnlyTriviaWhiteSpaces: bool -> JsxText
abstract updateJsxText: node: JsxText * text: string * ?containsOnlyTriviaWhiteSpaces: bool -> JsxText
abstract createJsxOpeningFragment: unit -> JsxOpeningFragment
abstract createJsxJsxClosingFragment: unit -> JsxClosingFragment
abstract updateJsxFragment: node: JsxFragment * openingFragment: JsxOpeningFragment * children: ResizeArray<JsxChild> * closingFragment: JsxClosingFragment -> JsxFragment
abstract createJsxAttribute: name: Identifier * initializer: U2<StringLiteral, JsxExpression> -> JsxAttribute
abstract updateJsxAttribute: node: JsxAttribute * name: Identifier * initializer: U2<StringLiteral, JsxExpression> -> JsxAttribute
abstract createJsxAttributes: properties: ResizeArray<JsxAttributeLike> -> JsxAttributes
abstract updateJsxAttributes: node: JsxAttributes * properties: ResizeArray<JsxAttributeLike> -> JsxAttributes
abstract createJsxSpreadAttribute: expression: Expression -> JsxSpreadAttribute
abstract updateJsxSpreadAttribute: node: JsxSpreadAttribute * expression: Expression -> JsxSpreadAttribute
abstract createJsxExpression: dotDotDotToken: DotDotDotToken option * expression: Expression option -> JsxExpression
abstract updateJsxExpression: node: JsxExpression * expression: Expression option -> JsxExpression
abstract createCaseClause: expression: Expression * statements: ResizeArray<Statement> -> CaseClause
abstract updateCaseClause: node: CaseClause * expression: Expression * statements: ResizeArray<Statement> -> CaseClause
abstract createDefaultClause: statements: ResizeArray<Statement> -> DefaultClause
abstract updateDefaultClause: node: DefaultClause * statements: ResizeArray<Statement> -> DefaultClause
abstract createHeritageClause: token: obj * types: ResizeArray<ExpressionWithTypeArguments> -> HeritageClause
abstract updateHeritageClause: node: HeritageClause * types: ResizeArray<ExpressionWithTypeArguments> -> HeritageClause
abstract createCatchClause: variableDeclaration: U2<string, VariableDeclaration> option * block: Block -> CatchClause
abstract updateCatchClause: node: CatchClause * variableDeclaration: VariableDeclaration option * block: Block -> CatchClause
abstract createPropertyAssignment: name: U2<string, PropertyName> * initializer: Expression -> PropertyAssignment
abstract updatePropertyAssignment: node: PropertyAssignment * name: PropertyName * initializer: Expression -> PropertyAssignment
abstract createShorthandPropertyAssignment: name: U2<string, Identifier> * ?objectAssignmentInitializer: Expression -> ShorthandPropertyAssignment
abstract updateShorthandPropertyAssignment: node: ShorthandPropertyAssignment * name: Identifier * objectAssignmentInitializer: Expression option -> ShorthandPropertyAssignment
abstract createSpreadAssignment: expression: Expression -> SpreadAssignment
abstract updateSpreadAssignment: node: SpreadAssignment * expression: Expression -> SpreadAssignment
abstract createEnumMember: name: U2<string, PropertyName> * ?initializer: Expression -> EnumMember
abstract updateEnumMember: node: EnumMember * name: PropertyName * initializer: Expression option -> EnumMember
abstract updateSourceFileNode: node: SourceFile * statements: ResizeArray<Statement> * ?isDeclarationFile: bool * ?referencedFiles: obj * ?typeReferences: obj * ?hasNoDefaultLib: bool * ?libReferences: obj -> SourceFile
/// Creates a shallow, memberwise clone of a node for mutation.
abstract getMutableClone: node: 'T -> 'T when 'T :> Node
/// <summary>
/// Creates a synthetic statement to act as a placeholder for a not-emitted statement in
/// order to preserve comments.
/// </summary>
/// <param name="original">The original statement.</param>
abstract createNotEmittedStatement: original: Node -> NotEmittedStatement
/// <summary>
/// Creates a synthetic expression to act as a placeholder for a not-emitted expression in
/// order to preserve comments or sourcemap positions.
/// </summary>
/// <param name="expression">The inner expression to emit.</param>
/// <param name="original">The original outer expression.</param>
/// <param name="location">The location for the expression. Defaults to the positions from "original" if provided.</param>
abstract createPartiallyEmittedExpression: expression: Expression * ?original: Node -> PartiallyEmittedExpression
abstract updatePartiallyEmittedExpression: node: PartiallyEmittedExpression * expression: Expression -> PartiallyEmittedExpression
abstract createCommaList: elements: ResizeArray<Expression> -> CommaListExpression
abstract updateCommaList: node: CommaListExpression * elements: ResizeArray<Expression> -> CommaListExpression
abstract createBundle: sourceFiles: ResizeArray<SourceFile> * ?prepends: ResizeArray<U2<UnparsedSource, InputFiles>> -> Bundle
abstract createUnparsedSourceFile: text: string -> UnparsedSource
abstract createUnparsedSourceFile: inputFile: InputFiles * ``type``: IExportsCreateUnparsedSourceFile * ?stripInternal: bool -> UnparsedSource
abstract createUnparsedSourceFile: text: string * mapPath: string option * map: string option -> UnparsedSource
abstract createInputFiles: javascriptText: string * declarationText: string -> InputFiles
abstract createInputFiles: readFileText: (string -> string option) * javascriptPath: string * javascriptMapPath: string option * declarationPath: string * declarationMapPath: string option * buildInfoPath: string option -> InputFiles
abstract createInputFiles: javascriptText: string * declarationText: string * javascriptMapPath: string option * javascriptMapText: string option * declarationMapPath: string option * declarationMapText: string option -> InputFiles
abstract updateBundle: node: Bundle * sourceFiles: ResizeArray<SourceFile> * ?prepends: ResizeArray<U2<UnparsedSource, InputFiles>> -> Bundle
abstract createImmediatelyInvokedFunctionExpression: statements: ResizeArray<Statement> -> CallExpression
abstract createImmediatelyInvokedFunctionExpression: statements: ResizeArray<Statement> * param: ParameterDeclaration * paramValue: Expression -> CallExpression
abstract createImmediatelyInvokedArrowFunction: statements: ResizeArray<Statement> -> CallExpression
abstract createImmediatelyInvokedArrowFunction: statements: ResizeArray<Statement> * param: ParameterDeclaration * paramValue: Expression -> CallExpression
abstract createComma: left: Expression * right: Expression -> Expression
abstract createLessThan: left: Expression * right: Expression -> Expression
abstract createAssignment: left: U2<ObjectLiteralExpression, ArrayLiteralExpression> * right: Expression -> DestructuringAssignment
abstract createAssignment: left: Expression * right: Expression -> BinaryExpression
abstract createStrictEquality: left: Expression * right: Expression -> BinaryExpression
abstract createStrictInequality: left: Expression * right: Expression -> BinaryExpression
abstract createAdd: left: Expression * right: Expression -> BinaryExpression
abstract createSubtract: left: Expression * right: Expression -> BinaryExpression
abstract createPostfixIncrement: operand: Expression -> PostfixUnaryExpression
abstract createLogicalAnd: left: Expression * right: Expression -> BinaryExpression
abstract createLogicalOr: left: Expression * right: Expression -> BinaryExpression
abstract createNullishCoalesce: left: Expression * right: Expression -> BinaryExpression
abstract createLogicalNot: operand: Expression -> PrefixUnaryExpression
abstract createVoidZero: unit -> VoidExpression
abstract createExportDefault: expression: Expression -> ExportAssignment
abstract createExternalModuleExport: exportName: Identifier -> ExportDeclaration
/// <summary>Clears any EmitNode entries from parse-tree nodes.</summary>
/// <param name="sourceFile">A source file.</param>
abstract disposeEmitNodes: sourceFile: SourceFile -> unit
abstract setTextRange: range: 'T * location: TextRange option -> 'T when 'T :> TextRange
/// Sets flags that control emit behavior of a node.
abstract setEmitFlags: node: 'T * emitFlags: EmitFlags -> 'T when 'T :> Node
/// Gets a custom text range to use when emitting source maps.
abstract getSourceMapRange: node: Node -> SourceMapRange
/// Sets a custom text range to use when emitting source maps.
abstract setSourceMapRange: node: 'T * range: SourceMapRange option -> 'T when 'T :> Node
/// Create an external source map source file reference
abstract createSourceMapSource: fileName: string * text: string * ?skipTrivia: (float -> float) -> SourceMapSource
/// Gets the TextRange to use for source maps for a token of a node.
abstract getTokenSourceMapRange: node: Node * token: SyntaxKind -> SourceMapRange option
/// Sets the TextRange to use for source maps for a token of a node.
abstract setTokenSourceMapRange: node: 'T * token: SyntaxKind * range: SourceMapRange option -> 'T when 'T :> Node
/// Gets a custom text range to use when emitting comments.
abstract getCommentRange: node: Node -> TextRange
/// Sets a custom text range to use when emitting comments.
abstract setCommentRange: node: 'T * range: TextRange -> 'T when 'T :> Node
abstract getSyntheticLeadingComments: node: Node -> ResizeArray<SynthesizedComment> option
abstract setSyntheticLeadingComments: node: 'T * comments: ResizeArray<SynthesizedComment> option -> 'T when 'T :> Node
abstract addSyntheticLeadingComment: node: 'T * kind: SyntaxKind * text: string * ?hasTrailingNewLine: bool -> 'T when 'T :> Node
abstract getSyntheticTrailingComments: node: Node -> ResizeArray<SynthesizedComment> option
abstract setSyntheticTrailingComments: node: 'T * comments: ResizeArray<SynthesizedComment> option -> 'T when 'T :> Node
abstract addSyntheticTrailingComment: node: 'T * kind: SyntaxKind * text: string * ?hasTrailingNewLine: bool -> 'T when 'T :> Node
abstract moveSyntheticComments: node: 'T * original: Node -> 'T when 'T :> Node
/// Gets the constant value to emit for an expression.
abstract getConstantValue: node: U2<PropertyAccessExpression, ElementAccessExpression> -> U2<string, float> option
/// Sets the constant value to emit for an expression.
abstract setConstantValue: node: U2<PropertyAccessExpression, ElementAccessExpression> * value: U2<string, float> -> U2<ElementAccessExpression, PropertyAccessExpression>
/// Adds an EmitHelper to a node.
abstract addEmitHelper: node: 'T * helper: EmitHelper -> 'T when 'T :> Node
/// Add EmitHelpers to a node.
abstract addEmitHelpers: node: 'T * helpers: ResizeArray<EmitHelper> option -> 'T when 'T :> Node
/// Removes an EmitHelper from a node.
abstract removeEmitHelper: node: Node * helper: EmitHelper -> bool
/// Gets the EmitHelpers of a node.
abstract getEmitHelpers: node: Node -> ResizeArray<EmitHelper> option
/// Moves matching emit helpers from a source node to a target node.
abstract moveEmitHelpers: source: Node * target: Node * predicate: (EmitHelper -> bool) -> unit
abstract setOriginalNode: node: 'T * original: Node option -> 'T when 'T :> Node
/// <summary>Visits a Node using the supplied visitor, possibly returning a new Node in its place.</summary>
/// <param name="node">The Node to visit.</param>
/// <param name="visitor">The callback used to visit the Node.</param>
/// <param name="test">A callback to execute to verify the Node is valid.</param>
/// <param name="lift">An optional callback to execute to lift a NodeArray into a valid Node.</param>
abstract visitNode: node: 'T option * visitor: Visitor option * ?test: (Node -> bool) * ?lift: (ResizeArray<Node> -> 'T) -> 'T when 'T :> Node
/// <summary>Visits a NodeArray using the supplied visitor, possibly returning a new NodeArray in its place.</summary>
/// <param name="nodes">The NodeArray to visit.</param>
/// <param name="visitor">The callback used to visit a Node.</param>
/// <param name="test">A node test to execute for each node.</param>
/// <param name="start">An optional value indicating the starting offset at which to start visiting.</param>
/// <param name="count">An optional value indicating the maximum number of nodes to visit.</param>
abstract visitNodes: nodes: ResizeArray<'T> option * visitor: Visitor * ?test: (Node -> bool) * ?start: float * ?count: float -> ResizeArray<'T> when 'T :> Node
/// Starts a new lexical environment and visits a statement list, ending the lexical environment
/// and merging hoisted declarations upon completion.
abstract visitLexicalEnvironment: statements: ResizeArray<Statement> * visitor: Visitor * context: TransformationContext * ?start: float * ?ensureUseStrict: bool -> ResizeArray<Statement>
/// Starts a new lexical environment and visits a parameter list, suspending the lexical
/// environment upon completion.
abstract visitParameterList: nodes: ResizeArray<ParameterDeclaration> option * visitor: Visitor * context: TransformationContext * ?nodesVisitor: obj -> ResizeArray<ParameterDeclaration>
/// Resumes a suspended lexical environment and visits a function body, ending the lexical
/// environment and merging hoisted declarations upon completion.
abstract visitFunctionBody: node: FunctionBody * visitor: Visitor * context: TransformationContext -> FunctionBody
/// Resumes a suspended lexical environment and visits a function body, ending the lexical
/// environment and merging hoisted declarations upon completion.
abstract visitFunctionBody: node: FunctionBody option * visitor: Visitor * context: TransformationContext -> FunctionBody option
/// Resumes a suspended lexical environment and visits a concise body, ending the lexical
/// environment and merging hoisted declarations upon completion.
abstract visitFunctionBody: node: ConciseBody * visitor: Visitor * context: TransformationContext -> ConciseBody
/// <summary>Visits each child of a Node using the supplied visitor, possibly returning a new Node of the same kind in its place.</summary>
/// <param name="node">The Node whose children will be visited.</param>
/// <param name="visitor">The callback used to visit each child.</param>
/// <param name="context">A lexical environment context for the visitor.</param>
abstract visitEachChild: node: 'T * visitor: Visitor * context: TransformationContext -> 'T when 'T :> Node
/// <summary>Visits each child of a Node using the supplied visitor, possibly returning a new Node of the same kind in its place.</summary>
/// <param name="node">The Node whose children will be visited.</param>
/// <param name="visitor">The callback used to visit each child.</param>
/// <param name="context">A lexical environment context for the visitor.</param>
abstract visitEachChild: node: 'T option * visitor: Visitor * context: TransformationContext * ?nodesVisitor: obj * ?tokenVisitor: Visitor -> 'T option when 'T :> Node
abstract getTsBuildInfoEmitOutputFilePath: options: CompilerOptions -> string option
abstract getOutputFileNames: commandLine: ParsedCommandLine * inputFileName: string * ignoreCase: bool -> ResizeArray<string>
abstract createPrinter: ?printerOptions: PrinterOptions * ?handlers: PrintHandlers -> Printer
abstract findConfigFile: searchPath: string * fileExists: (string -> bool) * ?configName: string -> string option
abstract resolveTripleslashReference: moduleName: string * containingFile: string -> string
abstract createCompilerHost: options: CompilerOptions * ?setParentNodes: bool -> CompilerHost
abstract getPreEmitDiagnostics: program: Program * ?sourceFile: SourceFile * ?cancellationToken: CancellationToken -> ResizeArray<Diagnostic>
abstract formatDiagnostics: diagnostics: ResizeArray<Diagnostic> * host: FormatDiagnosticsHost -> string
abstract formatDiagnostic: diagnostic: Diagnostic * host: FormatDiagnosticsHost -> string
abstract formatDiagnosticsWithColorAndContext: diagnostics: ResizeArray<Diagnostic> * host: FormatDiagnosticsHost -> string
abstract flattenDiagnosticMessageText: diag: U2<string, DiagnosticMessageChain> option * newLine: string * ?indent: float -> string
abstract getConfigFileParsingDiagnostics: configFileParseResult: ParsedCommandLine -> ResizeArray<Diagnostic>
/// <summary>
/// Create a new 'Program' instance. A Program is an immutable collection of 'SourceFile's and a 'CompilerOptions'
/// that represent a compilation unit.
///
/// Creating a program proceeds from a set of root files, expanding the set of inputs by following imports and
/// triple-slash-reference-path directives transitively. '@types' and triple-slash-reference-types are also pulled in.
/// </summary>
/// <param name="createProgramOptions">The options for creating a program.</param>
/// <returns>A 'Program' object.</returns>
abstract createProgram: createProgramOptions: CreateProgramOptions -> Program
/// <summary>
/// Create a new 'Program' instance. A Program is an immutable collection of 'SourceFile's and a 'CompilerOptions'
/// that represent a compilation unit.
///
/// Creating a program proceeds from a set of root files, expanding the set of inputs by following imports and
/// triple-slash-reference-path directives transitively. '@types' and triple-slash-reference-types are also pulled in.
/// </summary>
/// <param name="rootNames">A set of root files.</param>
/// <param name="options">The compiler options which should be used.</param>
/// <param name="host">The host interacts with the underlying file system.</param>
/// <param name="oldProgram">Reuses an old program structure.</param>
/// <param name="configFileParsingDiagnostics">error during config file parsing</param>
/// <returns>A 'Program' object.</returns>
abstract createProgram: rootNames: ResizeArray<string> * options: CompilerOptions * ?host: CompilerHost * ?oldProgram: Program * ?configFileParsingDiagnostics: ResizeArray<Diagnostic> -> Program
/// Returns the target config filename of a project reference.
/// Note: The file might not exist.
abstract resolveProjectReferencePath: ref: ProjectReference -> ResolvedConfigFileName
[<Obsolete("")>]
abstract resolveProjectReferencePath: host: ResolveProjectReferencePathHost * ref: ProjectReference -> ResolvedConfigFileName
/// Create the builder to manage semantic diagnostics and cache them
abstract createSemanticDiagnosticsBuilderProgram: newProgram: Program * host: BuilderProgramHost * ?oldProgram: SemanticDiagnosticsBuilderProgram * ?configFileParsingDiagnostics: ResizeArray<Diagnostic> -> SemanticDiagnosticsBuilderProgram
abstract createSemanticDiagnosticsBuilderProgram: rootNames: ResizeArray<string> option * options: CompilerOptions option * ?host: CompilerHost * ?oldProgram: SemanticDiagnosticsBuilderProgram * ?configFileParsingDiagnostics: ResizeArray<Diagnostic> * ?projectReferences: ResizeArray<ProjectReference> -> SemanticDiagnosticsBuilderProgram
/// Create the builder that can handle the changes in program and iterate through changed files
/// to emit the those files and manage semantic diagnostics cache as well
abstract createEmitAndSemanticDiagnosticsBuilderProgram: newProgram: Program * host: BuilderProgramHost * ?oldProgram: EmitAndSemanticDiagnosticsBuilderProgram * ?configFileParsingDiagnostics: ResizeArray<Diagnostic> -> EmitAndSemanticDiagnosticsBuilderProgram
abstract createEmitAndSemanticDiagnosticsBuilderProgram: rootNames: ResizeArray<string> option * options: CompilerOptions option * ?host: CompilerHost * ?oldProgram: EmitAndSemanticDiagnosticsBuilderProgram * ?configFileParsingDiagnostics: ResizeArray<Diagnostic> * ?projectReferences: ResizeArray<ProjectReference> -> EmitAndSemanticDiagnosticsBuilderProgram
/// Creates a builder thats just abstraction over program and can be used with watch
abstract createAbstractBuilder: newProgram: Program * host: BuilderProgramHost * ?oldProgram: BuilderProgram * ?configFileParsingDiagnostics: ResizeArray<Diagnostic> -> BuilderProgram
abstract createAbstractBuilder: rootNames: ResizeArray<string> option * options: CompilerOptions option * ?host: CompilerHost * ?oldProgram: BuilderProgram * ?configFileParsingDiagnostics: ResizeArray<Diagnostic> * ?projectReferences: ResizeArray<ProjectReference> -> BuilderProgram
abstract readBuilderProgram: compilerOptions: CompilerOptions * host: ReadBuildProgramHost -> EmitAndSemanticDiagnosticsBuilderProgram option
abstract createIncrementalCompilerHost: options: CompilerOptions * ?system: System -> CompilerHost
abstract createIncrementalProgram: p0: IncrementalProgramOptions<'T> -> 'T when 'T :> BuilderProgram
/// Create the watch compiler host for either configFile or fileNames and its options
abstract createWatchCompilerHost: configFileName: string * optionsToExtend: CompilerOptions option * system: System * ?createProgram: CreateProgram<'T> * ?reportDiagnostic: DiagnosticReporter * ?reportWatchStatus: WatchStatusReporter -> WatchCompilerHostOfConfigFile<'T> when 'T :> BuilderProgram
abstract createWatchCompilerHost: rootFiles: ResizeArray<string> * options: CompilerOptions * system: System * ?createProgram: CreateProgram<'T> * ?reportDiagnostic: DiagnosticReporter * ?reportWatchStatus: WatchStatusReporter * ?projectReferences: ResizeArray<ProjectReference> -> WatchCompilerHostOfFilesAndCompilerOptions<'T> when 'T :> BuilderProgram
/// Creates the watch from the host for root files and compiler options
abstract createWatchProgram: host: WatchCompilerHostOfFilesAndCompilerOptions<'T> -> WatchOfFilesAndCompilerOptions<'T> when 'T :> BuilderProgram
/// Creates the watch from the host for config file
abstract createWatchProgram: host: WatchCompilerHostOfConfigFile<'T> -> WatchOfConfigFile<'T> when 'T :> BuilderProgram
/// Create a function that reports watch status by writing to the system and handles the formating of the diagnostic
abstract createBuilderStatusReporter: system: System * ?pretty: bool -> DiagnosticReporter
abstract createSolutionBuilderHost: ?system: System * ?createProgram: CreateProgram<'T> * ?reportDiagnostic: DiagnosticReporter * ?reportSolutionBuilderStatus: DiagnosticReporter * ?reportErrorSummary: ReportEmitErrorSummary -> SolutionBuilderHost<'T> when 'T :> BuilderProgram
abstract createSolutionBuilderWithWatchHost: ?system: System * ?createProgram: CreateProgram<'T> * ?reportDiagnostic: DiagnosticReporter * ?reportSolutionBuilderStatus: DiagnosticReporter * ?reportWatchStatus: WatchStatusReporter -> SolutionBuilderWithWatchHost<'T> when 'T :> BuilderProgram
abstract createSolutionBuilder: host: SolutionBuilderHost<'T> * rootNames: ResizeArray<string> * defaultOptions: BuildOptions -> SolutionBuilder<'T> when 'T :> BuilderProgram
abstract createSolutionBuilderWithWatch: host: SolutionBuilderWithWatchHost<'T> * rootNames: ResizeArray<string> * defaultOptions: BuildOptions -> SolutionBuilder<'T> when 'T :> BuilderProgram
abstract getDefaultFormatCodeSettings: ?newLineCharacter: string -> FormatCodeSettings
/// The classifier is used for syntactic highlighting in editors via the TSServer
abstract createClassifier: unit -> Classifier
abstract createDocumentRegistry: ?useCaseSensitiveFileNames: bool * ?currentDirectory: string -> DocumentRegistry
abstract preProcessFile: sourceText: string * ?readImportFiles: bool * ?detectJavaScriptImports: bool -> PreProcessedFileInfo
abstract transpileModule: input: string * transpileOptions: TranspileOptions -> TranspileOutput
abstract transpile: input: string * ?compilerOptions: CompilerOptions * ?fileName: string * ?diagnostics: ResizeArray<Diagnostic> * ?moduleName: string -> string
/// The version of the language service API
abstract servicesVersion: obj
abstract toEditorSettings: options: U2<EditorOptions, EditorSettings> -> EditorSettings
abstract displayPartsToString: displayParts: ResizeArray<SymbolDisplayPart> option -> string
abstract getDefaultCompilerOptions: unit -> CompilerOptions
abstract getSupportedCodeFixes: unit -> ResizeArray<string>
abstract createLanguageServiceSourceFile: fileName: string * scriptSnapshot: IScriptSnapshot * scriptTarget: ScriptTarget * version: string * setNodeParents: bool * ?scriptKind: ScriptKind -> SourceFile
abstract disableIncrementalParsing: bool with get, set
abstract updateLanguageServiceSourceFile: sourceFile: SourceFile * scriptSnapshot: IScriptSnapshot * version: string * textChangeRange: TextChangeRange option * ?aggressiveChecks: bool -> SourceFile