typescript 6.0.3 → 7.0.2
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/{ThirdPartyNoticeText.txt → NOTICE.txt} +249 -6
- package/README.md +49 -50
- package/bin/tsc +1 -1
- package/dist/api/async/api.d.ts +529 -0
- package/dist/api/async/api.d.ts.map +1 -0
- package/dist/api/async/api.js +1657 -0
- package/dist/api/async/api.js.map +1 -0
- package/dist/api/async/client.d.ts +39 -0
- package/dist/api/async/client.d.ts.map +1 -0
- package/dist/api/async/client.js +211 -0
- package/dist/api/async/client.js.map +1 -0
- package/dist/api/async/types.d.ts +310 -0
- package/dist/api/async/types.d.ts.map +1 -0
- package/dist/api/async/types.js +2 -0
- package/dist/api/async/types.js.map +1 -0
- package/dist/api/compilerOptions.d.ts +109 -0
- package/dist/api/compilerOptions.d.ts.map +1 -0
- package/dist/api/compilerOptions.js +2 -0
- package/dist/api/compilerOptions.js.map +1 -0
- package/dist/api/fs.d.ts +23 -0
- package/dist/api/fs.d.ts.map +1 -0
- package/dist/api/fs.js +109 -0
- package/dist/api/fs.js.map +1 -0
- package/dist/api/node/encoder.d.ts +15 -0
- package/dist/api/node/encoder.d.ts.map +1 -0
- package/dist/api/node/encoder.generated.d.ts +5 -0
- package/dist/api/node/encoder.generated.d.ts.map +1 -0
- package/dist/api/node/encoder.generated.js +74 -0
- package/dist/api/node/encoder.generated.js.map +1 -0
- package/dist/api/node/encoder.js +287 -0
- package/dist/api/node/encoder.js.map +1 -0
- package/dist/api/node/msgpack.d.ts +32 -0
- package/dist/api/node/msgpack.d.ts.map +1 -0
- package/dist/api/node/msgpack.js +213 -0
- package/dist/api/node/msgpack.js.map +1 -0
- package/dist/api/node/node.d.ts +76 -0
- package/dist/api/node/node.d.ts.map +1 -0
- package/dist/api/node/node.generated.d.ts +182 -0
- package/dist/api/node/node.generated.d.ts.map +1 -0
- package/dist/api/node/node.generated.js +835 -0
- package/dist/api/node/node.generated.js.map +1 -0
- package/dist/api/node/node.infrastructure.d.ts +62 -0
- package/dist/api/node/node.infrastructure.d.ts.map +1 -0
- package/dist/api/node/node.infrastructure.js +122 -0
- package/dist/api/node/node.infrastructure.js.map +1 -0
- package/dist/api/node/node.js +298 -0
- package/dist/api/node/node.js.map +1 -0
- package/dist/api/node/protocol.d.ts +29 -0
- package/dist/api/node/protocol.d.ts.map +1 -0
- package/dist/api/node/protocol.generated.d.ts +4 -0
- package/dist/api/node/protocol.generated.d.ts.map +1 -0
- package/dist/api/node/protocol.generated.js +241 -0
- package/dist/api/node/protocol.generated.js.map +1 -0
- package/dist/api/node/protocol.js +30 -0
- package/dist/api/node/protocol.js.map +1 -0
- package/dist/api/node/wtf8.d.ts +6 -0
- package/dist/api/node/wtf8.d.ts.map +1 -0
- package/dist/api/node/wtf8.js +61 -0
- package/dist/api/node/wtf8.js.map +1 -0
- package/dist/api/options.d.ts +32 -0
- package/dist/api/options.d.ts.map +1 -0
- package/dist/api/options.js +11 -0
- package/dist/api/options.js.map +1 -0
- package/dist/api/path.d.ts +110 -0
- package/dist/api/path.d.ts.map +1 -0
- package/dist/api/path.js +508 -0
- package/dist/api/path.js.map +1 -0
- package/dist/api/proto.d.ts +239 -0
- package/dist/api/proto.d.ts.map +1 -0
- package/dist/api/proto.js +37 -0
- package/dist/api/proto.js.map +1 -0
- package/dist/api/sourceFileCache.d.ts +79 -0
- package/dist/api/sourceFileCache.d.ts.map +1 -0
- package/dist/api/sourceFileCache.js +169 -0
- package/dist/api/sourceFileCache.js.map +1 -0
- package/dist/api/sync/api.d.ts +529 -0
- package/dist/api/sync/api.d.ts.map +1 -0
- package/dist/api/sync/api.js +1665 -0
- package/dist/api/sync/api.js.map +1 -0
- package/dist/api/sync/client.d.ts +30 -0
- package/dist/api/sync/client.d.ts.map +1 -0
- package/dist/api/sync/client.js +124 -0
- package/dist/api/sync/client.js.map +1 -0
- package/dist/api/sync/types.d.ts +310 -0
- package/dist/api/sync/types.d.ts.map +1 -0
- package/dist/api/sync/types.js +2 -0
- package/dist/api/sync/types.js.map +1 -0
- package/dist/api/syncChannel.d.ts +114 -0
- package/dist/api/syncChannel.d.ts.map +1 -0
- package/dist/api/syncChannel.js +508 -0
- package/dist/api/syncChannel.js.map +1 -0
- package/dist/api/timing.d.ts +175 -0
- package/dist/api/timing.d.ts.map +1 -0
- package/dist/api/timing.js +149 -0
- package/dist/api/timing.js.map +1 -0
- package/dist/ast/ast.d.ts +100 -0
- package/dist/ast/ast.d.ts.map +1 -0
- package/dist/ast/ast.generated.d.ts +1161 -0
- package/dist/ast/ast.generated.d.ts.map +1 -0
- package/dist/ast/ast.generated.js +4 -0
- package/dist/ast/ast.generated.js.map +1 -0
- package/dist/ast/ast.js +7 -0
- package/dist/ast/ast.js.map +1 -0
- package/dist/ast/astnav.d.ts +19 -0
- package/dist/ast/astnav.d.ts.map +1 -0
- package/dist/ast/astnav.js +596 -0
- package/dist/ast/astnav.js.map +1 -0
- package/dist/ast/clone.d.ts +16 -0
- package/dist/ast/clone.d.ts.map +1 -0
- package/dist/ast/clone.js +104 -0
- package/dist/ast/clone.js.map +1 -0
- package/dist/ast/factory.generated.d.ts +520 -0
- package/dist/ast/factory.generated.d.ts.map +1 -0
- package/dist/ast/factory.generated.js +3057 -0
- package/dist/ast/factory.generated.js.map +1 -0
- package/dist/ast/index.d.ts +20 -0
- package/dist/ast/index.d.ts.map +1 -0
- package/dist/ast/index.js +20 -0
- package/dist/ast/index.js.map +1 -0
- package/dist/ast/is.d.ts +35 -0
- package/dist/ast/is.d.ts.map +1 -0
- package/dist/ast/is.generated.d.ts +329 -0
- package/dist/ast/is.generated.d.ts.map +1 -0
- package/dist/ast/is.generated.js +1103 -0
- package/dist/ast/is.generated.js.map +1 -0
- package/dist/ast/is.js +233 -0
- package/dist/ast/is.js.map +1 -0
- package/dist/ast/jsdoc.d.ts +11 -0
- package/dist/ast/jsdoc.d.ts.map +1 -0
- package/dist/ast/jsdoc.js +202 -0
- package/dist/ast/jsdoc.js.map +1 -0
- package/dist/ast/scanner.d.ts +97 -0
- package/dist/ast/scanner.d.ts.map +1 -0
- package/dist/ast/scanner.js +2230 -0
- package/dist/ast/scanner.js.map +1 -0
- package/dist/ast/utils.d.ts +17 -0
- package/dist/ast/utils.d.ts.map +1 -0
- package/dist/ast/utils.js +67 -0
- package/dist/ast/utils.js.map +1 -0
- package/dist/ast/visitor.d.ts +14 -0
- package/dist/ast/visitor.d.ts.map +1 -0
- package/dist/ast/visitor.generated.d.ts +50 -0
- package/dist/ast/visitor.generated.d.ts.map +1 -0
- package/dist/ast/visitor.generated.js +978 -0
- package/dist/ast/visitor.generated.js.map +1 -0
- package/dist/ast/visitor.js +47 -0
- package/dist/ast/visitor.js.map +1 -0
- package/dist/enums/characterCodes.d.ts +2 -0
- package/dist/enums/characterCodes.d.ts.map +1 -0
- package/dist/enums/characterCodes.enum.d.ts +129 -0
- package/dist/enums/characterCodes.enum.d.ts.map +1 -0
- package/dist/enums/characterCodes.enum.js +132 -0
- package/dist/enums/characterCodes.enum.js.map +1 -0
- package/dist/enums/characterCodes.js +130 -0
- package/dist/enums/characterCodes.js.map +1 -0
- package/dist/enums/commentDirectiveType.d.ts +2 -0
- package/dist/enums/commentDirectiveType.d.ts.map +1 -0
- package/dist/enums/commentDirectiveType.enum.d.ts +5 -0
- package/dist/enums/commentDirectiveType.enum.d.ts.map +1 -0
- package/dist/enums/commentDirectiveType.enum.js +6 -0
- package/dist/enums/commentDirectiveType.enum.js.map +1 -0
- package/dist/enums/commentDirectiveType.js +6 -0
- package/dist/enums/commentDirectiveType.js.map +1 -0
- package/dist/enums/completionItemKind.d.ts +2 -0
- package/dist/enums/completionItemKind.d.ts.map +1 -0
- package/dist/enums/completionItemKind.enum.d.ts +28 -0
- package/dist/enums/completionItemKind.enum.d.ts.map +1 -0
- package/dist/enums/completionItemKind.enum.js +30 -0
- package/dist/enums/completionItemKind.enum.js.map +1 -0
- package/dist/enums/completionItemKind.js +30 -0
- package/dist/enums/completionItemKind.js.map +1 -0
- package/dist/enums/diagnosticCategory.d.ts +2 -0
- package/dist/enums/diagnosticCategory.d.ts.map +1 -0
- package/dist/enums/diagnosticCategory.enum.d.ts +7 -0
- package/dist/enums/diagnosticCategory.enum.d.ts.map +1 -0
- package/dist/enums/diagnosticCategory.enum.js +9 -0
- package/dist/enums/diagnosticCategory.enum.js.map +1 -0
- package/dist/enums/diagnosticCategory.js +9 -0
- package/dist/enums/diagnosticCategory.js.map +1 -0
- package/dist/enums/elementFlags.d.ts +2 -0
- package/dist/enums/elementFlags.d.ts.map +1 -0
- package/dist/enums/elementFlags.enum.d.ts +12 -0
- package/dist/enums/elementFlags.enum.d.ts.map +1 -0
- package/dist/enums/elementFlags.enum.js +14 -0
- package/dist/enums/elementFlags.enum.js.map +1 -0
- package/dist/enums/elementFlags.js +14 -0
- package/dist/enums/elementFlags.js.map +1 -0
- package/dist/enums/internalSymbolName.d.ts +2 -0
- package/dist/enums/internalSymbolName.d.ts.map +1 -0
- package/dist/enums/internalSymbolName.enum.d.ts +23 -0
- package/dist/enums/internalSymbolName.enum.d.ts.map +1 -0
- package/dist/enums/internalSymbolName.enum.js +25 -0
- package/dist/enums/internalSymbolName.enum.js.map +1 -0
- package/dist/enums/internalSymbolName.js +25 -0
- package/dist/enums/internalSymbolName.js.map +1 -0
- package/dist/enums/jsxEmit.d.ts +2 -0
- package/dist/enums/jsxEmit.d.ts.map +1 -0
- package/dist/enums/jsxEmit.enum.d.ts +9 -0
- package/dist/enums/jsxEmit.enum.d.ts.map +1 -0
- package/dist/enums/jsxEmit.enum.js +11 -0
- package/dist/enums/jsxEmit.enum.js.map +1 -0
- package/dist/enums/jsxEmit.js +11 -0
- package/dist/enums/jsxEmit.js.map +1 -0
- package/dist/enums/languageVariant.d.ts +2 -0
- package/dist/enums/languageVariant.d.ts.map +1 -0
- package/dist/enums/languageVariant.enum.d.ts +5 -0
- package/dist/enums/languageVariant.enum.d.ts.map +1 -0
- package/dist/enums/languageVariant.enum.js +6 -0
- package/dist/enums/languageVariant.enum.js.map +1 -0
- package/dist/enums/languageVariant.js +6 -0
- package/dist/enums/languageVariant.js.map +1 -0
- package/dist/enums/modifierFlags.d.ts +2 -0
- package/dist/enums/modifierFlags.d.ts.map +1 -0
- package/dist/enums/modifierFlags.enum.d.ts +42 -0
- package/dist/enums/modifierFlags.enum.d.ts.map +1 -0
- package/dist/enums/modifierFlags.enum.js +44 -0
- package/dist/enums/modifierFlags.enum.js.map +1 -0
- package/dist/enums/modifierFlags.js +44 -0
- package/dist/enums/modifierFlags.js.map +1 -0
- package/dist/enums/moduleDetectionKind.d.ts +2 -0
- package/dist/enums/moduleDetectionKind.d.ts.map +1 -0
- package/dist/enums/moduleDetectionKind.enum.d.ts +7 -0
- package/dist/enums/moduleDetectionKind.enum.d.ts.map +1 -0
- package/dist/enums/moduleDetectionKind.enum.js +9 -0
- package/dist/enums/moduleDetectionKind.enum.js.map +1 -0
- package/dist/enums/moduleDetectionKind.js +9 -0
- package/dist/enums/moduleDetectionKind.js.map +1 -0
- package/dist/enums/moduleKind.d.ts +2 -0
- package/dist/enums/moduleKind.d.ts.map +1 -0
- package/dist/enums/moduleKind.enum.d.ts +17 -0
- package/dist/enums/moduleKind.enum.d.ts.map +1 -0
- package/dist/enums/moduleKind.enum.js +19 -0
- package/dist/enums/moduleKind.enum.js.map +1 -0
- package/dist/enums/moduleKind.js +19 -0
- package/dist/enums/moduleKind.js.map +1 -0
- package/dist/enums/moduleResolutionKind.d.ts +2 -0
- package/dist/enums/moduleResolutionKind.d.ts.map +1 -0
- package/dist/enums/moduleResolutionKind.enum.d.ts +9 -0
- package/dist/enums/moduleResolutionKind.enum.d.ts.map +1 -0
- package/dist/enums/moduleResolutionKind.enum.js +11 -0
- package/dist/enums/moduleResolutionKind.enum.js.map +1 -0
- package/dist/enums/moduleResolutionKind.js +11 -0
- package/dist/enums/moduleResolutionKind.js.map +1 -0
- package/dist/enums/newLineKind.d.ts +2 -0
- package/dist/enums/newLineKind.d.ts.map +1 -0
- package/dist/enums/newLineKind.enum.d.ts +6 -0
- package/dist/enums/newLineKind.enum.d.ts.map +1 -0
- package/dist/enums/newLineKind.enum.js +8 -0
- package/dist/enums/newLineKind.enum.js.map +1 -0
- package/dist/enums/newLineKind.js +8 -0
- package/dist/enums/newLineKind.js.map +1 -0
- package/dist/enums/nodeBuilderFlags.d.ts +2 -0
- package/dist/enums/nodeBuilderFlags.d.ts.map +1 -0
- package/dist/enums/nodeBuilderFlags.enum.d.ts +36 -0
- package/dist/enums/nodeBuilderFlags.enum.d.ts.map +1 -0
- package/dist/enums/nodeBuilderFlags.enum.js +38 -0
- package/dist/enums/nodeBuilderFlags.enum.js.map +1 -0
- package/dist/enums/nodeBuilderFlags.js +38 -0
- package/dist/enums/nodeBuilderFlags.js.map +1 -0
- package/dist/enums/nodeFlags.d.ts +2 -0
- package/dist/enums/nodeFlags.d.ts.map +1 -0
- package/dist/enums/nodeFlags.enum.d.ts +44 -0
- package/dist/enums/nodeFlags.enum.d.ts.map +1 -0
- package/dist/enums/nodeFlags.enum.js +46 -0
- package/dist/enums/nodeFlags.enum.js.map +1 -0
- package/dist/enums/nodeFlags.js +46 -0
- package/dist/enums/nodeFlags.js.map +1 -0
- package/dist/enums/objectFlags.d.ts +2 -0
- package/dist/enums/objectFlags.d.ts.map +1 -0
- package/dist/enums/objectFlags.enum.d.ts +50 -0
- package/dist/enums/objectFlags.enum.d.ts.map +1 -0
- package/dist/enums/objectFlags.enum.js +52 -0
- package/dist/enums/objectFlags.enum.js.map +1 -0
- package/dist/enums/objectFlags.js +52 -0
- package/dist/enums/objectFlags.js.map +1 -0
- package/dist/enums/outerExpressionKinds.d.ts +2 -0
- package/dist/enums/outerExpressionKinds.d.ts.map +1 -0
- package/dist/enums/outerExpressionKinds.enum.d.ts +16 -0
- package/dist/enums/outerExpressionKinds.enum.d.ts.map +1 -0
- package/dist/enums/outerExpressionKinds.enum.js +18 -0
- package/dist/enums/outerExpressionKinds.enum.js.map +1 -0
- package/dist/enums/outerExpressionKinds.js +18 -0
- package/dist/enums/outerExpressionKinds.js.map +1 -0
- package/dist/enums/regularExpressionFlags.d.ts +2 -0
- package/dist/enums/regularExpressionFlags.d.ts.map +1 -0
- package/dist/enums/regularExpressionFlags.enum.d.ts +13 -0
- package/dist/enums/regularExpressionFlags.enum.d.ts.map +1 -0
- package/dist/enums/regularExpressionFlags.enum.js +14 -0
- package/dist/enums/regularExpressionFlags.enum.js.map +1 -0
- package/dist/enums/regularExpressionFlags.js +14 -0
- package/dist/enums/regularExpressionFlags.js.map +1 -0
- package/dist/enums/scriptKind.d.ts +2 -0
- package/dist/enums/scriptKind.d.ts.map +1 -0
- package/dist/enums/scriptKind.enum.d.ts +11 -0
- package/dist/enums/scriptKind.enum.d.ts.map +1 -0
- package/dist/enums/scriptKind.enum.js +12 -0
- package/dist/enums/scriptKind.enum.js.map +1 -0
- package/dist/enums/scriptKind.js +12 -0
- package/dist/enums/scriptKind.js.map +1 -0
- package/dist/enums/scriptTarget.d.ts +2 -0
- package/dist/enums/scriptTarget.d.ts.map +1 -0
- package/dist/enums/scriptTarget.enum.d.ts +17 -0
- package/dist/enums/scriptTarget.enum.d.ts.map +1 -0
- package/dist/enums/scriptTarget.enum.js +18 -0
- package/dist/enums/scriptTarget.enum.js.map +1 -0
- package/dist/enums/scriptTarget.js +18 -0
- package/dist/enums/scriptTarget.js.map +1 -0
- package/dist/enums/signatureFlags.d.ts +2 -0
- package/dist/enums/signatureFlags.d.ts.map +1 -0
- package/dist/enums/signatureFlags.enum.d.ts +15 -0
- package/dist/enums/signatureFlags.enum.d.ts.map +1 -0
- package/dist/enums/signatureFlags.enum.js +17 -0
- package/dist/enums/signatureFlags.enum.js.map +1 -0
- package/dist/enums/signatureFlags.js +17 -0
- package/dist/enums/signatureFlags.js.map +1 -0
- package/dist/enums/signatureKind.d.ts +2 -0
- package/dist/enums/signatureKind.d.ts.map +1 -0
- package/dist/enums/signatureKind.enum.d.ts +5 -0
- package/dist/enums/signatureKind.enum.d.ts.map +1 -0
- package/dist/enums/signatureKind.enum.js +7 -0
- package/dist/enums/signatureKind.enum.js.map +1 -0
- package/dist/enums/signatureKind.js +7 -0
- package/dist/enums/signatureKind.js.map +1 -0
- package/dist/enums/symbolFlags.d.ts +2 -0
- package/dist/enums/symbolFlags.d.ts.map +1 -0
- package/dist/enums/symbolFlags.enum.d.ts +71 -0
- package/dist/enums/symbolFlags.enum.d.ts.map +1 -0
- package/dist/enums/symbolFlags.enum.js +73 -0
- package/dist/enums/symbolFlags.enum.js.map +1 -0
- package/dist/enums/symbolFlags.js +73 -0
- package/dist/enums/symbolFlags.js.map +1 -0
- package/dist/enums/syntaxKind.d.ts +2 -0
- package/dist/enums/syntaxKind.d.ts.map +1 -0
- package/dist/enums/syntaxKind.enum.d.ts +389 -0
- package/dist/enums/syntaxKind.enum.d.ts.map +1 -0
- package/dist/enums/syntaxKind.enum.js +391 -0
- package/dist/enums/syntaxKind.enum.js.map +1 -0
- package/dist/enums/syntaxKind.js +391 -0
- package/dist/enums/syntaxKind.js.map +1 -0
- package/dist/enums/tokenFlags.d.ts +2 -0
- package/dist/enums/tokenFlags.d.ts.map +1 -0
- package/dist/enums/tokenFlags.enum.d.ts +30 -0
- package/dist/enums/tokenFlags.enum.d.ts.map +1 -0
- package/dist/enums/tokenFlags.enum.js +32 -0
- package/dist/enums/tokenFlags.enum.js.map +1 -0
- package/dist/enums/tokenFlags.js +32 -0
- package/dist/enums/tokenFlags.js.map +1 -0
- package/dist/enums/typeFlags.d.ts +2 -0
- package/dist/enums/typeFlags.d.ts.map +1 -0
- package/dist/enums/typeFlags.enum.d.ts +76 -0
- package/dist/enums/typeFlags.enum.d.ts.map +1 -0
- package/dist/enums/typeFlags.enum.js +78 -0
- package/dist/enums/typeFlags.enum.js.map +1 -0
- package/dist/enums/typeFlags.js +78 -0
- package/dist/enums/typeFlags.js.map +1 -0
- package/dist/enums/typePredicateKind.d.ts +2 -0
- package/dist/enums/typePredicateKind.d.ts.map +1 -0
- package/dist/enums/typePredicateKind.enum.d.ts +7 -0
- package/dist/enums/typePredicateKind.enum.d.ts.map +1 -0
- package/dist/enums/typePredicateKind.enum.js +9 -0
- package/dist/enums/typePredicateKind.enum.js.map +1 -0
- package/dist/enums/typePredicateKind.js +9 -0
- package/dist/enums/typePredicateKind.js.map +1 -0
- package/dist/internal/utils.d.ts +23 -0
- package/dist/internal/utils.d.ts.map +1 -0
- package/dist/internal/utils.js +25 -0
- package/dist/internal/utils.js.map +1 -0
- package/lib/getExePath.d.ts +2 -0
- package/lib/getExePath.js +70 -0
- package/lib/tsc.js +28 -8
- package/lib/version.cjs +3 -0
- package/lib/version.d.cts +2 -0
- package/package.json +58 -89
- package/vendor/vscode-jsonrpc/License.txt +11 -0
- package/vendor/vscode-jsonrpc/README.md +54 -0
- package/vendor/vscode-jsonrpc/lib/browser/main.d.ts +17 -0
- package/vendor/vscode-jsonrpc/lib/browser/main.js +83 -0
- package/vendor/vscode-jsonrpc/lib/browser/ril.d.ts +22 -0
- package/vendor/vscode-jsonrpc/lib/browser/ril.js +210 -0
- package/vendor/vscode-jsonrpc/lib/common/api.d.ts +14 -0
- package/vendor/vscode-jsonrpc/lib/common/api.js +87 -0
- package/vendor/vscode-jsonrpc/lib/common/cancellation.d.ts +32 -0
- package/vendor/vscode-jsonrpc/lib/common/cancellation.js +132 -0
- package/vendor/vscode-jsonrpc/lib/common/connection.d.ts +367 -0
- package/vendor/vscode-jsonrpc/lib/common/connection.js +1271 -0
- package/vendor/vscode-jsonrpc/lib/common/disposable.d.ts +9 -0
- package/vendor/vscode-jsonrpc/lib/common/disposable.js +16 -0
- package/vendor/vscode-jsonrpc/lib/common/encoding.d.ts +52 -0
- package/vendor/vscode-jsonrpc/lib/common/encoding.js +70 -0
- package/vendor/vscode-jsonrpc/lib/common/events.d.ts +39 -0
- package/vendor/vscode-jsonrpc/lib/common/events.js +135 -0
- package/vendor/vscode-jsonrpc/lib/common/is.d.ts +7 -0
- package/vendor/vscode-jsonrpc/lib/common/is.js +34 -0
- package/vendor/vscode-jsonrpc/lib/common/linkedMap.d.ts +55 -0
- package/vendor/vscode-jsonrpc/lib/common/linkedMap.js +412 -0
- package/vendor/vscode-jsonrpc/lib/common/messageBuffer.d.ts +18 -0
- package/vendor/vscode-jsonrpc/lib/common/messageBuffer.js +155 -0
- package/vendor/vscode-jsonrpc/lib/common/messageReader.d.ts +77 -0
- package/vendor/vscode-jsonrpc/lib/common/messageReader.js +246 -0
- package/vendor/vscode-jsonrpc/lib/common/messageWriter.d.ts +60 -0
- package/vendor/vscode-jsonrpc/lib/common/messageWriter.js +157 -0
- package/vendor/vscode-jsonrpc/lib/common/messages.d.ts +369 -0
- package/vendor/vscode-jsonrpc/lib/common/messages.js +436 -0
- package/vendor/vscode-jsonrpc/lib/common/ral.d.ts +74 -0
- package/vendor/vscode-jsonrpc/lib/common/ral.js +23 -0
- package/vendor/vscode-jsonrpc/lib/common/semaphore.d.ts +10 -0
- package/vendor/vscode-jsonrpc/lib/common/semaphore.js +74 -0
- package/vendor/vscode-jsonrpc/lib/common/sharedArrayCancellation.d.ts +15 -0
- package/vendor/vscode-jsonrpc/lib/common/sharedArrayCancellation.js +77 -0
- package/vendor/vscode-jsonrpc/lib/node/main.d.ts +58 -0
- package/vendor/vscode-jsonrpc/lib/node/main.js +289 -0
- package/vendor/vscode-jsonrpc/lib/node/ril.d.ts +12 -0
- package/vendor/vscode-jsonrpc/lib/node/ril.js +163 -0
- package/vendor/vscode-jsonrpc/package.json +54 -0
- package/vendor/vscode-jsonrpc/typings/thenable.d.ts +5 -0
- package/SECURITY.md +0 -39
- package/bin/tsserver +0 -2
- package/lib/_tsc.js +0 -134465
- package/lib/_tsserver.js +0 -659
- package/lib/_typingsInstaller.js +0 -222
- package/lib/cs/diagnosticMessages.generated.json +0 -2129
- package/lib/de/diagnosticMessages.generated.json +0 -2125
- package/lib/es/diagnosticMessages.generated.json +0 -2129
- package/lib/fr/diagnosticMessages.generated.json +0 -2129
- package/lib/it/diagnosticMessages.generated.json +0 -2125
- package/lib/ja/diagnosticMessages.generated.json +0 -2129
- package/lib/ko/diagnosticMessages.generated.json +0 -2129
- package/lib/lib.d.ts +0 -20
- package/lib/lib.decorators.d.ts +0 -382
- package/lib/lib.decorators.legacy.d.ts +0 -20
- package/lib/lib.dom.asynciterable.d.ts +0 -18
- package/lib/lib.dom.d.ts +0 -45125
- package/lib/lib.dom.iterable.d.ts +0 -18
- package/lib/lib.es2015.collection.d.ts +0 -150
- package/lib/lib.es2015.core.d.ts +0 -595
- package/lib/lib.es2015.d.ts +0 -26
- package/lib/lib.es2015.generator.d.ts +0 -75
- package/lib/lib.es2015.iterable.d.ts +0 -603
- package/lib/lib.es2015.promise.d.ts +0 -79
- package/lib/lib.es2015.proxy.d.ts +0 -126
- package/lib/lib.es2015.reflect.d.ts +0 -142
- package/lib/lib.es2015.symbol.d.ts +0 -44
- package/lib/lib.es2015.symbol.wellknown.d.ts +0 -324
- package/lib/lib.es2016.array.include.d.ts +0 -114
- package/lib/lib.es2016.d.ts +0 -19
- package/lib/lib.es2016.full.d.ts +0 -21
- package/lib/lib.es2016.intl.d.ts +0 -29
- package/lib/lib.es2017.arraybuffer.d.ts +0 -19
- package/lib/lib.es2017.d.ts +0 -24
- package/lib/lib.es2017.date.d.ts +0 -29
- package/lib/lib.es2017.full.d.ts +0 -21
- package/lib/lib.es2017.intl.d.ts +0 -42
- package/lib/lib.es2017.object.d.ts +0 -47
- package/lib/lib.es2017.sharedmemory.d.ts +0 -133
- package/lib/lib.es2017.string.d.ts +0 -43
- package/lib/lib.es2017.typedarrays.d.ts +0 -51
- package/lib/lib.es2018.asyncgenerator.d.ts +0 -75
- package/lib/lib.es2018.asynciterable.d.ts +0 -51
- package/lib/lib.es2018.d.ts +0 -22
- package/lib/lib.es2018.full.d.ts +0 -22
- package/lib/lib.es2018.intl.d.ts +0 -81
- package/lib/lib.es2018.promise.d.ts +0 -28
- package/lib/lib.es2018.regexp.d.ts +0 -35
- package/lib/lib.es2019.array.d.ts +0 -77
- package/lib/lib.es2019.d.ts +0 -22
- package/lib/lib.es2019.full.d.ts +0 -22
- package/lib/lib.es2019.intl.d.ts +0 -21
- package/lib/lib.es2019.object.d.ts +0 -31
- package/lib/lib.es2019.string.d.ts +0 -35
- package/lib/lib.es2019.symbol.d.ts +0 -22
- package/lib/lib.es2020.bigint.d.ts +0 -763
- package/lib/lib.es2020.d.ts +0 -25
- package/lib/lib.es2020.date.d.ts +0 -40
- package/lib/lib.es2020.full.d.ts +0 -22
- package/lib/lib.es2020.intl.d.ts +0 -472
- package/lib/lib.es2020.number.d.ts +0 -26
- package/lib/lib.es2020.promise.d.ts +0 -45
- package/lib/lib.es2020.sharedmemory.d.ts +0 -97
- package/lib/lib.es2020.string.d.ts +0 -42
- package/lib/lib.es2020.symbol.wellknown.d.ts +0 -39
- package/lib/lib.es2021.d.ts +0 -21
- package/lib/lib.es2021.full.d.ts +0 -22
- package/lib/lib.es2021.intl.d.ts +0 -164
- package/lib/lib.es2021.promise.d.ts +0 -46
- package/lib/lib.es2021.string.d.ts +0 -31
- package/lib/lib.es2021.weakref.d.ts +0 -76
- package/lib/lib.es2022.array.d.ts +0 -119
- package/lib/lib.es2022.d.ts +0 -23
- package/lib/lib.es2022.error.d.ts +0 -73
- package/lib/lib.es2022.full.d.ts +0 -22
- package/lib/lib.es2022.intl.d.ts +0 -143
- package/lib/lib.es2022.object.d.ts +0 -24
- package/lib/lib.es2022.regexp.d.ts +0 -37
- package/lib/lib.es2022.string.d.ts +0 -23
- package/lib/lib.es2023.array.d.ts +0 -922
- package/lib/lib.es2023.collection.d.ts +0 -19
- package/lib/lib.es2023.d.ts +0 -20
- package/lib/lib.es2023.full.d.ts +0 -22
- package/lib/lib.es2023.intl.d.ts +0 -62
- package/lib/lib.es2024.arraybuffer.d.ts +0 -63
- package/lib/lib.es2024.collection.d.ts +0 -27
- package/lib/lib.es2024.d.ts +0 -24
- package/lib/lib.es2024.full.d.ts +0 -22
- package/lib/lib.es2024.object.d.ts +0 -27
- package/lib/lib.es2024.promise.d.ts +0 -33
- package/lib/lib.es2024.regexp.d.ts +0 -23
- package/lib/lib.es2024.sharedmemory.d.ts +0 -66
- package/lib/lib.es2024.string.d.ts +0 -27
- package/lib/lib.es2025.collection.d.ts +0 -94
- package/lib/lib.es2025.d.ts +0 -23
- package/lib/lib.es2025.float16.d.ts +0 -443
- package/lib/lib.es2025.full.d.ts +0 -22
- package/lib/lib.es2025.intl.d.ts +0 -200
- package/lib/lib.es2025.iterator.d.ts +0 -146
- package/lib/lib.es2025.promise.d.ts +0 -32
- package/lib/lib.es2025.regexp.d.ts +0 -30
- package/lib/lib.es5.d.ts +0 -4599
- package/lib/lib.es6.d.ts +0 -21
- package/lib/lib.esnext.array.d.ts +0 -33
- package/lib/lib.esnext.collection.d.ts +0 -47
- package/lib/lib.esnext.d.ts +0 -27
- package/lib/lib.esnext.date.d.ts +0 -21
- package/lib/lib.esnext.decorators.d.ts +0 -26
- package/lib/lib.esnext.disposable.d.ts +0 -191
- package/lib/lib.esnext.error.d.ts +0 -22
- package/lib/lib.esnext.full.d.ts +0 -22
- package/lib/lib.esnext.intl.d.ts +0 -107
- package/lib/lib.esnext.sharedmemory.d.ts +0 -23
- package/lib/lib.esnext.temporal.d.ts +0 -485
- package/lib/lib.esnext.typedarrays.d.ts +0 -90
- package/lib/lib.scripthost.d.ts +0 -320
- package/lib/lib.webworker.asynciterable.d.ts +0 -18
- package/lib/lib.webworker.d.ts +0 -15606
- package/lib/lib.webworker.importscripts.d.ts +0 -21
- package/lib/lib.webworker.iterable.d.ts +0 -18
- package/lib/pl/diagnosticMessages.generated.json +0 -2129
- package/lib/pt-br/diagnosticMessages.generated.json +0 -2129
- package/lib/ru/diagnosticMessages.generated.json +0 -2125
- package/lib/tr/diagnosticMessages.generated.json +0 -2129
- package/lib/tsserver.js +0 -8
- package/lib/tsserverlibrary.d.ts +0 -17
- package/lib/tsserverlibrary.js +0 -21
- package/lib/typesMap.json +0 -497
- package/lib/typescript.d.ts +0 -11448
- package/lib/typescript.js +0 -201039
- package/lib/typingsInstaller.js +0 -8
- package/lib/watchGuard.js +0 -53
- package/lib/zh-cn/diagnosticMessages.generated.json +0 -2129
- package/lib/zh-tw/diagnosticMessages.generated.json +0 -2125
- /package/{LICENSE.txt → LICENSE} +0 -0
|
@@ -0,0 +1,1665 @@
|
|
|
1
|
+
//
|
|
2
|
+
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
3
|
+
// !!! THIS FILE IS AUTO-GENERATED - DO NOT EDIT !!!
|
|
4
|
+
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
5
|
+
//
|
|
6
|
+
// Source: src/api/async/api.ts
|
|
7
|
+
// Regenerate: npm run generate (from _packages/native-preview)
|
|
8
|
+
//
|
|
9
|
+
/// <reference path="../node/node.ts" preserve="true" />
|
|
10
|
+
import { CompletionItemKind } from "#enums/completionItemKind";
|
|
11
|
+
import { DiagnosticCategory } from "#enums/diagnosticCategory";
|
|
12
|
+
import { ElementFlags } from "#enums/elementFlags";
|
|
13
|
+
import { ModuleKind } from "#enums/moduleKind";
|
|
14
|
+
import { NodeBuilderFlags } from "#enums/nodeBuilderFlags";
|
|
15
|
+
import { ObjectFlags } from "#enums/objectFlags";
|
|
16
|
+
import { SignatureFlags } from "#enums/signatureFlags";
|
|
17
|
+
import { SignatureKind } from "#enums/signatureKind";
|
|
18
|
+
import { SymbolFlags } from "#enums/symbolFlags";
|
|
19
|
+
import { TypeFlags } from "#enums/typeFlags";
|
|
20
|
+
import { TypePredicateKind } from "#enums/typePredicateKind";
|
|
21
|
+
import { ModifierFlags, unescapeLeadingUnderscores, } from "../../ast/index.js";
|
|
22
|
+
import { encodeNode, uint8ArrayToBase64, } from "../node/encoder.js";
|
|
23
|
+
import { decodeNode, getNodeId, parseNodeHandle, readParseOptionsKey, readSourceFileHash, RemoteSourceFile, } from "../node/node.js";
|
|
24
|
+
import { Wtf8Decoder } from "../node/wtf8.js";
|
|
25
|
+
import { createGetCanonicalFileName, toPath, } from "../path.js";
|
|
26
|
+
import { resolveFileName, toUpdateSnapshotRequest, } from "../proto.js";
|
|
27
|
+
import { SourceFileCache } from "../sourceFileCache.js";
|
|
28
|
+
import { Client, } from "./client.js";
|
|
29
|
+
export { documentURIToFileName, fileNameToDocumentURI } from "../path.js";
|
|
30
|
+
export { CompletionItemKind, DiagnosticCategory, ElementFlags, ModifierFlags, ModuleKind, NodeBuilderFlags, ObjectFlags, SignatureFlags, SignatureKind, SymbolFlags, TypeFlags, TypePredicateKind };
|
|
31
|
+
export class API {
|
|
32
|
+
client;
|
|
33
|
+
sourceFileCache;
|
|
34
|
+
toPath;
|
|
35
|
+
initialized = false;
|
|
36
|
+
activeSnapshots = new Set();
|
|
37
|
+
latestSnapshot;
|
|
38
|
+
internal;
|
|
39
|
+
constructor(options = {}) {
|
|
40
|
+
this.client = new Client(options);
|
|
41
|
+
this.sourceFileCache = new SourceFileCache();
|
|
42
|
+
this.internal = new InternalAPI(this.client, () => this.ensureInitialized());
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Create an API instance from an existing LSP connection's API session.
|
|
46
|
+
* Use this when connecting to an API pipe provided by an LSP server via custom/initializeAPISession.
|
|
47
|
+
*/
|
|
48
|
+
static fromLSPConnection(options) {
|
|
49
|
+
const api = new API(options);
|
|
50
|
+
api.ensureInitialized();
|
|
51
|
+
return api;
|
|
52
|
+
}
|
|
53
|
+
ensureInitialized() {
|
|
54
|
+
if (!this.initialized) {
|
|
55
|
+
const response = this.client.apiRequest("initialize", null);
|
|
56
|
+
const getCanonicalFileName = createGetCanonicalFileName(response.useCaseSensitiveFileNames);
|
|
57
|
+
const currentDirectory = response.currentDirectory;
|
|
58
|
+
this.toPath = (fileName) => toPath(fileName, currentDirectory, getCanonicalFileName);
|
|
59
|
+
this.initialized = true;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
parseConfigFile(file) {
|
|
63
|
+
this.ensureInitialized();
|
|
64
|
+
return this.client.apiRequest("parseConfigFile", { file });
|
|
65
|
+
}
|
|
66
|
+
updateSnapshot(params) {
|
|
67
|
+
this.ensureInitialized();
|
|
68
|
+
const requestParams = toUpdateSnapshotRequest(params);
|
|
69
|
+
const data = this.client.apiRequest("updateSnapshot", requestParams);
|
|
70
|
+
// Retain cached source files from previous snapshot for unchanged files
|
|
71
|
+
if (this.latestSnapshot) {
|
|
72
|
+
this.sourceFileCache.retainForSnapshot(data.snapshot, this.latestSnapshot.id, data.changes);
|
|
73
|
+
if (this.latestSnapshot.isDisposed()) {
|
|
74
|
+
this.sourceFileCache.releaseSnapshot(this.latestSnapshot.id);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const snapshot = new Snapshot(data, this.client, this.sourceFileCache, this.toPath, () => {
|
|
78
|
+
this.activeSnapshots.delete(snapshot);
|
|
79
|
+
if (snapshot !== this.latestSnapshot) {
|
|
80
|
+
this.sourceFileCache.releaseSnapshot(snapshot.id);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
this.latestSnapshot = snapshot;
|
|
84
|
+
this.activeSnapshots.add(snapshot);
|
|
85
|
+
return snapshot;
|
|
86
|
+
}
|
|
87
|
+
close() {
|
|
88
|
+
// Dispose all active snapshots
|
|
89
|
+
for (const snapshot of [...this.activeSnapshots]) {
|
|
90
|
+
snapshot.dispose();
|
|
91
|
+
}
|
|
92
|
+
// Release the latest snapshot's cache refs if still held
|
|
93
|
+
if (this.latestSnapshot) {
|
|
94
|
+
this.sourceFileCache.releaseSnapshot(this.latestSnapshot.id);
|
|
95
|
+
this.latestSnapshot = undefined;
|
|
96
|
+
}
|
|
97
|
+
this.client.close();
|
|
98
|
+
this.sourceFileCache.clear();
|
|
99
|
+
}
|
|
100
|
+
clearSourceFileCache() {
|
|
101
|
+
this.sourceFileCache.clear();
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Returns a snapshot of collected timing information for requests made
|
|
105
|
+
* through this API instance: client-measured round-trip latency and bytes
|
|
106
|
+
* transferred, folded together with the server's own per-request processing
|
|
107
|
+
* time and an estimated transport overhead (round-trip minus server time).
|
|
108
|
+
*
|
|
109
|
+
* Fetching the snapshot issues a lightweight request to the server to
|
|
110
|
+
* retrieve its timing collection. Collection must be enabled via the
|
|
111
|
+
* `collectTiming` option; when it is not, the returned snapshot has
|
|
112
|
+
* `enabled: false` and zeroed totals.
|
|
113
|
+
*/
|
|
114
|
+
getTimingInfo() {
|
|
115
|
+
return this.client.getTimingInfo();
|
|
116
|
+
}
|
|
117
|
+
/** Clears all accumulated timing totals and recent-request history, on both the client and the server. */
|
|
118
|
+
resetTimingInfo() {
|
|
119
|
+
return this.client.resetTimingInfo();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
export class InternalAPI {
|
|
123
|
+
client;
|
|
124
|
+
ensureInitialized;
|
|
125
|
+
/** @internal */
|
|
126
|
+
constructor(client, ensureInitialized) {
|
|
127
|
+
this.client = client;
|
|
128
|
+
this.ensureInitialized = ensureInitialized;
|
|
129
|
+
}
|
|
130
|
+
startCPUProfile(dir) {
|
|
131
|
+
this.ensureInitialized();
|
|
132
|
+
this.client.apiRequest("startCPUProfile", { dir });
|
|
133
|
+
}
|
|
134
|
+
stopCPUProfile() {
|
|
135
|
+
this.ensureInitialized();
|
|
136
|
+
const result = this.client.apiRequest("stopCPUProfile", null);
|
|
137
|
+
return result.file;
|
|
138
|
+
}
|
|
139
|
+
saveHeapProfile(dir) {
|
|
140
|
+
this.ensureInitialized();
|
|
141
|
+
const result = this.client.apiRequest("saveHeapProfile", { dir });
|
|
142
|
+
return result.file;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
export class Snapshot {
|
|
146
|
+
id;
|
|
147
|
+
projectMap;
|
|
148
|
+
toPath;
|
|
149
|
+
client;
|
|
150
|
+
disposed = false;
|
|
151
|
+
onDispose;
|
|
152
|
+
snapshotRegistry;
|
|
153
|
+
constructor(data, client, sourceFileCache, toPath, onDispose) {
|
|
154
|
+
this.id = data.snapshot;
|
|
155
|
+
this.client = client;
|
|
156
|
+
this.toPath = toPath;
|
|
157
|
+
this.onDispose = onDispose;
|
|
158
|
+
this.projectMap = new Map();
|
|
159
|
+
this.snapshotRegistry = new SnapshotObjectRegistry(client, this.id, projectId => this.projectMap.get(projectId));
|
|
160
|
+
for (const projData of data.projects) {
|
|
161
|
+
const project = new Project(projData, this.id, client, sourceFileCache, toPath, this.snapshotRegistry);
|
|
162
|
+
this.projectMap.set(toPath(projData.configFileName), project);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
getProjects() {
|
|
166
|
+
this.ensureNotDisposed();
|
|
167
|
+
return [...this.projectMap.values()];
|
|
168
|
+
}
|
|
169
|
+
getProject(configFileName) {
|
|
170
|
+
this.ensureNotDisposed();
|
|
171
|
+
return this.projectMap.get(this.toPath(configFileName));
|
|
172
|
+
}
|
|
173
|
+
getDefaultProjectForFile(file) {
|
|
174
|
+
this.ensureNotDisposed();
|
|
175
|
+
const data = this.client.apiRequest("getDefaultProjectForFile", {
|
|
176
|
+
snapshot: this.id,
|
|
177
|
+
file,
|
|
178
|
+
});
|
|
179
|
+
if (!data)
|
|
180
|
+
return undefined;
|
|
181
|
+
return this.projectMap.get(this.toPath(data.configFileName));
|
|
182
|
+
}
|
|
183
|
+
[globalThis.Symbol.dispose]() {
|
|
184
|
+
this.dispose();
|
|
185
|
+
}
|
|
186
|
+
dispose() {
|
|
187
|
+
if (this.disposed)
|
|
188
|
+
return;
|
|
189
|
+
this.disposed = true;
|
|
190
|
+
for (const project of this.projectMap.values()) {
|
|
191
|
+
project.dispose();
|
|
192
|
+
}
|
|
193
|
+
this.projectMap.clear();
|
|
194
|
+
this.snapshotRegistry.clear();
|
|
195
|
+
this.onDispose();
|
|
196
|
+
this.client.apiRequest("release", { snapshot: this.id });
|
|
197
|
+
}
|
|
198
|
+
isDisposed() {
|
|
199
|
+
return this.disposed;
|
|
200
|
+
}
|
|
201
|
+
ensureNotDisposed() {
|
|
202
|
+
if (this.disposed) {
|
|
203
|
+
throw new Error("Snapshot is disposed");
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
class SnapshotObjectRegistry {
|
|
208
|
+
symbols = new Map();
|
|
209
|
+
client;
|
|
210
|
+
snapshotId;
|
|
211
|
+
resolveProject;
|
|
212
|
+
constructor(client, snapshotId, resolveProject) {
|
|
213
|
+
this.client = client;
|
|
214
|
+
this.snapshotId = snapshotId;
|
|
215
|
+
this.resolveProject = resolveProject;
|
|
216
|
+
}
|
|
217
|
+
/** Resolve a project id (a config file path) to its Project within this snapshot. */
|
|
218
|
+
getProject(projectId) {
|
|
219
|
+
return this.resolveProject(projectId);
|
|
220
|
+
}
|
|
221
|
+
getOrCreateSymbol(data) {
|
|
222
|
+
let symbol = this.symbols.get(data.id);
|
|
223
|
+
if (!symbol) {
|
|
224
|
+
symbol = new Symbol(data, this);
|
|
225
|
+
this.symbols.set(data.id, symbol);
|
|
226
|
+
}
|
|
227
|
+
return symbol;
|
|
228
|
+
}
|
|
229
|
+
getSymbol(id) {
|
|
230
|
+
return this.symbols.get(id);
|
|
231
|
+
}
|
|
232
|
+
clear() {
|
|
233
|
+
this.symbols.clear();
|
|
234
|
+
}
|
|
235
|
+
fetchSymbol(source, method, handle, projectId) {
|
|
236
|
+
if (!handle)
|
|
237
|
+
return undefined;
|
|
238
|
+
const cached = this.getSymbol(handle);
|
|
239
|
+
if (cached)
|
|
240
|
+
return cached;
|
|
241
|
+
const data = this.client.apiRequest(method, {
|
|
242
|
+
snapshot: this.snapshotId,
|
|
243
|
+
project: projectId,
|
|
244
|
+
objectId: source.id,
|
|
245
|
+
});
|
|
246
|
+
if (!data)
|
|
247
|
+
throw new Error(`${method} returned null symbol for ${source.constructor.name} ${source.id}`);
|
|
248
|
+
return this.getOrCreateSymbol(data);
|
|
249
|
+
}
|
|
250
|
+
fetchSymbols(source, method, handles, projectId) {
|
|
251
|
+
if (handles) {
|
|
252
|
+
const result = new Array(handles.length);
|
|
253
|
+
let allCached = true;
|
|
254
|
+
for (let i = 0; i < handles.length; i++) {
|
|
255
|
+
const cached = this.getSymbol(handles[i]);
|
|
256
|
+
if (!cached) {
|
|
257
|
+
allCached = false;
|
|
258
|
+
break;
|
|
259
|
+
}
|
|
260
|
+
result[i] = cached;
|
|
261
|
+
}
|
|
262
|
+
if (allCached)
|
|
263
|
+
return result;
|
|
264
|
+
}
|
|
265
|
+
const symbolData = this.client.apiRequest(method, {
|
|
266
|
+
snapshot: this.snapshotId,
|
|
267
|
+
project: projectId,
|
|
268
|
+
objectId: source.id,
|
|
269
|
+
});
|
|
270
|
+
if (symbolData == null)
|
|
271
|
+
return [];
|
|
272
|
+
else
|
|
273
|
+
return symbolData.map(data => this.getOrCreateSymbol(data));
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
class ProjectObjectRegistry {
|
|
277
|
+
client;
|
|
278
|
+
snapshotId;
|
|
279
|
+
project;
|
|
280
|
+
snapshotRegistry;
|
|
281
|
+
types = new Map();
|
|
282
|
+
signatures = new Map();
|
|
283
|
+
constructor(client, snapshotId, project, snapshotRegistry) {
|
|
284
|
+
this.client = client;
|
|
285
|
+
this.snapshotId = snapshotId;
|
|
286
|
+
this.project = project;
|
|
287
|
+
this.snapshotRegistry = snapshotRegistry;
|
|
288
|
+
}
|
|
289
|
+
getOrCreateSymbol(data) {
|
|
290
|
+
return this.snapshotRegistry.getOrCreateSymbol(data);
|
|
291
|
+
}
|
|
292
|
+
getSymbol(id) {
|
|
293
|
+
return this.snapshotRegistry.getSymbol(id);
|
|
294
|
+
}
|
|
295
|
+
getOrCreateType(data) {
|
|
296
|
+
let type = this.types.get(data.id);
|
|
297
|
+
if (!type) {
|
|
298
|
+
type = new TypeObject(data, this);
|
|
299
|
+
this.types.set(data.id, type);
|
|
300
|
+
}
|
|
301
|
+
return type;
|
|
302
|
+
}
|
|
303
|
+
getType(id) {
|
|
304
|
+
return this.types.get(id);
|
|
305
|
+
}
|
|
306
|
+
getOrCreateSignature(data) {
|
|
307
|
+
let sig = this.signatures.get(data.id);
|
|
308
|
+
if (!sig) {
|
|
309
|
+
sig = new Signature(data, this.project, this);
|
|
310
|
+
this.signatures.set(data.id, sig);
|
|
311
|
+
}
|
|
312
|
+
return sig;
|
|
313
|
+
}
|
|
314
|
+
getSignature(id) {
|
|
315
|
+
return this.signatures.get(id);
|
|
316
|
+
}
|
|
317
|
+
clear() {
|
|
318
|
+
this.types.clear();
|
|
319
|
+
this.signatures.clear();
|
|
320
|
+
}
|
|
321
|
+
fetchType(source, method, handle) {
|
|
322
|
+
if (handle !== false) {
|
|
323
|
+
if (!handle)
|
|
324
|
+
return undefined;
|
|
325
|
+
const cached = this.getType(handle);
|
|
326
|
+
if (cached)
|
|
327
|
+
return cached;
|
|
328
|
+
}
|
|
329
|
+
const data = this.client.apiRequest(method, {
|
|
330
|
+
snapshot: this.snapshotId,
|
|
331
|
+
project: this.project.id,
|
|
332
|
+
objectId: source.id,
|
|
333
|
+
});
|
|
334
|
+
if (!data)
|
|
335
|
+
throw new Error(`${method} returned null type for ${source.constructor.name} ${source.id}`);
|
|
336
|
+
return this.getOrCreateType(data);
|
|
337
|
+
}
|
|
338
|
+
fetchSymbol(source, method, handle) {
|
|
339
|
+
return this.snapshotRegistry.fetchSymbol(source, method, handle, this.project.id);
|
|
340
|
+
}
|
|
341
|
+
fetchSignature(source, method, handle) {
|
|
342
|
+
if (!handle)
|
|
343
|
+
return undefined;
|
|
344
|
+
const cached = this.getSignature(handle);
|
|
345
|
+
if (cached)
|
|
346
|
+
return cached;
|
|
347
|
+
const data = this.client.apiRequest(method, {
|
|
348
|
+
snapshot: this.snapshotId,
|
|
349
|
+
project: this.project.id,
|
|
350
|
+
objectId: source.id,
|
|
351
|
+
});
|
|
352
|
+
if (!data)
|
|
353
|
+
throw new Error(`${method} returned null signature for ${source.constructor.name} ${source.id}`);
|
|
354
|
+
return this.getOrCreateSignature(data);
|
|
355
|
+
}
|
|
356
|
+
fetchTypes(source, method, handles) {
|
|
357
|
+
if (handles) {
|
|
358
|
+
const result = new Array(handles.length);
|
|
359
|
+
let allCached = true;
|
|
360
|
+
for (let i = 0; i < handles.length; i++) {
|
|
361
|
+
const cached = this.getType(handles[i]);
|
|
362
|
+
if (!cached) {
|
|
363
|
+
allCached = false;
|
|
364
|
+
break;
|
|
365
|
+
}
|
|
366
|
+
result[i] = cached;
|
|
367
|
+
}
|
|
368
|
+
if (allCached)
|
|
369
|
+
return result;
|
|
370
|
+
}
|
|
371
|
+
const typesData = this.client.apiRequest(method, {
|
|
372
|
+
snapshot: this.snapshotId,
|
|
373
|
+
project: this.project.id,
|
|
374
|
+
objectId: source.id,
|
|
375
|
+
});
|
|
376
|
+
if (typesData == null)
|
|
377
|
+
return [];
|
|
378
|
+
else
|
|
379
|
+
return typesData.map(data => this.getOrCreateType(data));
|
|
380
|
+
}
|
|
381
|
+
fetchSymbols(source, method, handles) {
|
|
382
|
+
return this.snapshotRegistry.fetchSymbols(source, method, handles, this.project.id);
|
|
383
|
+
}
|
|
384
|
+
// getBaseTypes is a checker-level endpoint keyed by `type` (not `objectId`),
|
|
385
|
+
// so it cannot go through fetchTypes. This helper reuses that server method.
|
|
386
|
+
fetchBaseTypes(source) {
|
|
387
|
+
const typesData = this.client.apiRequest("getBaseTypes", {
|
|
388
|
+
snapshot: this.snapshotId,
|
|
389
|
+
project: this.project.id,
|
|
390
|
+
type: source.id,
|
|
391
|
+
});
|
|
392
|
+
if (typesData == null)
|
|
393
|
+
return [];
|
|
394
|
+
return typesData.map(data => this.getOrCreateType(data));
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
export class Project {
|
|
398
|
+
id;
|
|
399
|
+
configFileName;
|
|
400
|
+
compilerOptions;
|
|
401
|
+
rootFiles;
|
|
402
|
+
program;
|
|
403
|
+
checker;
|
|
404
|
+
emitter;
|
|
405
|
+
client;
|
|
406
|
+
constructor(data, snapshotId, client, sourceFileCache, toPath, snapshotRegistry) {
|
|
407
|
+
this.id = data.id;
|
|
408
|
+
this.configFileName = data.configFileName;
|
|
409
|
+
this.compilerOptions = data.compilerOptions;
|
|
410
|
+
this.rootFiles = data.rootFiles;
|
|
411
|
+
this.client = client;
|
|
412
|
+
this.program = new Program(snapshotId, this, client, sourceFileCache, toPath);
|
|
413
|
+
const objectRegistry = new ProjectObjectRegistry(client, snapshotId, this, snapshotRegistry);
|
|
414
|
+
this.checker = new Checker(snapshotId, this, client, objectRegistry);
|
|
415
|
+
this.emitter = new Emitter(client);
|
|
416
|
+
}
|
|
417
|
+
dispose() {
|
|
418
|
+
this.checker.dispose();
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
export class Program {
|
|
422
|
+
snapshotId;
|
|
423
|
+
project;
|
|
424
|
+
client;
|
|
425
|
+
sourceFileCache;
|
|
426
|
+
toPath;
|
|
427
|
+
decoder = new Wtf8Decoder();
|
|
428
|
+
sourceFileMetadataCache = new Map();
|
|
429
|
+
constructor(snapshotId, project, client, sourceFileCache, toPath) {
|
|
430
|
+
this.snapshotId = snapshotId;
|
|
431
|
+
this.project = project;
|
|
432
|
+
this.client = client;
|
|
433
|
+
this.sourceFileCache = sourceFileCache;
|
|
434
|
+
this.toPath = toPath;
|
|
435
|
+
}
|
|
436
|
+
getCompilerOptions() {
|
|
437
|
+
return this.project.compilerOptions;
|
|
438
|
+
}
|
|
439
|
+
getSourceFile(file) {
|
|
440
|
+
const fileName = resolveFileName(file);
|
|
441
|
+
const path = this.toPath(fileName);
|
|
442
|
+
// Check if we already have a retained cache entry for this (snapshot, project) pair
|
|
443
|
+
const retained = this.sourceFileCache.getRetained(path, this.snapshotId, this.project.id);
|
|
444
|
+
if (retained) {
|
|
445
|
+
return retained;
|
|
446
|
+
}
|
|
447
|
+
// Fetch from server
|
|
448
|
+
const binaryData = this.client.apiRequestBinary("getSourceFile", {
|
|
449
|
+
snapshot: this.snapshotId,
|
|
450
|
+
project: this.project.id,
|
|
451
|
+
file,
|
|
452
|
+
});
|
|
453
|
+
if (!binaryData) {
|
|
454
|
+
return undefined;
|
|
455
|
+
}
|
|
456
|
+
const view = new DataView(binaryData.buffer, binaryData.byteOffset, binaryData.byteLength);
|
|
457
|
+
const contentHash = readSourceFileHash(view);
|
|
458
|
+
const parseOptionsKey = readParseOptionsKey(view);
|
|
459
|
+
// Create a new RemoteSourceFile and cache it (set returns existing if hash matches)
|
|
460
|
+
const sourceFile = new RemoteSourceFile(binaryData, this.decoder, this.client.getTimingCollector());
|
|
461
|
+
return this.sourceFileCache.set(path, sourceFile, parseOptionsKey, contentHash, this.snapshotId, this.project.id);
|
|
462
|
+
}
|
|
463
|
+
getSourceFileNames() {
|
|
464
|
+
const data = this.client.apiRequest("getSourceFileNames", {
|
|
465
|
+
snapshot: this.snapshotId,
|
|
466
|
+
project: this.project.id,
|
|
467
|
+
});
|
|
468
|
+
return data ?? [];
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* Returns program-stored metadata for the given source file, or `undefined` if the file
|
|
472
|
+
* is not part of the program. Metadata is fetched lazily per file and cached on this
|
|
473
|
+
* `Program` instance.
|
|
474
|
+
*/
|
|
475
|
+
getSourceFileMetadata(fileName) {
|
|
476
|
+
return this.getSourceFileMetadataByPath(this.toPath(fileName));
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* Returns program-stored metadata for the source file at the given path, or `undefined`
|
|
480
|
+
* if the file is not part of the program. Like {@link getSourceFileMetadata}, but skips
|
|
481
|
+
* the file name to path conversion. Metadata is fetched lazily per file and cached on
|
|
482
|
+
* this `Program` instance.
|
|
483
|
+
*/
|
|
484
|
+
getSourceFileMetadataByPath(path) {
|
|
485
|
+
let metadata = this.sourceFileMetadataCache.get(path);
|
|
486
|
+
if (metadata === undefined) {
|
|
487
|
+
metadata = this.fetchSourceFileMetadata(path);
|
|
488
|
+
this.sourceFileMetadataCache.set(path, metadata);
|
|
489
|
+
}
|
|
490
|
+
return metadata;
|
|
491
|
+
}
|
|
492
|
+
fetchSourceFileMetadata(path) {
|
|
493
|
+
const data = this.client.apiRequest("getSourceFileMetadata", {
|
|
494
|
+
snapshot: this.snapshotId,
|
|
495
|
+
project: this.project.id,
|
|
496
|
+
file: path,
|
|
497
|
+
});
|
|
498
|
+
return data ?? undefined;
|
|
499
|
+
}
|
|
500
|
+
/**
|
|
501
|
+
* Returns whether the given source file was loaded as part of an external library
|
|
502
|
+
* (e.g. a dependency resolved from `node_modules`). The underlying program metadata is
|
|
503
|
+
* fetched lazily per file and cached on this `Program` instance.
|
|
504
|
+
*/
|
|
505
|
+
isSourceFileFromExternalLibrary(file) {
|
|
506
|
+
const metadata = this.getSourceFileMetadataByPath(file.path);
|
|
507
|
+
return metadata?.isFromExternalLibrary ?? false;
|
|
508
|
+
}
|
|
509
|
+
/**
|
|
510
|
+
* Returns whether the given source file is a default library file (e.g. `lib.d.ts`).
|
|
511
|
+
* The underlying program metadata is fetched lazily per file and cached on this
|
|
512
|
+
* `Program` instance.
|
|
513
|
+
*/
|
|
514
|
+
isSourceFileDefaultLibrary(file) {
|
|
515
|
+
const metadata = this.getSourceFileMetadataByPath(file.path);
|
|
516
|
+
return metadata?.isDefaultLibrary ?? false;
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* Get syntactic (parse) diagnostics for a specific file or all files.
|
|
520
|
+
* @param file - Optional file to get diagnostics for. If omitted, returns diagnostics for all files.
|
|
521
|
+
*/
|
|
522
|
+
getSyntacticDiagnostics(file) {
|
|
523
|
+
const data = this.client.apiRequest("getSyntacticDiagnostics", {
|
|
524
|
+
snapshot: this.snapshotId,
|
|
525
|
+
project: this.project.id,
|
|
526
|
+
...(file !== undefined ? { file } : {}),
|
|
527
|
+
});
|
|
528
|
+
return data ?? [];
|
|
529
|
+
}
|
|
530
|
+
/**
|
|
531
|
+
* Get binder diagnostics for a specific file or all files.
|
|
532
|
+
* @param file - Optional file to get diagnostics for. If omitted, returns diagnostics for all files.
|
|
533
|
+
*/
|
|
534
|
+
getBindDiagnostics(file) {
|
|
535
|
+
const data = this.client.apiRequest("getBindDiagnostics", {
|
|
536
|
+
snapshot: this.snapshotId,
|
|
537
|
+
project: this.project.id,
|
|
538
|
+
...(file !== undefined ? { file } : {}),
|
|
539
|
+
});
|
|
540
|
+
return data ?? [];
|
|
541
|
+
}
|
|
542
|
+
/**
|
|
543
|
+
* Get semantic (type-check) diagnostics for a specific file or all files.
|
|
544
|
+
* @param file - Optional file to get diagnostics for. If omitted, returns diagnostics for all files.
|
|
545
|
+
*/
|
|
546
|
+
getSemanticDiagnostics(file) {
|
|
547
|
+
const data = this.client.apiRequest("getSemanticDiagnostics", {
|
|
548
|
+
snapshot: this.snapshotId,
|
|
549
|
+
project: this.project.id,
|
|
550
|
+
...(file !== undefined ? { file } : {}),
|
|
551
|
+
});
|
|
552
|
+
return data ?? [];
|
|
553
|
+
}
|
|
554
|
+
/**
|
|
555
|
+
* Get suggestion diagnostics for a specific file or all files.
|
|
556
|
+
* @param file - Optional file to get diagnostics for. If omitted, returns diagnostics for all files.
|
|
557
|
+
*/
|
|
558
|
+
getSuggestionDiagnostics(file) {
|
|
559
|
+
const data = this.client.apiRequest("getSuggestionDiagnostics", {
|
|
560
|
+
snapshot: this.snapshotId,
|
|
561
|
+
project: this.project.id,
|
|
562
|
+
...(file !== undefined ? { file } : {}),
|
|
563
|
+
});
|
|
564
|
+
return data ?? [];
|
|
565
|
+
}
|
|
566
|
+
/**
|
|
567
|
+
* Get declaration emit diagnostics for a specific file or all files.
|
|
568
|
+
* @param file - Optional file to get diagnostics for. If omitted, returns diagnostics for all files.
|
|
569
|
+
*/
|
|
570
|
+
getDeclarationDiagnostics(file) {
|
|
571
|
+
const data = this.client.apiRequest("getDeclarationDiagnostics", {
|
|
572
|
+
snapshot: this.snapshotId,
|
|
573
|
+
project: this.project.id,
|
|
574
|
+
...(file !== undefined ? { file } : {}),
|
|
575
|
+
});
|
|
576
|
+
return data ?? [];
|
|
577
|
+
}
|
|
578
|
+
/**
|
|
579
|
+
* Get program-wide diagnostics for the project, including compiler options diagnostics.
|
|
580
|
+
*/
|
|
581
|
+
getProgramDiagnostics() {
|
|
582
|
+
const data = this.client.apiRequest("getProgramDiagnostics", {
|
|
583
|
+
snapshot: this.snapshotId,
|
|
584
|
+
project: this.project.id,
|
|
585
|
+
});
|
|
586
|
+
return data ?? [];
|
|
587
|
+
}
|
|
588
|
+
/**
|
|
589
|
+
* Get global (non-file-specific) semantic diagnostics for the project.
|
|
590
|
+
*/
|
|
591
|
+
getGlobalDiagnostics() {
|
|
592
|
+
const data = this.client.apiRequest("getGlobalDiagnostics", {
|
|
593
|
+
snapshot: this.snapshotId,
|
|
594
|
+
project: this.project.id,
|
|
595
|
+
});
|
|
596
|
+
return data ?? [];
|
|
597
|
+
}
|
|
598
|
+
/**
|
|
599
|
+
* Get config file parsing diagnostics for the project.
|
|
600
|
+
*/
|
|
601
|
+
getConfigFileParsingDiagnostics() {
|
|
602
|
+
const data = this.client.apiRequest("getConfigFileParsingDiagnostics", {
|
|
603
|
+
snapshot: this.snapshotId,
|
|
604
|
+
project: this.project.id,
|
|
605
|
+
});
|
|
606
|
+
return data ?? [];
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
export class Checker {
|
|
610
|
+
snapshotId;
|
|
611
|
+
project;
|
|
612
|
+
client;
|
|
613
|
+
objectRegistry;
|
|
614
|
+
wellKnownSymbols;
|
|
615
|
+
constructor(snapshotId, project, client, objectRegistry) {
|
|
616
|
+
this.snapshotId = snapshotId;
|
|
617
|
+
this.project = project;
|
|
618
|
+
this.client = client;
|
|
619
|
+
this.objectRegistry = objectRegistry;
|
|
620
|
+
}
|
|
621
|
+
dispose() {
|
|
622
|
+
this.objectRegistry.clear();
|
|
623
|
+
}
|
|
624
|
+
getSymbolAtLocation(nodeOrNodes) {
|
|
625
|
+
if (Array.isArray(nodeOrNodes)) {
|
|
626
|
+
const data = this.client.apiRequest("getSymbolsAtLocations", {
|
|
627
|
+
snapshot: this.snapshotId,
|
|
628
|
+
project: this.project.id,
|
|
629
|
+
locations: nodeOrNodes.map(node => getNodeId(node)),
|
|
630
|
+
});
|
|
631
|
+
return data.map(d => d ? this.objectRegistry.getOrCreateSymbol(d) : undefined);
|
|
632
|
+
}
|
|
633
|
+
const data = this.client.apiRequest("getSymbolAtLocation", {
|
|
634
|
+
snapshot: this.snapshotId,
|
|
635
|
+
project: this.project.id,
|
|
636
|
+
location: getNodeId(nodeOrNodes),
|
|
637
|
+
});
|
|
638
|
+
return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;
|
|
639
|
+
}
|
|
640
|
+
getSymbolAtPosition(file, positionOrPositions) {
|
|
641
|
+
if (typeof positionOrPositions === "number") {
|
|
642
|
+
const data = this.client.apiRequest("getSymbolAtPosition", {
|
|
643
|
+
snapshot: this.snapshotId,
|
|
644
|
+
project: this.project.id,
|
|
645
|
+
file,
|
|
646
|
+
position: positionOrPositions,
|
|
647
|
+
});
|
|
648
|
+
return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;
|
|
649
|
+
}
|
|
650
|
+
const data = this.client.apiRequest("getSymbolsAtPositions", {
|
|
651
|
+
snapshot: this.snapshotId,
|
|
652
|
+
project: this.project.id,
|
|
653
|
+
file,
|
|
654
|
+
positions: positionOrPositions,
|
|
655
|
+
});
|
|
656
|
+
return data.map(d => d ? this.objectRegistry.getOrCreateSymbol(d) : undefined);
|
|
657
|
+
}
|
|
658
|
+
getTypeOfSymbol(symbolOrSymbols) {
|
|
659
|
+
if (Array.isArray(symbolOrSymbols)) {
|
|
660
|
+
const data = this.client.apiRequest("getTypesOfSymbols", {
|
|
661
|
+
snapshot: this.snapshotId,
|
|
662
|
+
project: this.project.id,
|
|
663
|
+
symbols: symbolOrSymbols.map(s => s.id),
|
|
664
|
+
});
|
|
665
|
+
return data.map(d => d ? this.objectRegistry.getOrCreateType(d) : undefined);
|
|
666
|
+
}
|
|
667
|
+
const data = this.client.apiRequest("getTypeOfSymbol", {
|
|
668
|
+
snapshot: this.snapshotId,
|
|
669
|
+
project: this.project.id,
|
|
670
|
+
symbol: symbolOrSymbols.id,
|
|
671
|
+
});
|
|
672
|
+
return data ? this.objectRegistry.getOrCreateType(data) : undefined;
|
|
673
|
+
}
|
|
674
|
+
/**
|
|
675
|
+
* Get the declared type of a symbol. Always returns a type; for symbols whose
|
|
676
|
+
* declared type cannot be determined the checker yields the error type (use
|
|
677
|
+
* {@link Type.isErrorType} to detect it).
|
|
678
|
+
*/
|
|
679
|
+
getDeclaredTypeOfSymbol(symbol) {
|
|
680
|
+
const data = this.client.apiRequest("getDeclaredTypeOfSymbol", {
|
|
681
|
+
snapshot: this.snapshotId,
|
|
682
|
+
project: this.project.id,
|
|
683
|
+
symbol: symbol.id,
|
|
684
|
+
});
|
|
685
|
+
if (!data)
|
|
686
|
+
throw new Error(`getDeclaredTypeOfSymbol returned no type for symbol ${symbol.id}`);
|
|
687
|
+
return this.objectRegistry.getOrCreateType(data);
|
|
688
|
+
}
|
|
689
|
+
getReferencesToSymbolInFile(file, symbol) {
|
|
690
|
+
const data = this.client.apiRequest("getReferencesToSymbolInFile", {
|
|
691
|
+
snapshot: this.snapshotId,
|
|
692
|
+
project: this.project.id,
|
|
693
|
+
file,
|
|
694
|
+
symbol: symbol.id,
|
|
695
|
+
});
|
|
696
|
+
return (data ?? []).map(h => new NodeHandle(h, this.project));
|
|
697
|
+
}
|
|
698
|
+
getReferencedSymbolsForNode(node, position) {
|
|
699
|
+
const data = this.client.apiRequest("getReferencedSymbolsForNode", {
|
|
700
|
+
snapshot: this.snapshotId,
|
|
701
|
+
project: this.project.id,
|
|
702
|
+
node: getNodeId(node),
|
|
703
|
+
position,
|
|
704
|
+
});
|
|
705
|
+
return (data ?? []).map(entry => ({
|
|
706
|
+
definition: new NodeHandle(entry.definition, this.project),
|
|
707
|
+
symbol: entry.symbol ? this.objectRegistry.getOrCreateSymbol(entry.symbol) : undefined,
|
|
708
|
+
references: (entry.references ?? []).map(h => new NodeHandle(h, this.project)),
|
|
709
|
+
}));
|
|
710
|
+
}
|
|
711
|
+
getSignatureUsage(signatureDecl) {
|
|
712
|
+
const data = this.client.apiRequest("getSignatureUsages", {
|
|
713
|
+
snapshot: this.snapshotId,
|
|
714
|
+
project: this.project.id,
|
|
715
|
+
signatureDecl: getNodeId(signatureDecl),
|
|
716
|
+
});
|
|
717
|
+
return (data ?? []).map(entry => ({
|
|
718
|
+
name: new NodeHandle(entry.name, this.project),
|
|
719
|
+
call: entry.call ? new NodeHandle(entry.call, this.project) : undefined,
|
|
720
|
+
}));
|
|
721
|
+
}
|
|
722
|
+
getCompletionsAtPosition(document, position, options) {
|
|
723
|
+
const data = this.client.apiRequest("getCompletionsAtPosition", {
|
|
724
|
+
snapshot: this.snapshotId,
|
|
725
|
+
project: this.project.id,
|
|
726
|
+
file: document,
|
|
727
|
+
position,
|
|
728
|
+
triggerCharacter: options?.triggerCharacter,
|
|
729
|
+
includeSymbol: options?.includeSymbol,
|
|
730
|
+
});
|
|
731
|
+
if (!data)
|
|
732
|
+
return undefined;
|
|
733
|
+
return {
|
|
734
|
+
isIncomplete: data.isIncomplete,
|
|
735
|
+
entries: data.entries.map(e => ({
|
|
736
|
+
...e,
|
|
737
|
+
symbol: e.symbol ? this.objectRegistry.getOrCreateSymbol(e.symbol) : undefined,
|
|
738
|
+
})),
|
|
739
|
+
};
|
|
740
|
+
}
|
|
741
|
+
getTypeAtLocation(nodeOrNodes) {
|
|
742
|
+
if (Array.isArray(nodeOrNodes)) {
|
|
743
|
+
const data = this.client.apiRequest("getTypeAtLocations", {
|
|
744
|
+
snapshot: this.snapshotId,
|
|
745
|
+
project: this.project.id,
|
|
746
|
+
locations: nodeOrNodes.map(node => getNodeId(node)),
|
|
747
|
+
});
|
|
748
|
+
return data.map(d => d ? this.objectRegistry.getOrCreateType(d) : undefined);
|
|
749
|
+
}
|
|
750
|
+
const data = this.client.apiRequest("getTypeAtLocation", {
|
|
751
|
+
snapshot: this.snapshotId,
|
|
752
|
+
project: this.project.id,
|
|
753
|
+
location: getNodeId(nodeOrNodes),
|
|
754
|
+
});
|
|
755
|
+
return data ? this.objectRegistry.getOrCreateType(data) : undefined;
|
|
756
|
+
}
|
|
757
|
+
getSignaturesOfType(type, kind) {
|
|
758
|
+
const data = this.client.apiRequest("getSignaturesOfType", {
|
|
759
|
+
snapshot: this.snapshotId,
|
|
760
|
+
project: this.project.id,
|
|
761
|
+
type: type.id,
|
|
762
|
+
kind,
|
|
763
|
+
});
|
|
764
|
+
return data.map(d => this.objectRegistry.getOrCreateSignature(d));
|
|
765
|
+
}
|
|
766
|
+
getResolvedSignature(node) {
|
|
767
|
+
const data = this.client.apiRequest("getResolvedSignature", {
|
|
768
|
+
snapshot: this.snapshotId,
|
|
769
|
+
project: this.project.id,
|
|
770
|
+
location: getNodeId(node),
|
|
771
|
+
});
|
|
772
|
+
return data ? this.objectRegistry.getOrCreateSignature(data) : undefined;
|
|
773
|
+
}
|
|
774
|
+
getTypeAtPosition(file, positionOrPositions) {
|
|
775
|
+
if (typeof positionOrPositions === "number") {
|
|
776
|
+
const data = this.client.apiRequest("getTypeAtPosition", {
|
|
777
|
+
snapshot: this.snapshotId,
|
|
778
|
+
project: this.project.id,
|
|
779
|
+
file,
|
|
780
|
+
position: positionOrPositions,
|
|
781
|
+
});
|
|
782
|
+
return data ? this.objectRegistry.getOrCreateType(data) : undefined;
|
|
783
|
+
}
|
|
784
|
+
const data = this.client.apiRequest("getTypesAtPositions", {
|
|
785
|
+
snapshot: this.snapshotId,
|
|
786
|
+
project: this.project.id,
|
|
787
|
+
file,
|
|
788
|
+
positions: positionOrPositions,
|
|
789
|
+
});
|
|
790
|
+
return data.map(d => d ? this.objectRegistry.getOrCreateType(d) : undefined);
|
|
791
|
+
}
|
|
792
|
+
resolveName(name, meaning, location, excludeGlobals) {
|
|
793
|
+
// Distinguish Node (has `kind`) from DocumentPosition (has `document` and `position`)
|
|
794
|
+
const isNode = location && "kind" in location;
|
|
795
|
+
const data = this.client.apiRequest("resolveName", {
|
|
796
|
+
snapshot: this.snapshotId,
|
|
797
|
+
project: this.project.id,
|
|
798
|
+
name,
|
|
799
|
+
meaning,
|
|
800
|
+
location: isNode ? getNodeId(location) : undefined,
|
|
801
|
+
file: !isNode && location ? location.document : undefined,
|
|
802
|
+
position: !isNode && location ? location.position : undefined,
|
|
803
|
+
excludeGlobals,
|
|
804
|
+
});
|
|
805
|
+
return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;
|
|
806
|
+
}
|
|
807
|
+
getResolvedSymbol(node) {
|
|
808
|
+
const text = node.text;
|
|
809
|
+
if (!text)
|
|
810
|
+
return undefined;
|
|
811
|
+
return this.resolveName(text, SymbolFlags.Value | SymbolFlags.ExportValue, node);
|
|
812
|
+
}
|
|
813
|
+
getContextualType(node) {
|
|
814
|
+
const data = this.client.apiRequest("getContextualType", {
|
|
815
|
+
snapshot: this.snapshotId,
|
|
816
|
+
project: this.project.id,
|
|
817
|
+
location: getNodeId(node),
|
|
818
|
+
});
|
|
819
|
+
return data ? this.objectRegistry.getOrCreateType(data) : undefined;
|
|
820
|
+
}
|
|
821
|
+
getBaseTypeOfLiteralType(type) {
|
|
822
|
+
const data = this.client.apiRequest("getBaseTypeOfLiteralType", {
|
|
823
|
+
snapshot: this.snapshotId,
|
|
824
|
+
project: this.project.id,
|
|
825
|
+
type: type.id,
|
|
826
|
+
});
|
|
827
|
+
return data ? this.objectRegistry.getOrCreateType(data) : undefined;
|
|
828
|
+
}
|
|
829
|
+
getNonNullableType(type) {
|
|
830
|
+
const data = this.client.apiRequest("getNonNullableType", {
|
|
831
|
+
snapshot: this.snapshotId,
|
|
832
|
+
project: this.project.id,
|
|
833
|
+
type: type.id,
|
|
834
|
+
});
|
|
835
|
+
return data ? this.objectRegistry.getOrCreateType(data) : undefined;
|
|
836
|
+
}
|
|
837
|
+
getTypeFromTypeNode(node) {
|
|
838
|
+
const data = this.client.apiRequest("getTypeFromTypeNode", {
|
|
839
|
+
snapshot: this.snapshotId,
|
|
840
|
+
project: this.project.id,
|
|
841
|
+
location: getNodeId(node),
|
|
842
|
+
});
|
|
843
|
+
return data ? this.objectRegistry.getOrCreateType(data) : undefined;
|
|
844
|
+
}
|
|
845
|
+
getWidenedType(type) {
|
|
846
|
+
const data = this.client.apiRequest("getWidenedType", {
|
|
847
|
+
snapshot: this.snapshotId,
|
|
848
|
+
project: this.project.id,
|
|
849
|
+
type: type.id,
|
|
850
|
+
});
|
|
851
|
+
return data ? this.objectRegistry.getOrCreateType(data) : undefined;
|
|
852
|
+
}
|
|
853
|
+
getParameterType(signature, index) {
|
|
854
|
+
const data = this.client.apiRequest("getParameterType", {
|
|
855
|
+
snapshot: this.snapshotId,
|
|
856
|
+
project: this.project.id,
|
|
857
|
+
signature: signature.id,
|
|
858
|
+
index,
|
|
859
|
+
});
|
|
860
|
+
return data ? this.objectRegistry.getOrCreateType(data) : undefined;
|
|
861
|
+
}
|
|
862
|
+
isArrayLikeType(type) {
|
|
863
|
+
return this.client.apiRequest("isArrayLikeType", {
|
|
864
|
+
snapshot: this.snapshotId,
|
|
865
|
+
project: this.project.id,
|
|
866
|
+
type: type.id,
|
|
867
|
+
});
|
|
868
|
+
}
|
|
869
|
+
isTypeAssignableTo(source, target) {
|
|
870
|
+
return this.client.apiRequest("isTypeAssignableTo", {
|
|
871
|
+
snapshot: this.snapshotId,
|
|
872
|
+
project: this.project.id,
|
|
873
|
+
source: source.id,
|
|
874
|
+
target: target.id,
|
|
875
|
+
});
|
|
876
|
+
}
|
|
877
|
+
getShorthandAssignmentValueSymbol(node) {
|
|
878
|
+
const data = this.client.apiRequest("getShorthandAssignmentValueSymbol", {
|
|
879
|
+
snapshot: this.snapshotId,
|
|
880
|
+
project: this.project.id,
|
|
881
|
+
location: getNodeId(node),
|
|
882
|
+
});
|
|
883
|
+
return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;
|
|
884
|
+
}
|
|
885
|
+
/**
|
|
886
|
+
* Get the type of a symbol as narrowed at a specific location. Always returns
|
|
887
|
+
* a type; for symbols whose type cannot be determined the checker yields the
|
|
888
|
+
* error type (use {@link Type.isErrorType} to detect it).
|
|
889
|
+
*/
|
|
890
|
+
getTypeOfSymbolAtLocation(symbol, location) {
|
|
891
|
+
const data = this.client.apiRequest("getTypeOfSymbolAtLocation", {
|
|
892
|
+
snapshot: this.snapshotId,
|
|
893
|
+
project: this.project.id,
|
|
894
|
+
symbol: symbol.id,
|
|
895
|
+
location: getNodeId(location),
|
|
896
|
+
});
|
|
897
|
+
if (!data)
|
|
898
|
+
throw new Error(`getTypeOfSymbolAtLocation returned no type for symbol ${symbol.id}`);
|
|
899
|
+
return this.objectRegistry.getOrCreateType(data);
|
|
900
|
+
}
|
|
901
|
+
getIntrinsicType(method) {
|
|
902
|
+
const data = this.client.apiRequest(method, {
|
|
903
|
+
snapshot: this.snapshotId,
|
|
904
|
+
project: this.project.id,
|
|
905
|
+
});
|
|
906
|
+
return this.objectRegistry.getOrCreateType(data);
|
|
907
|
+
}
|
|
908
|
+
getAnyType() {
|
|
909
|
+
return this.getIntrinsicType("getAnyType");
|
|
910
|
+
}
|
|
911
|
+
getStringType() {
|
|
912
|
+
return this.getIntrinsicType("getStringType");
|
|
913
|
+
}
|
|
914
|
+
getNumberType() {
|
|
915
|
+
return this.getIntrinsicType("getNumberType");
|
|
916
|
+
}
|
|
917
|
+
getBooleanType() {
|
|
918
|
+
return this.getIntrinsicType("getBooleanType");
|
|
919
|
+
}
|
|
920
|
+
getVoidType() {
|
|
921
|
+
return this.getIntrinsicType("getVoidType");
|
|
922
|
+
}
|
|
923
|
+
getUndefinedType() {
|
|
924
|
+
return this.getIntrinsicType("getUndefinedType");
|
|
925
|
+
}
|
|
926
|
+
getNullType() {
|
|
927
|
+
return this.getIntrinsicType("getNullType");
|
|
928
|
+
}
|
|
929
|
+
getNeverType() {
|
|
930
|
+
return this.getIntrinsicType("getNeverType");
|
|
931
|
+
}
|
|
932
|
+
getUnknownType() {
|
|
933
|
+
return this.getIntrinsicType("getUnknownType");
|
|
934
|
+
}
|
|
935
|
+
getBigIntType() {
|
|
936
|
+
return this.getIntrinsicType("getBigIntType");
|
|
937
|
+
}
|
|
938
|
+
getESSymbolType() {
|
|
939
|
+
return this.getIntrinsicType("getESSymbolType");
|
|
940
|
+
}
|
|
941
|
+
typeToTypeNode(type, enclosingDeclaration, flags) {
|
|
942
|
+
const binaryData = this.client.apiRequestBinary("typeToTypeNode", {
|
|
943
|
+
snapshot: this.snapshotId,
|
|
944
|
+
project: this.project.id,
|
|
945
|
+
type: type.id,
|
|
946
|
+
location: enclosingDeclaration ? getNodeId(enclosingDeclaration) : undefined,
|
|
947
|
+
flags,
|
|
948
|
+
});
|
|
949
|
+
if (!binaryData)
|
|
950
|
+
return undefined;
|
|
951
|
+
return decodeNode(binaryData);
|
|
952
|
+
}
|
|
953
|
+
signatureToSignatureDeclaration(signature, kind, enclosingDeclaration, flags) {
|
|
954
|
+
const binaryData = this.client.apiRequestBinary("signatureToSignatureDeclaration", {
|
|
955
|
+
snapshot: this.snapshotId,
|
|
956
|
+
project: this.project.id,
|
|
957
|
+
signature: signature.id,
|
|
958
|
+
kind,
|
|
959
|
+
location: enclosingDeclaration ? getNodeId(enclosingDeclaration) : undefined,
|
|
960
|
+
flags,
|
|
961
|
+
});
|
|
962
|
+
if (!binaryData)
|
|
963
|
+
return undefined;
|
|
964
|
+
return decodeNode(binaryData);
|
|
965
|
+
}
|
|
966
|
+
typeToString(type, enclosingDeclaration, flags) {
|
|
967
|
+
return this.client.apiRequest("typeToString", {
|
|
968
|
+
snapshot: this.snapshotId,
|
|
969
|
+
project: this.project.id,
|
|
970
|
+
type: type.id,
|
|
971
|
+
location: enclosingDeclaration ? getNodeId(enclosingDeclaration) : undefined,
|
|
972
|
+
flags,
|
|
973
|
+
});
|
|
974
|
+
}
|
|
975
|
+
isContextSensitive(node) {
|
|
976
|
+
return this.client.apiRequest("isContextSensitive", {
|
|
977
|
+
snapshot: this.snapshotId,
|
|
978
|
+
project: this.project.id,
|
|
979
|
+
location: getNodeId(node),
|
|
980
|
+
});
|
|
981
|
+
}
|
|
982
|
+
isArrayType(type) {
|
|
983
|
+
return this.client.apiRequest("isArrayType", {
|
|
984
|
+
snapshot: this.snapshotId,
|
|
985
|
+
project: this.project.id,
|
|
986
|
+
type: type.id,
|
|
987
|
+
});
|
|
988
|
+
}
|
|
989
|
+
isTupleType(type) {
|
|
990
|
+
return this.client.apiRequest("isTupleType", {
|
|
991
|
+
snapshot: this.snapshotId,
|
|
992
|
+
project: this.project.id,
|
|
993
|
+
type: type.id,
|
|
994
|
+
});
|
|
995
|
+
}
|
|
996
|
+
getReturnTypeOfSignature(signature) {
|
|
997
|
+
const data = this.client.apiRequest("getReturnTypeOfSignature", {
|
|
998
|
+
snapshot: this.snapshotId,
|
|
999
|
+
project: this.project.id,
|
|
1000
|
+
signature: signature.id,
|
|
1001
|
+
});
|
|
1002
|
+
return data ? this.objectRegistry.getOrCreateType(data) : undefined;
|
|
1003
|
+
}
|
|
1004
|
+
getRestTypeOfSignature(signature) {
|
|
1005
|
+
const data = this.client.apiRequest("getRestTypeOfSignature", {
|
|
1006
|
+
snapshot: this.snapshotId,
|
|
1007
|
+
project: this.project.id,
|
|
1008
|
+
signature: signature.id,
|
|
1009
|
+
});
|
|
1010
|
+
return data ? this.objectRegistry.getOrCreateType(data) : undefined;
|
|
1011
|
+
}
|
|
1012
|
+
getTypePredicateOfSignature(signature) {
|
|
1013
|
+
const data = this.client.apiRequest("getTypePredicateOfSignature", {
|
|
1014
|
+
snapshot: this.snapshotId,
|
|
1015
|
+
project: this.project.id,
|
|
1016
|
+
signature: signature.id,
|
|
1017
|
+
});
|
|
1018
|
+
if (!data)
|
|
1019
|
+
return undefined;
|
|
1020
|
+
return {
|
|
1021
|
+
kind: data.kind,
|
|
1022
|
+
parameterIndex: data.parameterIndex,
|
|
1023
|
+
parameterName: data.parameterName,
|
|
1024
|
+
type: data.type ? this.objectRegistry.getOrCreateType(data.type) : undefined,
|
|
1025
|
+
};
|
|
1026
|
+
}
|
|
1027
|
+
/**
|
|
1028
|
+
* Get the base types of a class or interface type. A type with no base types
|
|
1029
|
+
* yields an empty array.
|
|
1030
|
+
*/
|
|
1031
|
+
getBaseTypes(type) {
|
|
1032
|
+
const data = this.client.apiRequest("getBaseTypes", {
|
|
1033
|
+
snapshot: this.snapshotId,
|
|
1034
|
+
project: this.project.id,
|
|
1035
|
+
type: type.id,
|
|
1036
|
+
});
|
|
1037
|
+
return data ? data.map(d => this.objectRegistry.getOrCreateType(d)) : [];
|
|
1038
|
+
}
|
|
1039
|
+
getApparentType(type) {
|
|
1040
|
+
const data = this.client.apiRequest("getApparentType", {
|
|
1041
|
+
snapshot: this.snapshotId,
|
|
1042
|
+
project: this.project.id,
|
|
1043
|
+
type: type.id,
|
|
1044
|
+
});
|
|
1045
|
+
return data ? this.objectRegistry.getOrCreateType(data) : undefined;
|
|
1046
|
+
}
|
|
1047
|
+
getPropertiesOfType(type) {
|
|
1048
|
+
const data = this.client.apiRequest("getPropertiesOfType", {
|
|
1049
|
+
snapshot: this.snapshotId,
|
|
1050
|
+
project: this.project.id,
|
|
1051
|
+
type: type.id,
|
|
1052
|
+
});
|
|
1053
|
+
return data ? data.map(d => this.objectRegistry.getOrCreateSymbol(d)) : [];
|
|
1054
|
+
}
|
|
1055
|
+
getIndexInfosOfType(type) {
|
|
1056
|
+
const data = this.client.apiRequest("getIndexInfosOfType", {
|
|
1057
|
+
snapshot: this.snapshotId,
|
|
1058
|
+
project: this.project.id,
|
|
1059
|
+
type: type.id,
|
|
1060
|
+
});
|
|
1061
|
+
if (!data)
|
|
1062
|
+
return [];
|
|
1063
|
+
return data.map(d => ({
|
|
1064
|
+
keyType: this.objectRegistry.getOrCreateType(d.keyType),
|
|
1065
|
+
valueType: this.objectRegistry.getOrCreateType(d.valueType),
|
|
1066
|
+
isReadonly: d.isReadonly ?? false,
|
|
1067
|
+
declaration: d.declaration ? new NodeHandle(d.declaration, this.project) : undefined,
|
|
1068
|
+
}));
|
|
1069
|
+
}
|
|
1070
|
+
/**
|
|
1071
|
+
* Get the constraint of a type parameter (the `T` in `<U extends T>`), or
|
|
1072
|
+
* undefined if it has none.
|
|
1073
|
+
*/
|
|
1074
|
+
getConstraintOfTypeParameter(type) {
|
|
1075
|
+
const data = this.client.apiRequest("getConstraintOfTypeParameter", {
|
|
1076
|
+
snapshot: this.snapshotId,
|
|
1077
|
+
project: this.project.id,
|
|
1078
|
+
type: type.id,
|
|
1079
|
+
});
|
|
1080
|
+
return data ? this.objectRegistry.getOrCreateType(data) : undefined;
|
|
1081
|
+
}
|
|
1082
|
+
getBaseConstraintOfType(type) {
|
|
1083
|
+
const data = this.client.apiRequest("getBaseConstraintOfType", {
|
|
1084
|
+
snapshot: this.snapshotId,
|
|
1085
|
+
project: this.project.id,
|
|
1086
|
+
type: type.id,
|
|
1087
|
+
});
|
|
1088
|
+
return data ? this.objectRegistry.getOrCreateType(data) : undefined;
|
|
1089
|
+
}
|
|
1090
|
+
getPropertyOfType(type, name) {
|
|
1091
|
+
const data = this.client.apiRequest("getPropertyOfType", {
|
|
1092
|
+
snapshot: this.snapshotId,
|
|
1093
|
+
project: this.project.id,
|
|
1094
|
+
type: type.id,
|
|
1095
|
+
name,
|
|
1096
|
+
});
|
|
1097
|
+
return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;
|
|
1098
|
+
}
|
|
1099
|
+
getConstantValue(node) {
|
|
1100
|
+
const data = this.client.apiRequest("getConstantValue", {
|
|
1101
|
+
snapshot: this.snapshotId,
|
|
1102
|
+
project: this.project.id,
|
|
1103
|
+
location: getNodeId(node),
|
|
1104
|
+
});
|
|
1105
|
+
return data ?? undefined;
|
|
1106
|
+
}
|
|
1107
|
+
getSignatureFromDeclaration(node) {
|
|
1108
|
+
const data = this.client.apiRequest("getSignatureFromDeclaration", {
|
|
1109
|
+
snapshot: this.snapshotId,
|
|
1110
|
+
project: this.project.id,
|
|
1111
|
+
location: getNodeId(node),
|
|
1112
|
+
});
|
|
1113
|
+
return data ? this.objectRegistry.getOrCreateSignature(data) : undefined;
|
|
1114
|
+
}
|
|
1115
|
+
getExportSpecifierLocalTargetSymbol(node) {
|
|
1116
|
+
const data = this.client.apiRequest("getExportSpecifierLocalTargetSymbol", {
|
|
1117
|
+
snapshot: this.snapshotId,
|
|
1118
|
+
project: this.project.id,
|
|
1119
|
+
location: getNodeId(node),
|
|
1120
|
+
});
|
|
1121
|
+
return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;
|
|
1122
|
+
}
|
|
1123
|
+
/**
|
|
1124
|
+
* Follow all aliases to get the original symbol. Always returns a symbol; for
|
|
1125
|
+
* an unresolved alias the checker yields the unknown symbol (use
|
|
1126
|
+
* {@link Checker.isUnknownSymbol} to detect it).
|
|
1127
|
+
*/
|
|
1128
|
+
getAliasedSymbol(symbol) {
|
|
1129
|
+
const data = this.client.apiRequest("getAliasedSymbol", {
|
|
1130
|
+
snapshot: this.snapshotId,
|
|
1131
|
+
project: this.project.id,
|
|
1132
|
+
symbol: symbol.id,
|
|
1133
|
+
});
|
|
1134
|
+
if (!data)
|
|
1135
|
+
throw new Error(`getAliasedSymbol returned no symbol for symbol ${symbol.id}`);
|
|
1136
|
+
return this.objectRegistry.getOrCreateSymbol(data);
|
|
1137
|
+
}
|
|
1138
|
+
getImmediateAliasedSymbol(symbol) {
|
|
1139
|
+
const data = this.client.apiRequest("getImmediateAliasedSymbol", {
|
|
1140
|
+
snapshot: this.snapshotId,
|
|
1141
|
+
project: this.project.id,
|
|
1142
|
+
symbol: symbol.id,
|
|
1143
|
+
});
|
|
1144
|
+
return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;
|
|
1145
|
+
}
|
|
1146
|
+
/**
|
|
1147
|
+
* Fetch (once, then cache) the handle ids of the per-checker singleton
|
|
1148
|
+
* symbols (unknown, undefined, arguments). These ids are stable for the life
|
|
1149
|
+
* of the project's checker, so identity checks against them are local after
|
|
1150
|
+
* the first call.
|
|
1151
|
+
*/
|
|
1152
|
+
getWellKnownSymbols() {
|
|
1153
|
+
return this.wellKnownSymbols ??= this.client.apiRequest("getWellKnownSymbols", {
|
|
1154
|
+
snapshot: this.snapshotId,
|
|
1155
|
+
project: this.project.id,
|
|
1156
|
+
});
|
|
1157
|
+
}
|
|
1158
|
+
/**
|
|
1159
|
+
* Returns `true` if the symbol is the checker's "unknown" symbol (e.g. the
|
|
1160
|
+
* result of {@link Checker.getAliasedSymbol} on an unresolved alias).
|
|
1161
|
+
*/
|
|
1162
|
+
isUnknownSymbol(symbol) {
|
|
1163
|
+
return symbol.id === (this.getWellKnownSymbols()).unknown;
|
|
1164
|
+
}
|
|
1165
|
+
/**
|
|
1166
|
+
* Returns `true` if the symbol is the checker's "undefined" symbol.
|
|
1167
|
+
*/
|
|
1168
|
+
isUndefinedSymbol(symbol) {
|
|
1169
|
+
return symbol.id === (this.getWellKnownSymbols()).undefined;
|
|
1170
|
+
}
|
|
1171
|
+
/**
|
|
1172
|
+
* Returns `true` if the symbol is the checker's "arguments" symbol.
|
|
1173
|
+
*/
|
|
1174
|
+
isArgumentsSymbol(symbol) {
|
|
1175
|
+
return symbol.id === (this.getWellKnownSymbols()).arguments;
|
|
1176
|
+
}
|
|
1177
|
+
getExportsOfModule(symbol) {
|
|
1178
|
+
const data = this.client.apiRequest("getExportsOfModule", {
|
|
1179
|
+
snapshot: this.snapshotId,
|
|
1180
|
+
project: this.project.id,
|
|
1181
|
+
symbol: symbol.id,
|
|
1182
|
+
});
|
|
1183
|
+
return data ? data.map(d => this.objectRegistry.getOrCreateSymbol(d)) : [];
|
|
1184
|
+
}
|
|
1185
|
+
getMemberInModuleExports(symbol, name) {
|
|
1186
|
+
const data = this.client.apiRequest("getMemberInModuleExports", {
|
|
1187
|
+
snapshot: this.snapshotId,
|
|
1188
|
+
project: this.project.id,
|
|
1189
|
+
symbol: symbol.id,
|
|
1190
|
+
name,
|
|
1191
|
+
});
|
|
1192
|
+
return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;
|
|
1193
|
+
}
|
|
1194
|
+
getJsDocTagsOfSymbol(symbol) {
|
|
1195
|
+
const data = this.client.apiRequest("getJsDocTags", {
|
|
1196
|
+
snapshot: this.snapshotId,
|
|
1197
|
+
project: this.project.id,
|
|
1198
|
+
symbol: symbol.id,
|
|
1199
|
+
});
|
|
1200
|
+
return data ?? [];
|
|
1201
|
+
}
|
|
1202
|
+
getDocumentationCommentOfSymbol(symbol) {
|
|
1203
|
+
return this.client.apiRequest("getDocumentationComment", {
|
|
1204
|
+
snapshot: this.snapshotId,
|
|
1205
|
+
project: this.project.id,
|
|
1206
|
+
symbol: symbol.id,
|
|
1207
|
+
});
|
|
1208
|
+
}
|
|
1209
|
+
/**
|
|
1210
|
+
* Get the type arguments of a type reference (e.g. the `string` in `Array<string>`).
|
|
1211
|
+
*/
|
|
1212
|
+
getTypeArguments(type) {
|
|
1213
|
+
const data = this.client.apiRequest("getTypeArguments", {
|
|
1214
|
+
snapshot: this.snapshotId,
|
|
1215
|
+
project: this.project.id,
|
|
1216
|
+
type: type.id,
|
|
1217
|
+
});
|
|
1218
|
+
return data ? data.map(d => this.objectRegistry.getOrCreateType(d)) : [];
|
|
1219
|
+
}
|
|
1220
|
+
}
|
|
1221
|
+
export class Emitter {
|
|
1222
|
+
client;
|
|
1223
|
+
constructor(client) {
|
|
1224
|
+
this.client = client;
|
|
1225
|
+
}
|
|
1226
|
+
printNode(node, options = {}) {
|
|
1227
|
+
const encoded = encodeNode(node);
|
|
1228
|
+
const base64 = uint8ArrayToBase64(encoded);
|
|
1229
|
+
return this.client.apiRequest("printNode", {
|
|
1230
|
+
data: base64,
|
|
1231
|
+
...options,
|
|
1232
|
+
});
|
|
1233
|
+
}
|
|
1234
|
+
}
|
|
1235
|
+
export class NodeHandle {
|
|
1236
|
+
/**
|
|
1237
|
+
* The project this handle was produced in, used as the default for {@link resolve}.
|
|
1238
|
+
* Node handles are only meaningful within a project's program, so the producing project
|
|
1239
|
+
* is remembered so callers don't have to pass it explicitly.
|
|
1240
|
+
*/
|
|
1241
|
+
canonicalProject;
|
|
1242
|
+
index;
|
|
1243
|
+
kind;
|
|
1244
|
+
path;
|
|
1245
|
+
constructor(handle, canonicalProject) {
|
|
1246
|
+
const parsed = parseNodeHandle(handle);
|
|
1247
|
+
this.index = parsed.index;
|
|
1248
|
+
this.kind = parsed.kind;
|
|
1249
|
+
this.path = parsed.path;
|
|
1250
|
+
this.canonicalProject = canonicalProject;
|
|
1251
|
+
}
|
|
1252
|
+
/**
|
|
1253
|
+
* Resolve this handle to the actual AST node by fetching the source file from a project
|
|
1254
|
+
* and looking up the node by index. If no project is passed, the project that produced
|
|
1255
|
+
* the handle is used.
|
|
1256
|
+
*/
|
|
1257
|
+
resolve(project = this.canonicalProject) {
|
|
1258
|
+
const sourceFile = project.program.getSourceFile(this.path);
|
|
1259
|
+
if (!sourceFile) {
|
|
1260
|
+
return undefined;
|
|
1261
|
+
}
|
|
1262
|
+
return sourceFile.getOrCreateNodeAtIndex(this.index);
|
|
1263
|
+
}
|
|
1264
|
+
}
|
|
1265
|
+
export class Symbol {
|
|
1266
|
+
objectRegistry;
|
|
1267
|
+
/**
|
|
1268
|
+
* The project this symbol was first observed in, used as the default project for
|
|
1269
|
+
* lookups that need a project context (members/exports/parent). Symbols are shared
|
|
1270
|
+
* snapshot-wide, so these lookups can otherwise be ambiguous about which project to use.
|
|
1271
|
+
*/
|
|
1272
|
+
canonicalProject;
|
|
1273
|
+
id;
|
|
1274
|
+
/** The escaped (`__String`) name, used as the key in member/export tables. */
|
|
1275
|
+
escapedName;
|
|
1276
|
+
/** The display name (escaped underscores removed). */
|
|
1277
|
+
name;
|
|
1278
|
+
flags;
|
|
1279
|
+
checkFlags;
|
|
1280
|
+
declarations;
|
|
1281
|
+
valueDeclaration;
|
|
1282
|
+
parent;
|
|
1283
|
+
exportSymbol;
|
|
1284
|
+
membersCache;
|
|
1285
|
+
exportsCache;
|
|
1286
|
+
constructor(data, objectRegistry) {
|
|
1287
|
+
this.objectRegistry = objectRegistry;
|
|
1288
|
+
this.id = data.id;
|
|
1289
|
+
this.escapedName = data.name;
|
|
1290
|
+
this.name = unescapeLeadingUnderscores(data.name);
|
|
1291
|
+
this.flags = data.flags;
|
|
1292
|
+
this.checkFlags = data.checkFlags;
|
|
1293
|
+
const canonicalProject = objectRegistry.getProject(data.project);
|
|
1294
|
+
if (!canonicalProject) {
|
|
1295
|
+
throw new Error(`Symbol ${data.id} references unknown canonical project '${data.project}'`);
|
|
1296
|
+
}
|
|
1297
|
+
this.canonicalProject = canonicalProject;
|
|
1298
|
+
this.declarations = (data.declarations ?? []).map(d => new NodeHandle(d, canonicalProject));
|
|
1299
|
+
this.valueDeclaration = data.valueDeclaration ? new NodeHandle(data.valueDeclaration, canonicalProject) : undefined;
|
|
1300
|
+
if (data.parent !== undefined)
|
|
1301
|
+
this.parent = data.parent;
|
|
1302
|
+
if (data.exportSymbol !== undefined)
|
|
1303
|
+
this.exportSymbol = data.exportSymbol;
|
|
1304
|
+
}
|
|
1305
|
+
getParent() {
|
|
1306
|
+
return this.objectRegistry.fetchSymbol(this, "getParentOfSymbol", this.parent, this.canonicalProject.id);
|
|
1307
|
+
}
|
|
1308
|
+
/**
|
|
1309
|
+
* Get this symbol's members keyed by escaped name. The result is cached on
|
|
1310
|
+
* the symbol, so repeated calls do not round-trip to the server.
|
|
1311
|
+
*/
|
|
1312
|
+
getMembers() {
|
|
1313
|
+
return this.membersCache ??= this.fetchSymbolTable("getMembersOfSymbol");
|
|
1314
|
+
}
|
|
1315
|
+
/**
|
|
1316
|
+
* Get this symbol's exports keyed by escaped name. The result is cached on
|
|
1317
|
+
* the symbol, so repeated calls do not round-trip to the server.
|
|
1318
|
+
*/
|
|
1319
|
+
getExports() {
|
|
1320
|
+
return this.exportsCache ??= this.fetchSymbolTable("getExportsOfSymbol");
|
|
1321
|
+
}
|
|
1322
|
+
fetchSymbolTable(method) {
|
|
1323
|
+
const symbols = this.objectRegistry.fetchSymbols(this, method, undefined, this.canonicalProject.id);
|
|
1324
|
+
const table = new Map();
|
|
1325
|
+
for (const symbol of symbols) {
|
|
1326
|
+
table.set(symbol.escapedName, symbol);
|
|
1327
|
+
}
|
|
1328
|
+
return table;
|
|
1329
|
+
}
|
|
1330
|
+
getExportSymbol() {
|
|
1331
|
+
if (!this.exportSymbol)
|
|
1332
|
+
return this;
|
|
1333
|
+
return this.objectRegistry.fetchSymbol(this, "getExportSymbolOfSymbol", this.exportSymbol, this.canonicalProject.id);
|
|
1334
|
+
}
|
|
1335
|
+
getJsDocTags(checker) {
|
|
1336
|
+
return checker.getJsDocTagsOfSymbol(this);
|
|
1337
|
+
}
|
|
1338
|
+
getDocumentationComment(checker) {
|
|
1339
|
+
return checker.getDocumentationCommentOfSymbol(this);
|
|
1340
|
+
}
|
|
1341
|
+
}
|
|
1342
|
+
class TypeObject {
|
|
1343
|
+
objectRegistry;
|
|
1344
|
+
id;
|
|
1345
|
+
flags;
|
|
1346
|
+
objectFlags;
|
|
1347
|
+
symbol;
|
|
1348
|
+
value;
|
|
1349
|
+
intrinsicName;
|
|
1350
|
+
isThisType;
|
|
1351
|
+
freshType;
|
|
1352
|
+
regularType;
|
|
1353
|
+
target;
|
|
1354
|
+
typeParameters;
|
|
1355
|
+
outerTypeParameters;
|
|
1356
|
+
localTypeParameters;
|
|
1357
|
+
aliasTypeArguments;
|
|
1358
|
+
aliasSymbol;
|
|
1359
|
+
elementFlags;
|
|
1360
|
+
fixedLength;
|
|
1361
|
+
readonly;
|
|
1362
|
+
texts;
|
|
1363
|
+
objectType;
|
|
1364
|
+
indexType;
|
|
1365
|
+
checkType;
|
|
1366
|
+
extendsType;
|
|
1367
|
+
baseType;
|
|
1368
|
+
substConstraint;
|
|
1369
|
+
trueType; // false if not yet loaded
|
|
1370
|
+
falseType; // false if not yet loaded
|
|
1371
|
+
constructor(data, objectRegistry) {
|
|
1372
|
+
this.objectRegistry = objectRegistry;
|
|
1373
|
+
this.id = data.id;
|
|
1374
|
+
this.flags = data.flags;
|
|
1375
|
+
if (data.objectFlags !== undefined)
|
|
1376
|
+
this.objectFlags = data.objectFlags;
|
|
1377
|
+
if (data.symbol !== undefined)
|
|
1378
|
+
this.symbol = data.symbol;
|
|
1379
|
+
if (data.value != null) {
|
|
1380
|
+
// BigInt literal values are serialized as decimal strings (e.g. "-123") because
|
|
1381
|
+
// JSON cannot represent bigint. Decode them back into a real bigint here.
|
|
1382
|
+
this.value = (data.flags & TypeFlags.BigIntLiteral) ? BigInt(data.value) : data.value;
|
|
1383
|
+
}
|
|
1384
|
+
if (data.intrinsicName !== undefined)
|
|
1385
|
+
this.intrinsicName = data.intrinsicName;
|
|
1386
|
+
if (data.isThisType !== undefined)
|
|
1387
|
+
this.isThisType = data.isThisType;
|
|
1388
|
+
if (data.freshType !== undefined)
|
|
1389
|
+
this.freshType = data.freshType;
|
|
1390
|
+
if (data.regularType !== undefined)
|
|
1391
|
+
this.regularType = data.regularType;
|
|
1392
|
+
if (data.target !== undefined)
|
|
1393
|
+
this.target = data.target;
|
|
1394
|
+
this.typeParameters = data.typeParameters ?? [];
|
|
1395
|
+
this.outerTypeParameters = data.outerTypeParameters ?? [];
|
|
1396
|
+
this.localTypeParameters = data.localTypeParameters ?? [];
|
|
1397
|
+
this.aliasTypeArguments = data.aliasTypeArguments ?? [];
|
|
1398
|
+
if (data.aliasSymbol !== undefined)
|
|
1399
|
+
this.aliasSymbol = data.aliasSymbol;
|
|
1400
|
+
if (data.elementFlags !== undefined)
|
|
1401
|
+
this.elementFlags = data.elementFlags;
|
|
1402
|
+
if (data.fixedLength !== undefined)
|
|
1403
|
+
this.fixedLength = data.fixedLength;
|
|
1404
|
+
if (data.readonly !== undefined)
|
|
1405
|
+
this.readonly = data.readonly;
|
|
1406
|
+
if (data.texts !== undefined)
|
|
1407
|
+
this.texts = data.texts;
|
|
1408
|
+
if (data.objectType !== undefined)
|
|
1409
|
+
this.objectType = data.objectType;
|
|
1410
|
+
if (data.indexType !== undefined)
|
|
1411
|
+
this.indexType = data.indexType;
|
|
1412
|
+
if (data.checkType !== undefined)
|
|
1413
|
+
this.checkType = data.checkType;
|
|
1414
|
+
if (data.extendsType !== undefined)
|
|
1415
|
+
this.extendsType = data.extendsType;
|
|
1416
|
+
if (data.baseType !== undefined)
|
|
1417
|
+
this.baseType = data.baseType;
|
|
1418
|
+
if (data.substConstraint !== undefined)
|
|
1419
|
+
this.substConstraint = data.substConstraint;
|
|
1420
|
+
this.trueType = false;
|
|
1421
|
+
this.falseType = false;
|
|
1422
|
+
}
|
|
1423
|
+
getSymbol() {
|
|
1424
|
+
return this.objectRegistry.fetchSymbol(this, "getSymbolOfType", this.symbol);
|
|
1425
|
+
}
|
|
1426
|
+
getAliasSymbol() {
|
|
1427
|
+
return this.objectRegistry.fetchSymbol(this, "getAliasSymbolOfType", this.aliasSymbol);
|
|
1428
|
+
}
|
|
1429
|
+
getTarget() {
|
|
1430
|
+
return this.objectRegistry.fetchType(this, "getTargetOfType", this.target);
|
|
1431
|
+
}
|
|
1432
|
+
getFreshType() {
|
|
1433
|
+
return this.objectRegistry.fetchType(this, "getFreshTypeOfType", this.freshType);
|
|
1434
|
+
}
|
|
1435
|
+
getRegularType() {
|
|
1436
|
+
return this.objectRegistry.fetchType(this, "getRegularTypeOfType", this.regularType);
|
|
1437
|
+
}
|
|
1438
|
+
getTypes() {
|
|
1439
|
+
// Only union, intersection, and template literal types have constituent
|
|
1440
|
+
// types; any other kind has none, so return undefined rather than sending
|
|
1441
|
+
// a request the server cannot satisfy.
|
|
1442
|
+
if (!(this.flags & (TypeFlags.UnionOrIntersection | TypeFlags.TemplateLiteral))) {
|
|
1443
|
+
return undefined;
|
|
1444
|
+
}
|
|
1445
|
+
return this.objectRegistry.fetchTypes(this, "getTypesOfType");
|
|
1446
|
+
}
|
|
1447
|
+
getTypeParameters() {
|
|
1448
|
+
return this.objectRegistry.fetchTypes(this, "getTypeParametersOfType", this.typeParameters);
|
|
1449
|
+
}
|
|
1450
|
+
getOuterTypeParameters() {
|
|
1451
|
+
return this.objectRegistry.fetchTypes(this, "getOuterTypeParametersOfType", this.outerTypeParameters);
|
|
1452
|
+
}
|
|
1453
|
+
getLocalTypeParameters() {
|
|
1454
|
+
return this.objectRegistry.fetchTypes(this, "getLocalTypeParametersOfType", this.localTypeParameters);
|
|
1455
|
+
}
|
|
1456
|
+
getAliasTypeArguments() {
|
|
1457
|
+
return this.objectRegistry.fetchTypes(this, "getAliasTypeArgumentsOfType", this.aliasTypeArguments);
|
|
1458
|
+
}
|
|
1459
|
+
getObjectType() {
|
|
1460
|
+
return this.objectRegistry.fetchType(this, "getObjectTypeOfType", this.objectType);
|
|
1461
|
+
}
|
|
1462
|
+
getIndexType() {
|
|
1463
|
+
return this.objectRegistry.fetchType(this, "getIndexTypeOfType", this.indexType);
|
|
1464
|
+
}
|
|
1465
|
+
getCheckType() {
|
|
1466
|
+
return this.objectRegistry.fetchType(this, "getCheckTypeOfType", this.checkType);
|
|
1467
|
+
}
|
|
1468
|
+
getExtendsType() {
|
|
1469
|
+
return this.objectRegistry.fetchType(this, "getExtendsTypeOfType", this.extendsType);
|
|
1470
|
+
}
|
|
1471
|
+
getBaseType() {
|
|
1472
|
+
return this.objectRegistry.fetchType(this, "getBaseTypeOfType", this.baseType);
|
|
1473
|
+
}
|
|
1474
|
+
getConstraint() {
|
|
1475
|
+
return this.objectRegistry.fetchType(this, "getConstraintOfType", this.substConstraint);
|
|
1476
|
+
}
|
|
1477
|
+
getTrueType() {
|
|
1478
|
+
const result = this.objectRegistry.fetchType(this, "getTrueTypeOfConditionalType", this.trueType);
|
|
1479
|
+
this.trueType = result.id;
|
|
1480
|
+
return result;
|
|
1481
|
+
}
|
|
1482
|
+
getFalseType() {
|
|
1483
|
+
const result = this.objectRegistry.fetchType(this, "getFalseTypeOfConditionalType", this.falseType);
|
|
1484
|
+
this.falseType = result.id;
|
|
1485
|
+
return result;
|
|
1486
|
+
}
|
|
1487
|
+
/**
|
|
1488
|
+
* Get the base types of this type. Returns `undefined` for any type that is
|
|
1489
|
+
* not a class or interface.
|
|
1490
|
+
*/
|
|
1491
|
+
getBaseTypes() {
|
|
1492
|
+
if (!this.isClassOrInterface()) {
|
|
1493
|
+
return undefined;
|
|
1494
|
+
}
|
|
1495
|
+
return this.objectRegistry.fetchBaseTypes(this);
|
|
1496
|
+
}
|
|
1497
|
+
isClassOrInterface() {
|
|
1498
|
+
return isClassOrInterfaceType(this);
|
|
1499
|
+
}
|
|
1500
|
+
isUnionType() {
|
|
1501
|
+
return isUnionType(this);
|
|
1502
|
+
}
|
|
1503
|
+
isIntersectionType() {
|
|
1504
|
+
return isIntersectionType(this);
|
|
1505
|
+
}
|
|
1506
|
+
isObjectType() {
|
|
1507
|
+
return isObjectType(this);
|
|
1508
|
+
}
|
|
1509
|
+
isIntrinsicType() {
|
|
1510
|
+
return isIntrinsicType(this);
|
|
1511
|
+
}
|
|
1512
|
+
isErrorType() {
|
|
1513
|
+
return isErrorType(this);
|
|
1514
|
+
}
|
|
1515
|
+
isLiteralType() {
|
|
1516
|
+
return isLiteralType(this);
|
|
1517
|
+
}
|
|
1518
|
+
isStringLiteralType() {
|
|
1519
|
+
return isStringLiteralType(this);
|
|
1520
|
+
}
|
|
1521
|
+
isNumberLiteralType() {
|
|
1522
|
+
return isNumberLiteralType(this);
|
|
1523
|
+
}
|
|
1524
|
+
isBigIntLiteralType() {
|
|
1525
|
+
return isBigIntLiteralType(this);
|
|
1526
|
+
}
|
|
1527
|
+
isBooleanLiteralType() {
|
|
1528
|
+
return isBooleanLiteralType(this);
|
|
1529
|
+
}
|
|
1530
|
+
isTypeReference() {
|
|
1531
|
+
return isTypeReference(this);
|
|
1532
|
+
}
|
|
1533
|
+
isTupleType() {
|
|
1534
|
+
return isTupleType(this);
|
|
1535
|
+
}
|
|
1536
|
+
isIndexType() {
|
|
1537
|
+
return isIndexType(this);
|
|
1538
|
+
}
|
|
1539
|
+
isIndexedAccessType() {
|
|
1540
|
+
return isIndexedAccessType(this);
|
|
1541
|
+
}
|
|
1542
|
+
isConditionalType() {
|
|
1543
|
+
return isConditionalType(this);
|
|
1544
|
+
}
|
|
1545
|
+
isSubstitutionType() {
|
|
1546
|
+
return isSubstitutionType(this);
|
|
1547
|
+
}
|
|
1548
|
+
isTemplateLiteralType() {
|
|
1549
|
+
return isTemplateLiteralType(this);
|
|
1550
|
+
}
|
|
1551
|
+
isStringMappingType() {
|
|
1552
|
+
return isStringMappingType(this);
|
|
1553
|
+
}
|
|
1554
|
+
isTypeParameter() {
|
|
1555
|
+
return isTypeParameter(this);
|
|
1556
|
+
}
|
|
1557
|
+
}
|
|
1558
|
+
export function isUnionType(type) {
|
|
1559
|
+
return (type.flags & TypeFlags.Union) !== 0;
|
|
1560
|
+
}
|
|
1561
|
+
export function isIntersectionType(type) {
|
|
1562
|
+
return (type.flags & TypeFlags.Intersection) !== 0;
|
|
1563
|
+
}
|
|
1564
|
+
export function isObjectType(type) {
|
|
1565
|
+
return (type.flags & TypeFlags.Object) !== 0;
|
|
1566
|
+
}
|
|
1567
|
+
export function isClassOrInterfaceType(type) {
|
|
1568
|
+
return isObjectType(type) && (type.objectFlags & ObjectFlags.ClassOrInterface) !== 0;
|
|
1569
|
+
}
|
|
1570
|
+
export function isIntrinsicType(type) {
|
|
1571
|
+
return (type.flags & TypeFlags.Intrinsic) !== 0;
|
|
1572
|
+
}
|
|
1573
|
+
/**
|
|
1574
|
+
* Whether this is the error type — the placeholder the checker produces when a
|
|
1575
|
+
* type cannot be determined (e.g. an unresolved reference). It is an intrinsic
|
|
1576
|
+
* type named `"error"` (this covers both the singleton error type and the
|
|
1577
|
+
* per-alias error types manufactured for unresolved type alias references).
|
|
1578
|
+
*/
|
|
1579
|
+
export function isErrorType(type) {
|
|
1580
|
+
return isIntrinsicType(type) && type.intrinsicName === "error";
|
|
1581
|
+
}
|
|
1582
|
+
export function isLiteralType(type) {
|
|
1583
|
+
return (type.flags & TypeFlags.Literal) !== 0;
|
|
1584
|
+
}
|
|
1585
|
+
export function isStringLiteralType(type) {
|
|
1586
|
+
return (type.flags & TypeFlags.StringLiteral) !== 0;
|
|
1587
|
+
}
|
|
1588
|
+
export function isNumberLiteralType(type) {
|
|
1589
|
+
return (type.flags & TypeFlags.NumberLiteral) !== 0;
|
|
1590
|
+
}
|
|
1591
|
+
export function isBigIntLiteralType(type) {
|
|
1592
|
+
return (type.flags & TypeFlags.BigIntLiteral) !== 0;
|
|
1593
|
+
}
|
|
1594
|
+
export function isBooleanLiteralType(type) {
|
|
1595
|
+
return (type.flags & TypeFlags.BooleanLiteral) !== 0;
|
|
1596
|
+
}
|
|
1597
|
+
export function isTypeReference(type) {
|
|
1598
|
+
return isObjectType(type) && (type.objectFlags & ObjectFlags.Reference) !== 0;
|
|
1599
|
+
}
|
|
1600
|
+
export function isTupleType(type) {
|
|
1601
|
+
return isObjectType(type) && (type.objectFlags & ObjectFlags.Tuple) !== 0;
|
|
1602
|
+
}
|
|
1603
|
+
export function isIndexType(type) {
|
|
1604
|
+
return (type.flags & TypeFlags.Index) !== 0;
|
|
1605
|
+
}
|
|
1606
|
+
export function isIndexedAccessType(type) {
|
|
1607
|
+
return (type.flags & TypeFlags.IndexedAccess) !== 0;
|
|
1608
|
+
}
|
|
1609
|
+
export function isConditionalType(type) {
|
|
1610
|
+
return (type.flags & TypeFlags.Conditional) !== 0;
|
|
1611
|
+
}
|
|
1612
|
+
export function isSubstitutionType(type) {
|
|
1613
|
+
return (type.flags & TypeFlags.Substitution) !== 0;
|
|
1614
|
+
}
|
|
1615
|
+
export function isTemplateLiteralType(type) {
|
|
1616
|
+
return (type.flags & TypeFlags.TemplateLiteral) !== 0;
|
|
1617
|
+
}
|
|
1618
|
+
export function isStringMappingType(type) {
|
|
1619
|
+
return (type.flags & TypeFlags.StringMapping) !== 0;
|
|
1620
|
+
}
|
|
1621
|
+
export function isTypeParameter(type) {
|
|
1622
|
+
return (type.flags & TypeFlags.TypeParameter) !== 0;
|
|
1623
|
+
}
|
|
1624
|
+
export class Signature {
|
|
1625
|
+
flags;
|
|
1626
|
+
objectRegistry;
|
|
1627
|
+
id;
|
|
1628
|
+
declaration;
|
|
1629
|
+
typeParameters;
|
|
1630
|
+
parameters;
|
|
1631
|
+
thisParameter;
|
|
1632
|
+
target;
|
|
1633
|
+
constructor(data, project, objectRegistry) {
|
|
1634
|
+
this.id = data.id;
|
|
1635
|
+
this.flags = data.flags;
|
|
1636
|
+
this.objectRegistry = objectRegistry;
|
|
1637
|
+
this.declaration = data.declaration ? new NodeHandle(data.declaration, project) : undefined;
|
|
1638
|
+
this.typeParameters = data.typeParameters ?? [];
|
|
1639
|
+
this.parameters = data.parameters ?? [];
|
|
1640
|
+
this.thisParameter = data.thisParameter;
|
|
1641
|
+
this.target = data.target;
|
|
1642
|
+
}
|
|
1643
|
+
getTypeParameters() {
|
|
1644
|
+
return this.objectRegistry.fetchTypes(this, "getTypeParametersOfSignature", this.typeParameters);
|
|
1645
|
+
}
|
|
1646
|
+
getParameters() {
|
|
1647
|
+
return this.objectRegistry.fetchSymbols(this, "getParametersOfSignature", this.parameters);
|
|
1648
|
+
}
|
|
1649
|
+
getThisParameter() {
|
|
1650
|
+
return this.objectRegistry.fetchSymbol(this, "getThisParameterOfSignature", this.thisParameter);
|
|
1651
|
+
}
|
|
1652
|
+
getTarget() {
|
|
1653
|
+
return this.objectRegistry.fetchSignature(this, "getTargetOfSignature", this.target);
|
|
1654
|
+
}
|
|
1655
|
+
get hasRestParameter() {
|
|
1656
|
+
return (this.flags & SignatureFlags.HasRestParameter) !== 0;
|
|
1657
|
+
}
|
|
1658
|
+
get isConstruct() {
|
|
1659
|
+
return (this.flags & SignatureFlags.Construct) !== 0;
|
|
1660
|
+
}
|
|
1661
|
+
get isAbstract() {
|
|
1662
|
+
return (this.flags & SignatureFlags.Abstract) !== 0;
|
|
1663
|
+
}
|
|
1664
|
+
}
|
|
1665
|
+
//# sourceMappingURL=api.js.map
|