tsc-ts 0.0.4 → 0.0.6
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 +34 -2
- 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 +2351 -0
- package/dist/api/compiler/ast.js +11212 -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 +1241 -0
- package/dist/api/compiler/binder.d.ts +33 -0
- package/dist/api/compiler/binder.js +2359 -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 +1641 -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 +357 -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 +788 -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 +314 -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 +291 -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 +580 -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 +2587 -0
- package/dist/api/compiler/checker-heritage.d.ts +28 -0
- package/dist/api/compiler/checker-heritage.js +901 -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 +442 -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 +200 -0
- package/dist/api/compiler/checker-members.js +2148 -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 +483 -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 +271 -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 +789 -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 +51 -0
- package/dist/api/compiler/checker-symbol-types.js +955 -0
- package/dist/api/compiler/checker-symbols.d.ts +181 -0
- package/dist/api/compiler/checker-symbols.js +1784 -0
- package/dist/api/compiler/checker-type-factory.d.ts +142 -0
- package/dist/api/compiler/checker-type-factory.js +2542 -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 +1093 -0
- package/dist/api/compiler/checker-types.js +1874 -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 +512 -0
- package/dist/api/compiler/checker.js +932 -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 +161 -0
- package/dist/api/compiler/diagnostics.js +784 -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 +144 -0
- package/dist/api/compiler/file-include.js +599 -0
- package/dist/api/compiler/file-loader.d.ts +290 -0
- package/dist/api/compiler/file-loader.js +1323 -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 +835 -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 +105 -0
- package/dist/api/compiler/link-tables.js +319 -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 +745 -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 +221 -0
- package/dist/api/compiler/parallel-parse.js +541 -0
- package/dist/api/compiler/parser.d.ts +604 -0
- package/dist/api/compiler/parser.js +6426 -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 +157 -0
- package/dist/api/compiler/printer/emit-context.js +582 -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 +529 -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 +1019 -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 +991 -0
- package/dist/api/compiler/symbol.d.ts +282 -0
- package/dist/api/compiler/symbol.js +339 -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 +677 -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 +539 -0
- package/dist/api/compiler/transformers/declarations-pseudo.d.ts +160 -0
- package/dist/api/compiler/transformers/declarations-pseudo.js +799 -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 +198 -0
- package/dist/api/compiler/transformers/declarations.d.ts +175 -0
- package/dist/api/compiler/transformers/declarations.js +2381 -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 +129 -0
- package/dist/api/compiler/transformers/reference-resolver.js +1157 -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 +10 -0
- package/dist/api/compiler/transformers/subtree-facts.js +205 -0
- package/dist/api/compiler/transformers/syntax-facts.d.ts +52 -0
- package/dist/api/compiler/transformers/syntax-facts.js +258 -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 +12870 -0
- package/src/compiler/astnav.ts +799 -0
- package/src/compiler/binder-utilities.ts +1392 -0
- package/src/compiler/binder.ts +2707 -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 +1201 -0
- package/src/compiler/checker-declared-types.ts +919 -0
- package/src/compiler/checker-decorators.ts +694 -0
- package/src/compiler/checker-deprecation.ts +355 -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 +3596 -0
- package/src/compiler/checker-heritage.ts +1240 -0
- package/src/compiler/checker-inference.ts +2584 -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 +1928 -0
- package/src/compiler/checker-literals.ts +61 -0
- package/src/compiler/checker-members.ts +2480 -0
- package/src/compiler/checker-modules.ts +2896 -0
- package/src/compiler/checker-narrowing.ts +3230 -0
- package/src/compiler/checker-object-literals.ts +591 -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 +1187 -0
- package/src/compiler/checker-symbols.ts +2157 -0
- package/src/compiler/checker-type-factory.ts +2616 -0
- package/src/compiler/checker-type-nodes.ts +1033 -0
- package/src/compiler/checker-type-operators.ts +2510 -0
- package/src/compiler/checker-types.ts +2520 -0
- package/src/compiler/checker-unused.ts +642 -0
- package/src/compiler/checker-utilities.ts +161 -0
- package/src/compiler/checker.ts +1138 -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 +858 -0
- package/src/compiler/emitter.ts +434 -0
- package/src/compiler/encoder.ts +1945 -0
- package/src/compiler/file-include.ts +741 -0
- package/src/compiler/file-loader.ts +1597 -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 +2818 -0
- package/src/compiler/init.ts +141 -0
- package/src/compiler/instantiation.ts +938 -0
- package/src/compiler/jsdoc.ts +1386 -0
- package/src/compiler/link-tables.ts +343 -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 +1071 -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 +3433 -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 +1954 -0
- package/src/compiler/parallel-parse.ts +595 -0
- package/src/compiler/parse-thread.ts +136 -0
- package/src/compiler/parser.ts +7766 -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 +684 -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 +594 -0
- package/src/compiler/program-utilities.ts +435 -0
- package/src/compiler/program.ts +1426 -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 +1166 -0
- package/src/compiler/symbol.ts +557 -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 +833 -0
- package/src/compiler/transformers/declarations-pseudo.ts +969 -0
- package/src/compiler/transformers/declarations-resolver.ts +249 -0
- package/src/compiler/transformers/declarations-syntactic.ts +1867 -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 +1213 -0
- package/src/compiler/transformers/runtime-syntax.ts +942 -0
- package/src/compiler/transformers/subtree-facts.ts +253 -0
- package/src/compiler/transformers/syntax-facts.ts +358 -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 +1422 -0
- package/src/compiler/tsc-cli.ts +669 -0
- package/src/compiler/tsc-compile.ts +446 -0
- package/src/compiler/tsc-watch.ts +922 -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
package/README.md
CHANGED
|
@@ -33,7 +33,7 @@ npx tsc-ts --noEmit src/index.ts
|
|
|
33
33
|
|
|
34
34
|
`tsc-ts --api` serves the TypeScript API over stdin and stdout, like `tsc --api`.
|
|
35
35
|
|
|
36
|
-
`--checkers N` checks the program on N threads. Unless `--checkers` or `--singleThreaded` is given, the native executable uses one checker per CPU it may run on (up to 16), and at least tsgo's four; it uses fewer than the CPUs, but never fewer than four, when the estimated peak memory of more checkers would not fit 85% of the machine's memory (`TSC_TS_CHECKERS=fixed` keeps tsgo's four), and checkers beyond the fourth stop taking files, one at a time, when the process's memory reaches that share; it shares one program between its threads and also parses and binds the program's files on them. Files that share costly declarations, such as a large generated schema and the few files importing it, are checked together on one checker. Under Node.js, where every thread builds its own copy of the program, tsc-ts checks on one thread unless `--checkers` is given. `--incremental`, `--watch` and `--build` always check on one thread. The diagnostics are the same as with one checker.
|
|
36
|
+
`--checkers N` checks the program on N threads. Unless `--checkers` or `--singleThreaded` is given, the native executable uses one checker per CPU it may run on (up to 16), and at least tsgo's four; it uses fewer than the CPUs, but never fewer than four, when the estimated peak memory of more checkers would not fit 85% of the machine's memory (`TSC_TS_CHECKERS=fixed` keeps tsgo's four), and checkers beyond the fourth stop taking files, one at a time, when the process's memory reaches that share; it shares one program between its threads and also parses and binds the program's files on them. Unless `--singleThreaded` is given, the program's files are parsed and bound on threads also with `--checkers 1`, as tsgo does. Files that share costly declarations, such as a large generated schema and the few files importing it, are checked together on one checker. Under Node.js, where every thread builds its own copy of the program, tsc-ts checks on one thread unless `--checkers` is given. `--incremental`, `--watch` and `--build` always check on one thread. The diagnostics are the same as with one checker.
|
|
37
37
|
|
|
38
38
|
The native executable never frees syntax trees, types, signatures or symbols: it keeps them until it exits, which saves the cost of tracking them during a build. A one-shot build is unaffected, but a long-running process grows with each rebuild or project update. Native `--watch` (also with `--build`) runs in a child process, and when a change arrives while that process holds more than 2.5 times the memory it held after its first build, a new process replaces it and builds the change, reporting what the old process would have. `TSC_TS_WATCH_MEMORY` sets that limit in megabytes, and `TSC_TS_WATCH_MEMORY=0` turns the replacement off. A `--api` process grows with each project update; restart it to reclaim the memory.
|
|
39
39
|
|
|
@@ -51,4 +51,36 @@ const isIdentifier = (node: Node): boolean => node.kind === SyntaxKind.Identifie
|
|
|
51
51
|
|
|
52
52
|
Lists of child nodes are `NodeList` objects: `node.arguments.nodes` holds the nodes, and `pos` and `end` the list's range. `symbolName(symbol)` gives a symbol's name as TypeScript 7's API does (`__call`, `export=`).
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
### Programs and checkers
|
|
55
|
+
|
|
56
|
+
`createProgram({ rootNames, options, host })` creates a program of root files with compiler options, and `createProgramFromConfigFile(configFileName, host)` the program of a `tsconfig.json`. `parseConfigFile(configFileName, host)` returns a config file's options, root files and diagnostics. A program loads its files as `tsc-ts` loads a project's, on the calling thread.
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
import { createProgramFromConfigFile, SyntaxKind, walkPreorder } from 'tsc-ts/api';
|
|
60
|
+
|
|
61
|
+
const program = createProgramFromConfigFile('tsconfig.json', {
|
|
62
|
+
getCurrentDirectory: () => process.cwd(),
|
|
63
|
+
useCaseSensitiveFileNames: () => process.platform === 'linux',
|
|
64
|
+
getDefaultLibraryDirectory: () => '/path/to/lib',
|
|
65
|
+
});
|
|
66
|
+
const checker = program.getTypeChecker();
|
|
67
|
+
for (const file of program.getSourceFiles()) {
|
|
68
|
+
if (program.isSourceFileDefaultLibrary(file)) continue;
|
|
69
|
+
walkPreorder(file, (node) => {
|
|
70
|
+
if (node.kind === SyntaxKind.Identifier) console.log(checker.typeToString(checker.getTypeAtLocation(node)!));
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
program.dispose();
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
The host's `getDefaultLibraryDirectory()` names the directory with TypeScript 7's `lib.*.d.ts` files; the platform packages carry them in their `lib` directory. The host's `readFile`, `fileExists`, `directoryExists`, `realpath` and `getAccessibleEntries` are optional: where one is missing or answers undefined, the program reads the disk.
|
|
77
|
+
|
|
78
|
+
The program's diagnostics, with their text and positions, are those `tsc --api` returns for the same project. `getTypeChecker()` returns a checker for queries, separate from the checker that reports the program's diagnostics, so queries don't change them. Its methods answer as the `tsc --api` requests of the same names. Nodes, symbols, types and signatures are tsc-ts's own objects, one per node, symbol, type and signature in a program, so they can be compared with `===` and used as Map keys.
|
|
79
|
+
|
|
80
|
+
`parseSourceFile(fileName, text, options)` parses one file without a program, as a program with `options.compilerOptions` parses it. The node functions `forEachChild`, `walkPreorder`, `tokenStartOfNode`, `getJSDoc`, `getModifiers`, `canHaveModifiers`, `getCombinedModifierFlags`, `getCombinedNodeFlags`, `getLineStarts`, `getLineAndCharacterOfPosition`, `getPositionOfLineAndCharacter` and `tokenToString`, and `flattenDiagnosticMessageText`, behave as TypeScript 7's. `getSourceFileOfNode(node)` returns the source file a node is in, and `getTextOfNode(node)` its text from the start of its first token, as TypeScript's `node.getSourceFile()` and `node.getText()` do.
|
|
81
|
+
|
|
82
|
+
`getPreEmitDiagnostics(program, sourceFile?)` returns a program's config file parsing, program, syntactic, global and semantic diagnostics, sorted and without duplicates, as TypeScript's function of that name does.
|
|
83
|
+
|
|
84
|
+
An exception the compiler throws while answering a call reaches the caller as an `InternalCompilerError`, with the exception as its `cause`; the program's checker may be inconsistent after one, so dispose of the program. `program.dispose()` frees the program's checkers; calls on the program or its checker after it throw a `DisposedProgramError`.
|
|
85
|
+
|
|
86
|
+
The package has a JavaScript build with declaration files for Node.js, and the TypeScript sources of the API and the compiler (the `source` export condition) for compilers that build it from source. The sources compile with scriptc: a test builds a program on `tsc-ts/api` natively and checks that it answers as the Node build.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { ModifierFlags, type Node } from './ast.js';
|
|
2
|
+
import { SyntaxKind } from './syntax-kind.js';
|
|
3
|
+
export declare const enum OperatorPrecedence {
|
|
4
|
+
Invalid = -1,
|
|
5
|
+
Comma = 0,
|
|
6
|
+
Spread = 1,
|
|
7
|
+
Yield = 2,
|
|
8
|
+
Assignment = 3,
|
|
9
|
+
Conditional = 4,
|
|
10
|
+
LogicalOR = 5,
|
|
11
|
+
LogicalAND = 6,
|
|
12
|
+
BitwiseOR = 7,
|
|
13
|
+
BitwiseXOR = 8,
|
|
14
|
+
BitwiseAND = 9,
|
|
15
|
+
Equality = 10,
|
|
16
|
+
Relational = 11,
|
|
17
|
+
Shift = 12,
|
|
18
|
+
Additive = 13,
|
|
19
|
+
Multiplicative = 14,
|
|
20
|
+
Exponentiation = 15,
|
|
21
|
+
Unary = 16,
|
|
22
|
+
Update = 17,
|
|
23
|
+
LeftHandSide = 18,
|
|
24
|
+
OptionalChain = 19,
|
|
25
|
+
Member = 20,
|
|
26
|
+
Primary = 21,
|
|
27
|
+
Parentheses = 22,
|
|
28
|
+
Lowest = 0,
|
|
29
|
+
Highest = 22,
|
|
30
|
+
DisallowComma = 2,
|
|
31
|
+
Coalesce = 5
|
|
32
|
+
}
|
|
33
|
+
export declare function getBinaryOperatorPrecedence(kind: SyntaxKind): OperatorPrecedence;
|
|
34
|
+
export declare function isKeyword(token: SyntaxKind): boolean;
|
|
35
|
+
export declare function isPunctuation(token: SyntaxKind): boolean;
|
|
36
|
+
export declare function isKeywordOrPunctuation(token: SyntaxKind): boolean;
|
|
37
|
+
export declare function isReservedWord(token: SyntaxKind): boolean;
|
|
38
|
+
export declare function tokenIsIdentifierOrKeyword(token: SyntaxKind): boolean;
|
|
39
|
+
export declare function tokenIsIdentifierOrKeywordOrGreaterThan(token: SyntaxKind): boolean;
|
|
40
|
+
export declare function isModifierKind(kind: SyntaxKind): boolean;
|
|
41
|
+
export declare function modifierToFlag(kind: SyntaxKind): ModifierFlags;
|
|
42
|
+
export declare function modifiersToFlags(modifiers: readonly Node[]): ModifierFlags;
|
|
43
|
+
export declare function isParameterPropertyModifier(kind: SyntaxKind): boolean;
|
|
44
|
+
export declare function isClassMemberModifier(token: SyntaxKind): boolean;
|
|
45
|
+
export declare function isAssignmentOperator(kind: SyntaxKind): boolean;
|
|
46
|
+
/** Whether the node has an empty, non-synthesized range (and isn't the end of file token). */
|
|
47
|
+
export declare function nodeIsMissing(node: Node | undefined): boolean;
|
|
48
|
+
export declare function nodeIsPresent(node: Node | undefined): boolean;
|
|
49
|
+
export declare function isInJSFile(node: Node | undefined): boolean;
|
|
50
|
+
export declare function compareNodePositions(a: Node, b: Node): number;
|
|
51
|
+
/** Partially emitted expressions, created by transforms, are skipped. */
|
|
52
|
+
export declare function isLeftHandSideExpression(node: Node): boolean;
|
|
53
|
+
export declare function isFunctionLikeDeclarationKind(kind: SyntaxKind): boolean;
|
|
54
|
+
export declare function isFunctionLikeKind(kind: SyntaxKind): boolean;
|
|
55
|
+
export declare function isFunctionLike(node: Node | undefined): boolean;
|
|
56
|
+
export declare function canHaveIllegalDecorators(node: Node): boolean;
|
|
57
|
+
export declare function canHaveDecorators(node: Node): boolean;
|
|
58
|
+
export declare function isStringLiteralLike(node: Node): boolean;
|
|
59
|
+
/** Whether two JSX tag names (identifiers, `this`, namespaced names or property accesses) are the same. */
|
|
60
|
+
export declare function tagNamesAreEquivalent(lhs: Node, rhs: Node): boolean;
|
|
61
|
+
/** The source text of a node, without leading trivia. */
|
|
62
|
+
export declare function getTextOfNodeFromSourceText(sourceText: string, node: Node): string;
|
|
63
|
+
export declare function isImportMeta(node: Node): boolean;
|
|
64
|
+
/** `import(…)` or `import.defer(…)`. */
|
|
65
|
+
export declare function isImportCall(node: Node): boolean;
|
|
66
|
+
/** `require(x)` with one argument, a string literal if `requireStringLiteralLikeArgument`. */
|
|
67
|
+
export declare function isRequireCall(node: Node, requireStringLiteralLikeArgument: boolean): boolean;
|
|
68
|
+
/** The string literal of `import("x")` types. */
|
|
69
|
+
export declare function getImportTypeNodeLiteral(node: Node): Node | undefined;
|
|
70
|
+
export declare function isLiteralImportTypeNode(node: Node): boolean;
|
|
71
|
+
export declare function isAnyImportOrReExport(node: Node): boolean;
|
|
72
|
+
export declare function getExternalModuleName(node: Node): Node | undefined;
|
|
73
|
+
export declare function isGlobalScopeAugmentation(node: Node): boolean;
|
|
74
|
+
/** Whether a node is written type-only: an `import type` clause, or a `type` specifier, import or export. */
|
|
75
|
+
export declare function isTypeOnly(node: Node): boolean;
|
|
76
|
+
/** Whether a declaration declares only a type. */
|
|
77
|
+
export declare function isTypeDeclaration(node: Node): boolean;
|
|
78
|
+
export declare function isAmbientModule(node: Node): boolean;
|
|
79
|
+
/** Whether `node` is a JavaScript `/** @type {T} *\/ (x)` cast, reparsed as a parenthesized `as` expression. */
|
|
80
|
+
export declare function isJSDocTypeAssertion(node: Node): boolean;
|
|
81
|
+
/** The expression a check applies to: parentheses and `satisfies` are skipped, but not JavaScript casts. */
|
|
82
|
+
export declare function getEffectiveCheckNode(argument: Node): Node;
|
|
@@ -0,0 +1,462 @@
|
|
|
1
|
+
// Predicates and helpers over syntax kinds and nodes, as in tsgo's ast/utilities.go.
|
|
2
|
+
//
|
|
3
|
+
// Fields of `instanceof`-narrowed nodes are read through `as` casts: scriptc reads them
|
|
4
|
+
// statically, but reads fields of a narrowed value dynamically.
|
|
5
|
+
import { CallExpression, ExternalModuleReference, Identifier, ImportEqualsDeclaration, ImportTypeNode, JsxNamespacedName, LiteralTypeNode, MetaProperty, ModuleDeclaration, PropertyAccessExpression, StringLiteral, getExpression, getIsTypeOnly, getModuleSpecifier, getText, getType, } from './ast.js';
|
|
6
|
+
import { skipTrivia } from './scanner.js';
|
|
7
|
+
export function getBinaryOperatorPrecedence(kind) {
|
|
8
|
+
switch (kind) {
|
|
9
|
+
case 60 /* SyntaxKind.QuestionQuestionToken */:
|
|
10
|
+
return 5 /* OperatorPrecedence.Coalesce */;
|
|
11
|
+
case 56 /* SyntaxKind.BarBarToken */:
|
|
12
|
+
return 5 /* OperatorPrecedence.LogicalOR */;
|
|
13
|
+
case 55 /* SyntaxKind.AmpersandAmpersandToken */:
|
|
14
|
+
return 6 /* OperatorPrecedence.LogicalAND */;
|
|
15
|
+
case 51 /* SyntaxKind.BarToken */:
|
|
16
|
+
return 7 /* OperatorPrecedence.BitwiseOR */;
|
|
17
|
+
case 52 /* SyntaxKind.CaretToken */:
|
|
18
|
+
return 8 /* OperatorPrecedence.BitwiseXOR */;
|
|
19
|
+
case 50 /* SyntaxKind.AmpersandToken */:
|
|
20
|
+
return 9 /* OperatorPrecedence.BitwiseAND */;
|
|
21
|
+
case 34 /* SyntaxKind.EqualsEqualsToken */:
|
|
22
|
+
case 35 /* SyntaxKind.ExclamationEqualsToken */:
|
|
23
|
+
case 36 /* SyntaxKind.EqualsEqualsEqualsToken */:
|
|
24
|
+
case 37 /* SyntaxKind.ExclamationEqualsEqualsToken */:
|
|
25
|
+
return 10 /* OperatorPrecedence.Equality */;
|
|
26
|
+
case 29 /* SyntaxKind.LessThanToken */:
|
|
27
|
+
case 31 /* SyntaxKind.GreaterThanToken */:
|
|
28
|
+
case 32 /* SyntaxKind.LessThanEqualsToken */:
|
|
29
|
+
case 33 /* SyntaxKind.GreaterThanEqualsToken */:
|
|
30
|
+
case 103 /* SyntaxKind.InstanceOfKeyword */:
|
|
31
|
+
case 102 /* SyntaxKind.InKeyword */:
|
|
32
|
+
case 129 /* SyntaxKind.AsKeyword */:
|
|
33
|
+
case 152 /* SyntaxKind.SatisfiesKeyword */:
|
|
34
|
+
return 11 /* OperatorPrecedence.Relational */;
|
|
35
|
+
case 47 /* SyntaxKind.LessThanLessThanToken */:
|
|
36
|
+
case 48 /* SyntaxKind.GreaterThanGreaterThanToken */:
|
|
37
|
+
case 49 /* SyntaxKind.GreaterThanGreaterThanGreaterThanToken */:
|
|
38
|
+
return 12 /* OperatorPrecedence.Shift */;
|
|
39
|
+
case 39 /* SyntaxKind.PlusToken */:
|
|
40
|
+
case 40 /* SyntaxKind.MinusToken */:
|
|
41
|
+
return 13 /* OperatorPrecedence.Additive */;
|
|
42
|
+
case 41 /* SyntaxKind.AsteriskToken */:
|
|
43
|
+
case 43 /* SyntaxKind.SlashToken */:
|
|
44
|
+
case 44 /* SyntaxKind.PercentToken */:
|
|
45
|
+
return 14 /* OperatorPrecedence.Multiplicative */;
|
|
46
|
+
case 42 /* SyntaxKind.AsteriskAsteriskToken */:
|
|
47
|
+
return 15 /* OperatorPrecedence.Exponentiation */;
|
|
48
|
+
}
|
|
49
|
+
// Lower than every precedence, so binary expression parsing stops.
|
|
50
|
+
return -1 /* OperatorPrecedence.Invalid */;
|
|
51
|
+
}
|
|
52
|
+
// Tokens
|
|
53
|
+
export function isKeyword(token) {
|
|
54
|
+
return token >= 82 /* SyntaxKind.FirstKeyword */ && token <= 166 /* SyntaxKind.LastKeyword */;
|
|
55
|
+
}
|
|
56
|
+
export function isPunctuation(token) {
|
|
57
|
+
return token >= 18 /* SyntaxKind.FirstPunctuation */ && token <= 78 /* SyntaxKind.LastPunctuation */;
|
|
58
|
+
}
|
|
59
|
+
export function isKeywordOrPunctuation(token) {
|
|
60
|
+
return isKeyword(token) || isPunctuation(token);
|
|
61
|
+
}
|
|
62
|
+
export function isReservedWord(token) {
|
|
63
|
+
return token >= 82 /* SyntaxKind.FirstReservedWord */ && token <= 117 /* SyntaxKind.LastReservedWord */;
|
|
64
|
+
}
|
|
65
|
+
export function tokenIsIdentifierOrKeyword(token) {
|
|
66
|
+
return token >= 79 /* SyntaxKind.Identifier */;
|
|
67
|
+
}
|
|
68
|
+
export function tokenIsIdentifierOrKeywordOrGreaterThan(token) {
|
|
69
|
+
return token === 31 /* SyntaxKind.GreaterThanToken */ || tokenIsIdentifierOrKeyword(token);
|
|
70
|
+
}
|
|
71
|
+
export function isModifierKind(kind) {
|
|
72
|
+
switch (kind) {
|
|
73
|
+
case 127 /* SyntaxKind.AbstractKeyword */:
|
|
74
|
+
case 128 /* SyntaxKind.AccessorKeyword */:
|
|
75
|
+
case 133 /* SyntaxKind.AsyncKeyword */:
|
|
76
|
+
case 86 /* SyntaxKind.ConstKeyword */:
|
|
77
|
+
case 137 /* SyntaxKind.DeclareKeyword */:
|
|
78
|
+
case 89 /* SyntaxKind.DefaultKeyword */:
|
|
79
|
+
case 94 /* SyntaxKind.ExportKeyword */:
|
|
80
|
+
case 102 /* SyntaxKind.InKeyword */:
|
|
81
|
+
case 122 /* SyntaxKind.PrivateKeyword */:
|
|
82
|
+
case 123 /* SyntaxKind.ProtectedKeyword */:
|
|
83
|
+
case 124 /* SyntaxKind.PublicKeyword */:
|
|
84
|
+
case 148 /* SyntaxKind.ReadonlyKeyword */:
|
|
85
|
+
case 147 /* SyntaxKind.OutKeyword */:
|
|
86
|
+
case 164 /* SyntaxKind.OverrideKeyword */:
|
|
87
|
+
case 125 /* SyntaxKind.StaticKeyword */:
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
export function modifierToFlag(kind) {
|
|
93
|
+
switch (kind) {
|
|
94
|
+
case 125 /* SyntaxKind.StaticKeyword */:
|
|
95
|
+
return 256 /* ModifierFlags.Static */;
|
|
96
|
+
case 124 /* SyntaxKind.PublicKeyword */:
|
|
97
|
+
return 1 /* ModifierFlags.Public */;
|
|
98
|
+
case 123 /* SyntaxKind.ProtectedKeyword */:
|
|
99
|
+
return 4 /* ModifierFlags.Protected */;
|
|
100
|
+
case 122 /* SyntaxKind.PrivateKeyword */:
|
|
101
|
+
return 2 /* ModifierFlags.Private */;
|
|
102
|
+
case 127 /* SyntaxKind.AbstractKeyword */:
|
|
103
|
+
return 64 /* ModifierFlags.Abstract */;
|
|
104
|
+
case 128 /* SyntaxKind.AccessorKeyword */:
|
|
105
|
+
return 512 /* ModifierFlags.Accessor */;
|
|
106
|
+
case 94 /* SyntaxKind.ExportKeyword */:
|
|
107
|
+
return 32 /* ModifierFlags.Export */;
|
|
108
|
+
case 137 /* SyntaxKind.DeclareKeyword */:
|
|
109
|
+
return 128 /* ModifierFlags.Ambient */;
|
|
110
|
+
case 86 /* SyntaxKind.ConstKeyword */:
|
|
111
|
+
return 4096 /* ModifierFlags.Const */;
|
|
112
|
+
case 89 /* SyntaxKind.DefaultKeyword */:
|
|
113
|
+
return 2048 /* ModifierFlags.Default */;
|
|
114
|
+
case 133 /* SyntaxKind.AsyncKeyword */:
|
|
115
|
+
return 1024 /* ModifierFlags.Async */;
|
|
116
|
+
case 148 /* SyntaxKind.ReadonlyKeyword */:
|
|
117
|
+
return 8 /* ModifierFlags.Readonly */;
|
|
118
|
+
case 164 /* SyntaxKind.OverrideKeyword */:
|
|
119
|
+
return 16 /* ModifierFlags.Override */;
|
|
120
|
+
case 102 /* SyntaxKind.InKeyword */:
|
|
121
|
+
return 8192 /* ModifierFlags.In */;
|
|
122
|
+
case 147 /* SyntaxKind.OutKeyword */:
|
|
123
|
+
return 16384 /* ModifierFlags.Out */;
|
|
124
|
+
case 171 /* SyntaxKind.Decorator */:
|
|
125
|
+
return 32768 /* ModifierFlags.Decorator */;
|
|
126
|
+
}
|
|
127
|
+
return 0 /* ModifierFlags.None */;
|
|
128
|
+
}
|
|
129
|
+
export function modifiersToFlags(modifiers) {
|
|
130
|
+
let flags = 0 /* ModifierFlags.None */;
|
|
131
|
+
for (let i = 0; i < modifiers.length; i++)
|
|
132
|
+
flags |= modifierToFlag(modifiers[i].kind);
|
|
133
|
+
return flags;
|
|
134
|
+
}
|
|
135
|
+
export function isParameterPropertyModifier(kind) {
|
|
136
|
+
return (modifierToFlag(kind) & 31 /* ModifierFlags.ParameterPropertyModifier */) !== 0;
|
|
137
|
+
}
|
|
138
|
+
export function isClassMemberModifier(token) {
|
|
139
|
+
return (isParameterPropertyModifier(token) ||
|
|
140
|
+
token === 125 /* SyntaxKind.StaticKeyword */ ||
|
|
141
|
+
token === 164 /* SyntaxKind.OverrideKeyword */ ||
|
|
142
|
+
token === 128 /* SyntaxKind.AccessorKeyword */);
|
|
143
|
+
}
|
|
144
|
+
export function isAssignmentOperator(kind) {
|
|
145
|
+
switch (kind) {
|
|
146
|
+
case 63 /* SyntaxKind.EqualsToken */:
|
|
147
|
+
case 64 /* SyntaxKind.PlusEqualsToken */:
|
|
148
|
+
case 65 /* SyntaxKind.MinusEqualsToken */:
|
|
149
|
+
case 67 /* SyntaxKind.AsteriskAsteriskEqualsToken */:
|
|
150
|
+
case 66 /* SyntaxKind.AsteriskEqualsToken */:
|
|
151
|
+
case 68 /* SyntaxKind.SlashEqualsToken */:
|
|
152
|
+
case 69 /* SyntaxKind.PercentEqualsToken */:
|
|
153
|
+
case 73 /* SyntaxKind.AmpersandEqualsToken */:
|
|
154
|
+
case 74 /* SyntaxKind.BarEqualsToken */:
|
|
155
|
+
case 78 /* SyntaxKind.CaretEqualsToken */:
|
|
156
|
+
case 70 /* SyntaxKind.LessThanLessThanEqualsToken */:
|
|
157
|
+
case 72 /* SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken */:
|
|
158
|
+
case 71 /* SyntaxKind.GreaterThanGreaterThanEqualsToken */:
|
|
159
|
+
case 75 /* SyntaxKind.BarBarEqualsToken */:
|
|
160
|
+
case 76 /* SyntaxKind.AmpersandAmpersandEqualsToken */:
|
|
161
|
+
case 77 /* SyntaxKind.QuestionQuestionEqualsToken */:
|
|
162
|
+
return true;
|
|
163
|
+
}
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
// Nodes
|
|
167
|
+
/** Whether the node has an empty, non-synthesized range (and isn't the end of file token). */
|
|
168
|
+
export function nodeIsMissing(node) {
|
|
169
|
+
return node === undefined || (node.pos === node.end && node.pos >= 0 && node.kind !== 1 /* SyntaxKind.EndOfFile */);
|
|
170
|
+
}
|
|
171
|
+
export function nodeIsPresent(node) {
|
|
172
|
+
return !nodeIsMissing(node);
|
|
173
|
+
}
|
|
174
|
+
export function isInJSFile(node) {
|
|
175
|
+
return node !== undefined && (node.flags & 65536 /* NodeFlags.JavaScriptFile */) !== 0;
|
|
176
|
+
}
|
|
177
|
+
export function compareNodePositions(a, b) {
|
|
178
|
+
const c = a.pos - b.pos;
|
|
179
|
+
return c !== 0 ? c : a.end - b.end;
|
|
180
|
+
}
|
|
181
|
+
function isLeftHandSideExpressionKind(kind) {
|
|
182
|
+
switch (kind) {
|
|
183
|
+
case 212 /* SyntaxKind.PropertyAccessExpression */:
|
|
184
|
+
case 213 /* SyntaxKind.ElementAccessExpression */:
|
|
185
|
+
case 215 /* SyntaxKind.NewExpression */:
|
|
186
|
+
case 214 /* SyntaxKind.CallExpression */:
|
|
187
|
+
case 285 /* SyntaxKind.JsxElement */:
|
|
188
|
+
case 286 /* SyntaxKind.JsxSelfClosingElement */:
|
|
189
|
+
case 289 /* SyntaxKind.JsxFragment */:
|
|
190
|
+
case 216 /* SyntaxKind.TaggedTemplateExpression */:
|
|
191
|
+
case 210 /* SyntaxKind.ArrayLiteralExpression */:
|
|
192
|
+
case 218 /* SyntaxKind.ParenthesizedExpression */:
|
|
193
|
+
case 211 /* SyntaxKind.ObjectLiteralExpression */:
|
|
194
|
+
case 232 /* SyntaxKind.ClassExpression */:
|
|
195
|
+
case 219 /* SyntaxKind.FunctionExpression */:
|
|
196
|
+
case 79 /* SyntaxKind.Identifier */:
|
|
197
|
+
case 80 /* SyntaxKind.PrivateIdentifier */:
|
|
198
|
+
case 13 /* SyntaxKind.RegularExpressionLiteral */:
|
|
199
|
+
case 8 /* SyntaxKind.NumericLiteral */:
|
|
200
|
+
case 9 /* SyntaxKind.BigIntLiteral */:
|
|
201
|
+
case 10 /* SyntaxKind.StringLiteral */:
|
|
202
|
+
case 14 /* SyntaxKind.NoSubstitutionTemplateLiteral */:
|
|
203
|
+
case 229 /* SyntaxKind.TemplateExpression */:
|
|
204
|
+
case 96 /* SyntaxKind.FalseKeyword */:
|
|
205
|
+
case 105 /* SyntaxKind.NullKeyword */:
|
|
206
|
+
case 109 /* SyntaxKind.ThisKeyword */:
|
|
207
|
+
case 111 /* SyntaxKind.TrueKeyword */:
|
|
208
|
+
case 107 /* SyntaxKind.SuperKeyword */:
|
|
209
|
+
case 236 /* SyntaxKind.NonNullExpression */:
|
|
210
|
+
case 234 /* SyntaxKind.ExpressionWithTypeArguments */:
|
|
211
|
+
case 237 /* SyntaxKind.MetaProperty */:
|
|
212
|
+
case 101 /* SyntaxKind.ImportKeyword */:
|
|
213
|
+
case 283 /* SyntaxKind.MissingDeclaration */:
|
|
214
|
+
return true;
|
|
215
|
+
}
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
/** Partially emitted expressions, created by transforms, are skipped. */
|
|
219
|
+
export function isLeftHandSideExpression(node) {
|
|
220
|
+
let expression = node;
|
|
221
|
+
while (expression.kind === 348 /* SyntaxKind.PartiallyEmittedExpression */)
|
|
222
|
+
expression = expression.expression;
|
|
223
|
+
return isLeftHandSideExpressionKind(expression.kind);
|
|
224
|
+
}
|
|
225
|
+
export function isFunctionLikeDeclarationKind(kind) {
|
|
226
|
+
switch (kind) {
|
|
227
|
+
case 263 /* SyntaxKind.FunctionDeclaration */:
|
|
228
|
+
case 175 /* SyntaxKind.MethodDeclaration */:
|
|
229
|
+
case 177 /* SyntaxKind.Constructor */:
|
|
230
|
+
case 178 /* SyntaxKind.GetAccessor */:
|
|
231
|
+
case 179 /* SyntaxKind.SetAccessor */:
|
|
232
|
+
case 219 /* SyntaxKind.FunctionExpression */:
|
|
233
|
+
case 220 /* SyntaxKind.ArrowFunction */:
|
|
234
|
+
return true;
|
|
235
|
+
}
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
export function isFunctionLikeKind(kind) {
|
|
239
|
+
switch (kind) {
|
|
240
|
+
case 174 /* SyntaxKind.MethodSignature */:
|
|
241
|
+
case 180 /* SyntaxKind.CallSignature */:
|
|
242
|
+
case 318 /* SyntaxKind.JSDocSignature */:
|
|
243
|
+
case 181 /* SyntaxKind.ConstructSignature */:
|
|
244
|
+
case 182 /* SyntaxKind.IndexSignature */:
|
|
245
|
+
case 185 /* SyntaxKind.FunctionType */:
|
|
246
|
+
case 186 /* SyntaxKind.ConstructorType */:
|
|
247
|
+
return true;
|
|
248
|
+
}
|
|
249
|
+
return isFunctionLikeDeclarationKind(kind);
|
|
250
|
+
}
|
|
251
|
+
export function isFunctionLike(node) {
|
|
252
|
+
return node !== undefined && isFunctionLikeKind(node.kind);
|
|
253
|
+
}
|
|
254
|
+
export function canHaveIllegalDecorators(node) {
|
|
255
|
+
switch (node.kind) {
|
|
256
|
+
case 303 /* SyntaxKind.PropertyAssignment */:
|
|
257
|
+
case 304 /* SyntaxKind.ShorthandPropertyAssignment */:
|
|
258
|
+
case 263 /* SyntaxKind.FunctionDeclaration */:
|
|
259
|
+
case 177 /* SyntaxKind.Constructor */:
|
|
260
|
+
case 182 /* SyntaxKind.IndexSignature */:
|
|
261
|
+
case 176 /* SyntaxKind.ClassStaticBlockDeclaration */:
|
|
262
|
+
case 283 /* SyntaxKind.MissingDeclaration */:
|
|
263
|
+
case 244 /* SyntaxKind.VariableStatement */:
|
|
264
|
+
case 265 /* SyntaxKind.InterfaceDeclaration */:
|
|
265
|
+
case 266 /* SyntaxKind.TypeAliasDeclaration */:
|
|
266
|
+
case 267 /* SyntaxKind.EnumDeclaration */:
|
|
267
|
+
case 268 /* SyntaxKind.ModuleDeclaration */:
|
|
268
|
+
case 272 /* SyntaxKind.ImportEqualsDeclaration */:
|
|
269
|
+
case 273 /* SyntaxKind.ImportDeclaration */:
|
|
270
|
+
case 346 /* SyntaxKind.JSImportDeclaration */:
|
|
271
|
+
case 271 /* SyntaxKind.NamespaceExportDeclaration */:
|
|
272
|
+
case 279 /* SyntaxKind.ExportDeclaration */:
|
|
273
|
+
case 278 /* SyntaxKind.ExportAssignment */:
|
|
274
|
+
return true;
|
|
275
|
+
}
|
|
276
|
+
return false;
|
|
277
|
+
}
|
|
278
|
+
export function canHaveDecorators(node) {
|
|
279
|
+
switch (node.kind) {
|
|
280
|
+
case 170 /* SyntaxKind.Parameter */:
|
|
281
|
+
case 173 /* SyntaxKind.PropertyDeclaration */:
|
|
282
|
+
case 175 /* SyntaxKind.MethodDeclaration */:
|
|
283
|
+
case 178 /* SyntaxKind.GetAccessor */:
|
|
284
|
+
case 179 /* SyntaxKind.SetAccessor */:
|
|
285
|
+
case 232 /* SyntaxKind.ClassExpression */:
|
|
286
|
+
case 264 /* SyntaxKind.ClassDeclaration */:
|
|
287
|
+
return true;
|
|
288
|
+
}
|
|
289
|
+
return false;
|
|
290
|
+
}
|
|
291
|
+
export function isStringLiteralLike(node) {
|
|
292
|
+
return node.kind === 10 /* SyntaxKind.StringLiteral */ || node.kind === 14 /* SyntaxKind.NoSubstitutionTemplateLiteral */;
|
|
293
|
+
}
|
|
294
|
+
/** Whether two JSX tag names (identifiers, `this`, namespaced names or property accesses) are the same. */
|
|
295
|
+
export function tagNamesAreEquivalent(lhs, rhs) {
|
|
296
|
+
if (lhs.kind !== rhs.kind)
|
|
297
|
+
return false;
|
|
298
|
+
if (lhs instanceof Identifier && rhs instanceof Identifier)
|
|
299
|
+
return lhs.text === rhs.text;
|
|
300
|
+
if (lhs.kind === 109 /* SyntaxKind.ThisKeyword */)
|
|
301
|
+
return true;
|
|
302
|
+
if (lhs instanceof JsxNamespacedName && rhs instanceof JsxNamespacedName)
|
|
303
|
+
return (lhs.namespace.text === rhs.namespace.text &&
|
|
304
|
+
lhs.name.text === rhs.name.text);
|
|
305
|
+
if (lhs instanceof PropertyAccessExpression && rhs instanceof PropertyAccessExpression)
|
|
306
|
+
return (getText(lhs.name) === getText(rhs.name) &&
|
|
307
|
+
tagNamesAreEquivalent(lhs.expression, rhs.expression));
|
|
308
|
+
throw new Error('Unhandled case in tagNamesAreEquivalent');
|
|
309
|
+
}
|
|
310
|
+
/** The source text of a node, without leading trivia. */
|
|
311
|
+
export function getTextOfNodeFromSourceText(sourceText, node) {
|
|
312
|
+
if (nodeIsMissing(node))
|
|
313
|
+
return '';
|
|
314
|
+
const text = sourceText.substring(skipTrivia(sourceText, node.pos), node.end);
|
|
315
|
+
if ((node.flags & 268435456 /* NodeFlags.ReparserTransformedLiteral */) !== 0) {
|
|
316
|
+
if (node instanceof StringLiteral)
|
|
317
|
+
return (node.tokenFlags & 65536 /* TokenFlags.SingleQuote */) !== 0 ? "'" + text + "'" : '"' + text + '"';
|
|
318
|
+
if (node instanceof Identifier)
|
|
319
|
+
return node.text;
|
|
320
|
+
throw new Error('Unexpected reparser-transformed node kind');
|
|
321
|
+
}
|
|
322
|
+
return text;
|
|
323
|
+
}
|
|
324
|
+
export function isImportMeta(node) {
|
|
325
|
+
return (node instanceof MetaProperty &&
|
|
326
|
+
node.keywordToken === 101 /* SyntaxKind.ImportKeyword */ &&
|
|
327
|
+
node.name.text === 'meta');
|
|
328
|
+
}
|
|
329
|
+
/** `import(…)` or `import.defer(…)`. */
|
|
330
|
+
export function isImportCall(node) {
|
|
331
|
+
if (!(node instanceof CallExpression))
|
|
332
|
+
return false;
|
|
333
|
+
const e = node.expression;
|
|
334
|
+
if (e.kind === 101 /* SyntaxKind.ImportKeyword */)
|
|
335
|
+
return true;
|
|
336
|
+
if (!(e instanceof MetaProperty))
|
|
337
|
+
return false;
|
|
338
|
+
const meta = e;
|
|
339
|
+
return meta.keywordToken === 101 /* SyntaxKind.ImportKeyword */ && meta.name.text === 'defer';
|
|
340
|
+
}
|
|
341
|
+
/** `require(x)` with one argument, a string literal if `requireStringLiteralLikeArgument`. */
|
|
342
|
+
export function isRequireCall(node, requireStringLiteralLikeArgument) {
|
|
343
|
+
if (!(node instanceof CallExpression))
|
|
344
|
+
return false;
|
|
345
|
+
const call = node;
|
|
346
|
+
const callee = call.expression;
|
|
347
|
+
if (!(callee instanceof Identifier) || callee.text !== 'require')
|
|
348
|
+
return false;
|
|
349
|
+
const args = call.arguments.nodes;
|
|
350
|
+
if (args.length !== 1)
|
|
351
|
+
return false;
|
|
352
|
+
return !requireStringLiteralLikeArgument || isStringLiteralLike(args[0]);
|
|
353
|
+
}
|
|
354
|
+
/** The string literal of `import("x")` types. */
|
|
355
|
+
export function getImportTypeNodeLiteral(node) {
|
|
356
|
+
if (node instanceof ImportTypeNode) {
|
|
357
|
+
const argument = node.argument;
|
|
358
|
+
if (argument instanceof LiteralTypeNode && argument.literal.kind === 10 /* SyntaxKind.StringLiteral */)
|
|
359
|
+
return argument.literal;
|
|
360
|
+
}
|
|
361
|
+
return undefined;
|
|
362
|
+
}
|
|
363
|
+
export function isLiteralImportTypeNode(node) {
|
|
364
|
+
return getImportTypeNodeLiteral(node) !== undefined;
|
|
365
|
+
}
|
|
366
|
+
export function isAnyImportOrReExport(node) {
|
|
367
|
+
switch (node.kind) {
|
|
368
|
+
case 273 /* SyntaxKind.ImportDeclaration */:
|
|
369
|
+
case 272 /* SyntaxKind.ImportEqualsDeclaration */:
|
|
370
|
+
case 346 /* SyntaxKind.JSImportDeclaration */:
|
|
371
|
+
case 279 /* SyntaxKind.ExportDeclaration */:
|
|
372
|
+
return true;
|
|
373
|
+
}
|
|
374
|
+
return false;
|
|
375
|
+
}
|
|
376
|
+
export function getExternalModuleName(node) {
|
|
377
|
+
switch (node.kind) {
|
|
378
|
+
case 273 /* SyntaxKind.ImportDeclaration */:
|
|
379
|
+
case 346 /* SyntaxKind.JSImportDeclaration */:
|
|
380
|
+
case 279 /* SyntaxKind.ExportDeclaration */:
|
|
381
|
+
return getModuleSpecifier(node);
|
|
382
|
+
case 272 /* SyntaxKind.ImportEqualsDeclaration */:
|
|
383
|
+
if (node instanceof ImportEqualsDeclaration) {
|
|
384
|
+
const reference = node.moduleReference;
|
|
385
|
+
if (reference instanceof ExternalModuleReference)
|
|
386
|
+
return reference.expression;
|
|
387
|
+
}
|
|
388
|
+
return undefined;
|
|
389
|
+
case 206 /* SyntaxKind.ImportType */:
|
|
390
|
+
return getImportTypeNodeLiteral(node);
|
|
391
|
+
case 214 /* SyntaxKind.CallExpression */:
|
|
392
|
+
if (node instanceof CallExpression) {
|
|
393
|
+
const args = node.arguments.nodes;
|
|
394
|
+
return args.length > 0 ? args[0] : undefined;
|
|
395
|
+
}
|
|
396
|
+
return undefined;
|
|
397
|
+
case 268 /* SyntaxKind.ModuleDeclaration */:
|
|
398
|
+
if (node instanceof ModuleDeclaration) {
|
|
399
|
+
const name = node.name;
|
|
400
|
+
if (name.kind === 10 /* SyntaxKind.StringLiteral */)
|
|
401
|
+
return name;
|
|
402
|
+
}
|
|
403
|
+
return undefined;
|
|
404
|
+
}
|
|
405
|
+
throw new Error('Unhandled case in getExternalModuleName');
|
|
406
|
+
}
|
|
407
|
+
export function isGlobalScopeAugmentation(node) {
|
|
408
|
+
return node instanceof ModuleDeclaration && node.keyword === 162 /* SyntaxKind.GlobalKeyword */;
|
|
409
|
+
}
|
|
410
|
+
/** Whether a node is written type-only: an `import type` clause, or a `type` specifier, import or export. */
|
|
411
|
+
export function isTypeOnly(node) {
|
|
412
|
+
if (node.kind === 274 /* SyntaxKind.ImportClause */)
|
|
413
|
+
return node.phaseModifier === 156 /* SyntaxKind.TypeKeyword */;
|
|
414
|
+
return getIsTypeOnly(node);
|
|
415
|
+
}
|
|
416
|
+
/** Whether a declaration declares only a type. */
|
|
417
|
+
export function isTypeDeclaration(node) {
|
|
418
|
+
switch (node.kind) {
|
|
419
|
+
case 169 /* SyntaxKind.TypeParameter */:
|
|
420
|
+
case 264 /* SyntaxKind.ClassDeclaration */:
|
|
421
|
+
case 265 /* SyntaxKind.InterfaceDeclaration */:
|
|
422
|
+
case 266 /* SyntaxKind.TypeAliasDeclaration */:
|
|
423
|
+
case 345 /* SyntaxKind.JSTypeAliasDeclaration */:
|
|
424
|
+
case 267 /* SyntaxKind.EnumDeclaration */:
|
|
425
|
+
return true;
|
|
426
|
+
case 274 /* SyntaxKind.ImportClause */:
|
|
427
|
+
return isTypeOnly(node);
|
|
428
|
+
case 277 /* SyntaxKind.ImportSpecifier */:
|
|
429
|
+
case 282 /* SyntaxKind.ExportSpecifier */:
|
|
430
|
+
return isTypeOnly(node.parent.parent);
|
|
431
|
+
}
|
|
432
|
+
return false;
|
|
433
|
+
}
|
|
434
|
+
export function isAmbientModule(node) {
|
|
435
|
+
if (!(node instanceof ModuleDeclaration))
|
|
436
|
+
return false;
|
|
437
|
+
const declaration = node;
|
|
438
|
+
return declaration.name.kind === 10 /* SyntaxKind.StringLiteral */ || declaration.keyword === 162 /* SyntaxKind.GlobalKeyword */;
|
|
439
|
+
}
|
|
440
|
+
/** Whether `node` is a JavaScript `/** @type {T} *\/ (x)` cast, reparsed as a parenthesized `as` expression. */
|
|
441
|
+
export function isJSDocTypeAssertion(node) {
|
|
442
|
+
if (node.kind !== 218 /* SyntaxKind.ParenthesizedExpression */ || !isInJSFile(node))
|
|
443
|
+
return false;
|
|
444
|
+
const expression = getExpression(node);
|
|
445
|
+
if (expression === undefined || expression.kind !== 235 /* SyntaxKind.AsExpression */)
|
|
446
|
+
return false;
|
|
447
|
+
const type = getType(expression);
|
|
448
|
+
return type !== undefined && (type.flags & 8 /* NodeFlags.Reparsed */) !== 0;
|
|
449
|
+
}
|
|
450
|
+
/** The expression a check applies to: parentheses and `satisfies` are skipped, but not JavaScript casts. */
|
|
451
|
+
export function getEffectiveCheckNode(argument) {
|
|
452
|
+
const inJS = isInJSFile(argument);
|
|
453
|
+
let node = argument;
|
|
454
|
+
for (;;) {
|
|
455
|
+
if (node.kind === 218 /* SyntaxKind.ParenthesizedExpression */ && !(inJS && isJSDocTypeAssertion(node)))
|
|
456
|
+
node = getExpression(node);
|
|
457
|
+
else if (node.kind === 239 /* SyntaxKind.SatisfiesExpression */)
|
|
458
|
+
node = getExpression(node);
|
|
459
|
+
else
|
|
460
|
+
return node;
|
|
461
|
+
}
|
|
462
|
+
}
|