tsc-ts 0.0.4 → 0.0.5
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 +33 -1
- package/dist/api/compiler/ast-utilities.d.ts +82 -0
- package/dist/api/compiler/ast-utilities.js +462 -0
- package/dist/api/compiler/ast.d.ts +2350 -0
- package/dist/api/compiler/ast.js +11206 -0
- package/dist/api/compiler/astnav.d.ts +37 -0
- package/dist/api/compiler/astnav.js +767 -0
- package/dist/api/compiler/binder-utilities.d.ts +182 -0
- package/dist/api/compiler/binder-utilities.js +1240 -0
- package/dist/api/compiler/binder.d.ts +33 -0
- package/dist/api/compiler/binder.js +2358 -0
- package/dist/api/compiler/character-codes.d.ts +161 -0
- package/dist/api/compiler/character-codes.js +160 -0
- package/dist/api/compiler/checker-calls.d.ts +46 -0
- package/dist/api/compiler/checker-calls.js +1640 -0
- package/dist/api/compiler/checker-classes.d.ts +30 -0
- package/dist/api/compiler/checker-classes.js +582 -0
- package/dist/api/compiler/checker-contextual.d.ts +77 -0
- package/dist/api/compiler/checker-contextual.js +1136 -0
- package/dist/api/compiler/checker-declaration-order.d.ts +12 -0
- package/dist/api/compiler/checker-declaration-order.js +356 -0
- package/dist/api/compiler/checker-declarations.d.ts +33 -0
- package/dist/api/compiler/checker-declarations.js +888 -0
- package/dist/api/compiler/checker-declared-types.d.ts +48 -0
- package/dist/api/compiler/checker-declared-types.js +787 -0
- package/dist/api/compiler/checker-decorators.d.ts +26 -0
- package/dist/api/compiler/checker-decorators.js +562 -0
- package/dist/api/compiler/checker-deprecation.d.ts +33 -0
- package/dist/api/compiler/checker-deprecation.js +315 -0
- package/dist/api/compiler/checker-destructuring.d.ts +34 -0
- package/dist/api/compiler/checker-destructuring.js +584 -0
- package/dist/api/compiler/checker-elaboration.d.ts +15 -0
- package/dist/api/compiler/checker-elaboration.js +290 -0
- package/dist/api/compiler/checker-emit-helpers.d.ts +58 -0
- package/dist/api/compiler/checker-emit-helpers.js +154 -0
- package/dist/api/compiler/checker-emit-resolver.d.ts +75 -0
- package/dist/api/compiler/checker-emit-resolver.js +579 -0
- package/dist/api/compiler/checker-evaluator.d.ts +27 -0
- package/dist/api/compiler/checker-evaluator.js +188 -0
- package/dist/api/compiler/checker-expressions.d.ts +67 -0
- package/dist/api/compiler/checker-expressions.js +1351 -0
- package/dist/api/compiler/checker-features.d.ts +6 -0
- package/dist/api/compiler/checker-features.js +354 -0
- package/dist/api/compiler/checker-flow.d.ts +86 -0
- package/dist/api/compiler/checker-flow.js +169 -0
- package/dist/api/compiler/checker-functions.d.ts +43 -0
- package/dist/api/compiler/checker-functions.js +1002 -0
- package/dist/api/compiler/checker-generated-code.d.ts +25 -0
- package/dist/api/compiler/checker-generated-code.js +168 -0
- package/dist/api/compiler/checker-globals.d.ts +14 -0
- package/dist/api/compiler/checker-globals.js +37 -0
- package/dist/api/compiler/checker-grammar.d.ts +35 -0
- package/dist/api/compiler/checker-grammar.js +2573 -0
- package/dist/api/compiler/checker-heritage.d.ts +28 -0
- package/dist/api/compiler/checker-heritage.js +900 -0
- package/dist/api/compiler/checker-inference.d.ts +179 -0
- package/dist/api/compiler/checker-inference.js +2105 -0
- package/dist/api/compiler/checker-iteration.d.ts +115 -0
- package/dist/api/compiler/checker-iteration.js +857 -0
- package/dist/api/compiler/checker-javascript.d.ts +42 -0
- package/dist/api/compiler/checker-javascript.js +441 -0
- package/dist/api/compiler/checker-jsdoc.d.ts +30 -0
- package/dist/api/compiler/checker-jsdoc.js +320 -0
- package/dist/api/compiler/checker-jsx.d.ts +94 -0
- package/dist/api/compiler/checker-jsx.js +1433 -0
- package/dist/api/compiler/checker-literals.d.ts +6 -0
- package/dist/api/compiler/checker-literals.js +43 -0
- package/dist/api/compiler/checker-members.d.ts +198 -0
- package/dist/api/compiler/checker-members.js +2126 -0
- package/dist/api/compiler/checker-modules.d.ts +85 -0
- package/dist/api/compiler/checker-modules.js +2141 -0
- package/dist/api/compiler/checker-narrowing.d.ts +120 -0
- package/dist/api/compiler/checker-narrowing.js +2797 -0
- package/dist/api/compiler/checker-object-literals.d.ts +14 -0
- package/dist/api/compiler/checker-object-literals.js +479 -0
- package/dist/api/compiler/checker-operators.d.ts +33 -0
- package/dist/api/compiler/checker-operators.js +1040 -0
- package/dist/api/compiler/checker-overloads.d.ts +7 -0
- package/dist/api/compiler/checker-overloads.js +270 -0
- package/dist/api/compiler/checker-property-access.d.ts +34 -0
- package/dist/api/compiler/checker-property-access.js +672 -0
- package/dist/api/compiler/checker-services.d.ts +49 -0
- package/dist/api/compiler/checker-services.js +995 -0
- package/dist/api/compiler/checker-signatures.d.ts +55 -0
- package/dist/api/compiler/checker-signatures.js +788 -0
- package/dist/api/compiler/checker-source-file.d.ts +27 -0
- package/dist/api/compiler/checker-source-file.js +619 -0
- package/dist/api/compiler/checker-statements.d.ts +18 -0
- package/dist/api/compiler/checker-statements.js +226 -0
- package/dist/api/compiler/checker-super.d.ts +13 -0
- package/dist/api/compiler/checker-super.js +241 -0
- package/dist/api/compiler/checker-symbol-types.d.ts +67 -0
- package/dist/api/compiler/checker-symbol-types.js +1885 -0
- package/dist/api/compiler/checker-symbols.d.ts +181 -0
- package/dist/api/compiler/checker-symbols.js +1782 -0
- package/dist/api/compiler/checker-type-factory.d.ts +142 -0
- package/dist/api/compiler/checker-type-factory.js +2501 -0
- package/dist/api/compiler/checker-type-nodes.d.ts +26 -0
- package/dist/api/compiler/checker-type-nodes.js +828 -0
- package/dist/api/compiler/checker-type-operators.d.ts +109 -0
- package/dist/api/compiler/checker-type-operators.js +1842 -0
- package/dist/api/compiler/checker-types.d.ts +1027 -0
- package/dist/api/compiler/checker-types.js +1697 -0
- package/dist/api/compiler/checker-unused.d.ts +19 -0
- package/dist/api/compiler/checker-unused.js +524 -0
- package/dist/api/compiler/checker-utilities.d.ts +33 -0
- package/dist/api/compiler/checker-utilities.js +141 -0
- package/dist/api/compiler/checker.d.ts +491 -0
- package/dist/api/compiler/checker.js +912 -0
- package/dist/api/compiler/command-line.d.ts +32 -0
- package/dist/api/compiler/command-line.js +383 -0
- package/dist/api/compiler/compile-program.d.ts +118 -0
- package/dist/api/compiler/compile-program.js +384 -0
- package/dist/api/compiler/diagnostic-locales.d.ts +22 -0
- package/dist/api/compiler/diagnostic-locales.js +64 -0
- package/dist/api/compiler/diagnostic-messages.d.ts +2166 -0
- package/dist/api/compiler/diagnostic-messages.js +184 -0
- package/dist/api/compiler/diagnostics.d.ts +167 -0
- package/dist/api/compiler/diagnostics.js +820 -0
- package/dist/api/compiler/emitter.d.ts +71 -0
- package/dist/api/compiler/emitter.js +327 -0
- package/dist/api/compiler/file-include.d.ts +117 -0
- package/dist/api/compiler/file-include.js +536 -0
- package/dist/api/compiler/file-loader.d.ts +261 -0
- package/dist/api/compiler/file-loader.js +1257 -0
- package/dist/api/compiler/file-system.d.ts +51 -0
- package/dist/api/compiler/file-system.js +132 -0
- package/dist/api/compiler/flow.d.ts +60 -0
- package/dist/api/compiler/flow.js +45 -0
- package/dist/api/compiler/instantiation.d.ts +74 -0
- package/dist/api/compiler/instantiation.js +799 -0
- package/dist/api/compiler/jsdoc.d.ts +75 -0
- package/dist/api/compiler/jsdoc.js +1229 -0
- package/dist/api/compiler/link-tables.d.ts +36 -0
- package/dist/api/compiler/link-tables.js +83 -0
- package/dist/api/compiler/locale-data.d.ts +24 -0
- package/dist/api/compiler/locale-data.js +183 -0
- package/dist/api/compiler/locale.d.ts +4 -0
- package/dist/api/compiler/locale.js +317 -0
- package/dist/api/compiler/locales/cs-CZ.d.ts +2 -0
- package/dist/api/compiler/locales/cs-CZ.js +3 -0
- package/dist/api/compiler/locales/de-DE.d.ts +2 -0
- package/dist/api/compiler/locales/de-DE.js +3 -0
- package/dist/api/compiler/locales/es-ES.d.ts +2 -0
- package/dist/api/compiler/locales/es-ES.js +3 -0
- package/dist/api/compiler/locales/fr-FR.d.ts +2 -0
- package/dist/api/compiler/locales/fr-FR.js +3 -0
- package/dist/api/compiler/locales/it-IT.d.ts +2 -0
- package/dist/api/compiler/locales/it-IT.js +3 -0
- package/dist/api/compiler/locales/ja-JP.d.ts +2 -0
- package/dist/api/compiler/locales/ja-JP.js +3 -0
- package/dist/api/compiler/locales/ko-KR.d.ts +2 -0
- package/dist/api/compiler/locales/ko-KR.js +3 -0
- package/dist/api/compiler/locales/pl-PL.d.ts +2 -0
- package/dist/api/compiler/locales/pl-PL.js +3 -0
- package/dist/api/compiler/locales/pt-BR.d.ts +2 -0
- package/dist/api/compiler/locales/pt-BR.js +3 -0
- package/dist/api/compiler/locales/ru-RU.d.ts +2 -0
- package/dist/api/compiler/locales/ru-RU.js +3 -0
- package/dist/api/compiler/locales/tr-TR.d.ts +2 -0
- package/dist/api/compiler/locales/tr-TR.js +3 -0
- package/dist/api/compiler/locales/zh-CN.d.ts +2 -0
- package/dist/api/compiler/locales/zh-CN.js +3 -0
- package/dist/api/compiler/locales/zh-TW.d.ts +2 -0
- package/dist/api/compiler/locales/zh-TW.js +3 -0
- package/dist/api/compiler/module-resolution-types.d.ts +83 -0
- package/dist/api/compiler/module-resolution-types.js +176 -0
- package/dist/api/compiler/module-resolution.d.ts +71 -0
- package/dist/api/compiler/module-resolution.js +1598 -0
- package/dist/api/compiler/module-specifiers.d.ts +64 -0
- package/dist/api/compiler/module-specifiers.js +1101 -0
- package/dist/api/compiler/name-resolver.d.ts +43 -0
- package/dist/api/compiler/name-resolver.js +509 -0
- package/dist/api/compiler/node-builder-names.d.ts +32 -0
- package/dist/api/compiler/node-builder-names.js +854 -0
- package/dist/api/compiler/node-builder-pseudo.d.ts +36 -0
- package/dist/api/compiler/node-builder-pseudo.js +744 -0
- package/dist/api/compiler/node-builder-reuse.d.ts +4 -0
- package/dist/api/compiler/node-builder-reuse.js +647 -0
- package/dist/api/compiler/node-builder.d.ts +270 -0
- package/dist/api/compiler/node-builder.js +2645 -0
- package/dist/api/compiler/option-declarations.d.ts +90 -0
- package/dist/api/compiler/option-declarations.js +1460 -0
- package/dist/api/compiler/options.d.ts +289 -0
- package/dist/api/compiler/options.js +1197 -0
- package/dist/api/compiler/output-paths.d.ts +42 -0
- package/dist/api/compiler/output-paths.js +195 -0
- package/dist/api/compiler/package-json.d.ts +175 -0
- package/dist/api/compiler/package-json.js +1015 -0
- package/dist/api/compiler/parallel-parse.d.ts +219 -0
- package/dist/api/compiler/parallel-parse.js +537 -0
- package/dist/api/compiler/parser.d.ts +587 -0
- package/dist/api/compiler/parser.js +6407 -0
- package/dist/api/compiler/path.d.ts +91 -0
- package/dist/api/compiler/path.js +705 -0
- package/dist/api/compiler/printer/async-helpers.d.ts +22 -0
- package/dist/api/compiler/printer/async-helpers.js +91 -0
- package/dist/api/compiler/printer/auto-generate.d.ts +13 -0
- package/dist/api/compiler/printer/auto-generate.js +20 -0
- package/dist/api/compiler/printer/decorator-helpers.d.ts +24 -0
- package/dist/api/compiler/printer/decorator-helpers.js +118 -0
- package/dist/api/compiler/printer/emit-context.d.ts +154 -0
- package/dist/api/compiler/printer/emit-context.js +576 -0
- package/dist/api/compiler/printer/emit-flags.d.ts +60 -0
- package/dist/api/compiler/printer/emit-flags.js +2 -0
- package/dist/api/compiler/printer/factory-base.d.ts +171 -0
- package/dist/api/compiler/printer/factory-base.js +1505 -0
- package/dist/api/compiler/printer/factory.d.ts +147 -0
- package/dist/api/compiler/printer/factory.js +542 -0
- package/dist/api/compiler/printer/helpers.d.ts +27 -0
- package/dist/api/compiler/printer/helpers.js +164 -0
- package/dist/api/compiler/printer/name-generator.d.ts +41 -0
- package/dist/api/compiler/printer/name-generator.js +283 -0
- package/dist/api/compiler/printer/printer.d.ts +411 -0
- package/dist/api/compiler/printer/printer.js +4517 -0
- package/dist/api/compiler/printer/text-writer.d.ts +46 -0
- package/dist/api/compiler/printer/text-writer.js +172 -0
- package/dist/api/compiler/printer/utilities.d.ts +82 -0
- package/dist/api/compiler/printer/utilities.js +817 -0
- package/dist/api/compiler/program-checker.d.ts +156 -0
- package/dist/api/compiler/program-checker.js +526 -0
- package/dist/api/compiler/program-utilities.d.ts +52 -0
- package/dist/api/compiler/program-utilities.js +365 -0
- package/dist/api/compiler/program.d.ts +180 -0
- package/dist/api/compiler/program.js +1011 -0
- package/dist/api/compiler/pseudo-bigint.d.ts +5 -0
- package/dist/api/compiler/pseudo-bigint.js +61 -0
- package/dist/api/compiler/regexp-checker.d.ts +38 -0
- package/dist/api/compiler/regexp-checker.js +942 -0
- package/dist/api/compiler/relations.d.ts +263 -0
- package/dist/api/compiler/relations.js +4002 -0
- package/dist/api/compiler/reparser.d.ts +48 -0
- package/dist/api/compiler/reparser.js +1323 -0
- package/dist/api/compiler/scanner.d.ts +256 -0
- package/dist/api/compiler/scanner.js +2853 -0
- package/dist/api/compiler/side-state.d.ts +16 -0
- package/dist/api/compiler/side-state.js +89 -0
- package/dist/api/compiler/sourcemap.d.ts +55 -0
- package/dist/api/compiler/sourcemap.js +340 -0
- package/dist/api/compiler/spelling.d.ts +14 -0
- package/dist/api/compiler/spelling.js +128 -0
- package/dist/api/compiler/symbol-accessibility.d.ts +57 -0
- package/dist/api/compiler/symbol-accessibility.js +894 -0
- package/dist/api/compiler/symbol.d.ts +240 -0
- package/dist/api/compiler/symbol.js +228 -0
- package/dist/api/compiler/symlinks.d.ts +32 -0
- package/dist/api/compiler/symlinks.js +114 -0
- package/dist/api/compiler/syntax-kind.d.ts +389 -0
- package/dist/api/compiler/syntax-kind.js +2 -0
- package/dist/api/compiler/timeline.d.ts +9 -0
- package/dist/api/compiler/timeline.js +54 -0
- package/dist/api/compiler/transformers/alias-references.d.ts +39 -0
- package/dist/api/compiler/transformers/alias-references.js +676 -0
- package/dist/api/compiler/transformers/async-utilities.d.ts +51 -0
- package/dist/api/compiler/transformers/async-utilities.js +260 -0
- package/dist/api/compiler/transformers/async.d.ts +53 -0
- package/dist/api/compiler/transformers/async.js +645 -0
- package/dist/api/compiler/transformers/class-fields.d.ts +206 -0
- package/dist/api/compiler/transformers/class-fields.js +2418 -0
- package/dist/api/compiler/transformers/class-utilities.d.ts +46 -0
- package/dist/api/compiler/transformers/class-utilities.js +261 -0
- package/dist/api/compiler/transformers/commonjs-module.d.ts +103 -0
- package/dist/api/compiler/transformers/commonjs-module.js +1180 -0
- package/dist/api/compiler/transformers/const-enum-inliner.d.ts +11 -0
- package/dist/api/compiler/transformers/const-enum-inliner.js +36 -0
- package/dist/api/compiler/transformers/declarations-diagnostics.d.ts +52 -0
- package/dist/api/compiler/transformers/declarations-diagnostics.js +538 -0
- package/dist/api/compiler/transformers/declarations-pseudo.d.ts +160 -0
- package/dist/api/compiler/transformers/declarations-pseudo.js +797 -0
- package/dist/api/compiler/transformers/declarations-resolver.d.ts +152 -0
- package/dist/api/compiler/transformers/declarations-resolver.js +35 -0
- package/dist/api/compiler/transformers/declarations-syntactic.d.ts +119 -0
- package/dist/api/compiler/transformers/declarations-syntactic.js +1582 -0
- package/dist/api/compiler/transformers/declarations-tracker.d.ts +46 -0
- package/dist/api/compiler/transformers/declarations-tracker.js +197 -0
- package/dist/api/compiler/transformers/declarations.d.ts +175 -0
- package/dist/api/compiler/transformers/declarations.js +2380 -0
- package/dist/api/compiler/transformers/decorator-metadata.d.ts +54 -0
- package/dist/api/compiler/transformers/decorator-metadata.js +554 -0
- package/dist/api/compiler/transformers/decorator-utilities.d.ts +38 -0
- package/dist/api/compiler/transformers/decorator-utilities.js +238 -0
- package/dist/api/compiler/transformers/destructuring.d.ts +25 -0
- package/dist/api/compiler/transformers/destructuring.js +626 -0
- package/dist/api/compiler/transformers/downlevel.d.ts +6 -0
- package/dist/api/compiler/transformers/downlevel.js +45 -0
- package/dist/api/compiler/transformers/emit-resolver.d.ts +61 -0
- package/dist/api/compiler/transformers/emit-resolver.js +197 -0
- package/dist/api/compiler/transformers/es-decorators.d.ts +118 -0
- package/dist/api/compiler/transformers/es-decorators.js +1901 -0
- package/dist/api/compiler/transformers/exponentiation.d.ts +11 -0
- package/dist/api/compiler/transformers/exponentiation.js +76 -0
- package/dist/api/compiler/transformers/external-module-info.d.ts +35 -0
- package/dist/api/compiler/transformers/external-module-info.js +351 -0
- package/dist/api/compiler/transformers/for-await.d.ts +43 -0
- package/dist/api/compiler/transformers/for-await.js +469 -0
- package/dist/api/compiler/transformers/import-elision.d.ts +16 -0
- package/dist/api/compiler/transformers/import-elision.js +124 -0
- package/dist/api/compiler/transformers/jsx-entities.d.ts +1 -0
- package/dist/api/compiler/transformers/jsx-entities.js +256 -0
- package/dist/api/compiler/transformers/jsx.d.ts +71 -0
- package/dist/api/compiler/transformers/jsx.js +700 -0
- package/dist/api/compiler/transformers/legacy-decorators.d.ts +56 -0
- package/dist/api/compiler/transformers/legacy-decorators.js +564 -0
- package/dist/api/compiler/transformers/logical-assignment.d.ts +14 -0
- package/dist/api/compiler/transformers/logical-assignment.js +62 -0
- package/dist/api/compiler/transformers/module-utilities.d.ts +9 -0
- package/dist/api/compiler/transformers/module-utilities.js +36 -0
- package/dist/api/compiler/transformers/module.d.ts +49 -0
- package/dist/api/compiler/transformers/module.js +296 -0
- package/dist/api/compiler/transformers/named-evaluation.d.ts +26 -0
- package/dist/api/compiler/transformers/named-evaluation.js +266 -0
- package/dist/api/compiler/transformers/nullish-coalescing.d.ts +9 -0
- package/dist/api/compiler/transformers/nullish-coalescing.js +26 -0
- package/dist/api/compiler/transformers/object-rest-spread.d.ts +34 -0
- package/dist/api/compiler/transformers/object-rest-spread.js +411 -0
- package/dist/api/compiler/transformers/optional-catch.d.ts +9 -0
- package/dist/api/compiler/transformers/optional-catch.js +20 -0
- package/dist/api/compiler/transformers/optional-chain.d.ts +14 -0
- package/dist/api/compiler/transformers/optional-chain.js +188 -0
- package/dist/api/compiler/transformers/reference-resolver.d.ts +128 -0
- package/dist/api/compiler/transformers/reference-resolver.js +1155 -0
- package/dist/api/compiler/transformers/runtime-syntax.d.ts +71 -0
- package/dist/api/compiler/transformers/runtime-syntax.js +753 -0
- package/dist/api/compiler/transformers/subtree-facts.d.ts +9 -0
- package/dist/api/compiler/transformers/subtree-facts.js +203 -0
- package/dist/api/compiler/transformers/syntax-facts.d.ts +51 -0
- package/dist/api/compiler/transformers/syntax-facts.js +254 -0
- package/dist/api/compiler/transformers/tagged-template.d.ts +17 -0
- package/dist/api/compiler/transformers/tagged-template.js +148 -0
- package/dist/api/compiler/transformers/transformer.d.ts +17 -0
- package/dist/api/compiler/transformers/transformer.js +54 -0
- package/dist/api/compiler/transformers/type-eraser.d.ts +21 -0
- package/dist/api/compiler/transformers/type-eraser.js +346 -0
- package/dist/api/compiler/transformers/type-serialization.d.ts +20 -0
- package/dist/api/compiler/transformers/type-serialization.js +347 -0
- package/dist/api/compiler/transformers/using.d.ts +56 -0
- package/dist/api/compiler/transformers/using.js +453 -0
- package/dist/api/compiler/transformers/utilities.d.ts +50 -0
- package/dist/api/compiler/transformers/utilities.js +347 -0
- package/dist/api/compiler/transformers/visitor-base.d.ts +6 -0
- package/dist/api/compiler/transformers/visitor-base.js +817 -0
- package/dist/api/compiler/transformers/visitor-hooks.d.ts +29 -0
- package/dist/api/compiler/transformers/visitor-hooks.js +189 -0
- package/dist/api/compiler/tsconfig.d.ts +177 -0
- package/dist/api/compiler/tsconfig.js +1311 -0
- package/dist/api/compiler/type-printer.d.ts +15 -0
- package/dist/api/compiler/type-printer.js +74 -0
- package/dist/api/compiler/types.d.ts +87 -0
- package/dist/api/compiler/types.js +23 -0
- package/dist/api/compiler/unicode-identifiers.d.ts +2 -0
- package/dist/api/compiler/unicode-identifiers.js +209 -0
- package/dist/api/compiler/unicode-properties.d.ts +8 -0
- package/dist/api/compiler/unicode-properties.js +531 -0
- package/dist/api/compiler/vfs-match.d.ts +24 -0
- package/dist/api/compiler/vfs-match.js +587 -0
- package/dist/api/library/ast.d.ts +3 -2
- package/dist/api/library/ast.generated.d.ts +127 -139
- package/dist/api/library/checker.d.ts +51 -0
- package/dist/api/library/checker.js +318 -0
- package/dist/api/library/diagnostics.d.ts +13 -0
- package/dist/api/library/diagnostics.js +50 -0
- package/dist/api/library/disk.d.ts +13 -0
- package/dist/api/library/disk.js +66 -0
- package/dist/api/library/errors.d.ts +13 -0
- package/dist/api/library/errors.js +24 -0
- package/dist/api/library/host.d.ts +24 -0
- package/dist/api/library/host.js +52 -0
- package/dist/api/library/index.d.ts +5 -1
- package/dist/api/library/index.js +4 -0
- package/dist/api/library/nodes.d.ts +51 -0
- package/dist/api/library/nodes.js +196 -0
- package/dist/api/library/options.d.ts +144 -0
- package/dist/api/library/options.js +308 -0
- package/dist/api/library/parse.d.ts +19 -0
- package/dist/api/library/parse.js +41 -0
- package/dist/api/library/program.d.ts +21 -0
- package/dist/api/library/program.js +234 -0
- package/dist/api/library/types.d.ts +14 -1
- package/package.json +12 -8
- package/src/compiler/ast-utilities.ts +548 -0
- package/src/compiler/ast.ts +12862 -0
- package/src/compiler/astnav.ts +799 -0
- package/src/compiler/binder-utilities.ts +1392 -0
- package/src/compiler/binder.ts +2703 -0
- package/src/compiler/build-info.ts +1197 -0
- package/src/compiler/character-codes.ts +323 -0
- package/src/compiler/checker-calls.ts +2155 -0
- package/src/compiler/checker-classes.ts +706 -0
- package/src/compiler/checker-contextual.ts +1457 -0
- package/src/compiler/checker-declaration-order.ts +438 -0
- package/src/compiler/checker-declarations.ts +1194 -0
- package/src/compiler/checker-declared-types.ts +919 -0
- package/src/compiler/checker-decorators.ts +694 -0
- package/src/compiler/checker-deprecation.ts +359 -0
- package/src/compiler/checker-destructuring.ts +805 -0
- package/src/compiler/checker-elaboration.ts +477 -0
- package/src/compiler/checker-emit-helpers.ts +224 -0
- package/src/compiler/checker-emit-resolver.ts +769 -0
- package/src/compiler/checker-evaluator.ts +243 -0
- package/src/compiler/checker-expressions.ts +1831 -0
- package/src/compiler/checker-features.ts +361 -0
- package/src/compiler/checker-flow.ts +394 -0
- package/src/compiler/checker-functions.ts +1296 -0
- package/src/compiler/checker-generated-code.ts +227 -0
- package/src/compiler/checker-globals.ts +52 -0
- package/src/compiler/checker-grammar.ts +3584 -0
- package/src/compiler/checker-heritage.ts +1233 -0
- package/src/compiler/checker-inference.ts +2576 -0
- package/src/compiler/checker-iteration.ts +1206 -0
- package/src/compiler/checker-javascript.ts +502 -0
- package/src/compiler/checker-jsdoc.ts +360 -0
- package/src/compiler/checker-jsx.ts +1924 -0
- package/src/compiler/checker-literals.ts +61 -0
- package/src/compiler/checker-members.ts +2436 -0
- package/src/compiler/checker-modules.ts +2886 -0
- package/src/compiler/checker-narrowing.ts +3230 -0
- package/src/compiler/checker-object-literals.ts +575 -0
- package/src/compiler/checker-operators.ts +1422 -0
- package/src/compiler/checker-overloads.ts +328 -0
- package/src/compiler/checker-property-access.ts +906 -0
- package/src/compiler/checker-services.ts +1149 -0
- package/src/compiler/checker-signatures.ts +1032 -0
- package/src/compiler/checker-source-file.ts +732 -0
- package/src/compiler/checker-statements.ts +292 -0
- package/src/compiler/checker-super.ts +261 -0
- package/src/compiler/checker-symbol-types.ts +2107 -0
- package/src/compiler/checker-symbols.ts +2150 -0
- package/src/compiler/checker-type-factory.ts +2579 -0
- package/src/compiler/checker-type-nodes.ts +1033 -0
- package/src/compiler/checker-type-operators.ts +2502 -0
- package/src/compiler/checker-types.ts +2340 -0
- package/src/compiler/checker-unused.ts +642 -0
- package/src/compiler/checker-utilities.ts +161 -0
- package/src/compiler/checker.ts +1116 -0
- package/src/compiler/command-line.ts +436 -0
- package/src/compiler/compile-program.ts +439 -0
- package/src/compiler/decoder.ts +1209 -0
- package/src/compiler/diagnostic-locales.ts +86 -0
- package/src/compiler/diagnostic-messages.ts +2349 -0
- package/src/compiler/diagnostics.ts +897 -0
- package/src/compiler/emitter.ts +434 -0
- package/src/compiler/encoder.ts +1945 -0
- package/src/compiler/file-include.ts +673 -0
- package/src/compiler/file-loader.ts +1528 -0
- package/src/compiler/file-system.ts +143 -0
- package/src/compiler/flow.ts +89 -0
- package/src/compiler/help.ts +473 -0
- package/src/compiler/incremental.ts +2784 -0
- package/src/compiler/init.ts +141 -0
- package/src/compiler/instantiation.ts +894 -0
- package/src/compiler/jsdoc.ts +1386 -0
- package/src/compiler/link-tables.ts +98 -0
- package/src/compiler/locale-data.ts +203 -0
- package/src/compiler/locale.ts +307 -0
- package/src/compiler/locales/cs-CZ.ts +5 -0
- package/src/compiler/locales/de-DE.ts +5 -0
- package/src/compiler/locales/es-ES.ts +5 -0
- package/src/compiler/locales/fr-FR.ts +5 -0
- package/src/compiler/locales/it-IT.ts +5 -0
- package/src/compiler/locales/ja-JP.ts +5 -0
- package/src/compiler/locales/ko-KR.ts +5 -0
- package/src/compiler/locales/pl-PL.ts +5 -0
- package/src/compiler/locales/pt-BR.ts +5 -0
- package/src/compiler/locales/ru-RU.ts +5 -0
- package/src/compiler/locales/tr-TR.ts +5 -0
- package/src/compiler/locales/zh-CN.ts +5 -0
- package/src/compiler/locales/zh-TW.ts +5 -0
- package/src/compiler/module-resolution-types.ts +243 -0
- package/src/compiler/module-resolution.ts +2072 -0
- package/src/compiler/module-specifiers.ts +1491 -0
- package/src/compiler/name-resolver.ts +646 -0
- package/src/compiler/node-builder-names.ts +1069 -0
- package/src/compiler/node-builder-pseudo.ts +892 -0
- package/src/compiler/node-builder-reuse.ts +764 -0
- package/src/compiler/node-builder.ts +3425 -0
- package/src/compiler/option-declarations.ts +1560 -0
- package/src/compiler/options.ts +1576 -0
- package/src/compiler/output-paths.ts +334 -0
- package/src/compiler/package-json.ts +1083 -0
- package/src/compiler/parallel-check.ts +1951 -0
- package/src/compiler/parallel-parse.ts +590 -0
- package/src/compiler/parse-thread.ts +140 -0
- package/src/compiler/parser.ts +7716 -0
- package/src/compiler/path.ts +717 -0
- package/src/compiler/printer/async-helpers.ts +183 -0
- package/src/compiler/printer/auto-generate.ts +27 -0
- package/src/compiler/printer/decorator-helpers.ts +218 -0
- package/src/compiler/printer/emit-context.ts +679 -0
- package/src/compiler/printer/emit-flags.ts +64 -0
- package/src/compiler/printer/factory-base.ts +2577 -0
- package/src/compiler/printer/factory.ts +764 -0
- package/src/compiler/printer/helpers.ts +291 -0
- package/src/compiler/printer/name-generator.ts +372 -0
- package/src/compiler/printer/printer.ts +5072 -0
- package/src/compiler/printer/text-writer.ts +183 -0
- package/src/compiler/printer/utilities.ts +884 -0
- package/src/compiler/program-checker.ts +592 -0
- package/src/compiler/program-utilities.ts +435 -0
- package/src/compiler/program.ts +1419 -0
- package/src/compiler/pseudo-bigint.ts +62 -0
- package/src/compiler/regexp-checker.ts +1142 -0
- package/src/compiler/relations.ts +5149 -0
- package/src/compiler/reparser.ts +1566 -0
- package/src/compiler/scanner.ts +2951 -0
- package/src/compiler/show-config.ts +239 -0
- package/src/compiler/side-state.ts +125 -0
- package/src/compiler/sourcemap.ts +366 -0
- package/src/compiler/spelling.ts +122 -0
- package/src/compiler/symbol-accessibility.ts +1071 -0
- package/src/compiler/symbol.ts +439 -0
- package/src/compiler/symlinks.ts +137 -0
- package/src/compiler/syntax-kind.ts +391 -0
- package/src/compiler/thread-entry.ts +191 -0
- package/src/compiler/timeline.ts +53 -0
- package/src/compiler/transformers/alias-references.ts +757 -0
- package/src/compiler/transformers/async-utilities.ts +335 -0
- package/src/compiler/transformers/async.ts +838 -0
- package/src/compiler/transformers/class-fields.ts +2967 -0
- package/src/compiler/transformers/class-utilities.ts +324 -0
- package/src/compiler/transformers/commonjs-module.ts +1621 -0
- package/src/compiler/transformers/const-enum-inliner.ts +50 -0
- package/src/compiler/transformers/declarations-diagnostics.ts +832 -0
- package/src/compiler/transformers/declarations-pseudo.ts +966 -0
- package/src/compiler/transformers/declarations-resolver.ts +249 -0
- package/src/compiler/transformers/declarations-syntactic.ts +1859 -0
- package/src/compiler/transformers/declarations-tracker.ts +269 -0
- package/src/compiler/transformers/declarations.ts +3120 -0
- package/src/compiler/transformers/decorator-metadata.ts +697 -0
- package/src/compiler/transformers/decorator-utilities.ts +283 -0
- package/src/compiler/transformers/destructuring.ts +708 -0
- package/src/compiler/transformers/downlevel.ts +50 -0
- package/src/compiler/transformers/emit-resolver.ts +258 -0
- package/src/compiler/transformers/es-decorators.ts +2682 -0
- package/src/compiler/transformers/exponentiation.ts +80 -0
- package/src/compiler/transformers/external-module-info.ts +412 -0
- package/src/compiler/transformers/for-await.ts +687 -0
- package/src/compiler/transformers/import-elision.ts +152 -0
- package/src/compiler/transformers/jsx-entities.ts +256 -0
- package/src/compiler/transformers/jsx.ts +824 -0
- package/src/compiler/transformers/legacy-decorators.ts +726 -0
- package/src/compiler/transformers/logical-assignment.ts +75 -0
- package/src/compiler/transformers/module-utilities.ts +42 -0
- package/src/compiler/transformers/module.ts +474 -0
- package/src/compiler/transformers/named-evaluation.ts +389 -0
- package/src/compiler/transformers/nullish-coalescing.ts +35 -0
- package/src/compiler/transformers/object-rest-spread.ts +577 -0
- package/src/compiler/transformers/optional-catch.ts +29 -0
- package/src/compiler/transformers/optional-chain.ts +246 -0
- package/src/compiler/transformers/reference-resolver.ts +1201 -0
- package/src/compiler/transformers/runtime-syntax.ts +942 -0
- package/src/compiler/transformers/subtree-facts.ts +245 -0
- package/src/compiler/transformers/syntax-facts.ts +353 -0
- package/src/compiler/transformers/tagged-template.ts +167 -0
- package/src/compiler/transformers/transformer.ts +56 -0
- package/src/compiler/transformers/type-eraser.ts +520 -0
- package/src/compiler/transformers/type-serialization.ts +374 -0
- package/src/compiler/transformers/using.ts +613 -0
- package/src/compiler/transformers/utilities.ts +419 -0
- package/src/compiler/transformers/visitor-base.ts +1601 -0
- package/src/compiler/transformers/visitor-hooks.ts +252 -0
- package/src/compiler/tsc-build.ts +1418 -0
- package/src/compiler/tsc-cli.ts +666 -0
- package/src/compiler/tsc-compile.ts +437 -0
- package/src/compiler/tsc-watch.ts +854 -0
- package/src/compiler/tsconfig.ts +1574 -0
- package/src/compiler/type-printer.ts +110 -0
- package/src/compiler/types.ts +115 -0
- package/src/compiler/unicode-identifiers.ts +212 -0
- package/src/compiler/unicode-properties.ts +537 -0
- package/src/compiler/vfs-match.ts +597 -0
- package/src/compiler/xxh3.ts +650 -0
- package/src/library/ast.generated.ts +141 -167
- package/src/library/ast.ts +4 -1
- package/src/library/checker.ts +384 -0
- package/src/library/diagnostics.ts +72 -0
- package/src/library/disk.ts +73 -0
- package/src/library/errors.ts +26 -0
- package/src/library/host.ts +63 -0
- package/src/library/index.ts +21 -0
- package/src/library/nodes.ts +232 -0
- package/src/library/options.ts +449 -0
- package/src/library/parse.ts +63 -0
- package/src/library/program.ts +293 -0
- package/src/library/types.ts +14 -1
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
// Symbols: what the binder declares for each named entity, and the tables that hold them.
|
|
2
|
+
import type { ProgramLifetime } from '@scriptc/types';
|
|
3
|
+
import type { Node } from './ast.js';
|
|
4
|
+
import type { __String, Symbol as PublicSymbol } from '../library/types.js';
|
|
5
|
+
|
|
6
|
+
export const enum SymbolFlags {
|
|
7
|
+
None = 0,
|
|
8
|
+
/** A `var` or parameter. */
|
|
9
|
+
FunctionScopedVariable = 1 << 0,
|
|
10
|
+
/** A `let` or `const`. */
|
|
11
|
+
BlockScopedVariable = 1 << 1,
|
|
12
|
+
/** A property or enum member. */
|
|
13
|
+
Property = 1 << 2,
|
|
14
|
+
EnumMember = 1 << 3,
|
|
15
|
+
Function = 1 << 4,
|
|
16
|
+
Class = 1 << 5,
|
|
17
|
+
Interface = 1 << 6,
|
|
18
|
+
ConstEnum = 1 << 7,
|
|
19
|
+
RegularEnum = 1 << 8,
|
|
20
|
+
/** An instantiated namespace. */
|
|
21
|
+
ValueModule = 1 << 9,
|
|
22
|
+
/** A namespace with only types. */
|
|
23
|
+
NamespaceModule = 1 << 10,
|
|
24
|
+
/** A type literal or mapped type. */
|
|
25
|
+
TypeLiteral = 1 << 11,
|
|
26
|
+
ObjectLiteral = 1 << 12,
|
|
27
|
+
Method = 1 << 13,
|
|
28
|
+
Constructor = 1 << 14,
|
|
29
|
+
GetAccessor = 1 << 15,
|
|
30
|
+
SetAccessor = 1 << 16,
|
|
31
|
+
/** A call, construct or index signature. */
|
|
32
|
+
Signature = 1 << 17,
|
|
33
|
+
TypeParameter = 1 << 18,
|
|
34
|
+
TypeAlias = 1 << 19,
|
|
35
|
+
/** The local half of an exported value; see `Binder.declareModuleMember`. */
|
|
36
|
+
ExportValue = 1 << 20,
|
|
37
|
+
/** An alias for another symbol, e.g. an import. */
|
|
38
|
+
Alias = 1 << 21,
|
|
39
|
+
/** A class's `prototype` property. */
|
|
40
|
+
Prototype = 1 << 22,
|
|
41
|
+
/** `export *` declarations. */
|
|
42
|
+
ExportStar = 1 << 23,
|
|
43
|
+
Optional = 1 << 24,
|
|
44
|
+
/** Created by the checker. */
|
|
45
|
+
Transient = 1 << 25,
|
|
46
|
+
/** A JavaScript assignment that declares a property, e.g. `fn.prop = 1`. */
|
|
47
|
+
Assignment = 1 << 26,
|
|
48
|
+
/** CommonJS `module` or `module.exports`. */
|
|
49
|
+
ModuleExports = 1 << 27,
|
|
50
|
+
/** A namespace whose only values are const enums. */
|
|
51
|
+
ConstEnumOnlyModule = 1 << 28,
|
|
52
|
+
/** A JavaScript `this.x` property that a method of the same name replaces. */
|
|
53
|
+
ReplaceableByMethod = 1 << 29,
|
|
54
|
+
/** Marks a lookup in the global scope. */
|
|
55
|
+
GlobalLookup = 1 << 30,
|
|
56
|
+
All = (1 << 30) - 1,
|
|
57
|
+
|
|
58
|
+
Enum = RegularEnum | ConstEnum,
|
|
59
|
+
Variable = FunctionScopedVariable | BlockScopedVariable,
|
|
60
|
+
Value = Variable |
|
|
61
|
+
Property |
|
|
62
|
+
EnumMember |
|
|
63
|
+
ObjectLiteral |
|
|
64
|
+
Function |
|
|
65
|
+
Class |
|
|
66
|
+
Enum |
|
|
67
|
+
ValueModule |
|
|
68
|
+
Method |
|
|
69
|
+
GetAccessor |
|
|
70
|
+
SetAccessor,
|
|
71
|
+
Type = Class | Interface | Enum | EnumMember | TypeLiteral | TypeParameter | TypeAlias,
|
|
72
|
+
Namespace = ValueModule | NamespaceModule | Enum,
|
|
73
|
+
Module = ValueModule | NamespaceModule,
|
|
74
|
+
Accessor = GetAccessor | SetAccessor,
|
|
75
|
+
|
|
76
|
+
// What a declaration of each kind can't merge with.
|
|
77
|
+
FunctionScopedVariableExcludes = Value & ~FunctionScopedVariable,
|
|
78
|
+
BlockScopedVariableExcludes = Value,
|
|
79
|
+
ParameterExcludes = Value,
|
|
80
|
+
PropertyExcludes = Value & ~(Property | Accessor),
|
|
81
|
+
EnumMemberExcludes = Value | Type,
|
|
82
|
+
FunctionExcludes = Value & ~(Function | ValueModule | Class),
|
|
83
|
+
/** Class-interface merging is checked by the checker. */
|
|
84
|
+
ClassExcludes = (Value | Type) & ~(ValueModule | Interface | Function),
|
|
85
|
+
InterfaceExcludes = Type & ~(Interface | Class),
|
|
86
|
+
RegularEnumExcludes = (Value | Type) & ~(RegularEnum | ValueModule),
|
|
87
|
+
ConstEnumExcludes = (Value | Type) & ~ConstEnum,
|
|
88
|
+
ValueModuleExcludes = Value & ~(Function | Class | RegularEnum | ValueModule),
|
|
89
|
+
NamespaceModuleExcludes = None,
|
|
90
|
+
MethodExcludes = Value & ~Method,
|
|
91
|
+
GetAccessorExcludes = Value & ~(SetAccessor | Property),
|
|
92
|
+
SetAccessorExcludes = Value & ~(GetAccessor | Property),
|
|
93
|
+
AccessorExcludes = Value & ~Property,
|
|
94
|
+
TypeParameterExcludes = Type & ~TypeParameter,
|
|
95
|
+
TypeAliasExcludes = Type,
|
|
96
|
+
AliasExcludes = Alias,
|
|
97
|
+
|
|
98
|
+
ModuleMember = Variable | Function | Class | Interface | Enum | Module | TypeAlias | Alias,
|
|
99
|
+
ExportHasLocal = Function | Class | Enum | ValueModule,
|
|
100
|
+
BlockScoped = BlockScopedVariable | Class | Enum,
|
|
101
|
+
PropertyOrAccessor = Property | Accessor,
|
|
102
|
+
ClassMember = Method | Accessor | Property,
|
|
103
|
+
ExportSupportsDefaultModifier = Class | Function | Interface,
|
|
104
|
+
ExportDoesNotSupportDefaultModifier = ~ExportSupportsDefaultModifier,
|
|
105
|
+
/** What the language service classifies semantically. */
|
|
106
|
+
Classifiable = Class | Enum | TypeAlias | Interface | TypeParameter | Module | Alias,
|
|
107
|
+
LateBindingContainer = Class | Interface | TypeLiteral | ObjectLiteral | Function,
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/** Flags of transient symbols created by the checker. */
|
|
111
|
+
export const enum CheckFlags {
|
|
112
|
+
None = 0,
|
|
113
|
+
Instantiated = 1 << 0,
|
|
114
|
+
/** A property of a union or intersection type. */
|
|
115
|
+
SyntheticProperty = 1 << 1,
|
|
116
|
+
SyntheticMethod = 1 << 2,
|
|
117
|
+
Readonly = 1 << 3,
|
|
118
|
+
/** In some but not all constituents. */
|
|
119
|
+
ReadPartial = 1 << 4,
|
|
120
|
+
/** In some constituents, and only an index signature in others. */
|
|
121
|
+
WritePartial = 1 << 5,
|
|
122
|
+
HasNonUniformType = 1 << 6,
|
|
123
|
+
HasLiteralType = 1 << 7,
|
|
124
|
+
ContainsPublic = 1 << 8,
|
|
125
|
+
ContainsProtected = 1 << 9,
|
|
126
|
+
ContainsPrivate = 1 << 10,
|
|
127
|
+
ContainsStatic = 1 << 11,
|
|
128
|
+
/** Late-bound from a computed property name. */
|
|
129
|
+
Late = 1 << 12,
|
|
130
|
+
ReverseMapped = 1 << 13,
|
|
131
|
+
OptionalParameter = 1 << 14,
|
|
132
|
+
RestParameter = 1 << 15,
|
|
133
|
+
/** The type is computed on demand. */
|
|
134
|
+
DeferredType = 1 << 16,
|
|
135
|
+
HasNeverType = 1 << 17,
|
|
136
|
+
Mapped = 1 << 18,
|
|
137
|
+
StripOptional = 1 << 19,
|
|
138
|
+
Unresolved = 1 << 20,
|
|
139
|
+
IsDiscriminantComputed = 1 << 21,
|
|
140
|
+
IsDiscriminant = 1 << 22,
|
|
141
|
+
/** Created from an index signature. */
|
|
142
|
+
IndexSymbol = 1 << 23,
|
|
143
|
+
Synthetic = SyntheticProperty | SyntheticMethod,
|
|
144
|
+
NonUniformAndLiteral = HasNonUniformType | HasLiteralType,
|
|
145
|
+
Partial = ReadPartial | WritePartial,
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/** Fields of Symbol that few symbols set (about one in twenty), allocated on first write. */
|
|
149
|
+
export class SymbolRareFields implements ProgramLifetime {
|
|
150
|
+
members: SymbolTable | undefined = undefined;
|
|
151
|
+
exports: SymbolTable | undefined = undefined;
|
|
152
|
+
exportSymbol: Symbol | undefined = undefined;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export class Symbol implements ProgramLifetime {
|
|
156
|
+
flags: SymbolFlags;
|
|
157
|
+
checkFlags: CheckFlags;
|
|
158
|
+
readonly name: string;
|
|
159
|
+
declarations: Node[];
|
|
160
|
+
valueDeclaration: Node | undefined;
|
|
161
|
+
parent: Symbol | undefined;
|
|
162
|
+
private rareFields: SymbolRareFields | undefined;
|
|
163
|
+
/** Assigned on first use by `getSymbolId`, or at creation while threads share the program; 0 until then. */
|
|
164
|
+
id: number;
|
|
165
|
+
|
|
166
|
+
constructor(flags: SymbolFlags, name: string) {
|
|
167
|
+
this.flags = flags;
|
|
168
|
+
this.checkFlags = CheckFlags.None;
|
|
169
|
+
this.name = name;
|
|
170
|
+
this.declarations = noDeclarations;
|
|
171
|
+
this.valueDeclaration = undefined;
|
|
172
|
+
this.parent = undefined;
|
|
173
|
+
this.rareFields = undefined;
|
|
174
|
+
this.id = idsAtCreation ? takeSymbolId() : 0;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
private rareFieldsOrNew(): SymbolRareFields {
|
|
178
|
+
let group = this.rareFields;
|
|
179
|
+
if (group === undefined) {
|
|
180
|
+
group = new SymbolRareFields();
|
|
181
|
+
this.rareFields = group;
|
|
182
|
+
}
|
|
183
|
+
return group;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
get members(): SymbolTable | undefined {
|
|
187
|
+
const group = this.rareFields;
|
|
188
|
+
return group === undefined ? undefined : group.members;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
set members(value: SymbolTable | undefined) {
|
|
192
|
+
if (value === undefined && this.rareFields === undefined) return;
|
|
193
|
+
this.rareFieldsOrNew().members = value;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
get exports(): SymbolTable | undefined {
|
|
197
|
+
const group = this.rareFields;
|
|
198
|
+
return group === undefined ? undefined : group.exports;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
set exports(value: SymbolTable | undefined) {
|
|
202
|
+
if (value === undefined && this.rareFields === undefined) return;
|
|
203
|
+
this.rareFieldsOrNew().exports = value;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/** For the local symbol of an exported declaration, the exported symbol. */
|
|
207
|
+
get exportSymbol(): Symbol | undefined {
|
|
208
|
+
const group = this.rareFields;
|
|
209
|
+
return group === undefined ? undefined : group.exportSymbol;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
set exportSymbol(value: Symbol | undefined) {
|
|
213
|
+
if (value === undefined && this.rareFields === undefined) return;
|
|
214
|
+
this.rareFieldsOrNew().exportSymbol = value;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// TypeScript 7's API (tsc-ts/api). The symbols it hands out have their ids assigned.
|
|
218
|
+
|
|
219
|
+
/** The name in its escaped form, the key of member and export tables (`escapeSymbolName`). */
|
|
220
|
+
get escapedName(): string {
|
|
221
|
+
return escapeSymbolName(this.name);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
getParent(): Symbol | undefined {
|
|
225
|
+
const parent = this.parent;
|
|
226
|
+
if (parent !== undefined) getSymbolId(parent);
|
|
227
|
+
return parent;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/** The export symbol, or the symbol itself if it has none. */
|
|
231
|
+
getExportSymbol(): Symbol {
|
|
232
|
+
const exported = this.exportSymbol ?? this;
|
|
233
|
+
getSymbolId(exported);
|
|
234
|
+
return exported;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/** The members, by escaped name. */
|
|
238
|
+
getMembers(): Map<__String, PublicSymbol> {
|
|
239
|
+
return byEscapedName(this.members);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/** The exports, by escaped name. */
|
|
243
|
+
getExports(): Map<__String, PublicSymbol> {
|
|
244
|
+
return byEscapedName(this.exports);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/** Whether this is the symbol of an external module, named by its quoted path. */
|
|
248
|
+
isExternalModule(): boolean {
|
|
249
|
+
return (this.flags & SymbolFlags.Module) !== 0 && this.name.charCodeAt(0) === 0x22;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/** The flags of this symbol and its export symbol. */
|
|
253
|
+
combinedLocalAndExportSymbolFlags(): SymbolFlags {
|
|
254
|
+
const exportSymbol = this.exportSymbol;
|
|
255
|
+
return exportSymbol === undefined ? this.flags : this.flags | exportSymbol.flags;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
export type SymbolTable = Map<string, Symbol>;
|
|
260
|
+
|
|
261
|
+
let nextSymbolId = 0;
|
|
262
|
+
// A program shared between threads (parallel-check.ts) is never written, so its symbols get their ids
|
|
263
|
+
// when they are created rather than on first use.
|
|
264
|
+
let idsAtCreation = false;
|
|
265
|
+
// While several threads bind one program (parallel-parse.ts), each takes symbol ids in chunks from a
|
|
266
|
+
// shared counter; ids up to `symbolIdLimit` belong to this thread.
|
|
267
|
+
let symbolIdLimit = Number.POSITIVE_INFINITY;
|
|
268
|
+
let symbolIdCounter: Int32Array | undefined = undefined;
|
|
269
|
+
const symbolIdChunk = 4096;
|
|
270
|
+
|
|
271
|
+
/** Symbols get their ids when they are created from now on (see `idsAtCreation`). */
|
|
272
|
+
export function assignSymbolIdsAtCreation(): void {
|
|
273
|
+
idsAtCreation = true;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/** Whether symbols get their ids when they are created (`assignSymbolIdsAtCreation`). */
|
|
277
|
+
export function symbolIdsAtCreation(): boolean {
|
|
278
|
+
return idsAtCreation;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
function takeSymbolId(): number {
|
|
282
|
+
// `| 0`: ids stay far below 2^31, and native builds then store `id` as an int32.
|
|
283
|
+
return (nextSymbolId < symbolIdLimit ? ++nextSymbolId : takeSymbolIdChunk()) | 0;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
function takeSymbolIdChunk(): number {
|
|
287
|
+
const base = Atomics.add(symbolIdCounter!, 0, symbolIdChunk);
|
|
288
|
+
nextSymbolId = base + 1;
|
|
289
|
+
symbolIdLimit = base + symbolIdChunk;
|
|
290
|
+
return nextSymbolId;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Takes symbol ids in chunks from `counter[0]`, shared by the threads that bind together; with
|
|
295
|
+
* `undefined`, goes back to a plain counter above every id handed out.
|
|
296
|
+
*/
|
|
297
|
+
export function shareSymbolIds(counter: Int32Array | undefined): void {
|
|
298
|
+
if (counter !== undefined) {
|
|
299
|
+
symbolIdCounter = counter;
|
|
300
|
+
symbolIdLimit = nextSymbolId;
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
if (symbolIdCounter !== undefined) {
|
|
304
|
+
const top = Atomics.load(symbolIdCounter, 0);
|
|
305
|
+
if (top > nextSymbolId) nextSymbolId = top;
|
|
306
|
+
}
|
|
307
|
+
symbolIdCounter = undefined;
|
|
308
|
+
symbolIdLimit = Number.POSITIVE_INFINITY;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/** The last symbol id handed out on this thread. */
|
|
312
|
+
export function lastSymbolIdValue(): number {
|
|
313
|
+
return nextSymbolId;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/** Continues symbol ids above `last` (a checker thread starts above the program it checks). */
|
|
317
|
+
export function reserveSymbolIds(last: number): void {
|
|
318
|
+
if (last > nextSymbolId) nextSymbolId = last;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* The declarations of a symbol without any: shared, so never modified. Add declarations with
|
|
323
|
+
* `addDeclaration`, which gives the symbol its own array on the first one.
|
|
324
|
+
*/
|
|
325
|
+
const noDeclarations: Node[] = [];
|
|
326
|
+
|
|
327
|
+
/** Appends `node` to the declarations of `symbol`. */
|
|
328
|
+
export function addDeclaration(symbol: Symbol, node: Node): void {
|
|
329
|
+
const declarations = symbol.declarations;
|
|
330
|
+
if (declarations.length === 0) symbol.declarations = [node];
|
|
331
|
+
else declarations.push(node);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* The symbols of `table` by escaped name, with their ids assigned, as tsc-ts's public API types them: the map's
|
|
336
|
+
* values are typed as the public Symbol, so a native build returns it as the map that interface declares.
|
|
337
|
+
*/
|
|
338
|
+
function byEscapedName(table: SymbolTable | undefined): Map<__String, PublicSymbol> {
|
|
339
|
+
const result = new Map<__String, PublicSymbol>();
|
|
340
|
+
if (table !== undefined)
|
|
341
|
+
for (const symbol of table.values()) {
|
|
342
|
+
getSymbolId(symbol);
|
|
343
|
+
result.set(escapeSymbolName(symbol.name) as __String, symbol as unknown as PublicSymbol);
|
|
344
|
+
}
|
|
345
|
+
return result;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/** A program-wide id, assigned to each symbol when first requested. */
|
|
349
|
+
export function getSymbolId(symbol: Symbol): number {
|
|
350
|
+
let id = symbol.id;
|
|
351
|
+
if (id === 0) {
|
|
352
|
+
id = takeSymbolId();
|
|
353
|
+
symbol.id = id;
|
|
354
|
+
}
|
|
355
|
+
return id;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
/** The exports table of `symbol`, created if missing. */
|
|
359
|
+
export function getExports(symbol: Symbol): SymbolTable {
|
|
360
|
+
let exports = symbol.exports;
|
|
361
|
+
if (exports === undefined) {
|
|
362
|
+
exports = new Map<string, Symbol>();
|
|
363
|
+
symbol.exports = exports;
|
|
364
|
+
}
|
|
365
|
+
return exports;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/** The members table of `symbol`, created if missing. */
|
|
369
|
+
export function getMembers(symbol: Symbol): SymbolTable {
|
|
370
|
+
let members = symbol.members;
|
|
371
|
+
if (members === undefined) {
|
|
372
|
+
members = new Map<string, Symbol>();
|
|
373
|
+
symbol.members = members;
|
|
374
|
+
}
|
|
375
|
+
return members;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* Starts internal symbol names. A noncharacter, so it never starts an identifier and is
|
|
380
|
+
* vanishingly unlikely in a string-literal property name.
|
|
381
|
+
*/
|
|
382
|
+
export const internalSymbolNamePrefix = '';
|
|
383
|
+
|
|
384
|
+
export const enum InternalSymbolName {
|
|
385
|
+
/** Call signatures. */
|
|
386
|
+
Call = 'call',
|
|
387
|
+
/** Constructor implementations. */
|
|
388
|
+
Constructor = 'constructor',
|
|
389
|
+
/** Construct signatures. */
|
|
390
|
+
New = 'new',
|
|
391
|
+
/** Index signatures. */
|
|
392
|
+
Index = 'index',
|
|
393
|
+
/** `export *` declarations. */
|
|
394
|
+
ExportStar = 'export',
|
|
395
|
+
/** The global scope's self-reference. */
|
|
396
|
+
Global = 'global',
|
|
397
|
+
/** A missing name. */
|
|
398
|
+
Missing = 'missing',
|
|
399
|
+
/** An anonymous type literal. */
|
|
400
|
+
Type = 'type',
|
|
401
|
+
/** An anonymous object literal. */
|
|
402
|
+
Object = 'object',
|
|
403
|
+
/** An anonymous JSX attributes object literal. */
|
|
404
|
+
JSXAttributes = 'jsxAttributes',
|
|
405
|
+
/** An unnamed class expression. */
|
|
406
|
+
Class = 'class',
|
|
407
|
+
/** An unnamed function expression. */
|
|
408
|
+
Function = 'function',
|
|
409
|
+
/** A computed property name that isn't a literal. */
|
|
410
|
+
Computed = 'computed',
|
|
411
|
+
/** Late-bound JavaScript assignment declarations. */
|
|
412
|
+
AssignmentDeclaration = 'assignment',
|
|
413
|
+
InstantiationExpression = 'instantiationExpression',
|
|
414
|
+
ImportAttributes = 'importAttributes',
|
|
415
|
+
ExportEquals = 'export=',
|
|
416
|
+
Default = 'default',
|
|
417
|
+
This = 'this',
|
|
418
|
+
ModuleExports = 'module.exports',
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
/** `name` with a leading internal prefix replaced by `__`. */
|
|
422
|
+
export function escapeInternalSymbolName(name: string): string {
|
|
423
|
+
return name.startsWith(internalSymbolNamePrefix) ? '__' + name.substring(1) : name;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
/** `name` with every internal prefix replaced by `__`. */
|
|
427
|
+
export function escapeAllInternalSymbolNames(name: string): string {
|
|
428
|
+
return name.indexOf(internalSymbolNamePrefix) < 0 ? name : name.replaceAll(internalSymbolNamePrefix, '__');
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
/**
|
|
432
|
+
* The escaped `__String` form of a symbol name: internal names get `__`, and names that
|
|
433
|
+
* already start with `__` get one more `_`.
|
|
434
|
+
*/
|
|
435
|
+
export function escapeSymbolName(name: string): string {
|
|
436
|
+
if (name.startsWith(internalSymbolNamePrefix)) return '__' + name.substring(1);
|
|
437
|
+
if (name.startsWith('__')) return '_' + name;
|
|
438
|
+
return name;
|
|
439
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
// Symlinked directories a program found through module resolution, such as packages linked by
|
|
2
|
+
// pnpm or workspaces, so module specifiers can name a file by the path it was imported through.
|
|
3
|
+
import {
|
|
4
|
+
ensureTrailingDirectorySeparator,
|
|
5
|
+
getCanonicalFileName,
|
|
6
|
+
getNormalizedAbsolutePath,
|
|
7
|
+
getPathComponents,
|
|
8
|
+
getPathFromPathComponents,
|
|
9
|
+
toPath,
|
|
10
|
+
} from './path.js';
|
|
11
|
+
|
|
12
|
+
/** The real directory of a symlink, with a trailing `/`: as `realpath` spells it, and as a path. */
|
|
13
|
+
export class KnownDirectoryLink {
|
|
14
|
+
constructor(
|
|
15
|
+
readonly real: string,
|
|
16
|
+
readonly realPath: string,
|
|
17
|
+
) {}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** A directory symlink a resolution implies: as spelled, as a path (trailing `/`), and its real directory. */
|
|
21
|
+
class ImpliedDirectoryLink {
|
|
22
|
+
constructor(
|
|
23
|
+
readonly symlink: string,
|
|
24
|
+
readonly symlinkPath: string,
|
|
25
|
+
readonly real: KnownDirectoryLink,
|
|
26
|
+
) {}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export class KnownSymlinks {
|
|
30
|
+
/** Real directories by symlink path; keys have a trailing `/`. */
|
|
31
|
+
private readonly directories = new Map<string, KnownDirectoryLink>();
|
|
32
|
+
/** Symlinks, as spelled, by real directory path; keys have a trailing `/`. */
|
|
33
|
+
private readonly directoriesByRealpath = new Map<string, Set<string>>();
|
|
34
|
+
/**
|
|
35
|
+
* The directory symlink each resolution implies (`null` for none), by original path and resolved
|
|
36
|
+
* file name: many files resolve the same module through the same symlink.
|
|
37
|
+
*/
|
|
38
|
+
private readonly implied = new Map<string, Map<string, ImpliedDirectoryLink | null>>();
|
|
39
|
+
|
|
40
|
+
constructor(
|
|
41
|
+
readonly currentDirectory: string,
|
|
42
|
+
readonly useCaseSensitiveFileNames: boolean,
|
|
43
|
+
) {}
|
|
44
|
+
|
|
45
|
+
hasDirectory(symlinkPath: string): boolean {
|
|
46
|
+
return this.directories.has(ensureTrailingDirectorySeparator(symlinkPath));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** The symlinks to the real directory `realPath`, which has a trailing `/`. */
|
|
50
|
+
getSymlinksOfDirectory(realPath: string): ReadonlySet<string> | undefined {
|
|
51
|
+
return this.directoriesByRealpath.get(realPath);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
setDirectory(symlink: string, symlinkPath: string, real: KnownDirectoryLink): void {
|
|
55
|
+
if (!this.directories.has(symlinkPath)) {
|
|
56
|
+
let symlinks = this.directoriesByRealpath.get(real.realPath);
|
|
57
|
+
if (symlinks === undefined) {
|
|
58
|
+
symlinks = new Set<string>();
|
|
59
|
+
this.directoriesByRealpath.set(real.realPath, symlinks);
|
|
60
|
+
}
|
|
61
|
+
symlinks.add(symlink);
|
|
62
|
+
}
|
|
63
|
+
this.directories.set(symlinkPath, real);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** Records the directory symlink a resolution through `originalPath` to `resolvedFileName` implies. */
|
|
67
|
+
processResolution(originalPath: string, resolvedFileName: string): void {
|
|
68
|
+
if (originalPath === '' || resolvedFileName === '') return;
|
|
69
|
+
let byResolved = this.implied.get(originalPath);
|
|
70
|
+
if (byResolved === undefined) {
|
|
71
|
+
byResolved = new Map<string, ImpliedDirectoryLink | null>();
|
|
72
|
+
this.implied.set(originalPath, byResolved);
|
|
73
|
+
}
|
|
74
|
+
let link = byResolved.get(resolvedFileName);
|
|
75
|
+
if (link === undefined) {
|
|
76
|
+
link = this.impliedDirectoryLink(originalPath, resolvedFileName);
|
|
77
|
+
byResolved.set(resolvedFileName, link);
|
|
78
|
+
}
|
|
79
|
+
if (link !== null) this.setDirectory(link.symlink, link.symlinkPath, link.real);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
private impliedDirectoryLink(originalPath: string, resolvedFileName: string): ImpliedDirectoryLink | null {
|
|
83
|
+
const common = this.guessDirectorySymlink(resolvedFileName, originalPath);
|
|
84
|
+
if (common === undefined) return null;
|
|
85
|
+
const symlinkPath = toPath(common.original, this.currentDirectory, this.useCaseSensitiveFileNames);
|
|
86
|
+
if (containsIgnoredPath(symlinkPath)) return null;
|
|
87
|
+
return new ImpliedDirectoryLink(
|
|
88
|
+
common.original,
|
|
89
|
+
ensureTrailingDirectorySeparator(symlinkPath),
|
|
90
|
+
new KnownDirectoryLink(
|
|
91
|
+
ensureTrailingDirectorySeparator(common.resolved),
|
|
92
|
+
ensureTrailingDirectorySeparator(
|
|
93
|
+
toPath(common.resolved, this.currentDirectory, this.useCaseSensitiveFileNames),
|
|
94
|
+
),
|
|
95
|
+
),
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/** The longest directories of `resolved` and `original` whose remaining paths are equal. */
|
|
100
|
+
private guessDirectorySymlink(
|
|
101
|
+
resolved: string,
|
|
102
|
+
original: string,
|
|
103
|
+
): { readonly resolved: string; readonly original: string } | undefined {
|
|
104
|
+
const a = getPathComponents(getNormalizedAbsolutePath(resolved, this.currentDirectory));
|
|
105
|
+
const b = getPathComponents(getNormalizedAbsolutePath(original, this.currentDirectory));
|
|
106
|
+
let aLength = a.length;
|
|
107
|
+
let bLength = b.length;
|
|
108
|
+
while (
|
|
109
|
+
aLength >= 2 &&
|
|
110
|
+
bLength >= 2 &&
|
|
111
|
+
!this.isNodeModulesOrScopedPackageDirectory(a[aLength - 2]!) &&
|
|
112
|
+
!this.isNodeModulesOrScopedPackageDirectory(b[bLength - 2]!) &&
|
|
113
|
+
getCanonicalFileName(a[aLength - 1]!, this.useCaseSensitiveFileNames) ===
|
|
114
|
+
getCanonicalFileName(b[bLength - 1]!, this.useCaseSensitiveFileNames)
|
|
115
|
+
) {
|
|
116
|
+
aLength--;
|
|
117
|
+
bLength--;
|
|
118
|
+
}
|
|
119
|
+
if (aLength === a.length) return undefined;
|
|
120
|
+
return {
|
|
121
|
+
resolved: getPathFromPathComponents(a.slice(0, aLength)),
|
|
122
|
+
original: getPathFromPathComponents(b.slice(0, bLength)),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
private isNodeModulesOrScopedPackageDirectory(name: string): boolean {
|
|
127
|
+
return (
|
|
128
|
+
name !== '' &&
|
|
129
|
+
(getCanonicalFileName(name, this.useCaseSensitiveFileNames) === 'node_modules' || name.startsWith('@'))
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/** Paths inside `node_modules/.*` (such as pnpm's store), `.git` or editor lock files. */
|
|
135
|
+
export function containsIgnoredPath(path: string): boolean {
|
|
136
|
+
return path.includes('/node_modules/.') || path.includes('/.git') || path.includes('.#');
|
|
137
|
+
}
|