tsc-ts 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -1
- package/dist/api/compiler/ast-utilities.d.ts +82 -0
- package/dist/api/compiler/ast-utilities.js +462 -0
- package/dist/api/compiler/ast.d.ts +2350 -0
- package/dist/api/compiler/ast.js +11206 -0
- package/dist/api/compiler/astnav.d.ts +37 -0
- package/dist/api/compiler/astnav.js +767 -0
- package/dist/api/compiler/binder-utilities.d.ts +182 -0
- package/dist/api/compiler/binder-utilities.js +1240 -0
- package/dist/api/compiler/binder.d.ts +33 -0
- package/dist/api/compiler/binder.js +2358 -0
- package/dist/api/compiler/character-codes.d.ts +161 -0
- package/dist/api/compiler/character-codes.js +160 -0
- package/dist/api/compiler/checker-calls.d.ts +46 -0
- package/dist/api/compiler/checker-calls.js +1640 -0
- package/dist/api/compiler/checker-classes.d.ts +30 -0
- package/dist/api/compiler/checker-classes.js +582 -0
- package/dist/api/compiler/checker-contextual.d.ts +77 -0
- package/dist/api/compiler/checker-contextual.js +1136 -0
- package/dist/api/compiler/checker-declaration-order.d.ts +12 -0
- package/dist/api/compiler/checker-declaration-order.js +356 -0
- package/dist/api/compiler/checker-declarations.d.ts +33 -0
- package/dist/api/compiler/checker-declarations.js +888 -0
- package/dist/api/compiler/checker-declared-types.d.ts +48 -0
- package/dist/api/compiler/checker-declared-types.js +787 -0
- package/dist/api/compiler/checker-decorators.d.ts +26 -0
- package/dist/api/compiler/checker-decorators.js +562 -0
- package/dist/api/compiler/checker-deprecation.d.ts +33 -0
- package/dist/api/compiler/checker-deprecation.js +315 -0
- package/dist/api/compiler/checker-destructuring.d.ts +34 -0
- package/dist/api/compiler/checker-destructuring.js +584 -0
- package/dist/api/compiler/checker-elaboration.d.ts +15 -0
- package/dist/api/compiler/checker-elaboration.js +290 -0
- package/dist/api/compiler/checker-emit-helpers.d.ts +58 -0
- package/dist/api/compiler/checker-emit-helpers.js +154 -0
- package/dist/api/compiler/checker-emit-resolver.d.ts +75 -0
- package/dist/api/compiler/checker-emit-resolver.js +579 -0
- package/dist/api/compiler/checker-evaluator.d.ts +27 -0
- package/dist/api/compiler/checker-evaluator.js +188 -0
- package/dist/api/compiler/checker-expressions.d.ts +67 -0
- package/dist/api/compiler/checker-expressions.js +1351 -0
- package/dist/api/compiler/checker-features.d.ts +6 -0
- package/dist/api/compiler/checker-features.js +354 -0
- package/dist/api/compiler/checker-flow.d.ts +86 -0
- package/dist/api/compiler/checker-flow.js +169 -0
- package/dist/api/compiler/checker-functions.d.ts +43 -0
- package/dist/api/compiler/checker-functions.js +1002 -0
- package/dist/api/compiler/checker-generated-code.d.ts +25 -0
- package/dist/api/compiler/checker-generated-code.js +168 -0
- package/dist/api/compiler/checker-globals.d.ts +14 -0
- package/dist/api/compiler/checker-globals.js +37 -0
- package/dist/api/compiler/checker-grammar.d.ts +35 -0
- package/dist/api/compiler/checker-grammar.js +2573 -0
- package/dist/api/compiler/checker-heritage.d.ts +28 -0
- package/dist/api/compiler/checker-heritage.js +900 -0
- package/dist/api/compiler/checker-inference.d.ts +179 -0
- package/dist/api/compiler/checker-inference.js +2105 -0
- package/dist/api/compiler/checker-iteration.d.ts +115 -0
- package/dist/api/compiler/checker-iteration.js +857 -0
- package/dist/api/compiler/checker-javascript.d.ts +42 -0
- package/dist/api/compiler/checker-javascript.js +441 -0
- package/dist/api/compiler/checker-jsdoc.d.ts +30 -0
- package/dist/api/compiler/checker-jsdoc.js +320 -0
- package/dist/api/compiler/checker-jsx.d.ts +94 -0
- package/dist/api/compiler/checker-jsx.js +1433 -0
- package/dist/api/compiler/checker-literals.d.ts +6 -0
- package/dist/api/compiler/checker-literals.js +43 -0
- package/dist/api/compiler/checker-members.d.ts +198 -0
- package/dist/api/compiler/checker-members.js +2126 -0
- package/dist/api/compiler/checker-modules.d.ts +85 -0
- package/dist/api/compiler/checker-modules.js +2141 -0
- package/dist/api/compiler/checker-narrowing.d.ts +120 -0
- package/dist/api/compiler/checker-narrowing.js +2797 -0
- package/dist/api/compiler/checker-object-literals.d.ts +14 -0
- package/dist/api/compiler/checker-object-literals.js +479 -0
- package/dist/api/compiler/checker-operators.d.ts +33 -0
- package/dist/api/compiler/checker-operators.js +1040 -0
- package/dist/api/compiler/checker-overloads.d.ts +7 -0
- package/dist/api/compiler/checker-overloads.js +270 -0
- package/dist/api/compiler/checker-property-access.d.ts +34 -0
- package/dist/api/compiler/checker-property-access.js +672 -0
- package/dist/api/compiler/checker-services.d.ts +49 -0
- package/dist/api/compiler/checker-services.js +995 -0
- package/dist/api/compiler/checker-signatures.d.ts +55 -0
- package/dist/api/compiler/checker-signatures.js +788 -0
- package/dist/api/compiler/checker-source-file.d.ts +27 -0
- package/dist/api/compiler/checker-source-file.js +619 -0
- package/dist/api/compiler/checker-statements.d.ts +18 -0
- package/dist/api/compiler/checker-statements.js +226 -0
- package/dist/api/compiler/checker-super.d.ts +13 -0
- package/dist/api/compiler/checker-super.js +241 -0
- package/dist/api/compiler/checker-symbol-types.d.ts +67 -0
- package/dist/api/compiler/checker-symbol-types.js +1885 -0
- package/dist/api/compiler/checker-symbols.d.ts +181 -0
- package/dist/api/compiler/checker-symbols.js +1782 -0
- package/dist/api/compiler/checker-type-factory.d.ts +142 -0
- package/dist/api/compiler/checker-type-factory.js +2501 -0
- package/dist/api/compiler/checker-type-nodes.d.ts +26 -0
- package/dist/api/compiler/checker-type-nodes.js +828 -0
- package/dist/api/compiler/checker-type-operators.d.ts +109 -0
- package/dist/api/compiler/checker-type-operators.js +1842 -0
- package/dist/api/compiler/checker-types.d.ts +1027 -0
- package/dist/api/compiler/checker-types.js +1697 -0
- package/dist/api/compiler/checker-unused.d.ts +19 -0
- package/dist/api/compiler/checker-unused.js +524 -0
- package/dist/api/compiler/checker-utilities.d.ts +33 -0
- package/dist/api/compiler/checker-utilities.js +141 -0
- package/dist/api/compiler/checker.d.ts +491 -0
- package/dist/api/compiler/checker.js +912 -0
- package/dist/api/compiler/command-line.d.ts +32 -0
- package/dist/api/compiler/command-line.js +383 -0
- package/dist/api/compiler/compile-program.d.ts +118 -0
- package/dist/api/compiler/compile-program.js +384 -0
- package/dist/api/compiler/diagnostic-locales.d.ts +22 -0
- package/dist/api/compiler/diagnostic-locales.js +64 -0
- package/dist/api/compiler/diagnostic-messages.d.ts +2166 -0
- package/dist/api/compiler/diagnostic-messages.js +184 -0
- package/dist/api/compiler/diagnostics.d.ts +167 -0
- package/dist/api/compiler/diagnostics.js +820 -0
- package/dist/api/compiler/emitter.d.ts +71 -0
- package/dist/api/compiler/emitter.js +327 -0
- package/dist/api/compiler/file-include.d.ts +117 -0
- package/dist/api/compiler/file-include.js +536 -0
- package/dist/api/compiler/file-loader.d.ts +261 -0
- package/dist/api/compiler/file-loader.js +1257 -0
- package/dist/api/compiler/file-system.d.ts +51 -0
- package/dist/api/compiler/file-system.js +132 -0
- package/dist/api/compiler/flow.d.ts +60 -0
- package/dist/api/compiler/flow.js +45 -0
- package/dist/api/compiler/instantiation.d.ts +74 -0
- package/dist/api/compiler/instantiation.js +799 -0
- package/dist/api/compiler/jsdoc.d.ts +75 -0
- package/dist/api/compiler/jsdoc.js +1229 -0
- package/dist/api/compiler/link-tables.d.ts +36 -0
- package/dist/api/compiler/link-tables.js +83 -0
- package/dist/api/compiler/locale-data.d.ts +24 -0
- package/dist/api/compiler/locale-data.js +183 -0
- package/dist/api/compiler/locale.d.ts +4 -0
- package/dist/api/compiler/locale.js +317 -0
- package/dist/api/compiler/locales/cs-CZ.d.ts +2 -0
- package/dist/api/compiler/locales/cs-CZ.js +3 -0
- package/dist/api/compiler/locales/de-DE.d.ts +2 -0
- package/dist/api/compiler/locales/de-DE.js +3 -0
- package/dist/api/compiler/locales/es-ES.d.ts +2 -0
- package/dist/api/compiler/locales/es-ES.js +3 -0
- package/dist/api/compiler/locales/fr-FR.d.ts +2 -0
- package/dist/api/compiler/locales/fr-FR.js +3 -0
- package/dist/api/compiler/locales/it-IT.d.ts +2 -0
- package/dist/api/compiler/locales/it-IT.js +3 -0
- package/dist/api/compiler/locales/ja-JP.d.ts +2 -0
- package/dist/api/compiler/locales/ja-JP.js +3 -0
- package/dist/api/compiler/locales/ko-KR.d.ts +2 -0
- package/dist/api/compiler/locales/ko-KR.js +3 -0
- package/dist/api/compiler/locales/pl-PL.d.ts +2 -0
- package/dist/api/compiler/locales/pl-PL.js +3 -0
- package/dist/api/compiler/locales/pt-BR.d.ts +2 -0
- package/dist/api/compiler/locales/pt-BR.js +3 -0
- package/dist/api/compiler/locales/ru-RU.d.ts +2 -0
- package/dist/api/compiler/locales/ru-RU.js +3 -0
- package/dist/api/compiler/locales/tr-TR.d.ts +2 -0
- package/dist/api/compiler/locales/tr-TR.js +3 -0
- package/dist/api/compiler/locales/zh-CN.d.ts +2 -0
- package/dist/api/compiler/locales/zh-CN.js +3 -0
- package/dist/api/compiler/locales/zh-TW.d.ts +2 -0
- package/dist/api/compiler/locales/zh-TW.js +3 -0
- package/dist/api/compiler/module-resolution-types.d.ts +83 -0
- package/dist/api/compiler/module-resolution-types.js +176 -0
- package/dist/api/compiler/module-resolution.d.ts +71 -0
- package/dist/api/compiler/module-resolution.js +1598 -0
- package/dist/api/compiler/module-specifiers.d.ts +64 -0
- package/dist/api/compiler/module-specifiers.js +1101 -0
- package/dist/api/compiler/name-resolver.d.ts +43 -0
- package/dist/api/compiler/name-resolver.js +509 -0
- package/dist/api/compiler/node-builder-names.d.ts +32 -0
- package/dist/api/compiler/node-builder-names.js +854 -0
- package/dist/api/compiler/node-builder-pseudo.d.ts +36 -0
- package/dist/api/compiler/node-builder-pseudo.js +744 -0
- package/dist/api/compiler/node-builder-reuse.d.ts +4 -0
- package/dist/api/compiler/node-builder-reuse.js +647 -0
- package/dist/api/compiler/node-builder.d.ts +270 -0
- package/dist/api/compiler/node-builder.js +2645 -0
- package/dist/api/compiler/option-declarations.d.ts +90 -0
- package/dist/api/compiler/option-declarations.js +1460 -0
- package/dist/api/compiler/options.d.ts +289 -0
- package/dist/api/compiler/options.js +1197 -0
- package/dist/api/compiler/output-paths.d.ts +42 -0
- package/dist/api/compiler/output-paths.js +195 -0
- package/dist/api/compiler/package-json.d.ts +175 -0
- package/dist/api/compiler/package-json.js +1015 -0
- package/dist/api/compiler/parallel-parse.d.ts +219 -0
- package/dist/api/compiler/parallel-parse.js +537 -0
- package/dist/api/compiler/parser.d.ts +587 -0
- package/dist/api/compiler/parser.js +6407 -0
- package/dist/api/compiler/path.d.ts +91 -0
- package/dist/api/compiler/path.js +705 -0
- package/dist/api/compiler/printer/async-helpers.d.ts +22 -0
- package/dist/api/compiler/printer/async-helpers.js +91 -0
- package/dist/api/compiler/printer/auto-generate.d.ts +13 -0
- package/dist/api/compiler/printer/auto-generate.js +20 -0
- package/dist/api/compiler/printer/decorator-helpers.d.ts +24 -0
- package/dist/api/compiler/printer/decorator-helpers.js +118 -0
- package/dist/api/compiler/printer/emit-context.d.ts +154 -0
- package/dist/api/compiler/printer/emit-context.js +576 -0
- package/dist/api/compiler/printer/emit-flags.d.ts +60 -0
- package/dist/api/compiler/printer/emit-flags.js +2 -0
- package/dist/api/compiler/printer/factory-base.d.ts +171 -0
- package/dist/api/compiler/printer/factory-base.js +1505 -0
- package/dist/api/compiler/printer/factory.d.ts +147 -0
- package/dist/api/compiler/printer/factory.js +542 -0
- package/dist/api/compiler/printer/helpers.d.ts +27 -0
- package/dist/api/compiler/printer/helpers.js +164 -0
- package/dist/api/compiler/printer/name-generator.d.ts +41 -0
- package/dist/api/compiler/printer/name-generator.js +283 -0
- package/dist/api/compiler/printer/printer.d.ts +411 -0
- package/dist/api/compiler/printer/printer.js +4517 -0
- package/dist/api/compiler/printer/text-writer.d.ts +46 -0
- package/dist/api/compiler/printer/text-writer.js +172 -0
- package/dist/api/compiler/printer/utilities.d.ts +82 -0
- package/dist/api/compiler/printer/utilities.js +817 -0
- package/dist/api/compiler/program-checker.d.ts +156 -0
- package/dist/api/compiler/program-checker.js +526 -0
- package/dist/api/compiler/program-utilities.d.ts +52 -0
- package/dist/api/compiler/program-utilities.js +365 -0
- package/dist/api/compiler/program.d.ts +180 -0
- package/dist/api/compiler/program.js +1011 -0
- package/dist/api/compiler/pseudo-bigint.d.ts +5 -0
- package/dist/api/compiler/pseudo-bigint.js +61 -0
- package/dist/api/compiler/regexp-checker.d.ts +38 -0
- package/dist/api/compiler/regexp-checker.js +942 -0
- package/dist/api/compiler/relations.d.ts +263 -0
- package/dist/api/compiler/relations.js +4002 -0
- package/dist/api/compiler/reparser.d.ts +48 -0
- package/dist/api/compiler/reparser.js +1323 -0
- package/dist/api/compiler/scanner.d.ts +256 -0
- package/dist/api/compiler/scanner.js +2853 -0
- package/dist/api/compiler/side-state.d.ts +16 -0
- package/dist/api/compiler/side-state.js +89 -0
- package/dist/api/compiler/sourcemap.d.ts +55 -0
- package/dist/api/compiler/sourcemap.js +340 -0
- package/dist/api/compiler/spelling.d.ts +14 -0
- package/dist/api/compiler/spelling.js +128 -0
- package/dist/api/compiler/symbol-accessibility.d.ts +57 -0
- package/dist/api/compiler/symbol-accessibility.js +894 -0
- package/dist/api/compiler/symbol.d.ts +240 -0
- package/dist/api/compiler/symbol.js +228 -0
- package/dist/api/compiler/symlinks.d.ts +32 -0
- package/dist/api/compiler/symlinks.js +114 -0
- package/dist/api/compiler/syntax-kind.d.ts +389 -0
- package/dist/api/compiler/syntax-kind.js +2 -0
- package/dist/api/compiler/timeline.d.ts +9 -0
- package/dist/api/compiler/timeline.js +54 -0
- package/dist/api/compiler/transformers/alias-references.d.ts +39 -0
- package/dist/api/compiler/transformers/alias-references.js +676 -0
- package/dist/api/compiler/transformers/async-utilities.d.ts +51 -0
- package/dist/api/compiler/transformers/async-utilities.js +260 -0
- package/dist/api/compiler/transformers/async.d.ts +53 -0
- package/dist/api/compiler/transformers/async.js +645 -0
- package/dist/api/compiler/transformers/class-fields.d.ts +206 -0
- package/dist/api/compiler/transformers/class-fields.js +2418 -0
- package/dist/api/compiler/transformers/class-utilities.d.ts +46 -0
- package/dist/api/compiler/transformers/class-utilities.js +261 -0
- package/dist/api/compiler/transformers/commonjs-module.d.ts +103 -0
- package/dist/api/compiler/transformers/commonjs-module.js +1180 -0
- package/dist/api/compiler/transformers/const-enum-inliner.d.ts +11 -0
- package/dist/api/compiler/transformers/const-enum-inliner.js +36 -0
- package/dist/api/compiler/transformers/declarations-diagnostics.d.ts +52 -0
- package/dist/api/compiler/transformers/declarations-diagnostics.js +538 -0
- package/dist/api/compiler/transformers/declarations-pseudo.d.ts +160 -0
- package/dist/api/compiler/transformers/declarations-pseudo.js +797 -0
- package/dist/api/compiler/transformers/declarations-resolver.d.ts +152 -0
- package/dist/api/compiler/transformers/declarations-resolver.js +35 -0
- package/dist/api/compiler/transformers/declarations-syntactic.d.ts +119 -0
- package/dist/api/compiler/transformers/declarations-syntactic.js +1582 -0
- package/dist/api/compiler/transformers/declarations-tracker.d.ts +46 -0
- package/dist/api/compiler/transformers/declarations-tracker.js +197 -0
- package/dist/api/compiler/transformers/declarations.d.ts +175 -0
- package/dist/api/compiler/transformers/declarations.js +2380 -0
- package/dist/api/compiler/transformers/decorator-metadata.d.ts +54 -0
- package/dist/api/compiler/transformers/decorator-metadata.js +554 -0
- package/dist/api/compiler/transformers/decorator-utilities.d.ts +38 -0
- package/dist/api/compiler/transformers/decorator-utilities.js +238 -0
- package/dist/api/compiler/transformers/destructuring.d.ts +25 -0
- package/dist/api/compiler/transformers/destructuring.js +626 -0
- package/dist/api/compiler/transformers/downlevel.d.ts +6 -0
- package/dist/api/compiler/transformers/downlevel.js +45 -0
- package/dist/api/compiler/transformers/emit-resolver.d.ts +61 -0
- package/dist/api/compiler/transformers/emit-resolver.js +197 -0
- package/dist/api/compiler/transformers/es-decorators.d.ts +118 -0
- package/dist/api/compiler/transformers/es-decorators.js +1901 -0
- package/dist/api/compiler/transformers/exponentiation.d.ts +11 -0
- package/dist/api/compiler/transformers/exponentiation.js +76 -0
- package/dist/api/compiler/transformers/external-module-info.d.ts +35 -0
- package/dist/api/compiler/transformers/external-module-info.js +351 -0
- package/dist/api/compiler/transformers/for-await.d.ts +43 -0
- package/dist/api/compiler/transformers/for-await.js +469 -0
- package/dist/api/compiler/transformers/import-elision.d.ts +16 -0
- package/dist/api/compiler/transformers/import-elision.js +124 -0
- package/dist/api/compiler/transformers/jsx-entities.d.ts +1 -0
- package/dist/api/compiler/transformers/jsx-entities.js +256 -0
- package/dist/api/compiler/transformers/jsx.d.ts +71 -0
- package/dist/api/compiler/transformers/jsx.js +700 -0
- package/dist/api/compiler/transformers/legacy-decorators.d.ts +56 -0
- package/dist/api/compiler/transformers/legacy-decorators.js +564 -0
- package/dist/api/compiler/transformers/logical-assignment.d.ts +14 -0
- package/dist/api/compiler/transformers/logical-assignment.js +62 -0
- package/dist/api/compiler/transformers/module-utilities.d.ts +9 -0
- package/dist/api/compiler/transformers/module-utilities.js +36 -0
- package/dist/api/compiler/transformers/module.d.ts +49 -0
- package/dist/api/compiler/transformers/module.js +296 -0
- package/dist/api/compiler/transformers/named-evaluation.d.ts +26 -0
- package/dist/api/compiler/transformers/named-evaluation.js +266 -0
- package/dist/api/compiler/transformers/nullish-coalescing.d.ts +9 -0
- package/dist/api/compiler/transformers/nullish-coalescing.js +26 -0
- package/dist/api/compiler/transformers/object-rest-spread.d.ts +34 -0
- package/dist/api/compiler/transformers/object-rest-spread.js +411 -0
- package/dist/api/compiler/transformers/optional-catch.d.ts +9 -0
- package/dist/api/compiler/transformers/optional-catch.js +20 -0
- package/dist/api/compiler/transformers/optional-chain.d.ts +14 -0
- package/dist/api/compiler/transformers/optional-chain.js +188 -0
- package/dist/api/compiler/transformers/reference-resolver.d.ts +128 -0
- package/dist/api/compiler/transformers/reference-resolver.js +1155 -0
- package/dist/api/compiler/transformers/runtime-syntax.d.ts +71 -0
- package/dist/api/compiler/transformers/runtime-syntax.js +753 -0
- package/dist/api/compiler/transformers/subtree-facts.d.ts +9 -0
- package/dist/api/compiler/transformers/subtree-facts.js +203 -0
- package/dist/api/compiler/transformers/syntax-facts.d.ts +51 -0
- package/dist/api/compiler/transformers/syntax-facts.js +254 -0
- package/dist/api/compiler/transformers/tagged-template.d.ts +17 -0
- package/dist/api/compiler/transformers/tagged-template.js +148 -0
- package/dist/api/compiler/transformers/transformer.d.ts +17 -0
- package/dist/api/compiler/transformers/transformer.js +54 -0
- package/dist/api/compiler/transformers/type-eraser.d.ts +21 -0
- package/dist/api/compiler/transformers/type-eraser.js +346 -0
- package/dist/api/compiler/transformers/type-serialization.d.ts +20 -0
- package/dist/api/compiler/transformers/type-serialization.js +347 -0
- package/dist/api/compiler/transformers/using.d.ts +56 -0
- package/dist/api/compiler/transformers/using.js +453 -0
- package/dist/api/compiler/transformers/utilities.d.ts +50 -0
- package/dist/api/compiler/transformers/utilities.js +347 -0
- package/dist/api/compiler/transformers/visitor-base.d.ts +6 -0
- package/dist/api/compiler/transformers/visitor-base.js +817 -0
- package/dist/api/compiler/transformers/visitor-hooks.d.ts +29 -0
- package/dist/api/compiler/transformers/visitor-hooks.js +189 -0
- package/dist/api/compiler/tsconfig.d.ts +177 -0
- package/dist/api/compiler/tsconfig.js +1311 -0
- package/dist/api/compiler/type-printer.d.ts +15 -0
- package/dist/api/compiler/type-printer.js +74 -0
- package/dist/api/compiler/types.d.ts +87 -0
- package/dist/api/compiler/types.js +23 -0
- package/dist/api/compiler/unicode-identifiers.d.ts +2 -0
- package/dist/api/compiler/unicode-identifiers.js +209 -0
- package/dist/api/compiler/unicode-properties.d.ts +8 -0
- package/dist/api/compiler/unicode-properties.js +531 -0
- package/dist/api/compiler/vfs-match.d.ts +24 -0
- package/dist/api/compiler/vfs-match.js +587 -0
- package/dist/api/library/ast.d.ts +3 -2
- package/dist/api/library/ast.generated.d.ts +127 -139
- package/dist/api/library/checker.d.ts +51 -0
- package/dist/api/library/checker.js +318 -0
- package/dist/api/library/diagnostics.d.ts +13 -0
- package/dist/api/library/diagnostics.js +50 -0
- package/dist/api/library/disk.d.ts +13 -0
- package/dist/api/library/disk.js +66 -0
- package/dist/api/library/errors.d.ts +13 -0
- package/dist/api/library/errors.js +24 -0
- package/dist/api/library/host.d.ts +24 -0
- package/dist/api/library/host.js +52 -0
- package/dist/api/library/index.d.ts +5 -1
- package/dist/api/library/index.js +4 -0
- package/dist/api/library/nodes.d.ts +51 -0
- package/dist/api/library/nodes.js +196 -0
- package/dist/api/library/options.d.ts +144 -0
- package/dist/api/library/options.js +308 -0
- package/dist/api/library/parse.d.ts +19 -0
- package/dist/api/library/parse.js +41 -0
- package/dist/api/library/program.d.ts +21 -0
- package/dist/api/library/program.js +234 -0
- package/dist/api/library/types.d.ts +14 -1
- package/package.json +12 -8
- package/src/compiler/ast-utilities.ts +548 -0
- package/src/compiler/ast.ts +12862 -0
- package/src/compiler/astnav.ts +799 -0
- package/src/compiler/binder-utilities.ts +1392 -0
- package/src/compiler/binder.ts +2703 -0
- package/src/compiler/build-info.ts +1197 -0
- package/src/compiler/character-codes.ts +323 -0
- package/src/compiler/checker-calls.ts +2155 -0
- package/src/compiler/checker-classes.ts +706 -0
- package/src/compiler/checker-contextual.ts +1457 -0
- package/src/compiler/checker-declaration-order.ts +438 -0
- package/src/compiler/checker-declarations.ts +1194 -0
- package/src/compiler/checker-declared-types.ts +919 -0
- package/src/compiler/checker-decorators.ts +694 -0
- package/src/compiler/checker-deprecation.ts +359 -0
- package/src/compiler/checker-destructuring.ts +805 -0
- package/src/compiler/checker-elaboration.ts +477 -0
- package/src/compiler/checker-emit-helpers.ts +224 -0
- package/src/compiler/checker-emit-resolver.ts +769 -0
- package/src/compiler/checker-evaluator.ts +243 -0
- package/src/compiler/checker-expressions.ts +1831 -0
- package/src/compiler/checker-features.ts +361 -0
- package/src/compiler/checker-flow.ts +394 -0
- package/src/compiler/checker-functions.ts +1296 -0
- package/src/compiler/checker-generated-code.ts +227 -0
- package/src/compiler/checker-globals.ts +52 -0
- package/src/compiler/checker-grammar.ts +3584 -0
- package/src/compiler/checker-heritage.ts +1233 -0
- package/src/compiler/checker-inference.ts +2576 -0
- package/src/compiler/checker-iteration.ts +1206 -0
- package/src/compiler/checker-javascript.ts +502 -0
- package/src/compiler/checker-jsdoc.ts +360 -0
- package/src/compiler/checker-jsx.ts +1924 -0
- package/src/compiler/checker-literals.ts +61 -0
- package/src/compiler/checker-members.ts +2436 -0
- package/src/compiler/checker-modules.ts +2886 -0
- package/src/compiler/checker-narrowing.ts +3230 -0
- package/src/compiler/checker-object-literals.ts +575 -0
- package/src/compiler/checker-operators.ts +1422 -0
- package/src/compiler/checker-overloads.ts +328 -0
- package/src/compiler/checker-property-access.ts +906 -0
- package/src/compiler/checker-services.ts +1149 -0
- package/src/compiler/checker-signatures.ts +1032 -0
- package/src/compiler/checker-source-file.ts +732 -0
- package/src/compiler/checker-statements.ts +292 -0
- package/src/compiler/checker-super.ts +261 -0
- package/src/compiler/checker-symbol-types.ts +2107 -0
- package/src/compiler/checker-symbols.ts +2150 -0
- package/src/compiler/checker-type-factory.ts +2579 -0
- package/src/compiler/checker-type-nodes.ts +1033 -0
- package/src/compiler/checker-type-operators.ts +2502 -0
- package/src/compiler/checker-types.ts +2340 -0
- package/src/compiler/checker-unused.ts +642 -0
- package/src/compiler/checker-utilities.ts +161 -0
- package/src/compiler/checker.ts +1116 -0
- package/src/compiler/command-line.ts +436 -0
- package/src/compiler/compile-program.ts +439 -0
- package/src/compiler/decoder.ts +1209 -0
- package/src/compiler/diagnostic-locales.ts +86 -0
- package/src/compiler/diagnostic-messages.ts +2349 -0
- package/src/compiler/diagnostics.ts +897 -0
- package/src/compiler/emitter.ts +434 -0
- package/src/compiler/encoder.ts +1945 -0
- package/src/compiler/file-include.ts +673 -0
- package/src/compiler/file-loader.ts +1528 -0
- package/src/compiler/file-system.ts +143 -0
- package/src/compiler/flow.ts +89 -0
- package/src/compiler/help.ts +473 -0
- package/src/compiler/incremental.ts +2784 -0
- package/src/compiler/init.ts +141 -0
- package/src/compiler/instantiation.ts +894 -0
- package/src/compiler/jsdoc.ts +1386 -0
- package/src/compiler/link-tables.ts +98 -0
- package/src/compiler/locale-data.ts +203 -0
- package/src/compiler/locale.ts +307 -0
- package/src/compiler/locales/cs-CZ.ts +5 -0
- package/src/compiler/locales/de-DE.ts +5 -0
- package/src/compiler/locales/es-ES.ts +5 -0
- package/src/compiler/locales/fr-FR.ts +5 -0
- package/src/compiler/locales/it-IT.ts +5 -0
- package/src/compiler/locales/ja-JP.ts +5 -0
- package/src/compiler/locales/ko-KR.ts +5 -0
- package/src/compiler/locales/pl-PL.ts +5 -0
- package/src/compiler/locales/pt-BR.ts +5 -0
- package/src/compiler/locales/ru-RU.ts +5 -0
- package/src/compiler/locales/tr-TR.ts +5 -0
- package/src/compiler/locales/zh-CN.ts +5 -0
- package/src/compiler/locales/zh-TW.ts +5 -0
- package/src/compiler/module-resolution-types.ts +243 -0
- package/src/compiler/module-resolution.ts +2072 -0
- package/src/compiler/module-specifiers.ts +1491 -0
- package/src/compiler/name-resolver.ts +646 -0
- package/src/compiler/node-builder-names.ts +1069 -0
- package/src/compiler/node-builder-pseudo.ts +892 -0
- package/src/compiler/node-builder-reuse.ts +764 -0
- package/src/compiler/node-builder.ts +3425 -0
- package/src/compiler/option-declarations.ts +1560 -0
- package/src/compiler/options.ts +1576 -0
- package/src/compiler/output-paths.ts +334 -0
- package/src/compiler/package-json.ts +1083 -0
- package/src/compiler/parallel-check.ts +1951 -0
- package/src/compiler/parallel-parse.ts +590 -0
- package/src/compiler/parse-thread.ts +140 -0
- package/src/compiler/parser.ts +7716 -0
- package/src/compiler/path.ts +717 -0
- package/src/compiler/printer/async-helpers.ts +183 -0
- package/src/compiler/printer/auto-generate.ts +27 -0
- package/src/compiler/printer/decorator-helpers.ts +218 -0
- package/src/compiler/printer/emit-context.ts +679 -0
- package/src/compiler/printer/emit-flags.ts +64 -0
- package/src/compiler/printer/factory-base.ts +2577 -0
- package/src/compiler/printer/factory.ts +764 -0
- package/src/compiler/printer/helpers.ts +291 -0
- package/src/compiler/printer/name-generator.ts +372 -0
- package/src/compiler/printer/printer.ts +5072 -0
- package/src/compiler/printer/text-writer.ts +183 -0
- package/src/compiler/printer/utilities.ts +884 -0
- package/src/compiler/program-checker.ts +592 -0
- package/src/compiler/program-utilities.ts +435 -0
- package/src/compiler/program.ts +1419 -0
- package/src/compiler/pseudo-bigint.ts +62 -0
- package/src/compiler/regexp-checker.ts +1142 -0
- package/src/compiler/relations.ts +5149 -0
- package/src/compiler/reparser.ts +1566 -0
- package/src/compiler/scanner.ts +2951 -0
- package/src/compiler/show-config.ts +239 -0
- package/src/compiler/side-state.ts +125 -0
- package/src/compiler/sourcemap.ts +366 -0
- package/src/compiler/spelling.ts +122 -0
- package/src/compiler/symbol-accessibility.ts +1071 -0
- package/src/compiler/symbol.ts +439 -0
- package/src/compiler/symlinks.ts +137 -0
- package/src/compiler/syntax-kind.ts +391 -0
- package/src/compiler/thread-entry.ts +191 -0
- package/src/compiler/timeline.ts +53 -0
- package/src/compiler/transformers/alias-references.ts +757 -0
- package/src/compiler/transformers/async-utilities.ts +335 -0
- package/src/compiler/transformers/async.ts +838 -0
- package/src/compiler/transformers/class-fields.ts +2967 -0
- package/src/compiler/transformers/class-utilities.ts +324 -0
- package/src/compiler/transformers/commonjs-module.ts +1621 -0
- package/src/compiler/transformers/const-enum-inliner.ts +50 -0
- package/src/compiler/transformers/declarations-diagnostics.ts +832 -0
- package/src/compiler/transformers/declarations-pseudo.ts +966 -0
- package/src/compiler/transformers/declarations-resolver.ts +249 -0
- package/src/compiler/transformers/declarations-syntactic.ts +1859 -0
- package/src/compiler/transformers/declarations-tracker.ts +269 -0
- package/src/compiler/transformers/declarations.ts +3120 -0
- package/src/compiler/transformers/decorator-metadata.ts +697 -0
- package/src/compiler/transformers/decorator-utilities.ts +283 -0
- package/src/compiler/transformers/destructuring.ts +708 -0
- package/src/compiler/transformers/downlevel.ts +50 -0
- package/src/compiler/transformers/emit-resolver.ts +258 -0
- package/src/compiler/transformers/es-decorators.ts +2682 -0
- package/src/compiler/transformers/exponentiation.ts +80 -0
- package/src/compiler/transformers/external-module-info.ts +412 -0
- package/src/compiler/transformers/for-await.ts +687 -0
- package/src/compiler/transformers/import-elision.ts +152 -0
- package/src/compiler/transformers/jsx-entities.ts +256 -0
- package/src/compiler/transformers/jsx.ts +824 -0
- package/src/compiler/transformers/legacy-decorators.ts +726 -0
- package/src/compiler/transformers/logical-assignment.ts +75 -0
- package/src/compiler/transformers/module-utilities.ts +42 -0
- package/src/compiler/transformers/module.ts +474 -0
- package/src/compiler/transformers/named-evaluation.ts +389 -0
- package/src/compiler/transformers/nullish-coalescing.ts +35 -0
- package/src/compiler/transformers/object-rest-spread.ts +577 -0
- package/src/compiler/transformers/optional-catch.ts +29 -0
- package/src/compiler/transformers/optional-chain.ts +246 -0
- package/src/compiler/transformers/reference-resolver.ts +1201 -0
- package/src/compiler/transformers/runtime-syntax.ts +942 -0
- package/src/compiler/transformers/subtree-facts.ts +245 -0
- package/src/compiler/transformers/syntax-facts.ts +353 -0
- package/src/compiler/transformers/tagged-template.ts +167 -0
- package/src/compiler/transformers/transformer.ts +56 -0
- package/src/compiler/transformers/type-eraser.ts +520 -0
- package/src/compiler/transformers/type-serialization.ts +374 -0
- package/src/compiler/transformers/using.ts +613 -0
- package/src/compiler/transformers/utilities.ts +419 -0
- package/src/compiler/transformers/visitor-base.ts +1601 -0
- package/src/compiler/transformers/visitor-hooks.ts +252 -0
- package/src/compiler/tsc-build.ts +1418 -0
- package/src/compiler/tsc-cli.ts +666 -0
- package/src/compiler/tsc-compile.ts +437 -0
- package/src/compiler/tsc-watch.ts +854 -0
- package/src/compiler/tsconfig.ts +1574 -0
- package/src/compiler/type-printer.ts +110 -0
- package/src/compiler/types.ts +115 -0
- package/src/compiler/unicode-identifiers.ts +212 -0
- package/src/compiler/unicode-properties.ts +537 -0
- package/src/compiler/vfs-match.ts +597 -0
- package/src/compiler/xxh3.ts +650 -0
- package/src/library/ast.generated.ts +141 -167
- package/src/library/ast.ts +4 -1
- package/src/library/checker.ts +384 -0
- package/src/library/diagnostics.ts +72 -0
- package/src/library/disk.ts +73 -0
- package/src/library/errors.ts +26 -0
- package/src/library/host.ts +63 -0
- package/src/library/index.ts +21 -0
- package/src/library/nodes.ts +232 -0
- package/src/library/options.ts +449 -0
- package/src/library/parse.ts +63 -0
- package/src/library/program.ts +293 -0
- package/src/library/types.ts +14 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Checker } from './checker.js';
|
|
2
|
+
import { ObjectFlags, Signature, Type } from './checker-types.js';
|
|
3
|
+
/**
|
|
4
|
+
* The object that holds the lazily computed state of `t`: `t` itself, or for a type with side
|
|
5
|
+
* state the checker's holder of it, an object of the same class created on first use. The holder's
|
|
6
|
+
* identity fields are copies or unset: nothing may use it as a type, only as a holder of state.
|
|
7
|
+
*/
|
|
8
|
+
export declare function sideOf<T extends Type>(c: Checker, t: T): T;
|
|
9
|
+
/** The holder of `t`'s state if `t` has side state and its checker created one, else `t`. */
|
|
10
|
+
export declare function sideOfIfAny<T extends Type>(c: Checker, t: T): T | undefined;
|
|
11
|
+
/** The `objectFlags` of `t` that are computed lazily (resolution state and memo bits). */
|
|
12
|
+
export declare function lazyObjectFlags(c: Checker, t: Type): ObjectFlags;
|
|
13
|
+
/** Like `sideOf`, for a signature with side state. */
|
|
14
|
+
export declare function signatureSideOf(c: Checker, s: Signature): Signature;
|
|
15
|
+
/** The resolved return type of `s`: set when it was created, or resolved since (`getReturnTypeOfSignature`). */
|
|
16
|
+
export declare function resolvedReturnTypeOf(c: Checker, s: Signature): Type | undefined;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { ConditionalType, EvolvingArrayType, InstantiationExpressionType, InterfaceType, IntersectionType, LiteralType, MappedType, ObjectType, ReverseMappedType, Signature, StructuredType, TupleType, Type, TypeParameter, TypeReference, UnionType, emptySymbols, emptyTypes, } from './checker-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The object that holds the lazily computed state of `t`: `t` itself, or for a type with side
|
|
4
|
+
* state the checker's holder of it, an object of the same class created on first use. The holder's
|
|
5
|
+
* identity fields are copies or unset: nothing may use it as a type, only as a holder of state.
|
|
6
|
+
*/
|
|
7
|
+
export function sideOf(c, t) {
|
|
8
|
+
// Small enough to inline: the holder is found out of line.
|
|
9
|
+
return (t.objectFlags & -2147483648 /* ObjectFlags.SideState */) === 0 ? t : sideHolder(c, t);
|
|
10
|
+
}
|
|
11
|
+
function sideHolder(c, t) {
|
|
12
|
+
let holder = c.sideHolders.get(t.id);
|
|
13
|
+
if (holder === undefined) {
|
|
14
|
+
holder = newSideHolder(t);
|
|
15
|
+
holder.objectFlags = 0 /* ObjectFlags.None */;
|
|
16
|
+
holder.symbol = t.symbol;
|
|
17
|
+
c.sideHolders.set(t.id, holder);
|
|
18
|
+
}
|
|
19
|
+
return holder;
|
|
20
|
+
}
|
|
21
|
+
/** The holder of `t`'s state if `t` has side state and its checker created one, else `t`. */
|
|
22
|
+
export function sideOfIfAny(c, t) {
|
|
23
|
+
if ((t.objectFlags & -2147483648 /* ObjectFlags.SideState */) === 0)
|
|
24
|
+
return t;
|
|
25
|
+
return c.sideHolders.get(t.id);
|
|
26
|
+
}
|
|
27
|
+
/** The `objectFlags` of `t` that are computed lazily (resolution state and memo bits). */
|
|
28
|
+
export function lazyObjectFlags(c, t) {
|
|
29
|
+
const flags = t.objectFlags;
|
|
30
|
+
return (flags & -2147483648 /* ObjectFlags.SideState */) === 0 ? flags : sideHolderFlags(c, t);
|
|
31
|
+
}
|
|
32
|
+
function sideHolderFlags(c, t) {
|
|
33
|
+
const holder = c.sideHolders.get(t.id);
|
|
34
|
+
return holder !== undefined ? holder.objectFlags : 0 /* ObjectFlags.None */;
|
|
35
|
+
}
|
|
36
|
+
function newSideHolder(t) {
|
|
37
|
+
const id = t.id;
|
|
38
|
+
const symbol = t.symbol;
|
|
39
|
+
if (t instanceof TupleType)
|
|
40
|
+
return new TupleType(0 /* ObjectFlags.None */, id);
|
|
41
|
+
if (t instanceof InterfaceType)
|
|
42
|
+
return new InterfaceType(0 /* ObjectFlags.None */, id, symbol);
|
|
43
|
+
if (t instanceof TypeReference)
|
|
44
|
+
return new TypeReference(0 /* ObjectFlags.None */, id, symbol);
|
|
45
|
+
if (t instanceof MappedType)
|
|
46
|
+
return new MappedType(0 /* ObjectFlags.None */, id, symbol);
|
|
47
|
+
if (t instanceof ReverseMappedType)
|
|
48
|
+
return new ReverseMappedType(0 /* ObjectFlags.None */, id);
|
|
49
|
+
if (t instanceof EvolvingArrayType)
|
|
50
|
+
return new EvolvingArrayType(0 /* ObjectFlags.None */, id);
|
|
51
|
+
if (t instanceof InstantiationExpressionType)
|
|
52
|
+
return new InstantiationExpressionType(0 /* ObjectFlags.None */, id, symbol);
|
|
53
|
+
if (t instanceof ObjectType)
|
|
54
|
+
return new ObjectType(0 /* ObjectFlags.None */, id, symbol);
|
|
55
|
+
if (t instanceof UnionType)
|
|
56
|
+
return new UnionType(0 /* ObjectFlags.None */, id, emptyTypes);
|
|
57
|
+
if (t instanceof IntersectionType)
|
|
58
|
+
return new IntersectionType(0 /* ObjectFlags.None */, id, emptyTypes);
|
|
59
|
+
if (t instanceof StructuredType)
|
|
60
|
+
return new StructuredType(t.flags, 0 /* ObjectFlags.None */, id, symbol);
|
|
61
|
+
if (t instanceof LiteralType)
|
|
62
|
+
return new LiteralType(t.flags, id, symbol, '', 0);
|
|
63
|
+
if (t instanceof TypeParameter)
|
|
64
|
+
return new TypeParameter(id, symbol);
|
|
65
|
+
if (t instanceof ConditionalType) {
|
|
66
|
+
const conditional = t;
|
|
67
|
+
return new ConditionalType(id, conditional.root, conditional.checkType, conditional.extendsType, undefined, undefined);
|
|
68
|
+
}
|
|
69
|
+
return new Type(t.flags, 0 /* ObjectFlags.None */, id, symbol);
|
|
70
|
+
}
|
|
71
|
+
/** Like `sideOf`, for a signature with side state. */
|
|
72
|
+
export function signatureSideOf(c, s) {
|
|
73
|
+
return (s.flags & 512 /* SignatureFlags.SideState */) === 0 ? s : signatureSideHolder(c, s);
|
|
74
|
+
}
|
|
75
|
+
function signatureSideHolder(c, s) {
|
|
76
|
+
let holder = c.signatureSideHolders.get(s.id);
|
|
77
|
+
if (holder === undefined) {
|
|
78
|
+
holder = new Signature(s.id, 0 /* SignatureFlags.None */, undefined, emptyTypes, undefined, emptySymbols, undefined, undefined, 0);
|
|
79
|
+
c.signatureSideHolders.set(s.id, holder);
|
|
80
|
+
}
|
|
81
|
+
return holder;
|
|
82
|
+
}
|
|
83
|
+
/** The resolved return type of `s`: set when it was created, or resolved since (`getReturnTypeOfSignature`). */
|
|
84
|
+
export function resolvedReturnTypeOf(c, s) {
|
|
85
|
+
if (s.resolvedReturnType !== undefined || (s.flags & 512 /* SignatureFlags.SideState */) === 0)
|
|
86
|
+
return s.resolvedReturnType;
|
|
87
|
+
const holder = c.signatureSideHolders.get(s.id);
|
|
88
|
+
return holder !== undefined ? holder.resolvedReturnType : undefined;
|
|
89
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/** The path of `path` relative to `directory`, with absolute results as `file://` URLs. */
|
|
2
|
+
export declare function getRelativePathToDirectoryOrUrl(directory: string, path: string, useCaseSensitiveFileNames: boolean, currentDirectory: string): string;
|
|
3
|
+
export declare class SourceMapGenerator {
|
|
4
|
+
readonly file: string;
|
|
5
|
+
readonly sourceRoot: string;
|
|
6
|
+
private readonly sourcesDirectoryPath;
|
|
7
|
+
private readonly useCaseSensitiveFileNames;
|
|
8
|
+
private readonly currentDirectory;
|
|
9
|
+
/** Source file names as added. */
|
|
10
|
+
readonly rawSources: string[];
|
|
11
|
+
private readonly sources;
|
|
12
|
+
private readonly sourceIndices;
|
|
13
|
+
private readonly sourcesContent;
|
|
14
|
+
private readonly names;
|
|
15
|
+
/** The mappings as ASCII bytes; the first `mappingsLength` are used. */
|
|
16
|
+
private mappings;
|
|
17
|
+
private mappingsLength;
|
|
18
|
+
private lastGeneratedLine;
|
|
19
|
+
private lastGeneratedCharacter;
|
|
20
|
+
private lastSourceIndex;
|
|
21
|
+
private lastSourceLine;
|
|
22
|
+
private lastSourceCharacter;
|
|
23
|
+
private lastNameIndex;
|
|
24
|
+
private hasLast;
|
|
25
|
+
private pendingGeneratedLine;
|
|
26
|
+
private pendingGeneratedCharacter;
|
|
27
|
+
private pendingSourceIndex;
|
|
28
|
+
private pendingSourceLine;
|
|
29
|
+
private pendingSourceCharacter;
|
|
30
|
+
private pendingNameIndex;
|
|
31
|
+
private hasPending;
|
|
32
|
+
private hasPendingSource;
|
|
33
|
+
private hasPendingName;
|
|
34
|
+
constructor(file: string, sourceRoot: string, sourcesDirectoryPath: string, useCaseSensitiveFileNames: boolean, currentDirectory: string);
|
|
35
|
+
addSource(fileName: string): number;
|
|
36
|
+
setSourceContent(sourceIndex: number, content: string): boolean;
|
|
37
|
+
addName(name: string): number;
|
|
38
|
+
/** Appends the ASCII character `code` to the mappings. */
|
|
39
|
+
private appendMapping;
|
|
40
|
+
private appendBase64VLQ;
|
|
41
|
+
private shouldCommitMapping;
|
|
42
|
+
private commitPendingMapping;
|
|
43
|
+
private addMapping;
|
|
44
|
+
addSourceMapping(generatedLine: number, generatedCharacter: number, sourceIndex: number, sourceLine: number, sourceCharacter: number): boolean;
|
|
45
|
+
/** The mappings string. */
|
|
46
|
+
getMappings(): string;
|
|
47
|
+
/** The source map as JSON, with keys in tsgo's order. */
|
|
48
|
+
toJSON(): string;
|
|
49
|
+
toBase64DataURL(): string;
|
|
50
|
+
}
|
|
51
|
+
/** A JSON string literal, escaped as Go's encoding/json/v2 does by default. */
|
|
52
|
+
export declare function jsonString(s: string): string;
|
|
53
|
+
/** UTF-8 bytes of `s`; lone surrogates become U+FFFD. */
|
|
54
|
+
export declare function utf8Bytes(s: string): Uint8Array;
|
|
55
|
+
export declare function base64Encode(bytes: Uint8Array): string;
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
// Source map v3 generation: base64 VLQ mappings and the JSON document, as tsgo writes them.
|
|
2
|
+
import { getPathComponentsRelativeTo, getPathFromPathComponents, isRootedDiskPath } from './path.js';
|
|
3
|
+
const base64Digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
4
|
+
const base64DigitCodes = new Uint8Array(64);
|
|
5
|
+
for (let i = 0; i < 64; i++)
|
|
6
|
+
base64DigitCodes[i] = base64Digits.charCodeAt(i);
|
|
7
|
+
const mappingsDecoder = new TextDecoder();
|
|
8
|
+
/** The path of `path` relative to `directory`, with absolute results as `file://` URLs. */
|
|
9
|
+
export function getRelativePathToDirectoryOrUrl(directory, path, useCaseSensitiveFileNames, currentDirectory) {
|
|
10
|
+
const components = getPathComponentsRelativeTo(directory, path, useCaseSensitiveFileNames, currentDirectory);
|
|
11
|
+
const first = components[0];
|
|
12
|
+
if (isRootedDiskPath(first))
|
|
13
|
+
components[0] = (first.charCodeAt(0) === 0x2f ? 'file://' : 'file:///') + first;
|
|
14
|
+
return getPathFromPathComponents(components);
|
|
15
|
+
}
|
|
16
|
+
export class SourceMapGenerator {
|
|
17
|
+
file;
|
|
18
|
+
sourceRoot;
|
|
19
|
+
sourcesDirectoryPath;
|
|
20
|
+
useCaseSensitiveFileNames;
|
|
21
|
+
currentDirectory;
|
|
22
|
+
/** Source file names as added. */
|
|
23
|
+
rawSources;
|
|
24
|
+
sources;
|
|
25
|
+
sourceIndices;
|
|
26
|
+
sourcesContent;
|
|
27
|
+
names;
|
|
28
|
+
/** The mappings as ASCII bytes; the first `mappingsLength` are used. */
|
|
29
|
+
mappings;
|
|
30
|
+
mappingsLength;
|
|
31
|
+
lastGeneratedLine;
|
|
32
|
+
lastGeneratedCharacter;
|
|
33
|
+
lastSourceIndex;
|
|
34
|
+
lastSourceLine;
|
|
35
|
+
lastSourceCharacter;
|
|
36
|
+
lastNameIndex;
|
|
37
|
+
hasLast;
|
|
38
|
+
pendingGeneratedLine;
|
|
39
|
+
pendingGeneratedCharacter;
|
|
40
|
+
pendingSourceIndex;
|
|
41
|
+
pendingSourceLine;
|
|
42
|
+
pendingSourceCharacter;
|
|
43
|
+
pendingNameIndex;
|
|
44
|
+
hasPending;
|
|
45
|
+
hasPendingSource;
|
|
46
|
+
hasPendingName;
|
|
47
|
+
constructor(file, sourceRoot, sourcesDirectoryPath, useCaseSensitiveFileNames, currentDirectory) {
|
|
48
|
+
this.file = file;
|
|
49
|
+
this.sourceRoot = sourceRoot;
|
|
50
|
+
this.sourcesDirectoryPath = sourcesDirectoryPath;
|
|
51
|
+
this.useCaseSensitiveFileNames = useCaseSensitiveFileNames;
|
|
52
|
+
this.currentDirectory = currentDirectory;
|
|
53
|
+
this.rawSources = [];
|
|
54
|
+
this.sources = [];
|
|
55
|
+
this.sourceIndices = new Map();
|
|
56
|
+
this.sourcesContent = [];
|
|
57
|
+
this.names = [];
|
|
58
|
+
this.mappings = new Uint8Array(1024);
|
|
59
|
+
this.mappingsLength = 0;
|
|
60
|
+
this.lastGeneratedLine = 0;
|
|
61
|
+
this.lastGeneratedCharacter = 0;
|
|
62
|
+
this.lastSourceIndex = 0;
|
|
63
|
+
this.lastSourceLine = 0;
|
|
64
|
+
this.lastSourceCharacter = 0;
|
|
65
|
+
this.lastNameIndex = 0;
|
|
66
|
+
this.hasLast = false;
|
|
67
|
+
this.pendingGeneratedLine = 0;
|
|
68
|
+
this.pendingGeneratedCharacter = 0;
|
|
69
|
+
this.pendingSourceIndex = 0;
|
|
70
|
+
this.pendingSourceLine = 0;
|
|
71
|
+
this.pendingSourceCharacter = 0;
|
|
72
|
+
this.pendingNameIndex = 0;
|
|
73
|
+
this.hasPending = false;
|
|
74
|
+
this.hasPendingSource = false;
|
|
75
|
+
this.hasPendingName = false;
|
|
76
|
+
}
|
|
77
|
+
addSource(fileName) {
|
|
78
|
+
const source = getRelativePathToDirectoryOrUrl(this.sourcesDirectoryPath, fileName, this.useCaseSensitiveFileNames, this.currentDirectory);
|
|
79
|
+
const existing = this.sourceIndices.get(source);
|
|
80
|
+
if (existing !== undefined)
|
|
81
|
+
return existing;
|
|
82
|
+
const index = this.sources.length;
|
|
83
|
+
this.sources.push(source);
|
|
84
|
+
this.rawSources.push(fileName);
|
|
85
|
+
this.sourceIndices.set(source, index);
|
|
86
|
+
return index;
|
|
87
|
+
}
|
|
88
|
+
setSourceContent(sourceIndex, content) {
|
|
89
|
+
if (sourceIndex < 0 || sourceIndex >= this.sources.length)
|
|
90
|
+
throw new Error('sourceIndex is out of range');
|
|
91
|
+
while (this.sourcesContent.length <= sourceIndex)
|
|
92
|
+
this.sourcesContent.push(undefined);
|
|
93
|
+
this.sourcesContent[sourceIndex] = content;
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
addName(name) {
|
|
97
|
+
const index = this.names.indexOf(name);
|
|
98
|
+
if (index >= 0)
|
|
99
|
+
return index;
|
|
100
|
+
this.names.push(name);
|
|
101
|
+
return this.names.length - 1;
|
|
102
|
+
}
|
|
103
|
+
/** Appends the ASCII character `code` to the mappings. */
|
|
104
|
+
appendMapping(code) {
|
|
105
|
+
const length = this.mappingsLength;
|
|
106
|
+
if (length === this.mappings.length) {
|
|
107
|
+
const grown = new Uint8Array(length * 2);
|
|
108
|
+
grown.set(this.mappings);
|
|
109
|
+
this.mappings = grown;
|
|
110
|
+
}
|
|
111
|
+
this.mappings[length] = code;
|
|
112
|
+
this.mappingsLength = length + 1;
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
appendBase64VLQ(value) {
|
|
116
|
+
value = value < 0 ? (-value << 1) + 1 : value << 1;
|
|
117
|
+
do {
|
|
118
|
+
let digit = value & 31;
|
|
119
|
+
value = value >> 5;
|
|
120
|
+
if (value > 0)
|
|
121
|
+
digit |= 32;
|
|
122
|
+
this.appendMapping(base64DigitCodes[digit]);
|
|
123
|
+
} while (value > 0);
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
shouldCommitMapping() {
|
|
127
|
+
return (this.hasPending &&
|
|
128
|
+
(!this.hasLast ||
|
|
129
|
+
this.lastGeneratedLine !== this.pendingGeneratedLine ||
|
|
130
|
+
this.lastGeneratedCharacter !== this.pendingGeneratedCharacter ||
|
|
131
|
+
this.lastSourceIndex !== this.pendingSourceIndex ||
|
|
132
|
+
this.lastSourceLine !== this.pendingSourceLine ||
|
|
133
|
+
this.lastSourceCharacter !== this.pendingSourceCharacter ||
|
|
134
|
+
this.lastNameIndex !== this.pendingNameIndex));
|
|
135
|
+
}
|
|
136
|
+
commitPendingMapping() {
|
|
137
|
+
if (!this.shouldCommitMapping())
|
|
138
|
+
return false;
|
|
139
|
+
if (this.lastGeneratedLine < this.pendingGeneratedLine) {
|
|
140
|
+
do {
|
|
141
|
+
this.appendMapping(0x3b); // ;
|
|
142
|
+
this.lastGeneratedLine++;
|
|
143
|
+
} while (this.lastGeneratedLine < this.pendingGeneratedLine);
|
|
144
|
+
this.lastGeneratedCharacter = 0;
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
if (this.lastGeneratedLine !== this.pendingGeneratedLine)
|
|
148
|
+
throw new Error('generatedLine cannot backtrack');
|
|
149
|
+
if (this.hasLast)
|
|
150
|
+
this.appendMapping(0x2c); // ,
|
|
151
|
+
}
|
|
152
|
+
this.appendBase64VLQ(this.pendingGeneratedCharacter - this.lastGeneratedCharacter);
|
|
153
|
+
this.lastGeneratedCharacter = this.pendingGeneratedCharacter;
|
|
154
|
+
if (this.hasPendingSource) {
|
|
155
|
+
this.appendBase64VLQ(this.pendingSourceIndex - this.lastSourceIndex);
|
|
156
|
+
this.lastSourceIndex = this.pendingSourceIndex;
|
|
157
|
+
this.appendBase64VLQ(this.pendingSourceLine - this.lastSourceLine);
|
|
158
|
+
this.lastSourceLine = this.pendingSourceLine;
|
|
159
|
+
this.appendBase64VLQ(this.pendingSourceCharacter - this.lastSourceCharacter);
|
|
160
|
+
this.lastSourceCharacter = this.pendingSourceCharacter;
|
|
161
|
+
if (this.hasPendingName) {
|
|
162
|
+
this.appendBase64VLQ(this.pendingNameIndex - this.lastNameIndex);
|
|
163
|
+
this.lastNameIndex = this.pendingNameIndex;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
this.hasLast = true;
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
addMapping(generatedLine, generatedCharacter, sourceIndex, sourceLine, sourceCharacter, nameIndex) {
|
|
170
|
+
const backtracking = sourceIndex >= 0 &&
|
|
171
|
+
sourceLine >= 0 &&
|
|
172
|
+
sourceCharacter >= 0 &&
|
|
173
|
+
this.pendingSourceIndex === sourceIndex &&
|
|
174
|
+
(this.pendingSourceLine > sourceLine ||
|
|
175
|
+
(this.pendingSourceLine === sourceLine && this.pendingSourceCharacter > sourceCharacter));
|
|
176
|
+
if (!this.hasPending ||
|
|
177
|
+
this.pendingGeneratedLine !== generatedLine ||
|
|
178
|
+
this.pendingGeneratedCharacter !== generatedCharacter ||
|
|
179
|
+
backtracking) {
|
|
180
|
+
this.commitPendingMapping();
|
|
181
|
+
this.pendingGeneratedLine = generatedLine;
|
|
182
|
+
this.pendingGeneratedCharacter = generatedCharacter;
|
|
183
|
+
this.hasPendingSource = false;
|
|
184
|
+
this.hasPendingName = false;
|
|
185
|
+
this.hasPending = true;
|
|
186
|
+
}
|
|
187
|
+
if (sourceIndex >= 0 && sourceLine >= 0 && sourceCharacter >= 0) {
|
|
188
|
+
this.pendingSourceIndex = sourceIndex;
|
|
189
|
+
this.pendingSourceLine = sourceLine;
|
|
190
|
+
this.pendingSourceCharacter = sourceCharacter;
|
|
191
|
+
this.hasPendingSource = true;
|
|
192
|
+
if (nameIndex >= 0) {
|
|
193
|
+
this.pendingNameIndex = nameIndex;
|
|
194
|
+
this.hasPendingName = true;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return true;
|
|
198
|
+
}
|
|
199
|
+
addSourceMapping(generatedLine, generatedCharacter, sourceIndex, sourceLine, sourceCharacter) {
|
|
200
|
+
if (generatedLine < this.pendingGeneratedLine)
|
|
201
|
+
throw new Error('generatedLine cannot backtrack');
|
|
202
|
+
if (generatedCharacter < 0)
|
|
203
|
+
throw new Error('generatedCharacter cannot be negative');
|
|
204
|
+
if (sourceIndex < 0 || sourceIndex >= this.sources.length)
|
|
205
|
+
throw new Error('sourceIndex is out of range');
|
|
206
|
+
if (sourceLine < 0)
|
|
207
|
+
throw new Error('sourceLine cannot be negative');
|
|
208
|
+
if (sourceCharacter < 0)
|
|
209
|
+
throw new Error('sourceCharacter cannot be negative');
|
|
210
|
+
return this.addMapping(generatedLine, generatedCharacter, sourceIndex, sourceLine, sourceCharacter, -1);
|
|
211
|
+
}
|
|
212
|
+
/** The mappings string. */
|
|
213
|
+
getMappings() {
|
|
214
|
+
this.commitPendingMapping();
|
|
215
|
+
return mappingsDecoder.decode(this.mappings.subarray(0, this.mappingsLength));
|
|
216
|
+
}
|
|
217
|
+
/** The source map as JSON, with keys in tsgo's order. */
|
|
218
|
+
toJSON() {
|
|
219
|
+
const mappings = this.getMappings();
|
|
220
|
+
let json = '{"version":3,"file":' +
|
|
221
|
+
jsonString(this.file) +
|
|
222
|
+
',"sourceRoot":' +
|
|
223
|
+
jsonString(this.sourceRoot) +
|
|
224
|
+
',"sources":' +
|
|
225
|
+
jsonStrings(this.sources) +
|
|
226
|
+
',"names":' +
|
|
227
|
+
jsonStrings(this.names) +
|
|
228
|
+
// Base64 digits, `;` and `,` need no escaping.
|
|
229
|
+
',"mappings":"' +
|
|
230
|
+
mappings +
|
|
231
|
+
'"';
|
|
232
|
+
if (this.sourcesContent.length > 0) {
|
|
233
|
+
json += ',"sourcesContent":[';
|
|
234
|
+
let separator = '';
|
|
235
|
+
for (const content of this.sourcesContent) {
|
|
236
|
+
json += separator + (content === undefined ? 'null' : jsonString(content));
|
|
237
|
+
separator = ',';
|
|
238
|
+
}
|
|
239
|
+
json += ']';
|
|
240
|
+
}
|
|
241
|
+
return json + '}';
|
|
242
|
+
}
|
|
243
|
+
toBase64DataURL() {
|
|
244
|
+
return 'data:application/json;base64,' + base64Encode(utf8Bytes(this.toJSON()));
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
const hex = '0123456789abcdef';
|
|
248
|
+
/** A JSON string literal, escaped as Go's encoding/json/v2 does by default. */
|
|
249
|
+
export function jsonString(s) {
|
|
250
|
+
let out = '"';
|
|
251
|
+
let start = 0;
|
|
252
|
+
for (let i = 0; i < s.length; i++) {
|
|
253
|
+
const ch = s.charCodeAt(i);
|
|
254
|
+
let escape;
|
|
255
|
+
if (ch === 0x22)
|
|
256
|
+
escape = '\\"';
|
|
257
|
+
else if (ch === 0x5c)
|
|
258
|
+
escape = '\\\\';
|
|
259
|
+
else if (ch >= 0x20)
|
|
260
|
+
continue;
|
|
261
|
+
else if (ch === 0x08)
|
|
262
|
+
escape = '\\b';
|
|
263
|
+
else if (ch === 0x0c)
|
|
264
|
+
escape = '\\f';
|
|
265
|
+
else if (ch === 0x0a)
|
|
266
|
+
escape = '\\n';
|
|
267
|
+
else if (ch === 0x0d)
|
|
268
|
+
escape = '\\r';
|
|
269
|
+
else if (ch === 0x09)
|
|
270
|
+
escape = '\\t';
|
|
271
|
+
else
|
|
272
|
+
escape = '\\u00' + hex.charAt(ch >> 4) + hex.charAt(ch & 15);
|
|
273
|
+
out += s.substring(start, i) + escape;
|
|
274
|
+
start = i + 1;
|
|
275
|
+
}
|
|
276
|
+
return out + s.substring(start) + '"';
|
|
277
|
+
}
|
|
278
|
+
function jsonStrings(values) {
|
|
279
|
+
let out = '[';
|
|
280
|
+
for (let i = 0; i < values.length; i++) {
|
|
281
|
+
if (i > 0)
|
|
282
|
+
out += ',';
|
|
283
|
+
out += jsonString(values[i]);
|
|
284
|
+
}
|
|
285
|
+
return out + ']';
|
|
286
|
+
}
|
|
287
|
+
/** UTF-8 bytes of `s`; lone surrogates become U+FFFD. */
|
|
288
|
+
export function utf8Bytes(s) {
|
|
289
|
+
const bytes = [];
|
|
290
|
+
for (let i = 0; i < s.length; i++) {
|
|
291
|
+
let c = s.charCodeAt(i);
|
|
292
|
+
if (c >= 0xd800 && c <= 0xdbff && i + 1 < s.length) {
|
|
293
|
+
const low = s.charCodeAt(i + 1);
|
|
294
|
+
if (low >= 0xdc00 && low <= 0xdfff) {
|
|
295
|
+
c = (c - 0xd800) * 0x400 + (low - 0xdc00) + 0x10000;
|
|
296
|
+
i++;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
if (c >= 0xd800 && c <= 0xdfff)
|
|
300
|
+
c = 0xfffd;
|
|
301
|
+
if (c < 0x80)
|
|
302
|
+
bytes.push(c);
|
|
303
|
+
else if (c < 0x800)
|
|
304
|
+
bytes.push(0xc0 | (c >> 6), 0x80 | (c & 63));
|
|
305
|
+
else if (c < 0x10000)
|
|
306
|
+
bytes.push(0xe0 | (c >> 12), 0x80 | ((c >> 6) & 63), 0x80 | (c & 63));
|
|
307
|
+
else
|
|
308
|
+
bytes.push(0xf0 | (c >> 18), 0x80 | ((c >> 12) & 63), 0x80 | ((c >> 6) & 63), 0x80 | (c & 63));
|
|
309
|
+
}
|
|
310
|
+
return Uint8Array.from(bytes);
|
|
311
|
+
}
|
|
312
|
+
export function base64Encode(bytes) {
|
|
313
|
+
const parts = [];
|
|
314
|
+
let chunk = '';
|
|
315
|
+
let i = 0;
|
|
316
|
+
for (; i + 2 < bytes.length; i += 3) {
|
|
317
|
+
const n = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];
|
|
318
|
+
chunk +=
|
|
319
|
+
base64Digits.charAt(n >> 18) +
|
|
320
|
+
base64Digits.charAt((n >> 12) & 63) +
|
|
321
|
+
base64Digits.charAt((n >> 6) & 63) +
|
|
322
|
+
base64Digits.charAt(n & 63);
|
|
323
|
+
if (chunk.length >= 4096) {
|
|
324
|
+
parts.push(chunk);
|
|
325
|
+
chunk = '';
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
const rest = bytes.length - i;
|
|
329
|
+
if (rest === 1) {
|
|
330
|
+
const n = bytes[i] << 16;
|
|
331
|
+
chunk += base64Digits.charAt(n >> 18) + base64Digits.charAt((n >> 12) & 63) + '==';
|
|
332
|
+
}
|
|
333
|
+
else if (rest === 2) {
|
|
334
|
+
const n = (bytes[i] << 16) | (bytes[i + 1] << 8);
|
|
335
|
+
chunk +=
|
|
336
|
+
base64Digits.charAt(n >> 18) + base64Digits.charAt((n >> 12) & 63) + base64Digits.charAt((n >> 6) & 63) + '=';
|
|
337
|
+
}
|
|
338
|
+
parts.push(chunk);
|
|
339
|
+
return parts.join('');
|
|
340
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** The code points of a string and their lowercase forms, in arrays reused from one string to the next. */
|
|
2
|
+
export declare class CodePoints {
|
|
3
|
+
codes: Int32Array<ArrayBuffer>;
|
|
4
|
+
lower: Int32Array<ArrayBuffer>;
|
|
5
|
+
length: number;
|
|
6
|
+
/** Takes the code points of `text`. */
|
|
7
|
+
set(text: string): void;
|
|
8
|
+
}
|
|
9
|
+
/** The distance from `name` to `candidate` (levenshteinWithMax), -1 if above `max`. */
|
|
10
|
+
export declare function distanceToCandidate(name: CodePoints, candidate: string, max: number): number;
|
|
11
|
+
/** The candidate closest to `name` by edit distance, or `''`; ties go to the lexicographically smaller. */
|
|
12
|
+
export declare function getSpellingSuggestion(name: string, candidates: readonly string[]): string;
|
|
13
|
+
/** The length of `s` in UTF-8 bytes. */
|
|
14
|
+
export declare function utf8Length(s: string): number;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
function toLower(ch) {
|
|
2
|
+
if (ch < 0x80)
|
|
3
|
+
return ch >= 0x41 && ch <= 0x5a ? ch + 0x20 : ch;
|
|
4
|
+
const lower = String.fromCodePoint(ch).toLowerCase();
|
|
5
|
+
return lower.length === 0 ? ch : lower.codePointAt(0);
|
|
6
|
+
}
|
|
7
|
+
/** The code points of a string and their lowercase forms, in arrays reused from one string to the next. */
|
|
8
|
+
export class CodePoints {
|
|
9
|
+
codes = new Int32Array(16);
|
|
10
|
+
lower = new Int32Array(16);
|
|
11
|
+
length = 0;
|
|
12
|
+
/** Takes the code points of `text`. */
|
|
13
|
+
set(text) {
|
|
14
|
+
if (this.codes.length < text.length) {
|
|
15
|
+
this.codes = new Int32Array(text.length * 2);
|
|
16
|
+
this.lower = new Int32Array(text.length * 2);
|
|
17
|
+
}
|
|
18
|
+
let n = 0;
|
|
19
|
+
for (let i = 0; i < text.length;) {
|
|
20
|
+
const ch = text.codePointAt(i);
|
|
21
|
+
this.codes[n] = ch;
|
|
22
|
+
this.lower[n] = toLower(ch);
|
|
23
|
+
n++;
|
|
24
|
+
i += ch >= 0x10000 ? 2 : 1;
|
|
25
|
+
}
|
|
26
|
+
this.length = n;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/** The candidate of the current comparison; a nested search compares its own candidates before it is set. */
|
|
30
|
+
const candidateCodePoints = new CodePoints();
|
|
31
|
+
let previousRow = new Float64Array(32);
|
|
32
|
+
let currentRow = new Float64Array(32);
|
|
33
|
+
/** Levenshtein distance where a case-only substitution costs 0.1; -1 if above `max`. */
|
|
34
|
+
function levenshteinWithMax(s1, s2, max) {
|
|
35
|
+
const length2 = s2.length;
|
|
36
|
+
if (previousRow.length <= length2) {
|
|
37
|
+
previousRow = new Float64Array(length2 * 2 + 1);
|
|
38
|
+
currentRow = new Float64Array(length2 * 2 + 1);
|
|
39
|
+
}
|
|
40
|
+
let previous = previousRow;
|
|
41
|
+
let current = currentRow;
|
|
42
|
+
for (let i = 0; i <= length2; i++)
|
|
43
|
+
previous[i] = i;
|
|
44
|
+
const big = max + 0.01;
|
|
45
|
+
for (let i = 1; i <= s1.length; i++) {
|
|
46
|
+
const c1 = s1.codes[i - 1];
|
|
47
|
+
const lower1 = s1.lower[i - 1];
|
|
48
|
+
const minJ = Math.max(Math.ceil(i - max), 1);
|
|
49
|
+
const maxJ = Math.min(Math.floor(max + i), length2);
|
|
50
|
+
let colMin = i;
|
|
51
|
+
current[0] = i;
|
|
52
|
+
for (let j = 1; j < minJ; j++)
|
|
53
|
+
current[j] = big;
|
|
54
|
+
for (let j = minJ; j <= maxJ; j++) {
|
|
55
|
+
let dist = previous[j - 1];
|
|
56
|
+
if (c1 !== s2.codes[j - 1]) {
|
|
57
|
+
const substitution = dist + (lower1 === s2.lower[j - 1] ? 0.1 : 2);
|
|
58
|
+
dist = Math.min(previous[j] + 1, current[j - 1] + 1, substitution);
|
|
59
|
+
}
|
|
60
|
+
current[j] = dist;
|
|
61
|
+
colMin = Math.min(colMin, dist);
|
|
62
|
+
}
|
|
63
|
+
for (let j = maxJ + 1; j <= length2; j++)
|
|
64
|
+
current[j] = big;
|
|
65
|
+
if (colMin > max)
|
|
66
|
+
return -1;
|
|
67
|
+
const swap = previous;
|
|
68
|
+
previous = current;
|
|
69
|
+
current = swap;
|
|
70
|
+
}
|
|
71
|
+
const result = previous[length2];
|
|
72
|
+
return result > max ? -1 : result;
|
|
73
|
+
}
|
|
74
|
+
/** The distance from `name` to `candidate` (levenshteinWithMax), -1 if above `max`. */
|
|
75
|
+
export function distanceToCandidate(name, candidate, max) {
|
|
76
|
+
candidateCodePoints.set(candidate);
|
|
77
|
+
return levenshteinWithMax(name, candidateCodePoints, max);
|
|
78
|
+
}
|
|
79
|
+
/** The candidate closest to `name` by edit distance, or `''`; ties go to the lexicographically smaller. */
|
|
80
|
+
export function getSpellingSuggestion(name, candidates) {
|
|
81
|
+
const nameCodePoints = new CodePoints();
|
|
82
|
+
nameCodePoints.set(name);
|
|
83
|
+
const maximumLengthDifference = Math.max(2, Math.floor(nameCodePoints.length * 0.34));
|
|
84
|
+
let bestDistance = Math.floor(nameCodePoints.length * 0.4) + 0.9;
|
|
85
|
+
let best = '';
|
|
86
|
+
let hasBest = false;
|
|
87
|
+
const lowerName = name.toLowerCase();
|
|
88
|
+
for (const candidate of candidates) {
|
|
89
|
+
const maxLength = Math.max(candidate.length, nameCodePoints.length);
|
|
90
|
+
const minLength = Math.min(candidate.length, nameCodePoints.length);
|
|
91
|
+
if (candidate === '' || maxLength - minLength > maximumLengthDifference || candidate === name)
|
|
92
|
+
continue;
|
|
93
|
+
// Short candidates only count when they differ by case.
|
|
94
|
+
if (candidate.length < 3 && candidate.toLowerCase() !== lowerName)
|
|
95
|
+
continue;
|
|
96
|
+
const distance = distanceToCandidate(nameCodePoints, candidate, bestDistance);
|
|
97
|
+
if (distance < 0)
|
|
98
|
+
continue;
|
|
99
|
+
if (distance < bestDistance) {
|
|
100
|
+
bestDistance = distance;
|
|
101
|
+
best = candidate;
|
|
102
|
+
hasBest = true;
|
|
103
|
+
}
|
|
104
|
+
else if (!hasBest || candidate < best) {
|
|
105
|
+
best = candidate;
|
|
106
|
+
hasBest = true;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return best;
|
|
110
|
+
}
|
|
111
|
+
/** The length of `s` in UTF-8 bytes. */
|
|
112
|
+
export function utf8Length(s) {
|
|
113
|
+
let n = 0;
|
|
114
|
+
for (let i = 0; i < s.length; i++) {
|
|
115
|
+
const ch = s.charCodeAt(i);
|
|
116
|
+
if (ch < 0x80)
|
|
117
|
+
n += 1;
|
|
118
|
+
else if (ch < 0x800)
|
|
119
|
+
n += 2;
|
|
120
|
+
else if (ch >= 0xd800 && ch <= 0xdbff) {
|
|
121
|
+
n += 4;
|
|
122
|
+
i++;
|
|
123
|
+
}
|
|
124
|
+
else
|
|
125
|
+
n += 3;
|
|
126
|
+
}
|
|
127
|
+
return n;
|
|
128
|
+
}
|