tsc-ts 0.0.9 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bin/tsc-ts.js +70 -1
- package/dist/api/compiler/ast-utilities.d.ts +19 -1
- package/dist/api/compiler/ast-utilities.js +180 -95
- package/dist/api/compiler/ast.d.ts +22 -15
- package/dist/api/compiler/ast.js +1026 -995
- package/dist/api/compiler/astnav.js +15 -15
- package/dist/api/compiler/binder-utilities.js +186 -186
- package/dist/api/compiler/binder.js +290 -263
- package/dist/api/compiler/character-codes.js +2 -2
- package/dist/api/compiler/checker-calls.js +178 -124
- package/dist/api/compiler/checker-classes.d.ts +14 -3
- package/dist/api/compiler/checker-classes.js +134 -90
- package/dist/api/compiler/checker-contextual.js +64 -61
- package/dist/api/compiler/checker-declaration-order.js +79 -79
- package/dist/api/compiler/checker-declarations.d.ts +1 -0
- package/dist/api/compiler/checker-declarations.js +160 -136
- package/dist/api/compiler/checker-declared-types.js +67 -65
- package/dist/api/compiler/checker-decorators.js +77 -77
- package/dist/api/compiler/checker-deprecation.d.ts +8 -3
- package/dist/api/compiler/checker-deprecation.js +76 -55
- package/dist/api/compiler/checker-destructuring.js +47 -45
- package/dist/api/compiler/checker-elaboration.js +24 -24
- package/dist/api/compiler/checker-emit-helpers.js +4 -4
- package/dist/api/compiler/checker-emit-resolver.d.ts +4 -2
- package/dist/api/compiler/checker-emit-resolver.js +25 -13
- package/dist/api/compiler/checker-evaluator.js +9 -9
- package/dist/api/compiler/checker-expressions.js +244 -211
- package/dist/api/compiler/checker-functions.js +113 -107
- package/dist/api/compiler/checker-generated-code.d.ts +0 -11
- package/dist/api/compiler/checker-generated-code.js +28 -52
- package/dist/api/compiler/checker-grammar.d.ts +1 -0
- package/dist/api/compiler/checker-grammar.js +472 -440
- package/dist/api/compiler/checker-heritage.js +91 -93
- package/dist/api/compiler/checker-inference.d.ts +77 -5
- package/dist/api/compiler/checker-inference.js +487 -107
- package/dist/api/compiler/checker-iteration.d.ts +0 -10
- package/dist/api/compiler/checker-iteration.js +35 -52
- package/dist/api/compiler/checker-javascript.js +14 -14
- package/dist/api/compiler/checker-jsdoc.d.ts +8 -10
- package/dist/api/compiler/checker-jsdoc.js +67 -58
- package/dist/api/compiler/checker-jsx.js +105 -88
- package/dist/api/compiler/checker-members.d.ts +9 -2
- package/dist/api/compiler/checker-members.js +212 -75
- package/dist/api/compiler/checker-modules.d.ts +15 -6
- package/dist/api/compiler/checker-modules.js +469 -309
- package/dist/api/compiler/checker-narrowing.js +273 -189
- package/dist/api/compiler/checker-object-literals.js +25 -22
- package/dist/api/compiler/checker-operators.js +126 -118
- package/dist/api/compiler/checker-overloads.js +27 -27
- package/dist/api/compiler/checker-property-access.js +59 -55
- package/dist/api/compiler/checker-services.d.ts +1 -0
- package/dist/api/compiler/checker-services.js +222 -210
- package/dist/api/compiler/checker-signatures.js +65 -49
- package/dist/api/compiler/checker-source-file.d.ts +5 -0
- package/dist/api/compiler/checker-source-file.js +154 -130
- package/dist/api/compiler/checker-statements.js +33 -32
- package/dist/api/compiler/checker-super.js +50 -50
- package/dist/api/compiler/checker-symbol-types.js +109 -93
- package/dist/api/compiler/checker-symbols.d.ts +13 -1
- package/dist/api/compiler/checker-symbols.js +264 -149
- package/dist/api/compiler/checker-type-factory.d.ts +5 -0
- package/dist/api/compiler/checker-type-factory.js +145 -36
- package/dist/api/compiler/checker-type-nodes.d.ts +1 -0
- package/dist/api/compiler/checker-type-nodes.js +179 -141
- package/dist/api/compiler/checker-type-operators.d.ts +2 -0
- package/dist/api/compiler/checker-type-operators.js +110 -63
- package/dist/api/compiler/checker-types.d.ts +80 -3
- package/dist/api/compiler/checker-types.js +121 -2
- package/dist/api/compiler/checker-unused.js +114 -118
- package/dist/api/compiler/checker-utilities.js +11 -11
- package/dist/api/compiler/checker.d.ts +104 -31
- package/dist/api/compiler/checker.js +181 -33
- package/dist/api/compiler/command-line.d.ts +1 -3
- package/dist/api/compiler/command-line.js +47 -44
- package/dist/api/compiler/compile-program.d.ts +42 -3
- package/dist/api/compiler/compile-program.js +139 -27
- package/dist/api/compiler/diagnostic-messages.d.ts +1849 -1774
- package/dist/api/compiler/diagnostic-messages.js +128 -122
- package/dist/api/compiler/diagnostics.d.ts +22 -0
- package/dist/api/compiler/diagnostics.js +93 -11
- package/dist/api/compiler/emitter.d.ts +7 -1
- package/dist/api/compiler/emitter.js +53 -11
- package/dist/api/compiler/file-include.d.ts +2 -1
- package/dist/api/compiler/file-include.js +11 -7
- package/dist/api/compiler/file-loader.d.ts +21 -1
- package/dist/api/compiler/file-loader.js +201 -48
- package/dist/api/compiler/instantiation.d.ts +7 -0
- package/dist/api/compiler/instantiation.js +101 -49
- package/dist/api/compiler/jsdoc.js +23 -23
- package/dist/api/compiler/link-tables.d.ts +48 -18
- package/dist/api/compiler/link-tables.js +80 -37
- package/dist/api/compiler/locales/cs-CZ.d.ts +1 -1
- package/dist/api/compiler/locales/cs-CZ.js +1 -1
- package/dist/api/compiler/locales/de-DE.d.ts +1 -1
- package/dist/api/compiler/locales/de-DE.js +1 -1
- package/dist/api/compiler/locales/es-ES.d.ts +1 -1
- package/dist/api/compiler/locales/es-ES.js +1 -1
- package/dist/api/compiler/locales/fr-FR.d.ts +1 -1
- package/dist/api/compiler/locales/fr-FR.js +1 -1
- package/dist/api/compiler/locales/it-IT.d.ts +1 -1
- package/dist/api/compiler/locales/it-IT.js +1 -1
- package/dist/api/compiler/locales/ja-JP.d.ts +1 -1
- package/dist/api/compiler/locales/ja-JP.js +1 -1
- package/dist/api/compiler/locales/ko-KR.d.ts +1 -1
- package/dist/api/compiler/locales/ko-KR.js +1 -1
- package/dist/api/compiler/locales/pl-PL.d.ts +1 -1
- package/dist/api/compiler/locales/pl-PL.js +1 -1
- package/dist/api/compiler/locales/pt-BR.d.ts +1 -1
- package/dist/api/compiler/locales/pt-BR.js +1 -1
- package/dist/api/compiler/locales/ru-RU.d.ts +1 -1
- package/dist/api/compiler/locales/ru-RU.js +1 -1
- package/dist/api/compiler/locales/tr-TR.d.ts +1 -1
- package/dist/api/compiler/locales/tr-TR.js +1 -1
- package/dist/api/compiler/locales/zh-CN.d.ts +1 -1
- package/dist/api/compiler/locales/zh-CN.js +1 -1
- package/dist/api/compiler/locales/zh-TW.d.ts +1 -1
- package/dist/api/compiler/locales/zh-TW.js +1 -1
- package/dist/api/compiler/module-resolution-types.js +6 -6
- package/dist/api/compiler/module-resolution.d.ts +10 -1
- package/dist/api/compiler/module-resolution.js +115 -84
- package/dist/api/compiler/module-specifiers.d.ts +15 -0
- package/dist/api/compiler/module-specifiers.js +24 -18
- package/dist/api/compiler/name-resolver.js +74 -65
- package/dist/api/compiler/node-builder-names.d.ts +11 -3
- package/dist/api/compiler/node-builder-names.js +210 -90
- package/dist/api/compiler/node-builder-pseudo.js +29 -31
- package/dist/api/compiler/node-builder-reuse.js +23 -22
- package/dist/api/compiler/node-builder.d.ts +18 -1
- package/dist/api/compiler/node-builder.js +191 -102
- package/dist/api/compiler/option-declarations.d.ts +2 -6
- package/dist/api/compiler/option-declarations.js +315 -375
- package/dist/api/compiler/options.d.ts +15 -33
- package/dist/api/compiler/options.js +21 -54
- package/dist/api/compiler/output-paths.d.ts +4 -1
- package/dist/api/compiler/output-paths.js +6 -11
- package/dist/api/compiler/package-json.d.ts +3 -3
- package/dist/api/compiler/package-json.js +11 -10
- package/dist/api/compiler/parallel-parse.d.ts +3 -2
- package/dist/api/compiler/parallel-parse.js +17 -5
- package/dist/api/compiler/parser.d.ts +40 -19
- package/dist/api/compiler/parser.js +308 -216
- package/dist/api/compiler/path.d.ts +9 -0
- package/dist/api/compiler/path.js +20 -3
- package/dist/api/compiler/printer/emit-context.d.ts +5 -1
- package/dist/api/compiler/printer/emit-context.js +20 -1
- package/dist/api/compiler/printer/factory-base.d.ts +2 -2
- package/dist/api/compiler/printer/factory-base.js +7 -3
- package/dist/api/compiler/printer/factory.js +3 -1
- package/dist/api/compiler/printer/helpers.js +10 -1
- package/dist/api/compiler/printer/name-generator.d.ts +1 -1
- package/dist/api/compiler/printer/name-generator.js +35 -16
- package/dist/api/compiler/printer/printer.d.ts +49 -2
- package/dist/api/compiler/printer/printer.js +539 -293
- package/dist/api/compiler/printer/utilities.js +149 -147
- package/dist/api/compiler/program-checker.d.ts +12 -2
- package/dist/api/compiler/program-checker.js +88 -34
- package/dist/api/compiler/program-utilities.d.ts +3 -1
- package/dist/api/compiler/program-utilities.js +28 -15
- package/dist/api/compiler/program.d.ts +4 -6
- package/dist/api/compiler/program.js +74 -87
- package/dist/api/compiler/pseudo-bigint.d.ts +2 -0
- package/dist/api/compiler/pseudo-bigint.js +18 -0
- package/dist/api/compiler/regexp-checker.d.ts +1 -1
- package/dist/api/compiler/regexp-checker.js +93 -76
- package/dist/api/compiler/relations.d.ts +27 -4
- package/dist/api/compiler/relations.js +347 -180
- package/dist/api/compiler/reparser.js +60 -56
- package/dist/api/compiler/scanner.d.ts +19 -2
- package/dist/api/compiler/scanner.js +123 -108
- package/dist/api/compiler/shared-results.d.ts +463 -0
- package/dist/api/compiler/shared-results.js +2128 -0
- package/dist/api/compiler/sourcemap.js +2 -2
- package/dist/api/compiler/symbol-accessibility.js +87 -74
- package/dist/api/compiler/symbol.d.ts +23 -14
- package/dist/api/compiler/symbol.js +23 -11
- package/dist/api/compiler/syntax-kind.d.ts +198 -197
- package/dist/api/compiler/transformers/alias-references.js +247 -139
- package/dist/api/compiler/transformers/async-utilities.js +25 -25
- package/dist/api/compiler/transformers/async.d.ts +0 -1
- package/dist/api/compiler/transformers/async.js +64 -77
- package/dist/api/compiler/transformers/class-fields.d.ts +1 -0
- package/dist/api/compiler/transformers/class-fields.js +81 -78
- package/dist/api/compiler/transformers/commonjs-module.js +18 -15
- package/dist/api/compiler/transformers/const-enum-inliner.js +1 -1
- package/dist/api/compiler/transformers/declarations-diagnostics.js +247 -244
- package/dist/api/compiler/transformers/declarations-pseudo.js +100 -100
- package/dist/api/compiler/transformers/declarations-resolver.d.ts +0 -3
- package/dist/api/compiler/transformers/declarations-syntactic.d.ts +1 -2
- package/dist/api/compiler/transformers/declarations-syntactic.js +134 -156
- package/dist/api/compiler/transformers/declarations-tracker.js +18 -18
- package/dist/api/compiler/transformers/declarations.d.ts +4 -1
- package/dist/api/compiler/transformers/declarations.js +305 -238
- package/dist/api/compiler/transformers/decorator-metadata.d.ts +1 -1
- package/dist/api/compiler/transformers/decorator-metadata.js +53 -45
- package/dist/api/compiler/transformers/decorator-utilities.js +24 -24
- package/dist/api/compiler/transformers/destructuring.js +19 -18
- package/dist/api/compiler/transformers/emit-resolver.js +1 -1
- package/dist/api/compiler/transformers/es-decorators.js +55 -55
- package/dist/api/compiler/transformers/external-module-info.js +3 -3
- package/dist/api/compiler/transformers/for-await.js +25 -25
- package/dist/api/compiler/transformers/import-elision.js +14 -14
- package/dist/api/compiler/transformers/jsx.js +12 -12
- package/dist/api/compiler/transformers/legacy-decorators.js +17 -17
- package/dist/api/compiler/transformers/module.js +8 -8
- package/dist/api/compiler/transformers/named-evaluation.js +4 -4
- package/dist/api/compiler/transformers/object-rest-spread.js +20 -20
- package/dist/api/compiler/transformers/optional-chain.js +10 -10
- package/dist/api/compiler/transformers/reference-resolver.d.ts +12 -1
- package/dist/api/compiler/transformers/reference-resolver.js +131 -69
- package/dist/api/compiler/transformers/runtime-syntax.js +35 -31
- package/dist/api/compiler/transformers/subtree-facts.js +47 -47
- package/dist/api/compiler/transformers/syntax-facts.js +56 -58
- package/dist/api/compiler/transformers/type-eraser.js +73 -66
- package/dist/api/compiler/transformers/type-serialization.js +24 -24
- package/dist/api/compiler/transformers/using.js +12 -12
- package/dist/api/compiler/transformers/utilities.js +77 -77
- package/dist/api/compiler/transformers/visitor-base.js +172 -172
- package/dist/api/compiler/transformers/visitor-hooks.js +6 -2
- package/dist/api/compiler/tsconfig.d.ts +10 -2
- package/dist/api/compiler/tsconfig.js +136 -48
- package/dist/api/compiler/type-printer.js +40 -3
- package/dist/api/compiler/types.d.ts +2 -1
- package/dist/api/library/ast.generated.d.ts +42 -39
- package/dist/api/library/ast.generated.js +1 -1
- package/dist/api/library/compiler-options.generated.d.ts +111 -100
- package/dist/api/library/compiler-options.generated.js +1 -1
- package/dist/api/library/disk.js +12 -1
- package/dist/api/library/enums.generated.d.ts +206 -206
- package/dist/api/library/enums.generated.js +206 -206
- package/dist/api/library/nodes.js +26 -26
- package/package.json +9 -9
- package/src/compiler/ast-utilities.ts +99 -7
- package/src/compiler/ast.ts +58 -26
- package/src/compiler/binder.ts +39 -4
- package/src/compiler/character-codes.ts +2 -2
- package/src/compiler/checker-calls.ts +79 -9
- package/src/compiler/checker-classes.ts +78 -24
- package/src/compiler/checker-contextual.ts +6 -1
- package/src/compiler/checker-declarations.ts +31 -4
- package/src/compiler/checker-declared-types.ts +8 -5
- package/src/compiler/checker-decorators.ts +1 -1
- package/src/compiler/checker-deprecation.ts +29 -8
- package/src/compiler/checker-destructuring.ts +10 -3
- package/src/compiler/checker-emit-helpers.ts +1 -0
- package/src/compiler/checker-emit-resolver.ts +16 -6
- package/src/compiler/checker-expressions.ts +79 -46
- package/src/compiler/checker-functions.ts +21 -6
- package/src/compiler/checker-generated-code.ts +2 -22
- package/src/compiler/checker-grammar.ts +136 -62
- package/src/compiler/checker-heritage.ts +22 -21
- package/src/compiler/checker-inference.ts +514 -82
- package/src/compiler/checker-iteration.ts +18 -31
- package/src/compiler/checker-javascript.ts +1 -1
- package/src/compiler/checker-jsdoc.ts +50 -27
- package/src/compiler/checker-jsx.ts +26 -4
- package/src/compiler/checker-members.ts +200 -56
- package/src/compiler/checker-modules.ts +332 -65
- package/src/compiler/checker-narrowing.ts +98 -19
- package/src/compiler/checker-object-literals.ts +3 -0
- package/src/compiler/checker-operators.ts +11 -4
- package/src/compiler/checker-property-access.ts +7 -2
- package/src/compiler/checker-services.ts +39 -12
- package/src/compiler/checker-signatures.ts +15 -1
- package/src/compiler/checker-source-file.ts +39 -13
- package/src/compiler/checker-statements.ts +3 -2
- package/src/compiler/checker-symbol-types.ts +29 -6
- package/src/compiler/checker-symbols.ts +158 -15
- package/src/compiler/checker-type-factory.ts +124 -23
- package/src/compiler/checker-type-nodes.ts +46 -3
- package/src/compiler/checker-type-operators.ts +83 -26
- package/src/compiler/checker-types.ts +147 -4
- package/src/compiler/checker-unused.ts +9 -14
- package/src/compiler/checker.ts +203 -39
- package/src/compiler/command-line.ts +28 -28
- package/src/compiler/compile-program.ts +167 -27
- package/src/compiler/decoder.ts +13 -4
- package/src/compiler/diagnostic-messages.ts +1973 -1892
- package/src/compiler/diagnostics.ts +84 -3
- package/src/compiler/emitter.ts +57 -8
- package/src/compiler/encoder.ts +23 -8
- package/src/compiler/file-include.ts +9 -3
- package/src/compiler/file-loader.ts +197 -38
- package/src/compiler/help.ts +10 -14
- package/src/compiler/incremental.ts +165 -30
- package/src/compiler/init.ts +2 -7
- package/src/compiler/instantiation.ts +77 -22
- package/src/compiler/jsdoc.ts +3 -1
- package/src/compiler/link-tables.ts +82 -37
- package/src/compiler/locales/cs-CZ.ts +1 -1
- package/src/compiler/locales/de-DE.ts +1 -1
- package/src/compiler/locales/es-ES.ts +1 -1
- package/src/compiler/locales/fr-FR.ts +1 -1
- package/src/compiler/locales/it-IT.ts +1 -1
- package/src/compiler/locales/ja-JP.ts +1 -1
- package/src/compiler/locales/ko-KR.ts +1 -1
- package/src/compiler/locales/pl-PL.ts +1 -1
- package/src/compiler/locales/pt-BR.ts +1 -1
- package/src/compiler/locales/ru-RU.ts +1 -1
- package/src/compiler/locales/tr-TR.ts +1 -1
- package/src/compiler/locales/zh-CN.ts +1 -1
- package/src/compiler/locales/zh-TW.ts +1 -1
- package/src/compiler/module-resolution.ts +44 -8
- package/src/compiler/module-specifiers.ts +62 -20
- package/src/compiler/name-resolver.ts +9 -1
- package/src/compiler/node-builder-names.ts +236 -54
- package/src/compiler/node-builder-pseudo.ts +4 -7
- package/src/compiler/node-builder-reuse.ts +5 -4
- package/src/compiler/node-builder.ts +130 -31
- package/src/compiler/option-declarations.ts +33 -103
- package/src/compiler/options.ts +23 -62
- package/src/compiler/output-paths.ts +5 -18
- package/src/compiler/package-entrypoints.ts +345 -0
- package/src/compiler/package-json.ts +4 -4
- package/src/compiler/parallel-check.ts +326 -52
- package/src/compiler/parallel-emit.ts +320 -0
- package/src/compiler/parallel-parse.ts +16 -5
- package/src/compiler/parse-thread.ts +3 -0
- package/src/compiler/parser.ts +156 -39
- package/src/compiler/path.ts +22 -2
- package/src/compiler/printer/emit-context.ts +21 -0
- package/src/compiler/printer/factory-base.ts +10 -3
- package/src/compiler/printer/factory.ts +4 -1
- package/src/compiler/printer/helpers.ts +10 -1
- package/src/compiler/printer/name-generator.ts +24 -2
- package/src/compiler/printer/printer.ts +266 -30
- package/src/compiler/printer/utilities.ts +8 -2
- package/src/compiler/program-checker.ts +57 -5
- package/src/compiler/program-utilities.ts +23 -10
- package/src/compiler/program.ts +18 -26
- package/src/compiler/pseudo-bigint.ts +17 -0
- package/src/compiler/regexp-checker.ts +63 -30
- package/src/compiler/relations.ts +240 -77
- package/src/compiler/reparser.ts +7 -2
- package/src/compiler/scanner.ts +109 -79
- package/src/compiler/shared-results.ts +2414 -0
- package/src/compiler/show-config.ts +18 -1
- package/src/compiler/sourcemap.ts +2 -2
- package/src/compiler/symbol-accessibility.ts +26 -3
- package/src/compiler/symbol.ts +46 -24
- package/src/compiler/syntax-kind.ts +188 -187
- package/src/compiler/thread-entry.ts +64 -4
- package/src/compiler/transformers/alias-references.ts +123 -4
- package/src/compiler/transformers/async.ts +2 -17
- package/src/compiler/transformers/class-fields.ts +13 -12
- package/src/compiler/transformers/commonjs-module.ts +11 -7
- package/src/compiler/transformers/declarations-diagnostics.ts +5 -3
- package/src/compiler/transformers/declarations-pseudo.ts +2 -4
- package/src/compiler/transformers/declarations-resolver.ts +0 -3
- package/src/compiler/transformers/declarations-syntactic.ts +1 -21
- package/src/compiler/transformers/declarations.ts +134 -48
- package/src/compiler/transformers/decorator-metadata.ts +9 -1
- package/src/compiler/transformers/destructuring.ts +4 -3
- package/src/compiler/transformers/external-module-info.ts +1 -1
- package/src/compiler/transformers/jsx.ts +2 -1
- package/src/compiler/transformers/reference-resolver.ts +83 -19
- package/src/compiler/transformers/runtime-syntax.ts +6 -1
- package/src/compiler/transformers/syntax-facts.ts +2 -7
- package/src/compiler/transformers/type-eraser.ts +10 -1
- package/src/compiler/transformers/type-serialization.ts +3 -2
- package/src/compiler/transformers/visitor-base.ts +2 -1
- package/src/compiler/transformers/visitor-hooks.ts +9 -4
- package/src/compiler/tsc-build.ts +66 -9
- package/src/compiler/tsc-cli.ts +7 -0
- package/src/compiler/tsc-compile.ts +284 -4
- package/src/compiler/tsc-watch.ts +74 -45
- package/src/compiler/tsconfig.ts +176 -19
- package/src/compiler/type-printer.ts +36 -2
- package/src/compiler/types.ts +2 -1
- package/src/library/ast.generated.ts +57 -41
- package/src/library/compiler-options.generated.ts +117 -103
- package/src/library/disk.ts +10 -1
- package/src/library/enums.generated.ts +196 -196
|
@@ -109,6 +109,11 @@ export declare class Diagnostic {
|
|
|
109
109
|
readonly reportsDeprecated: boolean;
|
|
110
110
|
skippedOnNoEmit: boolean;
|
|
111
111
|
repopulateInfo: RepopulateInfo | undefined;
|
|
112
|
+
/**
|
|
113
|
+
* What `formatDiagnostic` gives for this diagnostic in `formattedReports.format`, where the checker
|
|
114
|
+
* thread that found it formatted it (`packResult`); `''` otherwise.
|
|
115
|
+
*/
|
|
116
|
+
formatted: string;
|
|
112
117
|
constructor(file: DiagnosticFile | undefined, pos: number, end: number, message: DiagnosticMessage, args?: readonly string[]);
|
|
113
118
|
localize(locale: Locale): string;
|
|
114
119
|
addMessageChain(chain: Diagnostic | undefined): Diagnostic;
|
|
@@ -132,6 +137,14 @@ export declare function chainDiagnostic(chain: Diagnostic | undefined, message:
|
|
|
132
137
|
export declare function compareCodePoints(a: string, b: string): number;
|
|
133
138
|
/** The order tsc reports diagnostics in: by file, position, code, arguments, then elaboration. */
|
|
134
139
|
export declare function compareDiagnostics(a: Diagnostic, b: Diagnostic): number;
|
|
140
|
+
/**
|
|
141
|
+
* `diagnostics` in the order of `compareDiagnostics`, equal ones in their order in `diagnostics`. File
|
|
142
|
+
* names are compared once per pair of files rather than once per pair of diagnostics: the distinct
|
|
143
|
+
* files are sorted by name, and each diagnostic sorts by its file's place in that order, then by the
|
|
144
|
+
* rest of `compareDiagnostics`. A program's diagnostics come a file at a time, so the files are found
|
|
145
|
+
* from the runs of one file.
|
|
146
|
+
*/
|
|
147
|
+
export declare function sortDiagnostics(diagnostics: readonly Diagnostic[]): Diagnostic[];
|
|
135
148
|
/** Whether two diagnostics report the same thing, ignoring related information. */
|
|
136
149
|
export declare function equalDiagnosticsNoRelatedInfo(a: Diagnostic, b: Diagnostic): boolean;
|
|
137
150
|
export declare function equalDiagnostics(a: Diagnostic, b: Diagnostic): boolean;
|
|
@@ -145,6 +158,15 @@ export interface DiagnosticFormatOptions {
|
|
|
145
158
|
export declare function flattenDiagnosticMessage(diagnostic: Diagnostic, newLine: string, locale: Locale): string;
|
|
146
159
|
/** `file(line,col): error TS1005: message`, as tsc prints without `--pretty`. */
|
|
147
160
|
export declare function formatDiagnostic(diagnostic: Diagnostic, options: DiagnosticFormatOptions): string;
|
|
161
|
+
/**
|
|
162
|
+
* The plain format the main thread reports a compilation's diagnostics in (`DiagnosticReporter.plainFormat`),
|
|
163
|
+
* which its checker threads receive a copy of and format the diagnostics they send back in
|
|
164
|
+
* (`Diagnostic.formatted`). Unset where diagnostics are reported with color and context, or not at all.
|
|
165
|
+
*/
|
|
166
|
+
export declare class FormattedReports {
|
|
167
|
+
format: DiagnosticFormatOptions | undefined;
|
|
168
|
+
}
|
|
169
|
+
export declare const formattedReports: FormattedReports;
|
|
148
170
|
/** `formatDiagnostic` of each diagnostic. */
|
|
149
171
|
export declare function formatDiagnostics(diagnostics: readonly Diagnostic[], options: DiagnosticFormatOptions): string;
|
|
150
172
|
/** The colored form with source snippets, as tsc prints with `--pretty`. */
|
|
@@ -326,6 +326,11 @@ export class Diagnostic {
|
|
|
326
326
|
reportsDeprecated;
|
|
327
327
|
skippedOnNoEmit = false;
|
|
328
328
|
repopulateInfo = undefined;
|
|
329
|
+
/**
|
|
330
|
+
* What `formatDiagnostic` gives for this diagnostic in `formattedReports.format`, where the checker
|
|
331
|
+
* thread that found it formatted it (`packResult`); `''` otherwise.
|
|
332
|
+
*/
|
|
333
|
+
formatted = '';
|
|
329
334
|
constructor(file, pos, end, message, args = []) {
|
|
330
335
|
this.file = file;
|
|
331
336
|
this.pos = pos;
|
|
@@ -358,6 +363,7 @@ export class Diagnostic {
|
|
|
358
363
|
result.relatedInformation = this.relatedInformation;
|
|
359
364
|
result.skippedOnNoEmit = this.skippedOnNoEmit;
|
|
360
365
|
result.repopulateInfo = this.repopulateInfo;
|
|
366
|
+
result.formatted = this.formatted;
|
|
361
367
|
return result;
|
|
362
368
|
}
|
|
363
369
|
}
|
|
@@ -463,10 +469,12 @@ function compareRelatedInfo(a, b) {
|
|
|
463
469
|
export function compareDiagnostics(a, b) {
|
|
464
470
|
if (a === b)
|
|
465
471
|
return 0;
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
472
|
+
const c = compareCodePoints(fileNameOf(a), fileNameOf(b));
|
|
473
|
+
return c !== 0 ? c : compareDiagnosticsInFile(a, b);
|
|
474
|
+
}
|
|
475
|
+
/** `compareDiagnostics` of two diagnostics whose files have the same name. */
|
|
476
|
+
function compareDiagnosticsInFile(a, b) {
|
|
477
|
+
let c = a.pos - b.pos;
|
|
470
478
|
if (c !== 0)
|
|
471
479
|
return c;
|
|
472
480
|
c = a.end - b.end;
|
|
@@ -486,6 +494,66 @@ export function compareDiagnostics(a, b) {
|
|
|
486
494
|
return c;
|
|
487
495
|
return compareRelatedInfo(a.relatedInformation, b.relatedInformation);
|
|
488
496
|
}
|
|
497
|
+
/**
|
|
498
|
+
* `diagnostics` in the order of `compareDiagnostics`, equal ones in their order in `diagnostics`. File
|
|
499
|
+
* names are compared once per pair of files rather than once per pair of diagnostics: the distinct
|
|
500
|
+
* files are sorted by name, and each diagnostic sorts by its file's place in that order, then by the
|
|
501
|
+
* rest of `compareDiagnostics`. A program's diagnostics come a file at a time, so the files are found
|
|
502
|
+
* from the runs of one file.
|
|
503
|
+
*/
|
|
504
|
+
export function sortDiagnostics(diagnostics) {
|
|
505
|
+
const n = diagnostics.length;
|
|
506
|
+
if (n < 2)
|
|
507
|
+
return diagnostics.slice();
|
|
508
|
+
const fileIndices = new Map();
|
|
509
|
+
const files = [];
|
|
510
|
+
const fileOf = [];
|
|
511
|
+
let last = undefined;
|
|
512
|
+
let lastIndex = -1;
|
|
513
|
+
for (let i = 0; i < n; i++) {
|
|
514
|
+
const file = diagnostics[i].file;
|
|
515
|
+
if (lastIndex < 0 || file !== last) {
|
|
516
|
+
let k = fileIndices.get(file);
|
|
517
|
+
if (k === undefined) {
|
|
518
|
+
k = files.length;
|
|
519
|
+
fileIndices.set(file, k);
|
|
520
|
+
files.push(file);
|
|
521
|
+
}
|
|
522
|
+
last = file;
|
|
523
|
+
lastIndex = k;
|
|
524
|
+
}
|
|
525
|
+
fileOf.push(lastIndex);
|
|
526
|
+
}
|
|
527
|
+
// Files with the same name share a rank, as they compare equal.
|
|
528
|
+
const nameOf = (k) => {
|
|
529
|
+
const file = files[k];
|
|
530
|
+
return file === undefined ? '' : file.fileName;
|
|
531
|
+
};
|
|
532
|
+
const byName = [];
|
|
533
|
+
for (let k = 0; k < files.length; k++)
|
|
534
|
+
byName.push(k);
|
|
535
|
+
byName.sort((x, y) => compareCodePoints(nameOf(x), nameOf(y)));
|
|
536
|
+
const rank = [];
|
|
537
|
+
for (let k = 0; k < files.length; k++)
|
|
538
|
+
rank.push(0);
|
|
539
|
+
for (let k = 1; k < byName.length; k++)
|
|
540
|
+
rank[byName[k]] = rank[byName[k - 1]] + (nameOf(byName[k]) === nameOf(byName[k - 1]) ? 0 : 1);
|
|
541
|
+
const order = [];
|
|
542
|
+
for (let i = 0; i < n; i++)
|
|
543
|
+
order.push(i);
|
|
544
|
+
order.sort((x, y) => {
|
|
545
|
+
const c = rank[fileOf[x]] - rank[fileOf[y]];
|
|
546
|
+
if (c !== 0)
|
|
547
|
+
return c;
|
|
548
|
+
const a = diagnostics[x];
|
|
549
|
+
const b = diagnostics[y];
|
|
550
|
+
return a === b ? 0 : compareDiagnosticsInFile(a, b);
|
|
551
|
+
});
|
|
552
|
+
const sorted = [];
|
|
553
|
+
for (const i of order)
|
|
554
|
+
sorted.push(diagnostics[i]);
|
|
555
|
+
return sorted;
|
|
556
|
+
}
|
|
489
557
|
function equalChain(a, b) {
|
|
490
558
|
if (a.length !== b.length)
|
|
491
559
|
return false;
|
|
@@ -567,13 +635,27 @@ function formatDiagnosticIn(diagnostic, fileName, options) {
|
|
|
567
635
|
result += `${categoryName(diagnostic.category)} TS${diagnostic.code}: `;
|
|
568
636
|
return result + flattenDiagnosticMessage(diagnostic, options.newLine, options.locale) + options.newLine;
|
|
569
637
|
}
|
|
638
|
+
/**
|
|
639
|
+
* The plain format the main thread reports a compilation's diagnostics in (`DiagnosticReporter.plainFormat`),
|
|
640
|
+
* which its checker threads receive a copy of and format the diagnostics they send back in
|
|
641
|
+
* (`Diagnostic.formatted`). Unset where diagnostics are reported with color and context, or not at all.
|
|
642
|
+
*/
|
|
643
|
+
export class FormattedReports {
|
|
644
|
+
format = undefined;
|
|
645
|
+
}
|
|
646
|
+
export const formattedReports = new FormattedReports();
|
|
570
647
|
/** `formatDiagnostic` of each diagnostic. */
|
|
571
648
|
export function formatDiagnostics(diagnostics, options) {
|
|
572
649
|
let result = '';
|
|
650
|
+
const formatted = options === formattedReports.format;
|
|
573
651
|
// Sorted diagnostics come a file at a time: the relative name of the last file is kept.
|
|
574
652
|
let lastFile = undefined;
|
|
575
653
|
let lastName = '';
|
|
576
654
|
for (const diagnostic of diagnostics) {
|
|
655
|
+
if (formatted && diagnostic.formatted !== '') {
|
|
656
|
+
result += diagnostic.formatted;
|
|
657
|
+
continue;
|
|
658
|
+
}
|
|
577
659
|
const file = diagnostic.file;
|
|
578
660
|
if (file !== undefined && file !== lastFile) {
|
|
579
661
|
lastFile = file;
|
|
@@ -665,7 +747,7 @@ export function formatDiagnosticWithColorAndContext(diagnostic, options) {
|
|
|
665
747
|
result += styled(categoryName(diagnostic.category), color);
|
|
666
748
|
result += `${grey} TS${diagnostic.code}: ${reset}`;
|
|
667
749
|
result += flattenDiagnosticMessage(diagnostic, newLine, options.locale);
|
|
668
|
-
if (file !== undefined && diagnostic.code !== messageCode(
|
|
750
|
+
if (file !== undefined && diagnostic.code !== messageCode(403 /* Diagnostics.File_appears_to_be_binary */)) {
|
|
669
751
|
result +=
|
|
670
752
|
newLine + codeSnippet(file, diagnostic.pos, diagnostic.end - diagnostic.pos, color, '', options) + newLine;
|
|
671
753
|
}
|
|
@@ -749,20 +831,20 @@ export function formatErrorSummary(diagnostics, options) {
|
|
|
749
831
|
if (totalErrorCount === 1) {
|
|
750
832
|
message =
|
|
751
833
|
globalErrorCount > 0 || firstFileName === ''
|
|
752
|
-
? localizeMessage(locale,
|
|
753
|
-
: localizeMessage(locale,
|
|
834
|
+
? localizeMessage(locale, 1380 /* Diagnostics.Found_1_error */, [])
|
|
835
|
+
: localizeMessage(locale, 1422 /* Diagnostics.Found_1_error_in_0 */, [firstFileName]);
|
|
754
836
|
}
|
|
755
837
|
else if (fileCount === 0) {
|
|
756
|
-
message = localizeMessage(locale,
|
|
838
|
+
message = localizeMessage(locale, 1381 /* Diagnostics.Found_0_errors */, [String(totalErrorCount)]);
|
|
757
839
|
}
|
|
758
840
|
else if (fileCount === 1) {
|
|
759
|
-
message = localizeMessage(locale,
|
|
841
|
+
message = localizeMessage(locale, 1423 /* Diagnostics.Found_0_errors_in_the_same_file_starting_at_Colon_1 */, [
|
|
760
842
|
String(totalErrorCount),
|
|
761
843
|
firstFileName,
|
|
762
844
|
]);
|
|
763
845
|
}
|
|
764
846
|
else {
|
|
765
|
-
message = localizeMessage(locale,
|
|
847
|
+
message = localizeMessage(locale, 1424 /* Diagnostics.Found_0_errors_in_1_files */, [
|
|
766
848
|
String(totalErrorCount),
|
|
767
849
|
String(fileCount),
|
|
768
850
|
]);
|
|
@@ -772,7 +854,7 @@ export function formatErrorSummary(diagnostics, options) {
|
|
|
772
854
|
let maxErrors = 0;
|
|
773
855
|
for (const entry of sorted)
|
|
774
856
|
maxErrors = Math.max(maxErrors, entry.errors.length);
|
|
775
|
-
const headerRow = localizeMessage(locale,
|
|
857
|
+
const headerRow = localizeMessage(locale, 1231 /* Diagnostics.Errors_Files */, []);
|
|
776
858
|
const leftColumnHeadingLength = utf8Length(headerRow.split(' ')[0]);
|
|
777
859
|
const lengthOfBiggestErrorCount = String(maxErrors).length;
|
|
778
860
|
const leftPaddingGoal = Math.max(leftColumnHeadingLength, lengthOfBiggestErrorCount);
|
|
@@ -66,6 +66,12 @@ export declare const enum EmitOnly {
|
|
|
66
66
|
* The declaration file alone, even without `declaration` and despite errors, for the shape
|
|
67
67
|
* signature of incremental builds; it is written with its errors and without a map.
|
|
68
68
|
*/
|
|
69
|
-
ForcedDts = 3
|
|
69
|
+
ForcedDts = 3,
|
|
70
|
+
/**
|
|
71
|
+
* The declaration file of a file whose JavaScript this build emits in a separate request, such as on another
|
|
72
|
+
* thread. tsgo emits both with one emit context, so the emit flags its JavaScript transforms set on the file's
|
|
73
|
+
* own nodes also apply to its declarations; this replays those transforms first.
|
|
74
|
+
*/
|
|
75
|
+
DtsAfterJs = 4
|
|
70
76
|
}
|
|
71
77
|
export declare function emitFiles(host: EmitHost, files: readonly SourceFile[], emitOnly?: EmitOnly): EmitResult;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { compareDiagnostics } from './diagnostics.js';
|
|
1
|
+
import { compareDiagnostics, equalDiagnostics } from './diagnostics.js';
|
|
2
2
|
import { JsxEmit, NewLineKind, getEmitScriptTarget, getIsolatedModules } from './options.js';
|
|
3
3
|
import { getOutputPathsFor } from './output-paths.js';
|
|
4
4
|
import { combinePaths, fileExtensionIs, getBaseFileName, getDirectoryPath, getRootLength, normalizePath, normalizeSlashes, ensureTrailingDirectorySeparator, containsPath, getNormalizedAbsolutePath, } from './path.js';
|
|
@@ -107,30 +107,52 @@ export function emitFiles(host, files, emitOnly = 0 /* EmitOnly.All */) {
|
|
|
107
107
|
if (!sourceFileMayBeEmitted(file, options) || host.isSourceFileFromExternalLibrary(file))
|
|
108
108
|
continue;
|
|
109
109
|
const paths = getOutputPathsFor(file.fileName, file.scriptKind === 6 /* ScriptKind.JSON */, options, host, forced);
|
|
110
|
+
// As in tsgo, a file's JavaScript and declarations share one emit context: emit flags that JavaScript
|
|
111
|
+
// transforms set on the file's own nodes, such as a decorated parameter's name, also apply to its declarations.
|
|
112
|
+
const context = new EmitContext();
|
|
110
113
|
if (paths.jsFilePath !== '' && (emitOnly === 0 /* EmitOnly.All */ || emitOnly === 1 /* EmitOnly.Js */)) {
|
|
111
114
|
if (host.isEmitBlocked(paths.jsFilePath))
|
|
112
115
|
result.emitSkipped = true;
|
|
113
116
|
else
|
|
114
|
-
emitJSFile(host, file, paths.jsFilePath, paths.sourceMapFilePath, result);
|
|
117
|
+
emitJSFile(host, context, file, paths.jsFilePath, paths.sourceMapFilePath, result);
|
|
115
118
|
}
|
|
116
119
|
if (paths.declarationFilePath !== '' && emitOnly !== 1 /* EmitOnly.Js */) {
|
|
117
120
|
if (!forced && host.isEmitBlocked(paths.declarationFilePath))
|
|
118
121
|
result.emitSkipped = true;
|
|
119
|
-
else
|
|
120
|
-
|
|
122
|
+
else {
|
|
123
|
+
if (emitOnly === 4 /* EmitOnly.DtsAfterJs */ && paths.jsFilePath !== '')
|
|
124
|
+
replayScriptTransforms(host, context, file);
|
|
125
|
+
emitDeclarationFile(host, context, file, paths.declarationFilePath, paths.declarationMapPath, result, forced);
|
|
126
|
+
}
|
|
121
127
|
}
|
|
122
128
|
}
|
|
123
129
|
return result;
|
|
124
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* Runs the JavaScript transforms of `file` in `context` without printing, for the emit flags they set on the
|
|
133
|
+
* file's own nodes. Only the decorator transforms set any that declaration emit prints (on decorated parameters'
|
|
134
|
+
* names), so files without decorators are skipped.
|
|
135
|
+
*/
|
|
136
|
+
function replayScriptTransforms(host, context, file) {
|
|
137
|
+
if (!new SyntaxFacts().has(file, 262144 /* SubtreeFacts.ContainsDecorators */))
|
|
138
|
+
return;
|
|
139
|
+
let transformed = file;
|
|
140
|
+
const transformers = getScriptTransformers(host, context, file);
|
|
141
|
+
for (let i = 0; i < transformers.length; i++) {
|
|
142
|
+
const transformer = transformers[i];
|
|
143
|
+
if (transformer.unsupported !== '')
|
|
144
|
+
return;
|
|
145
|
+
transformed = transformer.transformSourceFile(transformed);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
125
148
|
/** Emits a declaration file; the host's resolver must be a `DeclarationEmitResolver`. */
|
|
126
|
-
function emitDeclarationFile(host, file, declarationFilePath, declarationMapPath, result, forced) {
|
|
149
|
+
function emitDeclarationFile(host, context, file, declarationFilePath, declarationMapPath, result, forced) {
|
|
127
150
|
const resolver = host.resolver;
|
|
128
151
|
if (!(resolver instanceof DeclarationEmitResolver)) {
|
|
129
152
|
result.errors.push(file.fileName + ': declaration emit needs a declaration resolver');
|
|
130
153
|
return false;
|
|
131
154
|
}
|
|
132
155
|
const options = host.options;
|
|
133
|
-
const context = new EmitContext();
|
|
134
156
|
const transformer = new DeclarationTransformer(context, host, options, resolver, declarationFilePath);
|
|
135
157
|
const transformed = transformer.transformSourceFile(file);
|
|
136
158
|
result.declarationTransformed = true;
|
|
@@ -152,9 +174,30 @@ function emitDeclarationFile(host, file, declarationFilePath, declarationMapPath
|
|
|
152
174
|
printerOptions.omitBraceSourceMapPositions = true;
|
|
153
175
|
const printer = new Printer(printerOptions, context);
|
|
154
176
|
const emitSourceMaps = declarationMap && !fileExtensionIs(file.fileName, '.json');
|
|
155
|
-
return printSourceFile(host, declarationFilePath, forced ? '' : declarationMapPath, transformed, printer, emitSourceMaps, false, result,
|
|
156
|
-
|
|
157
|
-
|
|
177
|
+
return printSourceFile(host, declarationFilePath, forced ? '' : declarationMapPath, transformed, printer, emitSourceMaps, false, result, emitterDiagnostics(diagnostics));
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Declaration diagnostics as tsgo's emitter collects them: sorted, without repeats of an equal
|
|
181
|
+
* diagnostic. They are part of the file's signature in build info.
|
|
182
|
+
*/
|
|
183
|
+
function emitterDiagnostics(diagnostics) {
|
|
184
|
+
if (diagnostics.length < 2)
|
|
185
|
+
return diagnostics;
|
|
186
|
+
const sorted = diagnostics.toSorted(compareDiagnostics);
|
|
187
|
+
const result = [];
|
|
188
|
+
for (const diagnostic of sorted) {
|
|
189
|
+
// Equal diagnostics compare as 0, so a repeat is among the last ones kept that compare as 0.
|
|
190
|
+
let repeated = false;
|
|
191
|
+
for (let i = result.length - 1; i >= 0 && compareDiagnostics(result[i], diagnostic) === 0; i--) {
|
|
192
|
+
if (equalDiagnostics(result[i], diagnostic)) {
|
|
193
|
+
repeated = true;
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (!repeated)
|
|
198
|
+
result.push(diagnostic);
|
|
199
|
+
}
|
|
200
|
+
return result;
|
|
158
201
|
}
|
|
159
202
|
function getScriptTransformers(host, context, file) {
|
|
160
203
|
const options = host.options;
|
|
@@ -182,9 +225,8 @@ function isJsxTransformEnabled(options) {
|
|
|
182
225
|
const jsx = options.jsx;
|
|
183
226
|
return jsx === JsxEmit.React || jsx === JsxEmit.ReactJSX || jsx === JsxEmit.ReactJSXDev;
|
|
184
227
|
}
|
|
185
|
-
function emitJSFile(host, file, jsFilePath, sourceMapFilePath, result) {
|
|
228
|
+
function emitJSFile(host, context, file, jsFilePath, sourceMapFilePath, result) {
|
|
186
229
|
const options = host.options;
|
|
187
|
-
const context = new EmitContext();
|
|
188
230
|
let transformed = file;
|
|
189
231
|
const transformers = getScriptTransformers(host, context, file);
|
|
190
232
|
for (let i = 0; i < transformers.length; i++) {
|
|
@@ -125,7 +125,8 @@ export declare class IncludeProcessor {
|
|
|
125
125
|
/** The program is created: the processing diagnostics so far are those a copy takes. */
|
|
126
126
|
noteProgramCreated(): void;
|
|
127
127
|
reasonsOf(path: string): readonly FileIncludeReason[];
|
|
128
|
-
|
|
128
|
+
/** Adds an include reason of the file at `path`; returns the file's reasons. */
|
|
129
|
+
addReason(path: string, reason: FileIncludeReason): FileIncludeReason[];
|
|
129
130
|
addProcessingDiagnostic(diagnostic: ProcessingDiagnostic): void;
|
|
130
131
|
/** Reports a file name that differs from an included one only in casing. */
|
|
131
132
|
addCasingDiagnostic(file: string, existingCasing: string, currentCasing: string, reason: FileIncludeReason | undefined): void;
|
|
@@ -347,14 +347,14 @@ export class ProcessingDiagnostic {
|
|
|
347
347
|
const location = reason.getReferencedLocation(program);
|
|
348
348
|
const fileName = location.ref?.fileName ?? '';
|
|
349
349
|
if (reason.kind === 2 /* FileIncludeKind.TypeReferenceDirective */) {
|
|
350
|
-
return location.diagnosticAt(
|
|
350
|
+
return location.diagnosticAt(828 /* Diagnostics.Cannot_find_type_definition_file_for_0 */, fileName);
|
|
351
351
|
}
|
|
352
352
|
const libName = toFileNameLowerCase(fileName);
|
|
353
353
|
const unqualified = stripLibAffixes(libName);
|
|
354
354
|
const suggestion = getSpellingSuggestion(unqualified, libNames);
|
|
355
355
|
return suggestion !== ''
|
|
356
|
-
? location.diagnosticAt(
|
|
357
|
-
: location.diagnosticAt(
|
|
356
|
+
? location.diagnosticAt(866 /* Diagnostics.Cannot_find_lib_definition_for_0_Did_you_mean_1 */, libName, suggestion)
|
|
357
|
+
: location.diagnosticAt(865 /* Diagnostics.Cannot_find_lib_definition_for_0 */, libName, suggestion);
|
|
358
358
|
}
|
|
359
359
|
return this.explainFile(program);
|
|
360
360
|
}
|
|
@@ -495,12 +495,16 @@ export class IncludeProcessor {
|
|
|
495
495
|
reasonsOf(path) {
|
|
496
496
|
return this.fileIncludeReasons.get(path) ?? [];
|
|
497
497
|
}
|
|
498
|
+
/** Adds an include reason of the file at `path`; returns the file's reasons. */
|
|
498
499
|
addReason(path, reason) {
|
|
499
500
|
const reasons = this.fileIncludeReasons.get(path);
|
|
500
|
-
if (reasons === undefined)
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
501
|
+
if (reasons === undefined) {
|
|
502
|
+
const added = [reason];
|
|
503
|
+
this.fileIncludeReasons.set(path, added);
|
|
504
|
+
return added;
|
|
505
|
+
}
|
|
506
|
+
reasons.push(reason);
|
|
507
|
+
return reasons;
|
|
504
508
|
}
|
|
505
509
|
addProcessingDiagnostic(diagnostic) {
|
|
506
510
|
this.processingDiagnostics.push(diagnostic);
|
|
@@ -147,6 +147,11 @@ export declare class ProcessedFiles {
|
|
|
147
147
|
* threads (`preparedPackageJsonLookups`); `undefined` where they may miss some.
|
|
148
148
|
*/
|
|
149
149
|
readonly preparedPackageJsons: readonly PackageJsonLookup[] | undefined;
|
|
150
|
+
/**
|
|
151
|
+
* The files each file's imports and type reference directives added to the program, by index into
|
|
152
|
+
* `files`, without the file itself.
|
|
153
|
+
*/
|
|
154
|
+
readonly addedFiles: readonly (readonly number[])[];
|
|
150
155
|
constructor(resolver: Resolver,
|
|
151
156
|
/** Libraries first, sorted, then other files in load order. */
|
|
152
157
|
files: readonly SourceFile[], filesByPath: ReadonlyMap<string, SourceFile>, missingFiles: readonly string[], resolvedModules: ReadonlyMap<string, ModeAwareCache<ResolvedModule> | undefined>, typeResolutionsInFile: ReadonlyMap<string, ModeAwareCache<ResolvedTypeReferenceDirective> | undefined>, sourceFileMetadata: ReadonlyMap<string, SourceFileMetadata>, jsxRuntimeImports: ReadonlyMap<string, JsxRuntimeImport>, importHelpersImportSpecifiers: ReadonlyMap<string, StringLiteral>, libFiles: ReadonlyMap<string, LibFile>,
|
|
@@ -158,7 +163,12 @@ export declare class ProcessedFiles {
|
|
|
158
163
|
* The `package.json` lookups made resolving the files whose resolutions were taken from parse
|
|
159
164
|
* threads (`preparedPackageJsonLookups`); `undefined` where they may miss some.
|
|
160
165
|
*/
|
|
161
|
-
preparedPackageJsons: readonly PackageJsonLookup[] | undefined
|
|
166
|
+
preparedPackageJsons: readonly PackageJsonLookup[] | undefined,
|
|
167
|
+
/**
|
|
168
|
+
* The files each file's imports and type reference directives added to the program, by index into
|
|
169
|
+
* `files`, without the file itself.
|
|
170
|
+
*/
|
|
171
|
+
addedFiles: readonly (readonly number[])[]);
|
|
162
172
|
}
|
|
163
173
|
/** The files of `processed` with `file` in place of the file at its path, for `Program.updateFile`. */
|
|
164
174
|
export declare function withReplacedFile(processed: ProcessedFiles, file: SourceFile): ProcessedFiles;
|
|
@@ -186,6 +196,9 @@ export declare class FileLoader {
|
|
|
186
196
|
private readonly supportedExtensionsWithJson;
|
|
187
197
|
private readonly maxNodeModuleJsDepth;
|
|
188
198
|
private readonly rootTasks;
|
|
199
|
+
/** The tasks of each path, created when a task of the path is first queued or built ahead. */
|
|
200
|
+
private readonly taskData;
|
|
201
|
+
/** The index in `taskData` of each path's tasks. */
|
|
189
202
|
private readonly taskDataByPath;
|
|
190
203
|
/** Work queued by `start`, run last-in first-out like tsgo's single-threaded work group. */
|
|
191
204
|
private readonly work;
|
|
@@ -263,7 +276,14 @@ export declare class FileLoader {
|
|
|
263
276
|
private pathForLibFile;
|
|
264
277
|
private libFilePriority;
|
|
265
278
|
private start;
|
|
279
|
+
/** The index in `taskData` of the tasks of `path`, created if needed. */
|
|
280
|
+
private dataIndexOf;
|
|
266
281
|
private run;
|
|
282
|
+
/**
|
|
283
|
+
* Whether `run` drops `work` without loading its file: a JavaScript file past `maxNodeModuleJsDepth`,
|
|
284
|
+
* which no parse thread prepares, so the walk ahead does not wait for it.
|
|
285
|
+
*/
|
|
286
|
+
private elides;
|
|
267
287
|
/**
|
|
268
288
|
* Whether running the work of `task` (of `data`'s path) may parse a file that parse threads have not
|
|
269
289
|
* prepared yet: a task of the path not loaded yet, or `task`, a new casing.
|