tsc-ts 0.0.3 → 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 +46 -0
- 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 +74 -0
- package/dist/api/library/ast.generated.d.ts +1145 -0
- package/dist/api/library/ast.generated.js +3 -0
- package/dist/api/library/ast.js +5 -0
- package/dist/api/library/checker.d.ts +51 -0
- package/dist/api/library/checker.js +318 -0
- package/dist/api/library/compiler-options.generated.d.ts +108 -0
- package/dist/api/library/compiler-options.generated.js +3 -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/enums.generated.d.ts +891 -0
- package/dist/api/library/enums.generated.js +916 -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 +14 -0
- package/dist/api/library/index.js +15 -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/symbols.d.ts +8 -0
- package/dist/api/library/symbols.js +11 -0
- package/dist/api/library/types.d.ts +313 -0
- package/dist/api/library/types.js +6 -0
- package/package.json +22 -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 +1685 -0
- package/src/library/ast.ts +104 -0
- package/src/library/checker.ts +384 -0
- package/src/library/compiler-options.generated.ts +114 -0
- package/src/library/diagnostics.ts +72 -0
- package/src/library/disk.ts +73 -0
- package/src/library/enums.generated.ts +1024 -0
- package/src/library/errors.ts +26 -0
- package/src/library/host.ts +63 -0
- package/src/library/index.ts +71 -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/symbols.ts +15 -0
- package/src/library/types.ts +359 -0
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
// NamedEvaluation (https://tc39.es/ecma262/#sec-runtime-semantics-namedevaluation): giving
|
|
2
|
+
// anonymous classes and functions the name they would get from where they are assigned, once a
|
|
3
|
+
// transform moves them somewhere they wouldn't.
|
|
4
|
+
import {
|
|
5
|
+
BinaryExpression,
|
|
6
|
+
BindingElement,
|
|
7
|
+
CallExpression,
|
|
8
|
+
ClassExpression,
|
|
9
|
+
ClassStaticBlockDeclaration,
|
|
10
|
+
ComputedPropertyName,
|
|
11
|
+
ExportAssignment,
|
|
12
|
+
ExpressionStatement,
|
|
13
|
+
FunctionExpression,
|
|
14
|
+
Identifier,
|
|
15
|
+
ModifierFlags,
|
|
16
|
+
type Node,
|
|
17
|
+
NodeList,
|
|
18
|
+
ParameterDeclaration,
|
|
19
|
+
PropertyAssignment,
|
|
20
|
+
PropertyDeclaration,
|
|
21
|
+
ShorthandPropertyAssignment,
|
|
22
|
+
StringLiteral,
|
|
23
|
+
VariableDeclaration,
|
|
24
|
+
getName,
|
|
25
|
+
} from '../ast.js';
|
|
26
|
+
import { hasSyntacticModifier, isClassLike, isPropertyNameLiteral } from '../binder-utilities.js';
|
|
27
|
+
import { createPropKeyHelper, createSetFunctionNameHelper } from '../printer/decorator-helpers.js';
|
|
28
|
+
import type { EmitContext } from '../printer/emit-context.js';
|
|
29
|
+
import { SyntaxKind } from '../syntax-kind.js';
|
|
30
|
+
import { TokenFlags } from '../types.js';
|
|
31
|
+
import { getClassMembers, getClassName, isClassThisAssignmentBlock, updateClassMembers } from './class-utilities.js';
|
|
32
|
+
import { OuterExpressionKinds, skipOuterExpressions } from './utilities.js';
|
|
33
|
+
|
|
34
|
+
/** Further narrows which anonymous function definitions a transform names. */
|
|
35
|
+
export abstract class AnonymousFunctionFilter {
|
|
36
|
+
abstract accepts(node: Node): boolean;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** A `static {}` block holding only `__setFunctionName(this, name)` for the block's assigned name. */
|
|
40
|
+
export function isClassNamedEvaluationHelperBlock(context: EmitContext, node: Node): boolean {
|
|
41
|
+
if (!(node instanceof ClassStaticBlockDeclaration)) return false;
|
|
42
|
+
const statements = node.body.statements.nodes;
|
|
43
|
+
if (statements.length !== 1) return false;
|
|
44
|
+
const statement = statements[0];
|
|
45
|
+
if (!(statement instanceof ExpressionStatement)) return false;
|
|
46
|
+
const expression = statement.expression;
|
|
47
|
+
if (!context.isCallToHelper(expression, '__setFunctionName') || !(expression instanceof CallExpression)) return false;
|
|
48
|
+
const args = expression.arguments.nodes;
|
|
49
|
+
return args.length >= 2 && args[1] === context.getAssignedName(node);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** Whether a class has a NamedEvaluation helper block. */
|
|
53
|
+
export function classHasExplicitlyAssignedName(context: EmitContext, node: Node): boolean {
|
|
54
|
+
if (context.getAssignedName(node) === undefined) return false;
|
|
55
|
+
const members = getClassMembers(node).nodes;
|
|
56
|
+
for (let i = 0; i < members.length; i++) if (isClassNamedEvaluationHelperBlock(context, members[i])) return true;
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export function classHasDeclaredOrExplicitlyAssignedName(context: EmitContext, node: Node): boolean {
|
|
61
|
+
return getClassName(node) !== undefined || classHasExplicitlyAssignedName(context, node);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** https://tc39.es/ecma262/#sec-isanonymousfunctiondefinition */
|
|
65
|
+
export function isAnonymousFunctionDefinition(
|
|
66
|
+
context: EmitContext,
|
|
67
|
+
node: Node | undefined,
|
|
68
|
+
filter: AnonymousFunctionFilter | undefined,
|
|
69
|
+
): boolean {
|
|
70
|
+
if (node === undefined) return false;
|
|
71
|
+
node = skipOuterExpressions(node, OuterExpressionKinds.All);
|
|
72
|
+
switch (node.kind) {
|
|
73
|
+
case SyntaxKind.ClassExpression:
|
|
74
|
+
if (classHasDeclaredOrExplicitlyAssignedName(context, node)) return false;
|
|
75
|
+
break;
|
|
76
|
+
case SyntaxKind.FunctionExpression:
|
|
77
|
+
if (node instanceof FunctionExpression && node.name !== undefined) return false;
|
|
78
|
+
break;
|
|
79
|
+
case SyntaxKind.ArrowFunction:
|
|
80
|
+
break;
|
|
81
|
+
default:
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
return filter === undefined || filter.accepts(node);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** Whether `node` may give an assigned name to a class, function or arrow function. */
|
|
88
|
+
export function isNamedEvaluationSource(node: Node): boolean {
|
|
89
|
+
if (node instanceof PropertyAssignment) return !isProtoSetter(node.name);
|
|
90
|
+
if (node instanceof ShorthandPropertyAssignment) return node.objectAssignmentInitializer !== undefined;
|
|
91
|
+
if (node instanceof VariableDeclaration) return node.name instanceof Identifier && node.initializer !== undefined;
|
|
92
|
+
if (node instanceof ParameterDeclaration)
|
|
93
|
+
return node.name instanceof Identifier && node.initializer !== undefined && node.dotDotDotToken === undefined;
|
|
94
|
+
if (node instanceof BindingElement)
|
|
95
|
+
return node.name instanceof Identifier && node.initializer !== undefined && node.dotDotDotToken === undefined;
|
|
96
|
+
if (node instanceof PropertyDeclaration) return node.initializer !== undefined;
|
|
97
|
+
if (node instanceof BinaryExpression) {
|
|
98
|
+
switch (node.operatorToken.kind) {
|
|
99
|
+
case SyntaxKind.EqualsToken:
|
|
100
|
+
case SyntaxKind.AmpersandAmpersandEqualsToken:
|
|
101
|
+
case SyntaxKind.BarBarEqualsToken:
|
|
102
|
+
case SyntaxKind.QuestionQuestionEqualsToken:
|
|
103
|
+
return node.left instanceof Identifier;
|
|
104
|
+
}
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
return node instanceof ExportAssignment;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function isProtoSetter(node: Node): boolean {
|
|
111
|
+
return (
|
|
112
|
+
(node instanceof Identifier && node.text === '__proto__') ||
|
|
113
|
+
(node instanceof StringLiteral && node.text === '__proto__')
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/** Whether `node` assigns a name to an anonymous function definition accepted by `filter`. */
|
|
118
|
+
export function isNamedEvaluation(
|
|
119
|
+
context: EmitContext,
|
|
120
|
+
node: Node,
|
|
121
|
+
filter: AnonymousFunctionFilter | undefined,
|
|
122
|
+
): boolean {
|
|
123
|
+
if (!isNamedEvaluationSource(node)) return false;
|
|
124
|
+
return isAnonymousFunctionDefinition(context, namedEvaluationValue(node), filter);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/** The anonymous function definition a NamedEvaluation source names. */
|
|
128
|
+
function namedEvaluationValue(node: Node): Node | undefined {
|
|
129
|
+
if (node instanceof ShorthandPropertyAssignment) return node.objectAssignmentInitializer;
|
|
130
|
+
if (node instanceof PropertyAssignment) return node.initializer;
|
|
131
|
+
if (node instanceof VariableDeclaration) return node.initializer;
|
|
132
|
+
if (node instanceof ParameterDeclaration) return node.initializer;
|
|
133
|
+
if (node instanceof BindingElement) return node.initializer;
|
|
134
|
+
if (node instanceof PropertyDeclaration) return node.initializer;
|
|
135
|
+
if (node instanceof BinaryExpression) return node.right;
|
|
136
|
+
if (node instanceof ExportAssignment) return node.expression;
|
|
137
|
+
return undefined;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
function getAssignedNameOfIdentifier(context: EmitContext, name: Node, expression: Node): Node {
|
|
141
|
+
const original = context.mostOriginal(skipOuterExpressions(expression, OuterExpressionKinds.All));
|
|
142
|
+
if (
|
|
143
|
+
(original.kind === SyntaxKind.ClassDeclaration || original.kind === SyntaxKind.FunctionDeclaration) &&
|
|
144
|
+
getName(original) === undefined &&
|
|
145
|
+
hasSyntacticModifier(original, ModifierFlags.Default)
|
|
146
|
+
)
|
|
147
|
+
return context.factory.createStringLiteral('default', TokenFlags.None);
|
|
148
|
+
return context.factory.createStringLiteralFromNode(name);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/** The assigned name for a property name, and the name, updated to cache a computed key. */
|
|
152
|
+
class AssignedPropertyName {
|
|
153
|
+
readonly assignedName: Node;
|
|
154
|
+
readonly name: Node;
|
|
155
|
+
|
|
156
|
+
constructor(assignedName: Node, name: Node) {
|
|
157
|
+
this.assignedName = assignedName;
|
|
158
|
+
this.name = name;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
function getAssignedNameOfPropertyName(context: EmitContext, name: Node, text: string): AssignedPropertyName {
|
|
163
|
+
const factory = context.factory;
|
|
164
|
+
if (text.length > 0) return new AssignedPropertyName(factory.createStringLiteral(text, TokenFlags.None), name);
|
|
165
|
+
if (isPropertyNameLiteral(name) || name.kind === SyntaxKind.PrivateIdentifier)
|
|
166
|
+
return new AssignedPropertyName(factory.createStringLiteralFromNode(name), name);
|
|
167
|
+
if (!(name instanceof ComputedPropertyName)) throw new Error('Expected a computed property name');
|
|
168
|
+
const computed = name as ComputedPropertyName;
|
|
169
|
+
const expression = computed.expression;
|
|
170
|
+
if (isPropertyNameLiteral(expression) && !(expression instanceof Identifier))
|
|
171
|
+
return new AssignedPropertyName(factory.createStringLiteralFromNode(expression), name);
|
|
172
|
+
const assignedName = factory.createGeneratedNameForNode(name, 0, '', '');
|
|
173
|
+
context.addVariableDeclaration(assignedName);
|
|
174
|
+
const assignment = factory.createAssignment(assignedName, createPropKeyHelper(factory, expression));
|
|
175
|
+
const updatedName: Node = factory.updateComputedPropertyName(computed, assignment);
|
|
176
|
+
return new AssignedPropertyName(assignedName, updatedName);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/** `static { __setFunctionName(this, assignedName); }` for setting a class name at runtime. */
|
|
180
|
+
export function createClassNamedEvaluationHelperBlock(
|
|
181
|
+
context: EmitContext,
|
|
182
|
+
assignedName: Node,
|
|
183
|
+
thisExpression: Node | undefined,
|
|
184
|
+
): ClassStaticBlockDeclaration {
|
|
185
|
+
const factory = context.factory;
|
|
186
|
+
const self = thisExpression !== undefined ? thisExpression : factory.createKeywordExpression(SyntaxKind.ThisKeyword);
|
|
187
|
+
const statement = factory.createExpressionStatement(createSetFunctionNameHelper(factory, self, assignedName, ''));
|
|
188
|
+
const block = factory.created(new ClassStaticBlockDeclaration(undefined, factory.createBlock([statement], false)));
|
|
189
|
+
context.setAssignedName(block, assignedName);
|
|
190
|
+
return block;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/** Adds a NamedEvaluation helper block to a class, after its `_classThis` block, unless it has one. */
|
|
194
|
+
export function injectClassNamedEvaluationHelperBlockIfMissing(
|
|
195
|
+
context: EmitContext,
|
|
196
|
+
node: Node,
|
|
197
|
+
assignedName: Node,
|
|
198
|
+
thisExpression: Node | undefined,
|
|
199
|
+
): Node {
|
|
200
|
+
if (classHasExplicitlyAssignedName(context, node)) return node;
|
|
201
|
+
if (!isClassLike(node)) return node;
|
|
202
|
+
const block = createClassNamedEvaluationHelperBlock(context, assignedName, thisExpression);
|
|
203
|
+
const name = getClassName(node);
|
|
204
|
+
if (name !== undefined) context.setSourceMapRange(block.body.statements.nodes[0], name.pos, name.end);
|
|
205
|
+
const memberList = getClassMembers(node);
|
|
206
|
+
const existing = memberList.nodes;
|
|
207
|
+
let insertion = 0;
|
|
208
|
+
for (let i = 0; i < existing.length; i++)
|
|
209
|
+
if (isClassThisAssignmentBlock(context, existing[i])) {
|
|
210
|
+
insertion = i + 1;
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
const members = existing.slice(0, insertion);
|
|
214
|
+
members.push(block);
|
|
215
|
+
for (let i = insertion; i < existing.length; i++) members.push(existing[i]);
|
|
216
|
+
const list = new NodeList(memberList.pos, memberList.end, members);
|
|
217
|
+
const updated = updateClassMembers(context.factory, node, list);
|
|
218
|
+
context.setAssignedName(updated, assignedName);
|
|
219
|
+
const classThis = context.getClassThis(node);
|
|
220
|
+
if (classThis !== undefined) context.setClassThis(updated, classThis);
|
|
221
|
+
return updated;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
function finishTransformNamedEvaluation(
|
|
225
|
+
context: EmitContext,
|
|
226
|
+
expression: Node,
|
|
227
|
+
assignedName: Node,
|
|
228
|
+
ignoreEmptyStringLiteral: boolean,
|
|
229
|
+
): Node {
|
|
230
|
+
if (ignoreEmptyStringLiteral && assignedName instanceof StringLiteral && assignedName.text.length === 0)
|
|
231
|
+
return expression;
|
|
232
|
+
const inner = skipOuterExpressions(expression, OuterExpressionKinds.All);
|
|
233
|
+
const updated =
|
|
234
|
+
inner instanceof ClassExpression
|
|
235
|
+
? injectClassNamedEvaluationHelperBlockIfMissing(context, inner, assignedName, undefined)
|
|
236
|
+
: createSetFunctionNameHelper(context.factory, inner, assignedName, '');
|
|
237
|
+
return context.factory.restoreOuterExpressions(expression, updated, OuterExpressionKinds.All);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
function assignedNameOf(context: EmitContext, text: string, name: Node, expression: Node): Node {
|
|
241
|
+
return text.length > 0
|
|
242
|
+
? context.factory.createStringLiteral(text, TokenFlags.None)
|
|
243
|
+
: getAssignedNameOfIdentifier(context, name, expression);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Transforms a NamedEvaluation source so its anonymous class or function gets its name
|
|
248
|
+
* explicitly; `assignedNameText` overrides the name.
|
|
249
|
+
*/
|
|
250
|
+
export function transformNamedEvaluation(
|
|
251
|
+
context: EmitContext,
|
|
252
|
+
node: Node,
|
|
253
|
+
ignoreEmptyStringLiteral: boolean,
|
|
254
|
+
assignedNameText: string,
|
|
255
|
+
): Node {
|
|
256
|
+
const factory = context.factory;
|
|
257
|
+
if (node instanceof PropertyAssignment) {
|
|
258
|
+
const propertyAssignment = node as PropertyAssignment;
|
|
259
|
+
const assigned = getAssignedNameOfPropertyName(context, propertyAssignment.name, assignedNameText);
|
|
260
|
+
const initializer = finishTransformNamedEvaluation(
|
|
261
|
+
context,
|
|
262
|
+
propertyAssignment.initializer,
|
|
263
|
+
assigned.assignedName,
|
|
264
|
+
ignoreEmptyStringLiteral,
|
|
265
|
+
);
|
|
266
|
+
return factory.updatePropertyAssignment(
|
|
267
|
+
propertyAssignment,
|
|
268
|
+
undefined,
|
|
269
|
+
assigned.name,
|
|
270
|
+
undefined,
|
|
271
|
+
undefined,
|
|
272
|
+
initializer,
|
|
273
|
+
);
|
|
274
|
+
}
|
|
275
|
+
if (node instanceof ShorthandPropertyAssignment) {
|
|
276
|
+
const shorthandPropertyAssignment = node as ShorthandPropertyAssignment;
|
|
277
|
+
const value = shorthandPropertyAssignment.objectAssignmentInitializer!;
|
|
278
|
+
const assignedName = assignedNameOf(context, assignedNameText, shorthandPropertyAssignment.name, value);
|
|
279
|
+
const initializer = finishTransformNamedEvaluation(context, value, assignedName, ignoreEmptyStringLiteral);
|
|
280
|
+
return factory.updateShorthandPropertyAssignment(
|
|
281
|
+
shorthandPropertyAssignment,
|
|
282
|
+
undefined,
|
|
283
|
+
shorthandPropertyAssignment.name,
|
|
284
|
+
undefined,
|
|
285
|
+
undefined,
|
|
286
|
+
shorthandPropertyAssignment.equalsToken,
|
|
287
|
+
initializer,
|
|
288
|
+
);
|
|
289
|
+
}
|
|
290
|
+
if (node instanceof VariableDeclaration) {
|
|
291
|
+
const variableDeclaration = node as VariableDeclaration;
|
|
292
|
+
const value = variableDeclaration.initializer!;
|
|
293
|
+
const assignedName = assignedNameOf(context, assignedNameText, variableDeclaration.name, value);
|
|
294
|
+
const initializer = finishTransformNamedEvaluation(context, value, assignedName, ignoreEmptyStringLiteral);
|
|
295
|
+
return factory.updateVariableDeclaration(
|
|
296
|
+
variableDeclaration,
|
|
297
|
+
variableDeclaration.name,
|
|
298
|
+
undefined,
|
|
299
|
+
undefined,
|
|
300
|
+
initializer,
|
|
301
|
+
);
|
|
302
|
+
}
|
|
303
|
+
if (node instanceof ParameterDeclaration) {
|
|
304
|
+
const parameterDeclaration = node as ParameterDeclaration;
|
|
305
|
+
const value = parameterDeclaration.initializer!;
|
|
306
|
+
const assignedName = assignedNameOf(context, assignedNameText, parameterDeclaration.name, value);
|
|
307
|
+
const initializer = finishTransformNamedEvaluation(context, value, assignedName, ignoreEmptyStringLiteral);
|
|
308
|
+
return factory.updateParameterDeclaration(
|
|
309
|
+
parameterDeclaration,
|
|
310
|
+
undefined,
|
|
311
|
+
parameterDeclaration.dotDotDotToken,
|
|
312
|
+
parameterDeclaration.name,
|
|
313
|
+
undefined,
|
|
314
|
+
undefined,
|
|
315
|
+
initializer,
|
|
316
|
+
);
|
|
317
|
+
}
|
|
318
|
+
if (node instanceof BindingElement) {
|
|
319
|
+
const bindingElement = node as BindingElement;
|
|
320
|
+
const value = bindingElement.initializer!;
|
|
321
|
+
const assignedName = assignedNameOf(context, assignedNameText, bindingElement.name!, value);
|
|
322
|
+
const initializer = finishTransformNamedEvaluation(context, value, assignedName, ignoreEmptyStringLiteral);
|
|
323
|
+
return factory.updateBindingElement(
|
|
324
|
+
bindingElement,
|
|
325
|
+
bindingElement.dotDotDotToken,
|
|
326
|
+
bindingElement.propertyName,
|
|
327
|
+
bindingElement.name,
|
|
328
|
+
initializer,
|
|
329
|
+
);
|
|
330
|
+
}
|
|
331
|
+
if (node instanceof PropertyDeclaration) {
|
|
332
|
+
const propertyDeclaration = node as PropertyDeclaration;
|
|
333
|
+
const assigned = getAssignedNameOfPropertyName(context, propertyDeclaration.name, assignedNameText);
|
|
334
|
+
const initializer = finishTransformNamedEvaluation(
|
|
335
|
+
context,
|
|
336
|
+
propertyDeclaration.initializer!,
|
|
337
|
+
assigned.assignedName,
|
|
338
|
+
ignoreEmptyStringLiteral,
|
|
339
|
+
);
|
|
340
|
+
return factory.updatePropertyDeclaration(
|
|
341
|
+
propertyDeclaration,
|
|
342
|
+
propertyDeclaration.modifiers,
|
|
343
|
+
assigned.name,
|
|
344
|
+
undefined,
|
|
345
|
+
undefined,
|
|
346
|
+
initializer,
|
|
347
|
+
);
|
|
348
|
+
}
|
|
349
|
+
if (node instanceof BinaryExpression) {
|
|
350
|
+
const binaryExpression = node as BinaryExpression;
|
|
351
|
+
const assignedName = assignedNameOf(context, assignedNameText, binaryExpression.left, binaryExpression.right);
|
|
352
|
+
const right = finishTransformNamedEvaluation(
|
|
353
|
+
context,
|
|
354
|
+
binaryExpression.right,
|
|
355
|
+
assignedName,
|
|
356
|
+
ignoreEmptyStringLiteral,
|
|
357
|
+
);
|
|
358
|
+
return factory.updateBinaryExpression(
|
|
359
|
+
binaryExpression,
|
|
360
|
+
undefined,
|
|
361
|
+
binaryExpression.left,
|
|
362
|
+
undefined,
|
|
363
|
+
binaryExpression.operatorToken,
|
|
364
|
+
right,
|
|
365
|
+
);
|
|
366
|
+
}
|
|
367
|
+
if (node instanceof ExportAssignment) {
|
|
368
|
+
const exportAssignment = node as ExportAssignment;
|
|
369
|
+
// `export =` becomes `module.exports = ...`, which assigns the name `""`.
|
|
370
|
+
const assignedName = factory.createStringLiteral(
|
|
371
|
+
assignedNameText.length > 0 ? assignedNameText : exportAssignment.isExportEquals ? '' : 'default',
|
|
372
|
+
TokenFlags.None,
|
|
373
|
+
);
|
|
374
|
+
const expression = finishTransformNamedEvaluation(
|
|
375
|
+
context,
|
|
376
|
+
exportAssignment.expression,
|
|
377
|
+
assignedName,
|
|
378
|
+
ignoreEmptyStringLiteral,
|
|
379
|
+
);
|
|
380
|
+
return factory.updateExportAssignment(
|
|
381
|
+
exportAssignment,
|
|
382
|
+
undefined,
|
|
383
|
+
exportAssignment.isExportEquals,
|
|
384
|
+
undefined,
|
|
385
|
+
expression,
|
|
386
|
+
);
|
|
387
|
+
}
|
|
388
|
+
return node;
|
|
389
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// Lowers `a ?? b` to `a !== null && a !== void 0 ? a : b` (ES2020).
|
|
2
|
+
import { BinaryExpression, type Node } from '../ast.js';
|
|
3
|
+
import type { EmitContext } from '../printer/emit-context.js';
|
|
4
|
+
import { SyntaxKind } from '../syntax-kind.js';
|
|
5
|
+
import { isSimpleCopiableExpression } from './destructuring.js';
|
|
6
|
+
import { SubtreeFacts, type SyntaxFacts } from './syntax-facts.js';
|
|
7
|
+
import { Transformer } from './transformer.js';
|
|
8
|
+
|
|
9
|
+
export class NullishCoalescingTransformer extends Transformer {
|
|
10
|
+
readonly facts: SyntaxFacts;
|
|
11
|
+
|
|
12
|
+
constructor(context: EmitContext, facts: SyntaxFacts) {
|
|
13
|
+
super(context);
|
|
14
|
+
this.facts = facts;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
visit(node: Node): Node | undefined {
|
|
18
|
+
if (!this.facts.has(node, SubtreeFacts.ContainsNullishCoalescing)) return node;
|
|
19
|
+
if (node instanceof BinaryExpression && node.operatorToken.kind === SyntaxKind.QuestionQuestionToken) {
|
|
20
|
+
const factory = this.factory;
|
|
21
|
+
let left = this.visitNode(node.left)!;
|
|
22
|
+
let right = left;
|
|
23
|
+
if (!isSimpleCopiableExpression(left)) {
|
|
24
|
+
right = this.context.addVariableDeclaration(factory.createTempVariable(0));
|
|
25
|
+
left = factory.createAssignment(right, left);
|
|
26
|
+
}
|
|
27
|
+
return factory.createConditionalExpression(
|
|
28
|
+
factory.createNotNullCondition(left, right, false),
|
|
29
|
+
right,
|
|
30
|
+
this.visitNode(node.right)!,
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
return this.visitEachChild(node);
|
|
34
|
+
}
|
|
35
|
+
}
|