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,62 @@
|
|
|
1
|
+
// Lowers `a ||= b`, `a &&= b` and `a ??= b` to `a || (a = b)` and so on (ES2021).
|
|
2
|
+
import { BinaryExpression, ElementAccessExpression, PropertyAccessExpression } from '../ast.js';
|
|
3
|
+
import { skipParentheses } from '../binder-utilities.js';
|
|
4
|
+
import { isSimpleCopiableExpression } from './destructuring.js';
|
|
5
|
+
import { Transformer } from './transformer.js';
|
|
6
|
+
export class LogicalAssignmentTransformer extends Transformer {
|
|
7
|
+
facts;
|
|
8
|
+
constructor(context, facts) {
|
|
9
|
+
super(context);
|
|
10
|
+
this.facts = facts;
|
|
11
|
+
}
|
|
12
|
+
visit(node) {
|
|
13
|
+
if (!this.facts.has(node, 8 /* SubtreeFacts.ContainsLogicalAssignments */))
|
|
14
|
+
return node;
|
|
15
|
+
if (node instanceof BinaryExpression) {
|
|
16
|
+
const operator = logicalOperatorOf(node.operatorToken.kind);
|
|
17
|
+
if (operator !== 0 /* SyntaxKind.Unknown */)
|
|
18
|
+
return this.visitLogicalAssignment(node, operator);
|
|
19
|
+
}
|
|
20
|
+
return this.visitEachChild(node);
|
|
21
|
+
}
|
|
22
|
+
visitLogicalAssignment(node, operator) {
|
|
23
|
+
const factory = this.factory;
|
|
24
|
+
const visited = skipParentheses(this.visitNode(node.left));
|
|
25
|
+
let left = visited;
|
|
26
|
+
let target = visited;
|
|
27
|
+
const right = skipParentheses(this.visitNode(node.right));
|
|
28
|
+
if (visited instanceof PropertyAccessExpression) {
|
|
29
|
+
const object = this.copiableObject(visited.expression);
|
|
30
|
+
target = factory.createPropertyAccessExpression(object, visited.name);
|
|
31
|
+
left = factory.createPropertyAccessExpression(this.assignedObject(object, visited.expression), visited.name);
|
|
32
|
+
}
|
|
33
|
+
else if (visited instanceof ElementAccessExpression) {
|
|
34
|
+
const object = this.copiableObject(visited.expression);
|
|
35
|
+
const argument = this.copiableObject(visited.argumentExpression);
|
|
36
|
+
target = factory.createElementAccessExpression(object, argument);
|
|
37
|
+
left = factory.createElementAccessExpression(this.assignedObject(object, visited.expression), this.assignedObject(argument, visited.argumentExpression));
|
|
38
|
+
}
|
|
39
|
+
return factory.createBinaryExpression(left, operator, factory.createParenthesizedExpression(factory.createAssignment(target, right)));
|
|
40
|
+
}
|
|
41
|
+
/** `expression`, or a temporary to hold it when it can't be evaluated twice. */
|
|
42
|
+
copiableObject(expression) {
|
|
43
|
+
if (isSimpleCopiableExpression(expression))
|
|
44
|
+
return expression;
|
|
45
|
+
return this.context.addVariableDeclaration(this.factory.createTempVariable(0));
|
|
46
|
+
}
|
|
47
|
+
/** `expression`, or its assignment to the temporary `copy` holding it. */
|
|
48
|
+
assignedObject(copy, expression) {
|
|
49
|
+
return copy === expression ? expression : this.factory.createAssignment(copy, expression);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function logicalOperatorOf(kind) {
|
|
53
|
+
switch (kind) {
|
|
54
|
+
case 75 /* SyntaxKind.BarBarEqualsToken */:
|
|
55
|
+
return 56 /* SyntaxKind.BarBarToken */;
|
|
56
|
+
case 76 /* SyntaxKind.AmpersandAmpersandEqualsToken */:
|
|
57
|
+
return 55 /* SyntaxKind.AmpersandAmpersandToken */;
|
|
58
|
+
case 77 /* SyntaxKind.QuestionQuestionEqualsToken */:
|
|
59
|
+
return 60 /* SyntaxKind.QuestionQuestionToken */;
|
|
60
|
+
}
|
|
61
|
+
return 0 /* SyntaxKind.Unknown */;
|
|
62
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type Node, StringLiteral } from '../ast.js';
|
|
2
|
+
import type { CompilerOptions } from '../options.js';
|
|
3
|
+
import type { EmitContext } from '../printer/emit-context.js';
|
|
4
|
+
/** The module name of an import, export or `import()` as written in output, or undefined. */
|
|
5
|
+
export declare function getExternalModuleNameLiteral(context: EmitContext, node: Node): StringLiteral | undefined;
|
|
6
|
+
/** The arguments of the `require` call for an import: its rewritten module name. */
|
|
7
|
+
export declare function createRequireCallArguments(context: EmitContext, node: Node, options: CompilerOptions): Node[];
|
|
8
|
+
/** With `rewriteRelativeImportExtensions`, `./a.ts` becomes `./a.js`. */
|
|
9
|
+
export declare function rewriteModuleSpecifier(context: EmitContext, node: Node, options: CompilerOptions): Node;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Module specifiers as module transforms write them.
|
|
2
|
+
import { StringLiteral } from '../ast.js';
|
|
3
|
+
import { getExternalModuleName } from '../ast-utilities.js';
|
|
4
|
+
import { getOutputExtension } from '../output-paths.js';
|
|
5
|
+
import { changeExtension, hasTSFileExtension, isDeclarationFileName, pathIsRelative } from '../path.js';
|
|
6
|
+
/** The module name of an import, export or `import()` as written in output, or undefined. */
|
|
7
|
+
export function getExternalModuleNameLiteral(context, node) {
|
|
8
|
+
const name = getExternalModuleName(node);
|
|
9
|
+
if (!(name instanceof StringLiteral))
|
|
10
|
+
return undefined;
|
|
11
|
+
return context.factory.createStringLiteral(name.text, 0 /* TokenFlags.None */);
|
|
12
|
+
}
|
|
13
|
+
/** The arguments of the `require` call for an import: its rewritten module name. */
|
|
14
|
+
export function createRequireCallArguments(context, node, options) {
|
|
15
|
+
const name = getExternalModuleNameLiteral(context, node);
|
|
16
|
+
return name === undefined ? [] : [rewriteModuleSpecifier(context, name, options)];
|
|
17
|
+
}
|
|
18
|
+
/** With `rewriteRelativeImportExtensions`, `./a.ts` becomes `./a.js`. */
|
|
19
|
+
export function rewriteModuleSpecifier(context, node, options) {
|
|
20
|
+
if (!(node instanceof StringLiteral) || !shouldRewriteModuleSpecifier(node.text, options))
|
|
21
|
+
return node;
|
|
22
|
+
const text = node.text;
|
|
23
|
+
const updatedText = changeExtension(text, getOutputExtension(text, options.jsx));
|
|
24
|
+
if (updatedText === text)
|
|
25
|
+
return node;
|
|
26
|
+
const updated = context.factory.createStringLiteral(updatedText, node.tokenFlags);
|
|
27
|
+
context.setOriginal(updated, node);
|
|
28
|
+
context.assignCommentAndSourceMapRanges(updated, node);
|
|
29
|
+
return updated;
|
|
30
|
+
}
|
|
31
|
+
function shouldRewriteModuleSpecifier(specifier, options) {
|
|
32
|
+
return (options.rewriteRelativeImportExtensions === true &&
|
|
33
|
+
pathIsRelative(specifier) &&
|
|
34
|
+
!isDeclarationFileName(specifier) &&
|
|
35
|
+
hasTSFileExtension(specifier));
|
|
36
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type Node } from '../ast.js';
|
|
2
|
+
import { type CompilerOptions, ModuleKind } from '../options.js';
|
|
3
|
+
import type { EmitContext } from '../printer/emit-context.js';
|
|
4
|
+
import type { EmitResolver } from './emit-resolver.js';
|
|
5
|
+
import { Transformer } from './transformer.js';
|
|
6
|
+
/** Decides the module format each file is emitted in, from its extension and the nearest package.json. */
|
|
7
|
+
export declare abstract class ModuleFormatHost {
|
|
8
|
+
abstract getEmitModuleFormat(fileName: string): ModuleKind;
|
|
9
|
+
}
|
|
10
|
+
export declare class UseStrictTransformer extends Transformer {
|
|
11
|
+
readonly options: CompilerOptions;
|
|
12
|
+
readonly formats: ModuleFormatHost;
|
|
13
|
+
constructor(context: EmitContext, options: CompilerOptions, formats: ModuleFormatHost);
|
|
14
|
+
visit(node: Node): Node | undefined;
|
|
15
|
+
}
|
|
16
|
+
/** The module transform for `module`: ES modules, CommonJS, or the format each file implies. */
|
|
17
|
+
export declare function createModuleTransformer(context: EmitContext, options: CompilerOptions, resolver: EmitResolver, formats: ModuleFormatHost): Transformer;
|
|
18
|
+
/** Emits each file as an ES module or as CommonJS, by its format. */
|
|
19
|
+
export declare class ImpliedModuleTransformer extends Transformer {
|
|
20
|
+
readonly options: CompilerOptions;
|
|
21
|
+
readonly resolver: EmitResolver;
|
|
22
|
+
readonly formats: ModuleFormatHost;
|
|
23
|
+
private esm;
|
|
24
|
+
private commonjs;
|
|
25
|
+
constructor(context: EmitContext, options: CompilerOptions, resolver: EmitResolver, formats: ModuleFormatHost);
|
|
26
|
+
visit(node: Node): Node | undefined;
|
|
27
|
+
}
|
|
28
|
+
/** ECMAScript module output: drops or rewrites `import x = require()` and `export =`, and keeps files modules. */
|
|
29
|
+
export declare class ESModuleTransformer extends Transformer {
|
|
30
|
+
readonly options: CompilerOptions;
|
|
31
|
+
readonly formats: ModuleFormatHost;
|
|
32
|
+
private currentSourceFile;
|
|
33
|
+
/** `import { createRequire } from "module"` and `const __require = ...`, once a file needs them. */
|
|
34
|
+
private requireStatements;
|
|
35
|
+
private requireHelperName;
|
|
36
|
+
constructor(context: EmitContext, options: CompilerOptions, formats: ModuleFormatHost);
|
|
37
|
+
visit(node: Node): Node | undefined;
|
|
38
|
+
private visitSourceFile;
|
|
39
|
+
/** The statements declaring `__require`, if the file needed them. */
|
|
40
|
+
private getRequireStatements;
|
|
41
|
+
private visitImportDeclaration;
|
|
42
|
+
/** In node16+ ES modules, `import x = require("m")` becomes a call of a `createRequire` require. */
|
|
43
|
+
private visitImportEqualsDeclaration;
|
|
44
|
+
private visitExportAssignment;
|
|
45
|
+
private visitExportDeclaration;
|
|
46
|
+
private visitCallExpression;
|
|
47
|
+
private importAttributes;
|
|
48
|
+
private createRequireCall;
|
|
49
|
+
}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
// `"use strict"` prologues and module output: ECMAScript modules, CommonJS, or each file in the
|
|
2
|
+
// format its extension and package.json imply.
|
|
3
|
+
import { CallExpression, ExportAssignment, ExportDeclaration, ExportSpecifier, ExpressionStatement, ExternalModuleReference, ImportAttributes, ImportClause, ImportDeclaration, ImportEqualsDeclaration, ImportSpecifier, MetaProperty, NamedExports, NamedImports, NamespaceExport, NamespaceImport, NodeList, SourceFile, StringLiteral, NoSubstitutionTemplateLiteral, Identifier, } from '../ast.js';
|
|
4
|
+
import { isAnyImportOrReExport, isImportCall, isInJSFile, isRequireCall } from '../ast-utilities.js';
|
|
5
|
+
import { JsxEmit, ModuleKind, getEmitModuleKind, getIsolatedModules } from '../options.js';
|
|
6
|
+
import { isPrologueDirective } from '../printer/utilities.js';
|
|
7
|
+
import { CommonJSModuleTransformer } from './commonjs-module.js';
|
|
8
|
+
import { createExternalHelpersImportDeclarationIfNeeded } from './external-module-info.js';
|
|
9
|
+
import { createRequireCallArguments, rewriteModuleSpecifier } from './module-utilities.js';
|
|
10
|
+
import { Transformer } from './transformer.js';
|
|
11
|
+
import { hasSyntacticModifier, isExternalModule, singleOrMany } from './utilities.js';
|
|
12
|
+
/** Decides the module format each file is emitted in, from its extension and the nearest package.json. */
|
|
13
|
+
export class ModuleFormatHost {
|
|
14
|
+
}
|
|
15
|
+
export class UseStrictTransformer extends Transformer {
|
|
16
|
+
options;
|
|
17
|
+
formats;
|
|
18
|
+
constructor(context, options, formats) {
|
|
19
|
+
super(context);
|
|
20
|
+
this.options = options;
|
|
21
|
+
this.formats = formats;
|
|
22
|
+
}
|
|
23
|
+
visit(node) {
|
|
24
|
+
if (!(node instanceof SourceFile) || node.scriptKind === 6 /* ScriptKind.JSON */)
|
|
25
|
+
return node;
|
|
26
|
+
const moduleKind = getEmitModuleKind(this.options);
|
|
27
|
+
// ES modules are always strict.
|
|
28
|
+
if (isExternalModule(node) &&
|
|
29
|
+
moduleKind >= ModuleKind.ES2015 &&
|
|
30
|
+
(moduleKind === ModuleKind.Preserve || this.formats.getEmitModuleFormat(node.fileName) >= ModuleKind.ES2015))
|
|
31
|
+
return node;
|
|
32
|
+
const statements = node.statements.nodes;
|
|
33
|
+
const first = statements.length > 0 ? statements[0] : undefined;
|
|
34
|
+
if (first instanceof ExpressionStatement &&
|
|
35
|
+
first.expression instanceof StringLiteral &&
|
|
36
|
+
first.expression.text === 'use strict')
|
|
37
|
+
return node;
|
|
38
|
+
const factory = this.factory;
|
|
39
|
+
const useStrict = factory.createExpressionStatement(factory.createStringLiteral('use strict', 0 /* TokenFlags.None */));
|
|
40
|
+
return factory.updateSourceFile(node, new NodeList(node.statements.pos, node.statements.end, [useStrict].concat(statements)), node.endOfFileToken);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/** The module transform for `module`: ES modules, CommonJS, or the format each file implies. */
|
|
44
|
+
export function createModuleTransformer(context, options, resolver, formats) {
|
|
45
|
+
switch (getEmitModuleKind(options)) {
|
|
46
|
+
case ModuleKind.Preserve:
|
|
47
|
+
// ES module output also keeps CommonJS syntax for `module: preserve`.
|
|
48
|
+
return new ESModuleTransformer(context, options, formats);
|
|
49
|
+
case ModuleKind.ESNext:
|
|
50
|
+
case ModuleKind.ES2022:
|
|
51
|
+
case ModuleKind.ES2020:
|
|
52
|
+
case ModuleKind.ES2015:
|
|
53
|
+
case ModuleKind.Node20:
|
|
54
|
+
case ModuleKind.Node18:
|
|
55
|
+
case ModuleKind.Node16:
|
|
56
|
+
case ModuleKind.NodeNext:
|
|
57
|
+
case ModuleKind.CommonJS:
|
|
58
|
+
return new ImpliedModuleTransformer(context, options, resolver, formats);
|
|
59
|
+
}
|
|
60
|
+
return new CommonJSModuleTransformer(context, options, resolver, formats);
|
|
61
|
+
}
|
|
62
|
+
/** Emits each file as an ES module or as CommonJS, by its format. */
|
|
63
|
+
export class ImpliedModuleTransformer extends Transformer {
|
|
64
|
+
options;
|
|
65
|
+
resolver;
|
|
66
|
+
formats;
|
|
67
|
+
esm;
|
|
68
|
+
commonjs;
|
|
69
|
+
constructor(context, options, resolver, formats) {
|
|
70
|
+
super(context);
|
|
71
|
+
this.options = options;
|
|
72
|
+
this.resolver = resolver;
|
|
73
|
+
this.formats = formats;
|
|
74
|
+
this.esm = undefined;
|
|
75
|
+
this.commonjs = undefined;
|
|
76
|
+
}
|
|
77
|
+
visit(node) {
|
|
78
|
+
if (!(node instanceof SourceFile) || node.isDeclarationFile)
|
|
79
|
+
return node;
|
|
80
|
+
if (this.formats.getEmitModuleFormat(node.fileName) >= ModuleKind.ES2015) {
|
|
81
|
+
if (this.esm === undefined)
|
|
82
|
+
this.esm = new ESModuleTransformer(this.context, this.options, this.formats);
|
|
83
|
+
return this.esm.transformSourceFile(node);
|
|
84
|
+
}
|
|
85
|
+
if (this.commonjs === undefined)
|
|
86
|
+
this.commonjs = new CommonJSModuleTransformer(this.context, this.options, this.resolver, this.formats);
|
|
87
|
+
return this.commonjs.transformSourceFile(node);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/** ECMAScript module output: drops or rewrites `import x = require()` and `export =`, and keeps files modules. */
|
|
91
|
+
export class ESModuleTransformer extends Transformer {
|
|
92
|
+
options;
|
|
93
|
+
formats;
|
|
94
|
+
currentSourceFile;
|
|
95
|
+
/** `import { createRequire } from "module"` and `const __require = ...`, once a file needs them. */
|
|
96
|
+
requireStatements;
|
|
97
|
+
requireHelperName;
|
|
98
|
+
constructor(context, options, formats) {
|
|
99
|
+
super(context);
|
|
100
|
+
this.options = options;
|
|
101
|
+
this.formats = formats;
|
|
102
|
+
this.currentSourceFile = undefined;
|
|
103
|
+
this.requireStatements = undefined;
|
|
104
|
+
this.requireHelperName = undefined;
|
|
105
|
+
}
|
|
106
|
+
visit(node) {
|
|
107
|
+
switch (node.kind) {
|
|
108
|
+
case 307 /* SyntaxKind.SourceFile */:
|
|
109
|
+
if (node instanceof SourceFile)
|
|
110
|
+
return this.visitSourceFile(node);
|
|
111
|
+
break;
|
|
112
|
+
case 273 /* SyntaxKind.ImportDeclaration */:
|
|
113
|
+
if (node instanceof ImportDeclaration)
|
|
114
|
+
return this.visitImportDeclaration(node);
|
|
115
|
+
break;
|
|
116
|
+
case 272 /* SyntaxKind.ImportEqualsDeclaration */:
|
|
117
|
+
if (node instanceof ImportEqualsDeclaration)
|
|
118
|
+
return this.visitImportEqualsDeclaration(node);
|
|
119
|
+
break;
|
|
120
|
+
case 278 /* SyntaxKind.ExportAssignment */:
|
|
121
|
+
if (node instanceof ExportAssignment)
|
|
122
|
+
return this.visitExportAssignment(node);
|
|
123
|
+
break;
|
|
124
|
+
case 279 /* SyntaxKind.ExportDeclaration */:
|
|
125
|
+
if (node instanceof ExportDeclaration)
|
|
126
|
+
return this.visitExportDeclaration(node);
|
|
127
|
+
break;
|
|
128
|
+
case 214 /* SyntaxKind.CallExpression */:
|
|
129
|
+
if (node instanceof CallExpression)
|
|
130
|
+
return this.visitCallExpression(node);
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
return this.visitEachChild(node);
|
|
134
|
+
}
|
|
135
|
+
visitSourceFile(node) {
|
|
136
|
+
if (node.isDeclarationFile || !(isExternalModule(node) || getIsolatedModules(this.options)))
|
|
137
|
+
return node;
|
|
138
|
+
const factory = this.factory;
|
|
139
|
+
const context = this.context;
|
|
140
|
+
this.currentSourceFile = node;
|
|
141
|
+
this.requireStatements = undefined;
|
|
142
|
+
this.requireHelperName = undefined;
|
|
143
|
+
const visited = this.visitEachChild(node);
|
|
144
|
+
let result = visited instanceof SourceFile ? visited : node;
|
|
145
|
+
const helpers = context.readEmitHelpers();
|
|
146
|
+
for (let i = 0; i < helpers.length; i++)
|
|
147
|
+
context.addEmitHelper(result, helpers[i]);
|
|
148
|
+
const helpersImport = createExternalHelpersImportDeclarationIfNeeded(context, result, this.options, this.formats.getEmitModuleFormat(node.fileName));
|
|
149
|
+
const requireStatements = this.getRequireStatements();
|
|
150
|
+
if (helpersImport !== undefined || requireStatements !== undefined) {
|
|
151
|
+
const current = result.statements.nodes;
|
|
152
|
+
let end = 0;
|
|
153
|
+
while (end < current.length && isPrologueDirective(current[end]))
|
|
154
|
+
end++;
|
|
155
|
+
while (end < current.length &&
|
|
156
|
+
!isPrologueDirective(current[end]) &&
|
|
157
|
+
(context.getEmitFlags(current[end]) & 65536 /* EmitFlags.CustomPrologue */) !== 0)
|
|
158
|
+
end++;
|
|
159
|
+
const statements = current.slice(0, end);
|
|
160
|
+
if (helpersImport !== undefined) {
|
|
161
|
+
// Visited so that `import tslib = require("tslib")` becomes `const tslib = require("tslib")`.
|
|
162
|
+
const visitedImport = this.visitNode(helpersImport);
|
|
163
|
+
if (visitedImport !== undefined)
|
|
164
|
+
statements.push(visitedImport);
|
|
165
|
+
}
|
|
166
|
+
if (requireStatements !== undefined)
|
|
167
|
+
for (let i = 0; i < requireStatements.length; i++)
|
|
168
|
+
statements.push(requireStatements[i]);
|
|
169
|
+
for (let i = end; i < current.length; i++)
|
|
170
|
+
statements.push(current[i]);
|
|
171
|
+
result = factory.updateSourceFile(result, new NodeList(result.statements.pos, result.statements.end, statements), node.endOfFileToken);
|
|
172
|
+
}
|
|
173
|
+
if (isExternalModule(result) && getEmitModuleKind(this.options) !== ModuleKind.Preserve) {
|
|
174
|
+
const statements = result.statements.nodes;
|
|
175
|
+
let hasIndicator = false;
|
|
176
|
+
for (let i = 0; i < statements.length && !hasIndicator; i++)
|
|
177
|
+
hasIndicator = isExternalModuleIndicator(statements[i]);
|
|
178
|
+
if (!hasIndicator) {
|
|
179
|
+
const emptyExport = factory.created(new ExportDeclaration(undefined, false, factory.created(new NamedExports(factory.createNodeList([]))), undefined, undefined));
|
|
180
|
+
result = factory.updateSourceFile(result, new NodeList(result.statements.pos, result.statements.end, statements.concat([emptyExport])), node.endOfFileToken);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
this.requireStatements = undefined;
|
|
184
|
+
this.requireHelperName = undefined;
|
|
185
|
+
this.currentSourceFile = undefined;
|
|
186
|
+
return result;
|
|
187
|
+
}
|
|
188
|
+
/** The statements declaring `__require`, if the file needed them. */
|
|
189
|
+
getRequireStatements() {
|
|
190
|
+
return this.requireStatements;
|
|
191
|
+
}
|
|
192
|
+
visitImportDeclaration(node) {
|
|
193
|
+
if (this.options.rewriteRelativeImportExtensions !== true)
|
|
194
|
+
return node;
|
|
195
|
+
const clause = this.visitNode(node.importClause);
|
|
196
|
+
return this.factory.updateImportDeclaration(node, undefined, clause instanceof ImportClause ? clause : undefined, rewriteModuleSpecifier(this.context, node.moduleSpecifier, this.options), this.importAttributes(node.attributes));
|
|
197
|
+
}
|
|
198
|
+
/** In node16+ ES modules, `import x = require("m")` becomes a call of a `createRequire` require. */
|
|
199
|
+
visitImportEqualsDeclaration(node) {
|
|
200
|
+
if (getEmitModuleKind(this.options) < ModuleKind.Node16)
|
|
201
|
+
return undefined;
|
|
202
|
+
if (!(node.moduleReference instanceof ExternalModuleReference))
|
|
203
|
+
return node;
|
|
204
|
+
const factory = this.factory;
|
|
205
|
+
const statement = factory.createVariableStatement(undefined, factory.createVariableDeclarationList(factory.createNodeList([
|
|
206
|
+
factory.createVariableDeclaration(factory.cloneIdentifier(node.name), undefined, undefined, this.createRequireCall(node)),
|
|
207
|
+
]), 2 /* NodeFlags.Const */));
|
|
208
|
+
this.context.setOriginal(statement, node);
|
|
209
|
+
this.context.assignCommentAndSourceMapRanges(statement, node);
|
|
210
|
+
const statements = [statement];
|
|
211
|
+
if (hasSyntacticModifier(node, 32 /* ModifierFlags.Export */))
|
|
212
|
+
statements.push(factory.created(new ExportDeclaration(undefined, false, factory.created(new NamedExports(factory.createNodeList([
|
|
213
|
+
factory.created(new ExportSpecifier(false, undefined, factory.cloneIdentifier(node.name))),
|
|
214
|
+
]))), undefined, undefined)));
|
|
215
|
+
return singleOrMany(statements, factory);
|
|
216
|
+
}
|
|
217
|
+
visitExportAssignment(node) {
|
|
218
|
+
if (!node.isExportEquals)
|
|
219
|
+
return this.visitEachChild(node);
|
|
220
|
+
// `export =` isn't valid in ES modules; `module: preserve` keeps it as CommonJS.
|
|
221
|
+
if (getEmitModuleKind(this.options) !== ModuleKind.Preserve)
|
|
222
|
+
return undefined;
|
|
223
|
+
const factory = this.factory;
|
|
224
|
+
const statement = factory.createExpressionStatement(factory.createAssignment(factory.createPropertyAccessExpression(factory.createIdentifier('module'), factory.createIdentifier('exports')), this.visitNode(node.expression)));
|
|
225
|
+
this.context.setOriginal(statement, node);
|
|
226
|
+
return statement;
|
|
227
|
+
}
|
|
228
|
+
visitExportDeclaration(node) {
|
|
229
|
+
if (node.moduleSpecifier === undefined)
|
|
230
|
+
return node;
|
|
231
|
+
const factory = this.factory;
|
|
232
|
+
const specifier = rewriteModuleSpecifier(this.context, node.moduleSpecifier, this.options);
|
|
233
|
+
const clause = node.exportClause;
|
|
234
|
+
const module = this.options.module;
|
|
235
|
+
if ((module !== undefined && module > ModuleKind.ES2015) || !(clause instanceof NamespaceExport))
|
|
236
|
+
return factory.updateExportDeclaration(node, undefined, false, clause, specifier, this.importAttributes(node.attributes));
|
|
237
|
+
// ES2015 has no `export * as ns`: import the namespace and export it.
|
|
238
|
+
const name = clause.name;
|
|
239
|
+
const generated = factory.createGeneratedNameForNode(name, 0, '', '');
|
|
240
|
+
const importDeclaration = factory.created(new ImportDeclaration(273 /* SyntaxKind.ImportDeclaration */, undefined, factory.created(new ImportClause(undefined, undefined, factory.created(new NamespaceImport(generated)))), specifier, this.importAttributes(node.attributes)));
|
|
241
|
+
this.context.setOriginal(importDeclaration, clause);
|
|
242
|
+
const exportDeclaration = name instanceof Identifier && name.text === 'default'
|
|
243
|
+
? factory.created(new ExportAssignment(undefined, false, undefined, generated))
|
|
244
|
+
: factory.created(new ExportDeclaration(undefined, false, factory.created(new NamedExports(factory.createNodeList([factory.created(new ExportSpecifier(false, generated, name))]))), undefined, undefined));
|
|
245
|
+
this.context.setOriginal(exportDeclaration, node);
|
|
246
|
+
return singleOrMany([importDeclaration, exportDeclaration], factory);
|
|
247
|
+
}
|
|
248
|
+
visitCallExpression(node) {
|
|
249
|
+
const args = node.arguments.nodes;
|
|
250
|
+
if (this.options.rewriteRelativeImportExtensions !== true ||
|
|
251
|
+
args.length === 0 ||
|
|
252
|
+
!(isImportCall(node) || (isInJSFile(node) && isRequireCall(node, false))))
|
|
253
|
+
return this.visitEachChild(node);
|
|
254
|
+
const factory = this.factory;
|
|
255
|
+
const first = args[0];
|
|
256
|
+
const argument = first instanceof StringLiteral || first instanceof NoSubstitutionTemplateLiteral
|
|
257
|
+
? rewriteModuleSpecifier(this.context, first, this.options)
|
|
258
|
+
: factory.createRewriteRelativeImportExtensionsHelper(first, this.options.jsx === JsxEmit.Preserve);
|
|
259
|
+
const rest = this.visitArray(args.slice(1));
|
|
260
|
+
return factory.updateCallExpression(node, this.visitNode(node.expression), node.questionDotToken, undefined, new NodeList(node.arguments.pos, node.arguments.end, [argument].concat(rest)), node.flags);
|
|
261
|
+
}
|
|
262
|
+
importAttributes(node) {
|
|
263
|
+
const visited = this.visitNode(node);
|
|
264
|
+
return visited instanceof ImportAttributes ? visited : undefined;
|
|
265
|
+
}
|
|
266
|
+
createRequireCall(node) {
|
|
267
|
+
const factory = this.factory;
|
|
268
|
+
const args = createRequireCallArguments(this.context, node, this.options);
|
|
269
|
+
if (getEmitModuleKind(this.options) === ModuleKind.Preserve)
|
|
270
|
+
return factory.createCallExpression(factory.createIdentifier('require'), args);
|
|
271
|
+
let helperName = this.requireHelperName;
|
|
272
|
+
if (helperName === undefined) {
|
|
273
|
+
const flags = 16 /* GeneratedIdentifierFlags.Optimistic */ | 32 /* GeneratedIdentifierFlags.FileLevel */;
|
|
274
|
+
// import { createRequire as _createRequire } from "module";
|
|
275
|
+
const createRequireName = factory.createUniqueName('_createRequire', flags);
|
|
276
|
+
const importStatement = factory.created(new ImportDeclaration(273 /* SyntaxKind.ImportDeclaration */, undefined, factory.created(new ImportClause(undefined, undefined, factory.created(new NamedImports(factory.createNodeList([
|
|
277
|
+
factory.created(new ImportSpecifier(false, factory.createIdentifier('createRequire'), createRequireName)),
|
|
278
|
+
]))))), factory.createStringLiteral('module', 0 /* TokenFlags.None */), undefined));
|
|
279
|
+
this.context.addEmitFlags(importStatement, 65536 /* EmitFlags.CustomPrologue */);
|
|
280
|
+
// const __require = _createRequire(import.meta.url);
|
|
281
|
+
helperName = factory.createUniqueName('__require', flags);
|
|
282
|
+
const requireStatement = factory.createVariableStatement(undefined, factory.createVariableDeclarationList(factory.createNodeList([
|
|
283
|
+
factory.createVariableDeclaration(helperName, undefined, undefined, factory.createCallExpression(factory.cloneIdentifier(createRequireName), [
|
|
284
|
+
factory.createPropertyAccessExpression(factory.created(new MetaProperty(101 /* SyntaxKind.ImportKeyword */, factory.createIdentifier('meta'))), factory.createIdentifier('url')),
|
|
285
|
+
])),
|
|
286
|
+
]), 2 /* NodeFlags.Const */));
|
|
287
|
+
this.context.addEmitFlags(requireStatement, 65536 /* EmitFlags.CustomPrologue */);
|
|
288
|
+
this.requireStatements = [importStatement, requireStatement];
|
|
289
|
+
this.requireHelperName = helperName;
|
|
290
|
+
}
|
|
291
|
+
return factory.createCallExpression(factory.cloneIdentifier(helperName), args);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
function isExternalModuleIndicator(node) {
|
|
295
|
+
return (isAnyImportOrReExport(node) || node instanceof ExportAssignment || hasSyntacticModifier(node, 32 /* ModifierFlags.Export */));
|
|
296
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ClassStaticBlockDeclaration, type Node } from '../ast.js';
|
|
2
|
+
import type { EmitContext } from '../printer/emit-context.js';
|
|
3
|
+
/** Further narrows which anonymous function definitions a transform names. */
|
|
4
|
+
export declare abstract class AnonymousFunctionFilter {
|
|
5
|
+
abstract accepts(node: Node): boolean;
|
|
6
|
+
}
|
|
7
|
+
/** A `static {}` block holding only `__setFunctionName(this, name)` for the block's assigned name. */
|
|
8
|
+
export declare function isClassNamedEvaluationHelperBlock(context: EmitContext, node: Node): boolean;
|
|
9
|
+
/** Whether a class has a NamedEvaluation helper block. */
|
|
10
|
+
export declare function classHasExplicitlyAssignedName(context: EmitContext, node: Node): boolean;
|
|
11
|
+
export declare function classHasDeclaredOrExplicitlyAssignedName(context: EmitContext, node: Node): boolean;
|
|
12
|
+
/** https://tc39.es/ecma262/#sec-isanonymousfunctiondefinition */
|
|
13
|
+
export declare function isAnonymousFunctionDefinition(context: EmitContext, node: Node | undefined, filter: AnonymousFunctionFilter | undefined): boolean;
|
|
14
|
+
/** Whether `node` may give an assigned name to a class, function or arrow function. */
|
|
15
|
+
export declare function isNamedEvaluationSource(node: Node): boolean;
|
|
16
|
+
/** Whether `node` assigns a name to an anonymous function definition accepted by `filter`. */
|
|
17
|
+
export declare function isNamedEvaluation(context: EmitContext, node: Node, filter: AnonymousFunctionFilter | undefined): boolean;
|
|
18
|
+
/** `static { __setFunctionName(this, assignedName); }` for setting a class name at runtime. */
|
|
19
|
+
export declare function createClassNamedEvaluationHelperBlock(context: EmitContext, assignedName: Node, thisExpression: Node | undefined): ClassStaticBlockDeclaration;
|
|
20
|
+
/** Adds a NamedEvaluation helper block to a class, after its `_classThis` block, unless it has one. */
|
|
21
|
+
export declare function injectClassNamedEvaluationHelperBlockIfMissing(context: EmitContext, node: Node, assignedName: Node, thisExpression: Node | undefined): Node;
|
|
22
|
+
/**
|
|
23
|
+
* Transforms a NamedEvaluation source so its anonymous class or function gets its name
|
|
24
|
+
* explicitly; `assignedNameText` overrides the name.
|
|
25
|
+
*/
|
|
26
|
+
export declare function transformNamedEvaluation(context: EmitContext, node: Node, ignoreEmptyStringLiteral: boolean, assignedNameText: string): Node;
|