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
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
type Node,
|
|
14
14
|
type SourceFile,
|
|
15
15
|
} from './ast.js';
|
|
16
|
-
import { Diagnostics, type DiagnosticMessage, type MessageWithArgs } from './diagnostics.js';
|
|
16
|
+
import { Diagnostics, type DiagnosticMessage, type MessageWithArgs, messageWithArgs } from './diagnostics.js';
|
|
17
17
|
import { FileIncludeKind, FileIncludeReason, IncludeProcessor, ProcessingDiagnostic } from './file-include.js';
|
|
18
18
|
import type { FileSystem } from './file-system.js';
|
|
19
19
|
import { ModuleResolutionHost, Resolver, getAutomaticTypeDirectiveNames } from './module-resolution.js';
|
|
@@ -42,7 +42,7 @@ import {
|
|
|
42
42
|
takePreparedFile,
|
|
43
43
|
} from './parallel-parse.js';
|
|
44
44
|
import type { PackageJsonLookup } from './package-json.js';
|
|
45
|
-
import { parseSourceFile } from './parser.js';
|
|
45
|
+
import { parseSourceFile, getScriptKindFromFileName } from './parser.js';
|
|
46
46
|
import { mark } from './timeline.js';
|
|
47
47
|
import {
|
|
48
48
|
combinePaths,
|
|
@@ -59,6 +59,7 @@ import {
|
|
|
59
59
|
supportedTSExtensionsWithJsonFlat,
|
|
60
60
|
toFileNameLowerCase,
|
|
61
61
|
toPath,
|
|
62
|
+
isNetworkPath,
|
|
62
63
|
} from './path.js';
|
|
63
64
|
import {
|
|
64
65
|
getDefaultLibFileName,
|
|
@@ -76,6 +77,7 @@ import {
|
|
|
76
77
|
SourceFileMetadata,
|
|
77
78
|
} from './program-utilities.js';
|
|
78
79
|
import { SyntaxKind } from './syntax-kind.js';
|
|
80
|
+
import { isSourcePhaseImport } from './ast-utilities.js';
|
|
79
81
|
import { hasExtension } from './vfs-match.js';
|
|
80
82
|
import { TokenFlags } from './types.js';
|
|
81
83
|
import {
|
|
@@ -140,7 +142,10 @@ export class CompilerHost extends ModuleResolutionHost {
|
|
|
140
142
|
if (prepared !== undefined) return prepared;
|
|
141
143
|
const text = this.fs.readFile(fileName);
|
|
142
144
|
if (text === undefined) return undefined;
|
|
143
|
-
|
|
145
|
+
// A file without a known extension (with allowNonTsExtensions) parses as TypeScript.
|
|
146
|
+
const kind = getScriptKindFromFileName(fileName);
|
|
147
|
+
const scriptKind = kind === ScriptKind.Unknown ? ScriptKind.TS : kind;
|
|
148
|
+
return parseSourceFile(fileName, text, new ParseOptions(path, scriptKind, externalModuleIndicatorOptions));
|
|
144
149
|
}
|
|
145
150
|
|
|
146
151
|
/** The config of a referenced project, or `undefined` if it can't be read. */
|
|
@@ -246,6 +251,8 @@ class ParseTask {
|
|
|
246
251
|
subTasks: ParseTask[] | undefined = undefined;
|
|
247
252
|
loaded = false;
|
|
248
253
|
startedSubTasks = false;
|
|
254
|
+
/** A root file name that resolved to no supported file: the task only carries its processing diagnostic. */
|
|
255
|
+
failedLookup = false;
|
|
249
256
|
metadata: SourceFileMetadata = libFileMetadata;
|
|
250
257
|
resolutionsInFile: ModeAwareCache<ResolvedModule> | undefined = undefined;
|
|
251
258
|
resolutionsTrace: MessageWithArgs[] | undefined = undefined;
|
|
@@ -256,6 +263,10 @@ class ParseTask {
|
|
|
256
263
|
jsxRuntimeImport: JsxRuntimeImport | undefined = undefined;
|
|
257
264
|
/** The task of the same file name that was loaded instead of this one. */
|
|
258
265
|
loadedTask: ParseTask | undefined = undefined;
|
|
266
|
+
/** The index in `FileLoader.taskData` of the tasks of this task's path, once known; -1 before. */
|
|
267
|
+
dataIndex = -1;
|
|
268
|
+
/** Whether an import or a type reference directive adds the file (`ProcessedFiles.addedFiles`). */
|
|
269
|
+
readonly byImport: boolean;
|
|
259
270
|
|
|
260
271
|
constructor(
|
|
261
272
|
readonly normalizedFilePath: string,
|
|
@@ -266,7 +277,10 @@ class ParseTask {
|
|
|
266
277
|
/** A JavaScript file found in `node_modules`, loaded only within `maxNodeModuleJsDepth`. */
|
|
267
278
|
readonly elideOnDepth: boolean,
|
|
268
279
|
readonly packageId: PackageId | undefined,
|
|
269
|
-
) {
|
|
280
|
+
) {
|
|
281
|
+
const kind = includeReason !== undefined ? includeReason.kind : -1;
|
|
282
|
+
this.byImport = kind === FileIncludeKind.Import || kind === FileIncludeKind.TypeReferenceDirective;
|
|
283
|
+
}
|
|
270
284
|
|
|
271
285
|
addSubTask(
|
|
272
286
|
fileName: string,
|
|
@@ -296,16 +310,45 @@ class ParseTask {
|
|
|
296
310
|
}
|
|
297
311
|
}
|
|
298
312
|
|
|
313
|
+
const noData: readonly ParseTaskData[] = [];
|
|
314
|
+
|
|
315
|
+
/** The resolution of a module the importing file declares itself: none. */
|
|
316
|
+
const locallyDeclaredModule: ResolvedModule = {
|
|
317
|
+
resolvedFileName: '',
|
|
318
|
+
originalPath: '',
|
|
319
|
+
extension: '',
|
|
320
|
+
resolvedUsingTsExtension: false,
|
|
321
|
+
packageId: undefined,
|
|
322
|
+
isExternalLibraryImport: false,
|
|
323
|
+
alternateResult: '',
|
|
324
|
+
resolutionDiagnostics: [],
|
|
325
|
+
};
|
|
326
|
+
|
|
299
327
|
/** The tasks of one path, by file name casing. */
|
|
300
328
|
class ParseTaskData {
|
|
301
329
|
readonly tasks = new Map<string, ParseTask>();
|
|
330
|
+
/** Whether a task of the path is queued (`start`). */
|
|
331
|
+
queued = false;
|
|
332
|
+
/** The path's first queued task, the first of `tasks`. */
|
|
333
|
+
first: ParseTask | undefined = undefined;
|
|
334
|
+
/**
|
|
335
|
+
* Whether every task of `tasks` is loaded (`run`): then more work of the path does nothing unless it
|
|
336
|
+
* reaches the path at a lower depth.
|
|
337
|
+
*/
|
|
338
|
+
settled = false;
|
|
302
339
|
lowestDepth = Number.MAX_SAFE_INTEGER;
|
|
303
340
|
startedSubTasks = false;
|
|
304
341
|
packageId: PackageId | undefined = undefined;
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
342
|
+
/** The index of this path's file in the program's files, once collected; -1 for none. */
|
|
343
|
+
index = -1;
|
|
344
|
+
/** For a deduplicated package's path, the tasks of the copy kept (`collect`). */
|
|
345
|
+
keptCopy: ParseTaskData | undefined = undefined;
|
|
346
|
+
/** The paths the file's imports and type reference directives add, once collected. */
|
|
347
|
+
added: readonly ParseTaskData[] = noData;
|
|
348
|
+
/** The file name `collect` reached the path by first, once it did. */
|
|
349
|
+
collectedName: string | undefined = undefined;
|
|
350
|
+
/** The path's include reasons, once `collect` found one: the list in `IncludeProcessor.fileIncludeReasons`. */
|
|
351
|
+
reasons: FileIncludeReason[] | undefined = undefined;
|
|
309
352
|
}
|
|
310
353
|
|
|
311
354
|
/** Pending processing of `tasks[index]`. */
|
|
@@ -419,6 +462,11 @@ export class ProcessedFiles {
|
|
|
419
462
|
* threads (`preparedPackageJsonLookups`); `undefined` where they may miss some.
|
|
420
463
|
*/
|
|
421
464
|
readonly preparedPackageJsons: readonly PackageJsonLookup[] | undefined,
|
|
465
|
+
/**
|
|
466
|
+
* The files each file's imports and type reference directives added to the program, by index into
|
|
467
|
+
* `files`, without the file itself.
|
|
468
|
+
*/
|
|
469
|
+
readonly addedFiles: readonly (readonly number[])[],
|
|
422
470
|
) {}
|
|
423
471
|
}
|
|
424
472
|
|
|
@@ -446,6 +494,8 @@ export function withReplacedFile(processed: ProcessedFiles, file: SourceFile): P
|
|
|
446
494
|
processed.redirectFilesByPath,
|
|
447
495
|
processed.projectReferenceMapper,
|
|
448
496
|
processed.preparedPackageJsons,
|
|
497
|
+
// The file has the same references (`canReplaceFile`), and keeps its index.
|
|
498
|
+
processed.addedFiles,
|
|
449
499
|
);
|
|
450
500
|
}
|
|
451
501
|
|
|
@@ -457,7 +507,7 @@ export function needsImportHelpersImportSpecifier(file: SourceFile, options: Com
|
|
|
457
507
|
|
|
458
508
|
/** The module `file` imports the JSX runtime from under `options`, or '' if it imports none. */
|
|
459
509
|
export function jsxRuntimeImportOf(file: SourceFile, options: CompilerOptions): string {
|
|
460
|
-
if (file
|
|
510
|
+
if (!isSourceFileJS(file) && file.scriptKind !== ScriptKind.TSX) return '';
|
|
461
511
|
return getJSXRuntimeImport(getJSXImplicitImportBase(options, file), options);
|
|
462
512
|
}
|
|
463
513
|
|
|
@@ -537,7 +587,10 @@ export class FileLoader {
|
|
|
537
587
|
private readonly supportedExtensionsWithJson: readonly (readonly string[])[];
|
|
538
588
|
private readonly maxNodeModuleJsDepth: number;
|
|
539
589
|
private readonly rootTasks: ParseTask[] = [];
|
|
540
|
-
|
|
590
|
+
/** The tasks of each path, created when a task of the path is first queued or built ahead. */
|
|
591
|
+
private readonly taskData: ParseTaskData[] = [];
|
|
592
|
+
/** The index in `taskData` of each path's tasks. */
|
|
593
|
+
private readonly taskDataByPath = new Map<string, number>();
|
|
541
594
|
/** Work queued by `start`, run last-in first-out like tsgo's single-threaded work group. */
|
|
542
595
|
private readonly work: ParseWork[] = [];
|
|
543
596
|
private readonly libFileCache = new Map<string, LibFile>();
|
|
@@ -607,7 +660,11 @@ export class FileLoader {
|
|
|
607
660
|
const loaded = prepared.loaded;
|
|
608
661
|
if (loaded === undefined) continue;
|
|
609
662
|
const subTasks = this.subTasksOf(loaded);
|
|
610
|
-
|
|
663
|
+
// Their paths and tasks, found here while threads parse rather than when the walk reaches them.
|
|
664
|
+
for (const task of subTasks) {
|
|
665
|
+
task.path = this.toPath(task.normalizedFilePath);
|
|
666
|
+
task.dataIndex = this.dataIndexOf(task.path);
|
|
667
|
+
}
|
|
611
668
|
this.subTasksAhead.set(prepared.fileName, new SubTasksAhead(loaded, subTasks));
|
|
612
669
|
}
|
|
613
670
|
}
|
|
@@ -685,7 +742,7 @@ export class FileLoader {
|
|
|
685
742
|
|
|
686
743
|
private walk(): void {
|
|
687
744
|
for (let work = this.work.pop(); work !== undefined; work = this.work.pop()) {
|
|
688
|
-
if (this.walkingAhead && this.parsesUnprepared(work.tasks[work.index], work.data)) {
|
|
745
|
+
if (this.walkingAhead && !this.elides(work) && this.parsesUnprepared(work.tasks[work.index], work.data)) {
|
|
689
746
|
this.work.push(work);
|
|
690
747
|
return;
|
|
691
748
|
}
|
|
@@ -701,6 +758,7 @@ export class FileLoader {
|
|
|
701
758
|
*/
|
|
702
759
|
release(): void {
|
|
703
760
|
this.rootTasks.length = 0;
|
|
761
|
+
this.taskData.length = 0;
|
|
704
762
|
this.taskDataByPath.clear();
|
|
705
763
|
this.work.length = 0;
|
|
706
764
|
this.subTasksAhead.clear();
|
|
@@ -880,6 +938,7 @@ export class FileLoader {
|
|
|
880
938
|
return;
|
|
881
939
|
}
|
|
882
940
|
const task = new ParseTask(absolute, undefined, reason, false, false, false, undefined);
|
|
941
|
+
task.failedLookup = true;
|
|
883
942
|
task.addProcessingDiagnostic(
|
|
884
943
|
ProcessingDiagnostic.explainingFileInclude('', reason, resolved.message, resolved.args),
|
|
885
944
|
);
|
|
@@ -906,6 +965,8 @@ export class FileLoader {
|
|
|
906
965
|
): string | ReferenceDiagnostic {
|
|
907
966
|
const allowNonTsExtensions = this.options.allowNonTsExtensions === true;
|
|
908
967
|
const diagnosticFileName = normalizeSlashes(referenceText);
|
|
968
|
+
if (isNetworkPath(fileName))
|
|
969
|
+
return new ReferenceDiagnostic(Diagnostics.Network_path_0_is_not_supported, [diagnosticFileName]);
|
|
909
970
|
const fs = this.host.fs;
|
|
910
971
|
if (hasExtension(fileName)) {
|
|
911
972
|
const canonicalFileName = getCanonicalFileName(fileName, fs.useCaseSensitiveFileNames);
|
|
@@ -1006,43 +1067,67 @@ export class FileLoader {
|
|
|
1006
1067
|
// ---- Loading
|
|
1007
1068
|
|
|
1008
1069
|
private start(tasks: ParseTask[], depth: number): void {
|
|
1070
|
+
const taskData = this.taskData;
|
|
1009
1071
|
for (let i = 0; i < tasks.length; i++) {
|
|
1010
1072
|
const task = tasks[i];
|
|
1011
|
-
// Sub-tasks built ahead have their paths.
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1073
|
+
// Sub-tasks built ahead have their paths and tasks.
|
|
1074
|
+
let k = task.dataIndex;
|
|
1075
|
+
if (k < 0) {
|
|
1076
|
+
if (task.path === '') task.path = this.toPath(task.normalizedFilePath);
|
|
1077
|
+
k = this.dataIndexOf(task.path);
|
|
1078
|
+
task.dataIndex = k;
|
|
1079
|
+
}
|
|
1080
|
+
const data = taskData[k];
|
|
1081
|
+
const loaded = data.queued;
|
|
1082
|
+
if (!loaded) {
|
|
1083
|
+
data.queued = true;
|
|
1084
|
+
data.first = task;
|
|
1085
|
+
data.tasks.set(task.normalizedFilePath, task);
|
|
1018
1086
|
}
|
|
1019
1087
|
this.work.push(new ParseWork(tasks, i, data, loaded, depth));
|
|
1020
1088
|
}
|
|
1021
1089
|
}
|
|
1022
1090
|
|
|
1091
|
+
/** The index in `taskData` of the tasks of `path`, created if needed. */
|
|
1092
|
+
private dataIndexOf(path: string): number {
|
|
1093
|
+
let k = this.taskDataByPath.get(path);
|
|
1094
|
+
if (k === undefined) {
|
|
1095
|
+
k = this.taskData.length;
|
|
1096
|
+
this.taskData.push(new ParseTaskData());
|
|
1097
|
+
this.taskDataByPath.set(path, k);
|
|
1098
|
+
}
|
|
1099
|
+
return k;
|
|
1100
|
+
}
|
|
1101
|
+
|
|
1023
1102
|
private run(work: ParseWork): void {
|
|
1024
1103
|
const task = work.tasks[work.index];
|
|
1025
1104
|
const data = work.data;
|
|
1026
1105
|
let startSubTasks = false;
|
|
1027
1106
|
if (work.loaded) {
|
|
1028
|
-
const
|
|
1107
|
+
const name = task.normalizedFilePath;
|
|
1108
|
+
const first = data.first;
|
|
1109
|
+
const existing = first !== undefined && first.normalizedFilePath === name ? first : data.tasks.get(name);
|
|
1029
1110
|
if (existing !== undefined) {
|
|
1030
1111
|
task.loadedTask = existing;
|
|
1031
1112
|
} else {
|
|
1032
|
-
data.tasks.set(
|
|
1113
|
+
data.tasks.set(name, task);
|
|
1114
|
+
data.settled = false;
|
|
1033
1115
|
// A new casing of a file: load its references if another casing's were.
|
|
1034
1116
|
startSubTasks = data.startedSubTasks;
|
|
1035
1117
|
}
|
|
1036
1118
|
}
|
|
1037
1119
|
if (data.packageId === undefined && task.packageId !== undefined) data.packageId = task.packageId;
|
|
1038
1120
|
const depth = task.increaseDepth ? work.depth + 1 : work.depth;
|
|
1039
|
-
|
|
1121
|
+
const lowered = depth < data.lowestDepth;
|
|
1122
|
+
if (lowered) {
|
|
1040
1123
|
// Reached at a lower depth than before: load references again.
|
|
1041
1124
|
data.lowestDepth = depth;
|
|
1042
1125
|
startSubTasks = true;
|
|
1043
1126
|
data.startedSubTasks = true;
|
|
1044
1127
|
}
|
|
1045
1128
|
if (task.elideOnDepth && depth > this.maxNodeModuleJsDepth) return;
|
|
1129
|
+
// Most work reaches a path already loaded, at no lower depth.
|
|
1130
|
+
if (data.settled && !startSubTasks) return;
|
|
1046
1131
|
for (const taskByFileName of data.tasks.values()) {
|
|
1047
1132
|
let loadSubTasks = startSubTasks;
|
|
1048
1133
|
if (!taskByFileName.loaded) {
|
|
@@ -1052,11 +1137,23 @@ export class FileLoader {
|
|
|
1052
1137
|
data.startedSubTasks = true;
|
|
1053
1138
|
}
|
|
1054
1139
|
}
|
|
1055
|
-
|
|
1140
|
+
// A lower depth restarts references already started, which may now be loaded past `maxNodeModuleJsDepth`.
|
|
1141
|
+
// Every file reached from them is at least as deep, so a depth past it changes nothing they load.
|
|
1142
|
+
if (loadSubTasks && ((lowered && depth <= this.maxNodeModuleJsDepth) || !taskByFileName.startedSubTasks)) {
|
|
1056
1143
|
taskByFileName.startedSubTasks = true;
|
|
1057
1144
|
if (taskByFileName.subTasks !== undefined) this.start(taskByFileName.subTasks, data.lowestDepth);
|
|
1058
1145
|
}
|
|
1059
1146
|
}
|
|
1147
|
+
data.settled = true;
|
|
1148
|
+
}
|
|
1149
|
+
|
|
1150
|
+
/**
|
|
1151
|
+
* Whether `run` drops `work` without loading its file: a JavaScript file past `maxNodeModuleJsDepth`,
|
|
1152
|
+
* which no parse thread prepares, so the walk ahead does not wait for it.
|
|
1153
|
+
*/
|
|
1154
|
+
private elides(work: ParseWork): boolean {
|
|
1155
|
+
const task = work.tasks[work.index];
|
|
1156
|
+
return task.elideOnDepth && (task.increaseDepth ? work.depth + 1 : work.depth) > this.maxNodeModuleJsDepth;
|
|
1060
1157
|
}
|
|
1061
1158
|
|
|
1062
1159
|
/**
|
|
@@ -1076,6 +1173,7 @@ export class FileLoader {
|
|
|
1076
1173
|
this.loadAutomaticTypeDirectives(task);
|
|
1077
1174
|
return;
|
|
1078
1175
|
}
|
|
1176
|
+
if (task.failedLookup) return;
|
|
1079
1177
|
const redirect = this.mapper.getParseFileRedirect(task.path);
|
|
1080
1178
|
if (redirect !== '') {
|
|
1081
1179
|
const redirected = new ParseTask(
|
|
@@ -1324,8 +1422,24 @@ export class FileLoader {
|
|
|
1324
1422
|
for (let index = 0; index < moduleNames.length; index++) {
|
|
1325
1423
|
const entry = moduleNames[index];
|
|
1326
1424
|
const moduleName = getText(entry);
|
|
1327
|
-
|
|
1425
|
+
// A source phase import loads no module declarations.
|
|
1426
|
+
if (moduleName === '' || isSourcePhaseImport(entry.parent!)) continue;
|
|
1328
1427
|
const mode = getModeForUsageLocation(file.fileName, task.metadata, entry, options);
|
|
1428
|
+
// A module the file declares itself (`declare module "m"`) isn't resolved.
|
|
1429
|
+
if (file.ambientModuleNames.includes(moduleName)) {
|
|
1430
|
+
if (options.traceResolution === true)
|
|
1431
|
+
task
|
|
1432
|
+
.moduleTraces(true)!
|
|
1433
|
+
.push(
|
|
1434
|
+
messageWithArgs(
|
|
1435
|
+
Diagnostics.Module_0_was_resolved_as_locally_declared_ambient_module_in_file_1,
|
|
1436
|
+
moduleName,
|
|
1437
|
+
file.fileName,
|
|
1438
|
+
),
|
|
1439
|
+
);
|
|
1440
|
+
resolutions.set(modeAwareKey(moduleName, mode), locallyDeclaredModule);
|
|
1441
|
+
continue;
|
|
1442
|
+
}
|
|
1329
1443
|
const resolved = this.resolver.resolveModuleName(
|
|
1330
1444
|
moduleName,
|
|
1331
1445
|
containingFile,
|
|
@@ -1392,20 +1506,28 @@ export class FileLoader {
|
|
|
1392
1506
|
const redirectFilesByPath = new Map<string, RedirectFile>();
|
|
1393
1507
|
const packageIdToSourceFile = new Map<string, SourceFile>();
|
|
1394
1508
|
const checkCasing = this.options.forceConsistentCasingInFileNames !== false;
|
|
1395
|
-
const
|
|
1396
|
-
|
|
1397
|
-
|
|
1509
|
+
const taskData = this.taskData;
|
|
1510
|
+
// The paths each file's imports and type reference directives add (the tasks of each path), for
|
|
1511
|
+
// `ProcessedFiles.addedFiles`: recorded while collecting visits them, as their files are only known
|
|
1512
|
+
// once every file is collected.
|
|
1513
|
+
const fileData: ParseTaskData[] = [];
|
|
1514
|
+
const libData = new Map<SourceFile, ParseTaskData>();
|
|
1515
|
+
const packageIdToData = new Map<string, ParseTaskData>();
|
|
1516
|
+
|
|
1517
|
+
const collectFiles = (tasks: readonly ParseTask[], added: ParseTaskData[] | undefined): void => {
|
|
1398
1518
|
for (let task of tasks) {
|
|
1399
1519
|
const includeReason = task.includeReason;
|
|
1520
|
+
const byImport = task.byImport;
|
|
1400
1521
|
// Automatic type directive tasks are an implementation detail, not a reason.
|
|
1401
1522
|
if (task.redirectedParseTask === undefined && !task.isForAutomaticTypeDirective) {
|
|
1402
1523
|
if (task.loadedTask !== undefined) task = task.loadedTask;
|
|
1403
|
-
if (includeReason !== undefined) addIncludeReason(includeProcessor, task, includeReason);
|
|
1524
|
+
if (includeReason !== undefined) addIncludeReason(includeProcessor, taskData, task, includeReason);
|
|
1404
1525
|
}
|
|
1405
|
-
const data =
|
|
1526
|
+
const data = task.dataIndex >= 0 ? taskData[task.dataIndex] : undefined;
|
|
1527
|
+
if (added !== undefined && data !== undefined && byImport) added.push(data);
|
|
1406
1528
|
if (!task.loaded || data === undefined) continue;
|
|
1407
1529
|
|
|
1408
|
-
const checkedName =
|
|
1530
|
+
const checkedName = data.collectedName;
|
|
1409
1531
|
if (checkedName !== undefined) {
|
|
1410
1532
|
// The same name normalizes the same: only another spelling needs comparing.
|
|
1411
1533
|
if (
|
|
@@ -1418,7 +1540,7 @@ export class FileLoader {
|
|
|
1418
1540
|
}
|
|
1419
1541
|
continue;
|
|
1420
1542
|
}
|
|
1421
|
-
|
|
1543
|
+
data.collectedName = task.normalizedFilePath;
|
|
1422
1544
|
|
|
1423
1545
|
if (tasksSeenByNameIgnoreCase !== undefined) {
|
|
1424
1546
|
const lowerCasePath = toFileNameLowerCase(task.path);
|
|
@@ -1457,13 +1579,18 @@ export class FileLoader {
|
|
|
1457
1579
|
),
|
|
1458
1580
|
);
|
|
1459
1581
|
filesByPath.set(task.path, packageIdFile);
|
|
1582
|
+
data.keptCopy = packageIdToData.get(key);
|
|
1460
1583
|
if (data.lowestDepth > 0) sourceFilesFoundSearchingNodeModules.add(task.path);
|
|
1461
1584
|
continue;
|
|
1462
1585
|
}
|
|
1463
|
-
if (file !== undefined)
|
|
1586
|
+
if (file !== undefined) {
|
|
1587
|
+
packageIdToSourceFile.set(key, file);
|
|
1588
|
+
packageIdToData.set(key, data);
|
|
1589
|
+
}
|
|
1464
1590
|
}
|
|
1465
1591
|
|
|
1466
|
-
|
|
1592
|
+
let own: ParseTaskData[] | undefined = undefined;
|
|
1593
|
+
if (task.subTasks !== undefined && task.subTasks.length > 0) collectFiles(task.subTasks, (own = []));
|
|
1467
1594
|
|
|
1468
1595
|
const redirected = task.redirectedParseTask;
|
|
1469
1596
|
if (redirected !== undefined) {
|
|
@@ -1476,19 +1603,24 @@ export class FileLoader {
|
|
|
1476
1603
|
includeProcessor.addProcessingDiagnostic(diagnostic);
|
|
1477
1604
|
continue;
|
|
1478
1605
|
}
|
|
1479
|
-
const path = task.path;
|
|
1480
1606
|
for (const diagnostic of task.processingDiagnostics ?? noProcessingDiagnostics)
|
|
1481
1607
|
includeProcessor.addProcessingDiagnostic(diagnostic);
|
|
1482
1608
|
if (file === undefined) {
|
|
1483
1609
|
missingFiles.push(task.normalizedFilePath);
|
|
1484
1610
|
continue;
|
|
1485
1611
|
}
|
|
1612
|
+
// The program's maps of the file are keyed by the file's own path: lookups by `file.path` then find
|
|
1613
|
+
// the same string, also for a file a parse thread created, whose path is another string than the task's.
|
|
1614
|
+
const path = file.path === task.path ? file.path : task.path;
|
|
1486
1615
|
if (task.libFile !== undefined) {
|
|
1487
1616
|
libFiles.push(file);
|
|
1617
|
+
libData.set(file, data);
|
|
1488
1618
|
libFilesByPath.set(path, task.libFile);
|
|
1489
1619
|
} else {
|
|
1490
1620
|
files.push(file);
|
|
1621
|
+
fileData.push(data);
|
|
1491
1622
|
}
|
|
1623
|
+
if (own !== undefined) data.added = own;
|
|
1492
1624
|
filesByPath.set(path, file);
|
|
1493
1625
|
resolvedModules.set(path, task.resolutionsInFile);
|
|
1494
1626
|
typeResolutionsInFile.set(path, task.typeResolutionsInFile);
|
|
@@ -1500,13 +1632,28 @@ export class FileLoader {
|
|
|
1500
1632
|
if (data.lowestDepth > 0) sourceFilesFoundSearchingNodeModules.add(path);
|
|
1501
1633
|
}
|
|
1502
1634
|
};
|
|
1503
|
-
collectFiles(this.rootTasks);
|
|
1635
|
+
collectFiles(this.rootTasks, undefined);
|
|
1504
1636
|
|
|
1505
1637
|
const priorities = new Map<SourceFile, number>();
|
|
1506
1638
|
for (const file of libFiles) priorities.set(file, this.libFilePriority(file));
|
|
1507
1639
|
libFiles.sort((a, b) => (priorities.get(a) ?? 0) - (priorities.get(b) ?? 0));
|
|
1508
1640
|
const allFiles = [...libFiles, ...files];
|
|
1509
1641
|
for (const redirect of redirectFilesByPath.values()) redirect.index += libFiles.length;
|
|
1642
|
+
// The files a file adds, without reading its resolutions again or looking up their paths.
|
|
1643
|
+
const dataOfFiles: ParseTaskData[] = [];
|
|
1644
|
+
for (const file of libFiles) dataOfFiles.push(libData.get(file)!);
|
|
1645
|
+
for (const data of fileData) dataOfFiles.push(data);
|
|
1646
|
+
for (let i = 0; i < dataOfFiles.length; i++) dataOfFiles[i]!.index = i;
|
|
1647
|
+
const addedFiles: number[][] = [];
|
|
1648
|
+
for (let i = 0; i < dataOfFiles.length; i++) {
|
|
1649
|
+
const added: number[] = [];
|
|
1650
|
+
for (const data of dataOfFiles[i]!.added) {
|
|
1651
|
+
const kept = data.keptCopy;
|
|
1652
|
+
const k = kept !== undefined ? kept.index : data.index;
|
|
1653
|
+
if (k >= 0 && k !== i) added.push(k);
|
|
1654
|
+
}
|
|
1655
|
+
addedFiles.push(added);
|
|
1656
|
+
}
|
|
1510
1657
|
|
|
1511
1658
|
const keys = [...this.libResolutions.keys()].sort();
|
|
1512
1659
|
for (const key of keys) {
|
|
@@ -1536,6 +1683,7 @@ export class FileLoader {
|
|
|
1536
1683
|
redirectFilesByPath,
|
|
1537
1684
|
this.mapper,
|
|
1538
1685
|
this.tookPreparedResolutions ? preparedPackageJsonLookups() : noPackageJsonLookups,
|
|
1686
|
+
addedFiles,
|
|
1539
1687
|
);
|
|
1540
1688
|
}
|
|
1541
1689
|
}
|
|
@@ -1547,10 +1695,21 @@ export function releaseLater(loader: FileLoader): void {
|
|
|
1547
1695
|
setImmediate(() => loader.release());
|
|
1548
1696
|
}
|
|
1549
1697
|
|
|
1550
|
-
function addIncludeReason(
|
|
1698
|
+
function addIncludeReason(
|
|
1699
|
+
processor: IncludeProcessor,
|
|
1700
|
+
taskData: readonly ParseTaskData[],
|
|
1701
|
+
task: ParseTask,
|
|
1702
|
+
reason: FileIncludeReason,
|
|
1703
|
+
): void {
|
|
1551
1704
|
const redirected = task.redirectedParseTask;
|
|
1552
|
-
if (redirected !== undefined) addIncludeReason(processor, redirected, reason);
|
|
1553
|
-
else if (task.loaded)
|
|
1705
|
+
if (redirected !== undefined) addIncludeReason(processor, taskData, redirected, reason);
|
|
1706
|
+
else if (task.loaded) {
|
|
1707
|
+
// The path's list, without looking the path up for each reference to the file.
|
|
1708
|
+
const data = task.dataIndex >= 0 ? taskData[task.dataIndex] : undefined;
|
|
1709
|
+
if (data === undefined) processor.addReason(task.path, reason);
|
|
1710
|
+
else if (data.reasons !== undefined) data.reasons.push(reason);
|
|
1711
|
+
else data.reasons = processor.addReason(task.path, reason);
|
|
1712
|
+
}
|
|
1554
1713
|
}
|
|
1555
1714
|
|
|
1556
1715
|
function createProjectReferenceTasks(paths: readonly string[]): ProjectReferenceTask[] {
|
package/src/compiler/help.ts
CHANGED
|
@@ -8,18 +8,24 @@ import {
|
|
|
8
8
|
buildOptionDeclarations,
|
|
9
9
|
optionDeclarations,
|
|
10
10
|
optionsForBuild,
|
|
11
|
-
optionsForWatch,
|
|
12
11
|
sameEnumValue,
|
|
13
12
|
type OptionDeclaration,
|
|
14
13
|
} from './option-declarations.js';
|
|
15
14
|
import type { System } from './tsc-cli.js';
|
|
16
15
|
|
|
17
|
-
export const version = '7.0
|
|
16
|
+
export const version = '7.1.0-beta';
|
|
18
17
|
|
|
19
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Whether output gets colors. As in Node, a set `FORCE_COLOR` decides: on when empty, `1`, `2`, `3` or `true`, off
|
|
20
|
+
* otherwise. Then `NO_COLOR` or `TERM=dumb` turn colors off, else they follow the TTY check.
|
|
21
|
+
*/
|
|
20
22
|
export function defaultIsPretty(sys: System): boolean {
|
|
23
|
+
if (sys.hasEnvironmentVariable('FORCE_COLOR')) {
|
|
24
|
+
const forceColor = sys.getEnvironmentVariable('FORCE_COLOR');
|
|
25
|
+
return forceColor === '' || forceColor === '1' || forceColor === '2' || forceColor === '3' || forceColor === 'true';
|
|
26
|
+
}
|
|
21
27
|
if (sys.getEnvironmentVariable('NO_COLOR') !== '') return false;
|
|
22
|
-
if (sys.getEnvironmentVariable('
|
|
28
|
+
if (sys.getEnvironmentVariable('TERM') === 'dumb') return false;
|
|
23
29
|
return sys.writeOutputIsTTY;
|
|
24
30
|
}
|
|
25
31
|
|
|
@@ -262,16 +268,6 @@ function printAllHelp(writer: HelpWriter, options: readonly OptionDeclaration[])
|
|
|
262
268
|
undefined,
|
|
263
269
|
learnMore(writer),
|
|
264
270
|
);
|
|
265
|
-
out += sectionOutput(
|
|
266
|
-
writer,
|
|
267
|
-
writer.text(Diagnostics.WATCH_OPTIONS),
|
|
268
|
-
optionsForWatch,
|
|
269
|
-
false,
|
|
270
|
-
writer.text(
|
|
271
|
-
Diagnostics.Including_watch_w_will_start_watching_the_current_project_for_the_file_changes_Once_set_you_can_config_watch_mode_with_Colon,
|
|
272
|
-
),
|
|
273
|
-
undefined,
|
|
274
|
-
);
|
|
275
271
|
out += sectionOutput(
|
|
276
272
|
writer,
|
|
277
273
|
writer.text(Diagnostics.BUILD_OPTIONS),
|