tsc-ts 0.0.10 → 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 +1 -1
- 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 +20 -15
- package/dist/api/compiler/ast.js +1023 -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 +173 -123
- 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 +469 -438
- 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 -113
- 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 +210 -74
- 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 +137 -34
- 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 +93 -31
- package/dist/api/compiler/checker.js +143 -35
- 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 +19 -4
- package/dist/api/compiler/compile-program.js +45 -26
- package/dist/api/compiler/diagnostic-messages.d.ts +1849 -1774
- package/dist/api/compiler/diagnostic-messages.js +128 -122
- package/dist/api/compiler/diagnostics.js +7 -7
- 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 +10 -0
- package/dist/api/compiler/file-loader.js +138 -41
- 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/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 +3 -1
- package/dist/api/compiler/printer/emit-context.js +16 -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 +1 -0
- package/dist/api/compiler/printer/printer.js +303 -281
- package/dist/api/compiler/printer/utilities.js +149 -147
- package/dist/api/compiler/program-checker.d.ts +8 -2
- package/dist/api/compiler/program-checker.js +84 -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 +2 -0
- package/dist/api/compiler/program.js +69 -57
- 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 +337 -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 +22 -13
- package/dist/api/compiler/symbol.js +15 -1
- 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 +55 -26
- package/src/compiler/binder.ts +39 -4
- package/src/compiler/character-codes.ts +2 -2
- package/src/compiler/checker-calls.ts +76 -8
- 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 +133 -60
- package/src/compiler/checker-heritage.ts +22 -21
- package/src/compiler/checker-inference.ts +514 -87
- 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 +197 -55
- 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 +120 -21
- 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 +168 -41
- package/src/compiler/command-line.ts +28 -28
- package/src/compiler/compile-program.ts +51 -25
- package/src/compiler/decoder.ts +13 -4
- package/src/compiler/diagnostic-messages.ts +1973 -1892
- 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 +139 -32
- package/src/compiler/help.ts +10 -14
- package/src/compiler/incremental.ts +86 -18
- 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 +197 -8
- package/src/compiler/parallel-emit.ts +1 -1
- package/src/compiler/parser.ts +156 -39
- package/src/compiler/path.ts +22 -2
- package/src/compiler/printer/emit-context.ts +16 -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 +35 -14
- package/src/compiler/printer/utilities.ts +8 -2
- package/src/compiler/program-checker.ts +53 -5
- package/src/compiler/program-utilities.ts +23 -10
- package/src/compiler/program.ts +13 -1
- package/src/compiler/pseudo-bigint.ts +17 -0
- package/src/compiler/regexp-checker.ts +63 -30
- package/src/compiler/relations.ts +233 -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 +31 -14
- package/src/compiler/syntax-kind.ts +188 -187
- package/src/compiler/thread-entry.ts +19 -2
- 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 +3 -0
- package/src/compiler/tsc-cli.ts +2 -0
- package/src/compiler/tsc-compile.ts +7 -2
- 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
|
@@ -104,6 +104,7 @@ const enum Features {
|
|
|
104
104
|
Node16Default = Imports | SelfName | Exports | ExportsPatternTrailers,
|
|
105
105
|
NodeNextDefault = Imports | SelfName | Exports | ExportsPatternTrailers | ImportsPatternRoot,
|
|
106
106
|
BundlerDefault = Imports | SelfName | Exports | ExportsPatternTrailers | ImportsPatternRoot,
|
|
107
|
+
All = Imports | SelfName | Exports | ExportsPatternTrailers | ImportsPatternRoot,
|
|
107
108
|
}
|
|
108
109
|
|
|
109
110
|
function extensionsToString(extensions: number): string {
|
|
@@ -306,9 +307,11 @@ export class Resolver {
|
|
|
306
307
|
/**
|
|
307
308
|
* Called before the resolver is shared with other threads, which makes it immutable
|
|
308
309
|
* (parallel-check.ts): from then on, each thread caches the results and `package.json` lookups the
|
|
309
|
-
* resolver did not have yet in tables of its own.
|
|
310
|
+
* resolver did not have yet in tables of its own. A resolver already shared (by an earlier program of
|
|
311
|
+
* a watch, which a rebuild updates: `Program.updateFile`) is immutable and stays as it is.
|
|
310
312
|
*/
|
|
311
313
|
prepareForSharing(): void {
|
|
314
|
+
if (this.shared) return;
|
|
312
315
|
this.getPathPatterns();
|
|
313
316
|
this.packageJsonInfoCache.prepareForSharing();
|
|
314
317
|
this.shared = true;
|
|
@@ -524,6 +527,27 @@ export class Resolver {
|
|
|
524
527
|
return state.getPackageScopeForPath(directory);
|
|
525
528
|
}
|
|
526
529
|
|
|
530
|
+
/**
|
|
531
|
+
* The TypeScript or declaration file a package's directory loads (its `typings`, `types` or `main` field, or
|
|
532
|
+
* an index file), as tsgo finds a package's main entrypoint; `''` for none.
|
|
533
|
+
*/
|
|
534
|
+
loadPackageMainEntrypoint(info: PackageJsonInfo): string {
|
|
535
|
+
const state = this.entrypointState(info.packageDirectory);
|
|
536
|
+
return state.loadPackageMainEntrypoint(info);
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
/** The TypeScript or declaration file an `exports` target path of a package loads; `''` for none. */
|
|
540
|
+
loadPackageExportTargetEntrypoint(packageDirectory: string, candidate: string, target: string): string {
|
|
541
|
+
return this.entrypointState(packageDirectory).loadPackageExportTargetEntrypoint(candidate, target);
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
private entrypointState(packageDirectory: string): ResolutionState {
|
|
545
|
+
const state = new ResolutionState(this, undefined, '', packageDirectory, false, ModuleKind.None, this.options);
|
|
546
|
+
state.extensions = Extensions.TypeScript | Extensions.Declaration;
|
|
547
|
+
state.features = Features.All;
|
|
548
|
+
return state;
|
|
549
|
+
}
|
|
550
|
+
|
|
527
551
|
/** Resolves an `extends` specifier of a tsconfig file. */
|
|
528
552
|
resolveConfig(moduleName: string, containingFile: string): ResolvedModule {
|
|
529
553
|
const state = new ResolutionState(
|
|
@@ -715,8 +739,9 @@ class ResolutionState {
|
|
|
715
739
|
this.trace(Diagnostics.Directory_0_does_not_exist_skipping_all_lookups_in_it, typeRoot);
|
|
716
740
|
continue;
|
|
717
741
|
}
|
|
718
|
-
|
|
719
|
-
|
|
742
|
+
// Configured type roots resolve as files or directories, like modules; a name ending in a separator
|
|
743
|
+
// only as a directory.
|
|
744
|
+
if (fromConfig && !hasTrailingDirectorySeparator(candidate)) {
|
|
720
745
|
const fromFile = this.loadModuleFromFile(Extensions.Declaration, candidate);
|
|
721
746
|
if (fromFile !== undefined) {
|
|
722
747
|
this.setPackageIdFromNodeModulesPath(fromFile);
|
|
@@ -755,12 +780,13 @@ class ResolutionState {
|
|
|
755
780
|
}
|
|
756
781
|
}
|
|
757
782
|
|
|
783
|
+
/** The type root's path for the name, resolved against the type root as tsgo does: `./css` in it is `css`. */
|
|
758
784
|
private getCandidateFromTypeRoot(typeRoot: string): string {
|
|
759
785
|
const name =
|
|
760
786
|
typeRoot.endsWith('/node_modules/@types') || typeRoot.endsWith('/node_modules/@types/')
|
|
761
787
|
? this.mangleScopedPackageName(this.name)
|
|
762
788
|
: this.name;
|
|
763
|
-
return combinePaths(typeRoot, name);
|
|
789
|
+
return normalizePath(combinePaths(typeRoot, name));
|
|
764
790
|
}
|
|
765
791
|
|
|
766
792
|
private mangleScopedPackageName(name: string): string {
|
|
@@ -781,10 +807,12 @@ class ResolutionState {
|
|
|
781
807
|
this.trace(Diagnostics.Directory_0_does_not_exist_skipping_all_lookups_in_it, typeRoot);
|
|
782
808
|
continue;
|
|
783
809
|
}
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
810
|
+
if (!hasTrailingDirectorySeparator(candidate)) {
|
|
811
|
+
const fromFile = this.loadModuleFromFile(Extensions.Declaration, candidate);
|
|
812
|
+
if (fromFile !== undefined) {
|
|
813
|
+
this.setPackageIdFromNodeModulesPath(fromFile);
|
|
814
|
+
return fromFile;
|
|
815
|
+
}
|
|
788
816
|
}
|
|
789
817
|
const fromDirectory = this.loadNodeModuleFromDirectory(Extensions.Declaration, candidate, true);
|
|
790
818
|
if (fromDirectory !== undefined) return fromDirectory;
|
|
@@ -1825,6 +1853,14 @@ class ResolutionState {
|
|
|
1825
1853
|
return false;
|
|
1826
1854
|
}
|
|
1827
1855
|
|
|
1856
|
+
loadPackageMainEntrypoint(info: PackageJsonInfo): string {
|
|
1857
|
+
return this.loadNodeModuleFromDirectoryWorker(this.extensions, info.packageDirectory, info)?.path ?? '';
|
|
1858
|
+
}
|
|
1859
|
+
|
|
1860
|
+
loadPackageExportTargetEntrypoint(candidate: string, target: string): string {
|
|
1861
|
+
return this.loadFileNameFromPackageJsonField(this.extensions, candidate, target)?.path ?? '';
|
|
1862
|
+
}
|
|
1863
|
+
|
|
1828
1864
|
private loadNodeModuleFromDirectory(
|
|
1829
1865
|
extensions: number,
|
|
1830
1866
|
candidate: string,
|
|
@@ -154,6 +154,21 @@ class ResolvedPreferences {
|
|
|
154
154
|
|
|
155
155
|
//// Entry points
|
|
156
156
|
|
|
157
|
+
/** Where a module specifier came from: an existing import (None), `node_modules`, `paths`, a redirect, a relative path, or an ambient module. */
|
|
158
|
+
export const enum ModuleSpecifierResultKind {
|
|
159
|
+
None,
|
|
160
|
+
NodeModules,
|
|
161
|
+
Paths,
|
|
162
|
+
Redirect,
|
|
163
|
+
Relative,
|
|
164
|
+
Ambient,
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export interface ModuleSpecifiersResult {
|
|
168
|
+
readonly specifiers: string[];
|
|
169
|
+
readonly kind: ModuleSpecifierResultKind;
|
|
170
|
+
}
|
|
171
|
+
|
|
157
172
|
/**
|
|
158
173
|
* Specifiers `importingFile` can import `moduleFileName` with, best first, as tsgo's
|
|
159
174
|
* `GetModuleSpecifiersForFileWithInfo`. `overrideImportMode` is `None` for the file's own mode.
|
|
@@ -167,6 +182,27 @@ export function getModuleSpecifiersForFile(
|
|
|
167
182
|
overrideImportMode: ModuleKind,
|
|
168
183
|
forAutoImports: boolean,
|
|
169
184
|
): string[] {
|
|
185
|
+
return getModuleSpecifiersForFileWithInfo(
|
|
186
|
+
importingFile,
|
|
187
|
+
moduleFileName,
|
|
188
|
+
options,
|
|
189
|
+
host,
|
|
190
|
+
preferences,
|
|
191
|
+
overrideImportMode,
|
|
192
|
+
forAutoImports,
|
|
193
|
+
).specifiers;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/** The specifiers `getModuleSpecifiersForFile` gives, and where they came from. */
|
|
197
|
+
export function getModuleSpecifiersForFileWithInfo(
|
|
198
|
+
importingFile: SourceFile,
|
|
199
|
+
moduleFileName: string,
|
|
200
|
+
options: CompilerOptions,
|
|
201
|
+
host: ModuleSpecifierHost,
|
|
202
|
+
preferences: ModuleSpecifierPreferences,
|
|
203
|
+
overrideImportMode: ModuleKind,
|
|
204
|
+
forAutoImports: boolean,
|
|
205
|
+
): ModuleSpecifiersResult {
|
|
170
206
|
const modulePaths = getAllModulePaths(
|
|
171
207
|
new ImporterInfo(host.getSourceOfProjectReferenceIfOutputIncluded(importingFile), host.useCaseSensitiveFileNames()),
|
|
172
208
|
moduleFileName,
|
|
@@ -319,7 +355,7 @@ function computeModuleSpecifiers(
|
|
|
319
355
|
userPreferences: ModuleSpecifierPreferences,
|
|
320
356
|
overrideImportMode: ModuleKind,
|
|
321
357
|
forAutoImport: boolean,
|
|
322
|
-
):
|
|
358
|
+
): ModuleSpecifiersResult {
|
|
323
359
|
const info = new ImporterInfo(importingFile.fileName, host.useCaseSensitiveFileNames());
|
|
324
360
|
const preferences = resolvePreferences(userPreferences, host, options, importingFile, '');
|
|
325
361
|
const cwd = host.getCurrentDirectory();
|
|
@@ -347,7 +383,7 @@ function computeModuleSpecifiers(
|
|
|
347
383
|
const existingMode = host.getModeForUsageLocation(importingFile, existingImport);
|
|
348
384
|
// An import resolved in another mode may not resolve the same way.
|
|
349
385
|
if (existingMode !== targetMode && existingMode !== ModuleKind.None && targetMode !== ModuleKind.None) continue;
|
|
350
|
-
return [text];
|
|
386
|
+
return { specifiers: [text], kind: ModuleSpecifierResultKind.None };
|
|
351
387
|
}
|
|
352
388
|
|
|
353
389
|
let importedFileIsInNodeModules = false;
|
|
@@ -375,7 +411,8 @@ function computeModuleSpecifiers(
|
|
|
375
411
|
if (specifier !== '') {
|
|
376
412
|
nodeModulesSpecifiers.push(specifier);
|
|
377
413
|
// A specifier for a redirect is a bare package name; nothing beats it.
|
|
378
|
-
if (modulePath.isRedirect)
|
|
414
|
+
if (modulePath.isRedirect)
|
|
415
|
+
return { specifiers: nodeModulesSpecifiers, kind: ModuleSpecifierResultKind.NodeModules };
|
|
379
416
|
}
|
|
380
417
|
const local = getLocalModuleSpecifier(
|
|
381
418
|
modulePath.fileName,
|
|
@@ -401,10 +438,12 @@ function computeModuleSpecifiers(
|
|
|
401
438
|
relativeSpecifiers.push(local);
|
|
402
439
|
}
|
|
403
440
|
}
|
|
404
|
-
if (pathsSpecifiers.length > 0) return pathsSpecifiers;
|
|
405
|
-
if (redirectPathsSpecifiers.length > 0)
|
|
406
|
-
|
|
407
|
-
|
|
441
|
+
if (pathsSpecifiers.length > 0) return { specifiers: pathsSpecifiers, kind: ModuleSpecifierResultKind.Paths };
|
|
442
|
+
if (redirectPathsSpecifiers.length > 0)
|
|
443
|
+
return { specifiers: redirectPathsSpecifiers, kind: ModuleSpecifierResultKind.Redirect };
|
|
444
|
+
if (nodeModulesSpecifiers.length > 0)
|
|
445
|
+
return { specifiers: nodeModulesSpecifiers, kind: ModuleSpecifierResultKind.NodeModules };
|
|
446
|
+
return { specifiers: relativeSpecifiers, kind: ModuleSpecifierResultKind.Relative };
|
|
408
447
|
}
|
|
409
448
|
|
|
410
449
|
/** A specifier through `paths`, `package.json` `imports`, `rootDirs` or a relative path. */
|
|
@@ -678,9 +717,19 @@ function tryGetModuleNameAsNodeModule(
|
|
|
678
717
|
): string {
|
|
679
718
|
const parts = getNodeModulePathParts(modulePath.fileName);
|
|
680
719
|
if (parts === undefined) return '';
|
|
720
|
+
// Only a `node_modules` in the importing file's directory or above can be used, and not the global typings
|
|
721
|
+
// cache. This is checked before `exports`, which can give a bare specifier directly.
|
|
722
|
+
const caseSensitive = host.useCaseSensitiveFileNames();
|
|
723
|
+
const globalTypingsCacheLocation = host.getGlobalTypingsCacheLocation();
|
|
724
|
+
const pathToTopLevelNodeModules = modulePath.fileName.slice(0, parts.topLevelNodeModulesIndex);
|
|
725
|
+
if (
|
|
726
|
+
!hasPrefix(info.sourceDirectory, pathToTopLevelNodeModules, caseSensitive) ||
|
|
727
|
+
(globalTypingsCacheLocation !== '' &&
|
|
728
|
+
hasPrefix(globalTypingsCacheLocation, pathToTopLevelNodeModules, caseSensitive))
|
|
729
|
+
)
|
|
730
|
+
return '';
|
|
681
731
|
const preferences = resolvePreferences(userPreferences, host, options, importingFile, '');
|
|
682
732
|
const allowedEndings = preferences.allowedEndings(ModuleKind.None);
|
|
683
|
-
const caseSensitive = host.useCaseSensitiveFileNames();
|
|
684
733
|
let moduleSpecifier = modulePath.fileName;
|
|
685
734
|
let isPackageRootPath = false;
|
|
686
735
|
if (!packageNameOnly) {
|
|
@@ -706,16 +755,6 @@ function tryGetModuleNameAsNodeModule(
|
|
|
706
755
|
}
|
|
707
756
|
if (modulePath.isRedirect && !isPackageRootPath) return '';
|
|
708
757
|
|
|
709
|
-
// Only a `node_modules` in the importing file's directory or above can be used, and not the
|
|
710
|
-
// global typings cache.
|
|
711
|
-
const globalTypingsCacheLocation = host.getGlobalTypingsCacheLocation();
|
|
712
|
-
const pathToTopLevelNodeModules = moduleSpecifier.slice(0, parts.topLevelNodeModulesIndex);
|
|
713
|
-
if (
|
|
714
|
-
!hasPrefix(info.sourceDirectory, pathToTopLevelNodeModules, caseSensitive) ||
|
|
715
|
-
(globalTypingsCacheLocation !== '' &&
|
|
716
|
-
hasPrefix(globalTypingsCacheLocation, pathToTopLevelNodeModules, caseSensitive))
|
|
717
|
-
)
|
|
718
|
-
return '';
|
|
719
758
|
// A package found in `@types` is imported by its own name.
|
|
720
759
|
return getPackageNameFromTypesPackageName(moduleSpecifier.slice(parts.topLevelPackageNameIndex + 1));
|
|
721
760
|
}
|
|
@@ -1285,7 +1324,8 @@ export function getAllowedEndingsInPreferredOrder(
|
|
|
1285
1324
|
syntaxImpliedNodeFormat: ModuleKind,
|
|
1286
1325
|
): ModuleSpecifierEnding[] {
|
|
1287
1326
|
let preferred = getPreferredEnding(preferences, host, options, importingFile, oldImportSpecifier, ModuleKind.None);
|
|
1288
|
-
|
|
1327
|
+
const resolutionMode = host.getDefaultResolutionModeForFile(importingFile);
|
|
1328
|
+
if (resolutionMode !== syntaxImpliedNodeFormat)
|
|
1289
1329
|
preferred = getPreferredEnding(
|
|
1290
1330
|
preferences,
|
|
1291
1331
|
host,
|
|
@@ -1295,7 +1335,9 @@ export function getAllowedEndingsInPreferredOrder(
|
|
|
1295
1335
|
syntaxImpliedNodeFormat,
|
|
1296
1336
|
);
|
|
1297
1337
|
const allowTs = shouldAllowImportingTsExtension(options, importingFile.fileName);
|
|
1298
|
-
|
|
1338
|
+
// Without a mode implied by the syntax, the file's default resolution mode applies.
|
|
1339
|
+
const effectiveSyntaxMode = syntaxImpliedNodeFormat !== ModuleKind.None ? syntaxImpliedNodeFormat : resolutionMode;
|
|
1340
|
+
if (effectiveSyntaxMode === ModuleKind.ESNext && isNodeNext(options))
|
|
1299
1341
|
return allowTs
|
|
1300
1342
|
? [ModuleSpecifierEnding.TsExtension, ModuleSpecifierEnding.JsExtension]
|
|
1301
1343
|
: [ModuleSpecifierEnding.JsExtension];
|
|
@@ -172,13 +172,20 @@ export class NameResolver {
|
|
|
172
172
|
current = current.parent;
|
|
173
173
|
if (current === undefined) break;
|
|
174
174
|
}
|
|
175
|
+
// A module's import attributes type sees neither the module's locals nor its exports.
|
|
176
|
+
const isModuleAttributes =
|
|
177
|
+
current.kind === SyntaxKind.ModuleDeclaration &&
|
|
178
|
+
(current as ModuleDeclaration).attributes !== undefined &&
|
|
179
|
+
lastLocation === (current as ModuleDeclaration).attributes;
|
|
175
180
|
const locals = getLocalsOf(current);
|
|
176
181
|
// Locals of a global source file are merged into the globals.
|
|
177
182
|
if (locals !== undefined && !isGlobalSourceFile(current)) {
|
|
178
183
|
result = this.lookup(locals, name, meaning);
|
|
179
184
|
if (result !== undefined) {
|
|
180
185
|
let useResult = true;
|
|
181
|
-
if (
|
|
186
|
+
if (isModuleAttributes) {
|
|
187
|
+
useResult = false;
|
|
188
|
+
} else if (isFunctionLike(current) && lastLocation !== undefined && lastLocation !== getBody(current)) {
|
|
182
189
|
// Type parameters are in scope in the whole signature, but local types only in the
|
|
183
190
|
// body; parameters only in the body, parameter list and return type. JSDoc types
|
|
184
191
|
// are parented above type parameters, so this doesn't apply to them.
|
|
@@ -215,6 +222,7 @@ export class NameResolver {
|
|
|
215
222
|
case SyntaxKind.SourceFile:
|
|
216
223
|
case SyntaxKind.ModuleDeclaration: {
|
|
217
224
|
if (current.kind === SyntaxKind.SourceFile && !isExternalOrCommonJSModule(current as SourceFile)) break;
|
|
225
|
+
if (isModuleAttributes) break;
|
|
218
226
|
const moduleSymbol = this.getSymbolOfDeclaration(current);
|
|
219
227
|
if (moduleSymbol === undefined) break;
|
|
220
228
|
const moduleExports = moduleSymbol.exports ?? emptyTable;
|