@topce/native-preview 7.0.0-dev.20260215 → 7.0.0-dev.20260711.3
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/NOTICE.txt +436 -0
- package/README.md +3 -1
- package/bin/tsgo +2 -0
- package/dist/api/async/api.d.ts +576 -0
- package/dist/api/async/api.d.ts.map +1 -0
- package/dist/api/async/api.js +1695 -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/objectRegistry.d.ts +38 -0
- package/dist/api/objectRegistry.d.ts.map +1 -0
- package/dist/api/objectRegistry.js +55 -0
- package/dist/api/objectRegistry.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 +576 -0
- package/dist/api/sync/api.d.ts.map +1 -0
- package/dist/api/sync/api.js +1703 -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 +17 -5
- package/{bin → lib}/tsgo.js +28 -18
- package/lib/version.cjs +3 -0
- package/lib/version.d.cts +2 -0
- package/package.json +66 -13
- 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
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns length of the root part of a path or URL (i.e. length of "/", "x:/", "//server/share/, file:///user/files").
|
|
3
|
+
*
|
|
4
|
+
* For example:
|
|
5
|
+
* ```ts
|
|
6
|
+
* getRootLength("a") === 0 // ""
|
|
7
|
+
* getRootLength("/") === 1 // "/"
|
|
8
|
+
* getRootLength("c:") === 2 // "c:"
|
|
9
|
+
* getRootLength("c:d") === 0 // ""
|
|
10
|
+
* getRootLength("c:/") === 3 // "c:/"
|
|
11
|
+
* getRootLength("c:\\") === 3 // "c:\\"
|
|
12
|
+
* getRootLength("//server") === 7 // "//server"
|
|
13
|
+
* getRootLength("//server/share") === 8 // "//server/"
|
|
14
|
+
* getRootLength("\\\\server") === 7 // "\\\\server"
|
|
15
|
+
* getRootLength("\\\\server\\share") === 8 // "\\\\server\\"
|
|
16
|
+
* getRootLength("file:///path") === 8 // "file:///"
|
|
17
|
+
* getRootLength("file:///c:") === 10 // "file:///c:"
|
|
18
|
+
* getRootLength("file:///c:d") === 8 // "file:///"
|
|
19
|
+
* getRootLength("file:///c:/path") === 11 // "file:///c:/"
|
|
20
|
+
* getRootLength("file://server") === 13 // "file://server"
|
|
21
|
+
* getRootLength("file://server/path") === 14 // "file://server/"
|
|
22
|
+
* getRootLength("http://server") === 13 // "http://server"
|
|
23
|
+
* getRootLength("http://server/path") === 14 // "http://server/"
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
export declare function getRootLength(path: string): number;
|
|
29
|
+
export declare function getPathComponents(path: string): string[];
|
|
30
|
+
/**
|
|
31
|
+
* Determines whether a path has a trailing separator (`/` or `\\`).
|
|
32
|
+
*/
|
|
33
|
+
export declare function hasTrailingDirectorySeparator(path: string): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Removes a trailing directory separator from a path, if it does not already have one.
|
|
36
|
+
*/
|
|
37
|
+
export declare function removeTrailingDirectorySeparator(path: string): string;
|
|
38
|
+
/**
|
|
39
|
+
* Adds a trailing directory separator to a path, if it does not already have one.
|
|
40
|
+
*/
|
|
41
|
+
export declare function ensureTrailingDirectorySeparator(path: string): string;
|
|
42
|
+
/**
|
|
43
|
+
* Normalize path separators, converting `\\` into `/`.
|
|
44
|
+
*/
|
|
45
|
+
export declare function normalizeSlashes(path: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Combines paths. If a path is absolute, it replaces any previous path. Relative paths are not simplified.
|
|
48
|
+
*/
|
|
49
|
+
export declare function combinePaths(path: string, ...paths: (string | undefined)[]): string;
|
|
50
|
+
/**
|
|
51
|
+
* Returns the normalized absolute path, resolving `.` and `..` segments.
|
|
52
|
+
*/
|
|
53
|
+
export declare function getNormalizedAbsolutePath(path: string, currentDirectory: string | undefined): string;
|
|
54
|
+
/**
|
|
55
|
+
* Normalizes a path, resolving `.` and `..` segments and converting backslashes to forward slashes.
|
|
56
|
+
*/
|
|
57
|
+
export declare function normalizePath(path: string): string;
|
|
58
|
+
/**
|
|
59
|
+
* Determines whether a path is an absolute disk path (e.g. starts with `/`, or a DOS path
|
|
60
|
+
* like `c:`, `c:\\` or `c:/`).
|
|
61
|
+
*/
|
|
62
|
+
export declare function isRootedDiskPath(path: string): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Converts a file name to a normalized path.
|
|
65
|
+
*
|
|
66
|
+
* @param fileName The file name to convert
|
|
67
|
+
* @param basePath The base path to use for relative file names
|
|
68
|
+
* @param getCanonicalFileName A function to get the canonical file name (e.g., toLowerCase for case-insensitive systems)
|
|
69
|
+
* @returns The normalized path
|
|
70
|
+
*/
|
|
71
|
+
export declare function toPath(fileName: string, basePath: string | undefined, getCanonicalFileName: (path: string) => string): string;
|
|
72
|
+
/**
|
|
73
|
+
* Creates a getCanonicalFileName function based on case sensitivity.
|
|
74
|
+
*/
|
|
75
|
+
export declare function createGetCanonicalFileName(useCaseSensitiveFileNames: boolean): (fileName: string) => string;
|
|
76
|
+
/**
|
|
77
|
+
* Returns true if the path refers to a bundled library file.
|
|
78
|
+
*/
|
|
79
|
+
export declare function isBundled(path: string): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Returns true if the file name represents a dynamic/virtual file
|
|
82
|
+
* that doesn't exist on disk (e.g., untitled files with paths like "^/untitled/...").
|
|
83
|
+
*/
|
|
84
|
+
export declare function isDynamicFileName(fileName: string): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Splits a Windows volume (e.g., "c:") from the rest of the path.
|
|
87
|
+
* Returns [volume, rest, ok] where ok is true if a volume was found.
|
|
88
|
+
*/
|
|
89
|
+
export declare function splitVolumePath(path: string): [volume: string, rest: string, ok: boolean];
|
|
90
|
+
/**
|
|
91
|
+
* Converts a file name to a document URI.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* fileNameToDocumentURI("/path/to/file.ts") === "file:///path/to/file.ts"
|
|
95
|
+
* fileNameToDocumentURI("c:/path/to/file.ts") === "file:///c%3A/path/to/file.ts"
|
|
96
|
+
* fileNameToDocumentURI("^/untitled/ts-nul-authority/Untitled-1") === "untitled:Untitled-1"
|
|
97
|
+
* fileNameToDocumentURI("^/vscode-vfs/github/microsoft/typescript-go/file.ts") === "vscode-vfs://github/microsoft/typescript-go/file.ts"
|
|
98
|
+
*/
|
|
99
|
+
export declare function fileNameToDocumentURI(fileName: string): string;
|
|
100
|
+
/**
|
|
101
|
+
* Converts a document URI to a file name.
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* documentURIToFileName("file:///path/to/file.ts") === "/path/to/file.ts"
|
|
105
|
+
* documentURIToFileName("file:///c%3A/path/to/file.ts") === "c:/path/to/file.ts"
|
|
106
|
+
* documentURIToFileName("untitled:Untitled-1") === "^/untitled/ts-nul-authority/Untitled-1"
|
|
107
|
+
* documentURIToFileName("vscode-vfs://github/microsoft/typescript-go/file.ts") === "^/vscode-vfs/github/microsoft/typescript-go/file.ts"
|
|
108
|
+
*/
|
|
109
|
+
export declare function documentURIToFileName(uri: string): string;
|
|
110
|
+
//# sourceMappingURL=path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/api/path.ts"],"names":[],"mappings":"AAuCA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGlD;AAgED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAExD;AAaD;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKrE;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKrE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIrD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,MAAM,CAanF;AAqBD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CA4FpG;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQlD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAK7H;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,yBAAyB,EAAE,OAAO,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAE3G;AAYD;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAKzF;AAkCD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA8C9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAuDzD"}
|
package/dist/api/path.js
ADDED
|
@@ -0,0 +1,508 @@
|
|
|
1
|
+
const CharacterCodesSlash = "/".charCodeAt(0);
|
|
2
|
+
const CharacterCodesBackslash = "\\".charCodeAt(0);
|
|
3
|
+
const CharacterCodesColon = ":".charCodeAt(0);
|
|
4
|
+
const CharacterCodesPercent = "%".charCodeAt(0);
|
|
5
|
+
const CharacterCodes3 = "3".charCodeAt(0);
|
|
6
|
+
const CharacterCodesa = "a".charCodeAt(0);
|
|
7
|
+
const CharacterCodesz = "z".charCodeAt(0);
|
|
8
|
+
const CharacterCodesA = "A".charCodeAt(0);
|
|
9
|
+
const CharacterCodesZ = "Z".charCodeAt(0);
|
|
10
|
+
const CharacterCodesDot = ".".charCodeAt(0);
|
|
11
|
+
const directorySeparator = "/";
|
|
12
|
+
const altDirectorySeparator = "\\";
|
|
13
|
+
const urlSchemeSeparator = "://";
|
|
14
|
+
const backslashRegExp = /\\/g;
|
|
15
|
+
// check path for these segments: '', '.'. '..'
|
|
16
|
+
const relativePathSegmentRegExp = /\/\/|(?:^|\/)\.\.?(?:$|\/)/;
|
|
17
|
+
/**
|
|
18
|
+
* Determines whether a charCode corresponds to `/` or `\\`.
|
|
19
|
+
*/
|
|
20
|
+
function isAnyDirectorySeparator(charCode) {
|
|
21
|
+
return charCode === CharacterCodesSlash || charCode === CharacterCodesBackslash;
|
|
22
|
+
}
|
|
23
|
+
function isVolumeCharacter(charCode) {
|
|
24
|
+
return (charCode >= CharacterCodesa && charCode <= CharacterCodesz) ||
|
|
25
|
+
(charCode >= CharacterCodesA && charCode <= CharacterCodesZ);
|
|
26
|
+
}
|
|
27
|
+
function getFileUrlVolumeSeparatorEnd(url, start) {
|
|
28
|
+
const ch0 = url.charCodeAt(start);
|
|
29
|
+
if (ch0 === CharacterCodesColon)
|
|
30
|
+
return start + 1;
|
|
31
|
+
if (ch0 === CharacterCodesPercent && url.charCodeAt(start + 1) === CharacterCodes3) {
|
|
32
|
+
const ch2 = url.charCodeAt(start + 2);
|
|
33
|
+
if (ch2 === CharacterCodesa || ch2 === CharacterCodesA)
|
|
34
|
+
return start + 3;
|
|
35
|
+
}
|
|
36
|
+
return -1;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Returns length of the root part of a path or URL (i.e. length of "/", "x:/", "//server/share/, file:///user/files").
|
|
40
|
+
*
|
|
41
|
+
* For example:
|
|
42
|
+
* ```ts
|
|
43
|
+
* getRootLength("a") === 0 // ""
|
|
44
|
+
* getRootLength("/") === 1 // "/"
|
|
45
|
+
* getRootLength("c:") === 2 // "c:"
|
|
46
|
+
* getRootLength("c:d") === 0 // ""
|
|
47
|
+
* getRootLength("c:/") === 3 // "c:/"
|
|
48
|
+
* getRootLength("c:\\") === 3 // "c:\\"
|
|
49
|
+
* getRootLength("//server") === 7 // "//server"
|
|
50
|
+
* getRootLength("//server/share") === 8 // "//server/"
|
|
51
|
+
* getRootLength("\\\\server") === 7 // "\\\\server"
|
|
52
|
+
* getRootLength("\\\\server\\share") === 8 // "\\\\server\\"
|
|
53
|
+
* getRootLength("file:///path") === 8 // "file:///"
|
|
54
|
+
* getRootLength("file:///c:") === 10 // "file:///c:"
|
|
55
|
+
* getRootLength("file:///c:d") === 8 // "file:///"
|
|
56
|
+
* getRootLength("file:///c:/path") === 11 // "file:///c:/"
|
|
57
|
+
* getRootLength("file://server") === 13 // "file://server"
|
|
58
|
+
* getRootLength("file://server/path") === 14 // "file://server/"
|
|
59
|
+
* getRootLength("http://server") === 13 // "http://server"
|
|
60
|
+
* getRootLength("http://server/path") === 14 // "http://server/"
|
|
61
|
+
* ```
|
|
62
|
+
*
|
|
63
|
+
* @internal
|
|
64
|
+
*/
|
|
65
|
+
export function getRootLength(path) {
|
|
66
|
+
const rootLength = getEncodedRootLength(path);
|
|
67
|
+
return rootLength < 0 ? ~rootLength : rootLength;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Returns length of the root part of a path or URL (i.e. length of "/", "x:/", "//server/share/, file:///user/files").
|
|
71
|
+
* If the root is part of a URL, the twos-complement of the root length is returned.
|
|
72
|
+
*/
|
|
73
|
+
function getEncodedRootLength(path) {
|
|
74
|
+
if (!path)
|
|
75
|
+
return 0;
|
|
76
|
+
const ch0 = path.charCodeAt(0);
|
|
77
|
+
// POSIX or UNC
|
|
78
|
+
if (ch0 === CharacterCodesSlash || ch0 === CharacterCodesBackslash) {
|
|
79
|
+
if (path.charCodeAt(1) !== ch0)
|
|
80
|
+
return 1; // POSIX: "/" (or non-normalized "\")
|
|
81
|
+
const p1 = path.indexOf(ch0 === CharacterCodesSlash ? directorySeparator : altDirectorySeparator, 2);
|
|
82
|
+
if (p1 < 0)
|
|
83
|
+
return path.length; // UNC: "//server" or "\\server"
|
|
84
|
+
return p1 + 1; // UNC: "//server/" or "\\server\"
|
|
85
|
+
}
|
|
86
|
+
// DOS
|
|
87
|
+
if (isVolumeCharacter(ch0) && path.charCodeAt(1) === CharacterCodesColon) {
|
|
88
|
+
const ch2 = path.charCodeAt(2);
|
|
89
|
+
if (ch2 === CharacterCodesSlash || ch2 === CharacterCodesBackslash)
|
|
90
|
+
return 3; // DOS: "c:/" or "c:\"
|
|
91
|
+
if (path.length === 2)
|
|
92
|
+
return 2; // DOS: "c:" (but not "c:d")
|
|
93
|
+
}
|
|
94
|
+
// URL
|
|
95
|
+
const schemeEnd = path.indexOf(urlSchemeSeparator);
|
|
96
|
+
if (schemeEnd !== -1) {
|
|
97
|
+
const authorityStart = schemeEnd + urlSchemeSeparator.length;
|
|
98
|
+
const authorityEnd = path.indexOf(directorySeparator, authorityStart);
|
|
99
|
+
if (authorityEnd !== -1) { // URL: "file:///", "file://server/", "file://server/path"
|
|
100
|
+
// For local "file" URLs, include the leading DOS volume (if present).
|
|
101
|
+
// Per https://www.ietf.org/rfc/rfc1738.txt, a host of "" or "localhost" is a
|
|
102
|
+
// special case interpreted as "the machine from which the URL is being interpreted".
|
|
103
|
+
const scheme = path.slice(0, schemeEnd);
|
|
104
|
+
const authority = path.slice(authorityStart, authorityEnd);
|
|
105
|
+
if (scheme === "file" && (authority === "" || authority === "localhost") &&
|
|
106
|
+
isVolumeCharacter(path.charCodeAt(authorityEnd + 1))) {
|
|
107
|
+
const volumeSeparatorEnd = getFileUrlVolumeSeparatorEnd(path, authorityEnd + 2);
|
|
108
|
+
if (volumeSeparatorEnd !== -1) {
|
|
109
|
+
if (path.charCodeAt(volumeSeparatorEnd) === CharacterCodesSlash) {
|
|
110
|
+
// URL: "file:///c:/", "file://localhost/c:/", "file:///c%3a/", "file://localhost/c%3a/"
|
|
111
|
+
return ~(volumeSeparatorEnd + 1);
|
|
112
|
+
}
|
|
113
|
+
if (volumeSeparatorEnd === path.length) {
|
|
114
|
+
// URL: "file:///c:", "file://localhost/c:", "file:///c$3a", "file://localhost/c%3a"
|
|
115
|
+
// but not "file:///c:d" or "file:///c%3ad"
|
|
116
|
+
return ~volumeSeparatorEnd;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return ~(authorityEnd + 1); // URL: "file://server/", "http://server/"
|
|
121
|
+
}
|
|
122
|
+
return ~path.length; // URL: "file://server", "http://server"
|
|
123
|
+
}
|
|
124
|
+
// relative
|
|
125
|
+
return 0;
|
|
126
|
+
}
|
|
127
|
+
export function getPathComponents(path) {
|
|
128
|
+
return pathComponents(path, getRootLength(path));
|
|
129
|
+
}
|
|
130
|
+
function pathComponents(path, rootLength) {
|
|
131
|
+
const root = path.substring(0, rootLength);
|
|
132
|
+
const rest = path.substring(rootLength).split("/");
|
|
133
|
+
if (rest.length && !lastOrUndefined(rest))
|
|
134
|
+
rest.pop();
|
|
135
|
+
return [root, ...rest];
|
|
136
|
+
}
|
|
137
|
+
function lastOrUndefined(array) {
|
|
138
|
+
return array.length ? array[array.length - 1] : undefined;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Determines whether a path has a trailing separator (`/` or `\\`).
|
|
142
|
+
*/
|
|
143
|
+
export function hasTrailingDirectorySeparator(path) {
|
|
144
|
+
return path.length > 0 && isAnyDirectorySeparator(path.charCodeAt(path.length - 1));
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Removes a trailing directory separator from a path, if it does not already have one.
|
|
148
|
+
*/
|
|
149
|
+
export function removeTrailingDirectorySeparator(path) {
|
|
150
|
+
if (hasTrailingDirectorySeparator(path)) {
|
|
151
|
+
return path.substr(0, path.length - 1);
|
|
152
|
+
}
|
|
153
|
+
return path;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Adds a trailing directory separator to a path, if it does not already have one.
|
|
157
|
+
*/
|
|
158
|
+
export function ensureTrailingDirectorySeparator(path) {
|
|
159
|
+
if (!hasTrailingDirectorySeparator(path)) {
|
|
160
|
+
return path + directorySeparator;
|
|
161
|
+
}
|
|
162
|
+
return path;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Normalize path separators, converting `\\` into `/`.
|
|
166
|
+
*/
|
|
167
|
+
export function normalizeSlashes(path) {
|
|
168
|
+
return path.includes("\\")
|
|
169
|
+
? path.replace(backslashRegExp, directorySeparator)
|
|
170
|
+
: path;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Combines paths. If a path is absolute, it replaces any previous path. Relative paths are not simplified.
|
|
174
|
+
*/
|
|
175
|
+
export function combinePaths(path, ...paths) {
|
|
176
|
+
if (path)
|
|
177
|
+
path = normalizeSlashes(path);
|
|
178
|
+
for (let relativePath of paths) {
|
|
179
|
+
if (!relativePath)
|
|
180
|
+
continue;
|
|
181
|
+
relativePath = normalizeSlashes(relativePath);
|
|
182
|
+
if (!path || getRootLength(relativePath) !== 0) {
|
|
183
|
+
path = relativePath;
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
path = ensureTrailingDirectorySeparator(path) + relativePath;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return path;
|
|
190
|
+
}
|
|
191
|
+
function simpleNormalizePath(path) {
|
|
192
|
+
// Most paths don't require normalization
|
|
193
|
+
if (!relativePathSegmentRegExp.test(path)) {
|
|
194
|
+
return path;
|
|
195
|
+
}
|
|
196
|
+
// Some paths only require cleanup of `/./` or leading `./`
|
|
197
|
+
let simplified = path.replace(/\/\.\//g, "/");
|
|
198
|
+
if (simplified.startsWith("./")) {
|
|
199
|
+
simplified = simplified.slice(2);
|
|
200
|
+
}
|
|
201
|
+
if (simplified !== path) {
|
|
202
|
+
path = simplified;
|
|
203
|
+
if (!relativePathSegmentRegExp.test(path)) {
|
|
204
|
+
return path;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return undefined;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Returns the normalized absolute path, resolving `.` and `..` segments.
|
|
211
|
+
*/
|
|
212
|
+
export function getNormalizedAbsolutePath(path, currentDirectory) {
|
|
213
|
+
let rootLength = getRootLength(path);
|
|
214
|
+
if (rootLength === 0 && currentDirectory) {
|
|
215
|
+
path = combinePaths(currentDirectory, path);
|
|
216
|
+
rootLength = getRootLength(path);
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
// combinePaths normalizes slashes, so not necessary in the other branch
|
|
220
|
+
path = normalizeSlashes(path);
|
|
221
|
+
}
|
|
222
|
+
const simpleNormalized = simpleNormalizePath(path);
|
|
223
|
+
if (simpleNormalized !== undefined) {
|
|
224
|
+
return simpleNormalized.length > rootLength ? removeTrailingDirectorySeparator(simpleNormalized) : simpleNormalized;
|
|
225
|
+
}
|
|
226
|
+
const length = path.length;
|
|
227
|
+
const root = path.substring(0, rootLength);
|
|
228
|
+
// `normalized` is only initialized once `path` is determined to be non-normalized
|
|
229
|
+
let normalized;
|
|
230
|
+
let index = rootLength;
|
|
231
|
+
let segmentStart = index;
|
|
232
|
+
let normalizedUpTo = index;
|
|
233
|
+
let seenNonDotDotSegment = rootLength !== 0;
|
|
234
|
+
while (index < length) {
|
|
235
|
+
// At beginning of segment
|
|
236
|
+
segmentStart = index;
|
|
237
|
+
let ch = path.charCodeAt(index);
|
|
238
|
+
while (ch === CharacterCodesSlash && index + 1 < length) {
|
|
239
|
+
index++;
|
|
240
|
+
ch = path.charCodeAt(index);
|
|
241
|
+
}
|
|
242
|
+
if (index > segmentStart) {
|
|
243
|
+
// Seen superfluous separator
|
|
244
|
+
normalized ??= path.substring(0, segmentStart - 1);
|
|
245
|
+
segmentStart = index;
|
|
246
|
+
}
|
|
247
|
+
// Past any superfluous separators
|
|
248
|
+
let segmentEnd = path.indexOf(directorySeparator, index + 1);
|
|
249
|
+
if (segmentEnd === -1) {
|
|
250
|
+
segmentEnd = length;
|
|
251
|
+
}
|
|
252
|
+
const segmentLength = segmentEnd - segmentStart;
|
|
253
|
+
if (segmentLength === 1 && path.charCodeAt(index) === CharacterCodesDot) {
|
|
254
|
+
// "." segment (skip)
|
|
255
|
+
normalized ??= path.substring(0, normalizedUpTo);
|
|
256
|
+
}
|
|
257
|
+
else if (segmentLength === 2 && path.charCodeAt(index) === CharacterCodesDot && path.charCodeAt(index + 1) === CharacterCodesDot) {
|
|
258
|
+
// ".." segment
|
|
259
|
+
if (!seenNonDotDotSegment) {
|
|
260
|
+
if (normalized !== undefined) {
|
|
261
|
+
normalized += normalized.length === rootLength ? ".." : "/..";
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
normalizedUpTo = index + 2;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
else if (normalized === undefined) {
|
|
268
|
+
if (normalizedUpTo - 2 >= 0) {
|
|
269
|
+
normalized = path.substring(0, Math.max(rootLength, path.lastIndexOf(directorySeparator, normalizedUpTo - 2)));
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
normalized = path.substring(0, normalizedUpTo);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
const lastSlash = normalized.lastIndexOf(directorySeparator);
|
|
277
|
+
if (lastSlash !== -1) {
|
|
278
|
+
normalized = normalized.substring(0, Math.max(rootLength, lastSlash));
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
normalized = root;
|
|
282
|
+
}
|
|
283
|
+
if (normalized.length === rootLength) {
|
|
284
|
+
seenNonDotDotSegment = rootLength !== 0;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
else if (normalized !== undefined) {
|
|
289
|
+
if (normalized.length !== rootLength) {
|
|
290
|
+
normalized += directorySeparator;
|
|
291
|
+
}
|
|
292
|
+
seenNonDotDotSegment = true;
|
|
293
|
+
normalized += path.substring(segmentStart, segmentEnd);
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
seenNonDotDotSegment = true;
|
|
297
|
+
normalizedUpTo = segmentEnd;
|
|
298
|
+
}
|
|
299
|
+
index = segmentEnd + 1;
|
|
300
|
+
}
|
|
301
|
+
return normalized ?? (length > rootLength ? removeTrailingDirectorySeparator(path) : path);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Normalizes a path, resolving `.` and `..` segments and converting backslashes to forward slashes.
|
|
305
|
+
*/
|
|
306
|
+
export function normalizePath(path) {
|
|
307
|
+
path = normalizeSlashes(path);
|
|
308
|
+
let normalized = simpleNormalizePath(path);
|
|
309
|
+
if (normalized !== undefined) {
|
|
310
|
+
return normalized;
|
|
311
|
+
}
|
|
312
|
+
normalized = getNormalizedAbsolutePath(path, "");
|
|
313
|
+
return normalized && hasTrailingDirectorySeparator(path) ? ensureTrailingDirectorySeparator(normalized) : normalized;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Determines whether a path is an absolute disk path (e.g. starts with `/`, or a DOS path
|
|
317
|
+
* like `c:`, `c:\\` or `c:/`).
|
|
318
|
+
*/
|
|
319
|
+
export function isRootedDiskPath(path) {
|
|
320
|
+
return getEncodedRootLength(path) > 0;
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Converts a file name to a normalized path.
|
|
324
|
+
*
|
|
325
|
+
* @param fileName The file name to convert
|
|
326
|
+
* @param basePath The base path to use for relative file names
|
|
327
|
+
* @param getCanonicalFileName A function to get the canonical file name (e.g., toLowerCase for case-insensitive systems)
|
|
328
|
+
* @returns The normalized path
|
|
329
|
+
*/
|
|
330
|
+
export function toPath(fileName, basePath, getCanonicalFileName) {
|
|
331
|
+
const nonCanonicalizedPath = isRootedDiskPath(fileName)
|
|
332
|
+
? normalizePath(fileName)
|
|
333
|
+
: getNormalizedAbsolutePath(fileName, basePath);
|
|
334
|
+
return getCanonicalFileName(nonCanonicalizedPath);
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Creates a getCanonicalFileName function based on case sensitivity.
|
|
338
|
+
*/
|
|
339
|
+
export function createGetCanonicalFileName(useCaseSensitiveFileNames) {
|
|
340
|
+
return useCaseSensitiveFileNames ? identity : toLowerCase;
|
|
341
|
+
}
|
|
342
|
+
function identity(x) {
|
|
343
|
+
return x;
|
|
344
|
+
}
|
|
345
|
+
function toLowerCase(s) {
|
|
346
|
+
return s.toLowerCase();
|
|
347
|
+
}
|
|
348
|
+
const bundledScheme = "bundled:///";
|
|
349
|
+
/**
|
|
350
|
+
* Returns true if the path refers to a bundled library file.
|
|
351
|
+
*/
|
|
352
|
+
export function isBundled(path) {
|
|
353
|
+
return path.startsWith(bundledScheme);
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Returns true if the file name represents a dynamic/virtual file
|
|
357
|
+
* that doesn't exist on disk (e.g., untitled files with paths like "^/untitled/...").
|
|
358
|
+
*/
|
|
359
|
+
export function isDynamicFileName(fileName) {
|
|
360
|
+
return fileName.startsWith("^/");
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Splits a Windows volume (e.g., "c:") from the rest of the path.
|
|
364
|
+
* Returns [volume, rest, ok] where ok is true if a volume was found.
|
|
365
|
+
*/
|
|
366
|
+
export function splitVolumePath(path) {
|
|
367
|
+
if (path.length >= 2 && isVolumeCharacter(path.charCodeAt(0)) && path.charCodeAt(1) === CharacterCodesColon) {
|
|
368
|
+
return [path.substring(0, 2).toLowerCase(), path.substring(2), true];
|
|
369
|
+
}
|
|
370
|
+
return ["", path, false];
|
|
371
|
+
}
|
|
372
|
+
// Characters that need extra escaping in URI path segments
|
|
373
|
+
// https://github.com/microsoft/vscode-uri/blob/edfdccd976efaf4bb8fdeca87e97c47257721729/src/uri.ts#L455
|
|
374
|
+
const extraEscapeChars = {
|
|
375
|
+
":": "%3A",
|
|
376
|
+
"/": "%2F",
|
|
377
|
+
"?": "%3F",
|
|
378
|
+
"#": "%23",
|
|
379
|
+
"[": "%5B",
|
|
380
|
+
"]": "%5D",
|
|
381
|
+
"@": "%40",
|
|
382
|
+
"!": "%21",
|
|
383
|
+
"$": "%24",
|
|
384
|
+
"&": "%26",
|
|
385
|
+
"'": "%27",
|
|
386
|
+
"(": "%28",
|
|
387
|
+
")": "%29",
|
|
388
|
+
"*": "%2A",
|
|
389
|
+
"+": "%2B",
|
|
390
|
+
",": "%2C",
|
|
391
|
+
";": "%3B",
|
|
392
|
+
"=": "%3D",
|
|
393
|
+
" ": "%20",
|
|
394
|
+
};
|
|
395
|
+
function extraEscape(s) {
|
|
396
|
+
let result = s;
|
|
397
|
+
for (const [char, escape] of Object.entries(extraEscapeChars)) {
|
|
398
|
+
result = result.replaceAll(char, escape);
|
|
399
|
+
}
|
|
400
|
+
return result;
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Converts a file name to a document URI.
|
|
404
|
+
*
|
|
405
|
+
* @example
|
|
406
|
+
* fileNameToDocumentURI("/path/to/file.ts") === "file:///path/to/file.ts"
|
|
407
|
+
* fileNameToDocumentURI("c:/path/to/file.ts") === "file:///c%3A/path/to/file.ts"
|
|
408
|
+
* fileNameToDocumentURI("^/untitled/ts-nul-authority/Untitled-1") === "untitled:Untitled-1"
|
|
409
|
+
* fileNameToDocumentURI("^/vscode-vfs/github/microsoft/typescript-go/file.ts") === "vscode-vfs://github/microsoft/typescript-go/file.ts"
|
|
410
|
+
*/
|
|
411
|
+
export function fileNameToDocumentURI(fileName) {
|
|
412
|
+
// Bundled files are returned as-is
|
|
413
|
+
if (isBundled(fileName)) {
|
|
414
|
+
return fileName;
|
|
415
|
+
}
|
|
416
|
+
// Dynamic/virtual files (untitled, vscode-vfs, etc.) need special handling
|
|
417
|
+
if (isDynamicFileName(fileName)) {
|
|
418
|
+
// Format: ^/scheme/authority/path
|
|
419
|
+
const withoutPrefix = fileName.substring(2); // Remove "^/"
|
|
420
|
+
const firstSlash = withoutPrefix.indexOf("/");
|
|
421
|
+
if (firstSlash === -1) {
|
|
422
|
+
throw new Error("invalid file name: " + fileName);
|
|
423
|
+
}
|
|
424
|
+
const scheme = withoutPrefix.substring(0, firstSlash);
|
|
425
|
+
const rest = withoutPrefix.substring(firstSlash + 1);
|
|
426
|
+
const secondSlash = rest.indexOf("/");
|
|
427
|
+
if (secondSlash === -1) {
|
|
428
|
+
throw new Error("invalid file name: " + fileName);
|
|
429
|
+
}
|
|
430
|
+
const authority = rest.substring(0, secondSlash);
|
|
431
|
+
const path = rest.substring(secondSlash + 1);
|
|
432
|
+
// ts-nul-authority is a placeholder for URIs without an authority
|
|
433
|
+
if (authority === "ts-nul-authority") {
|
|
434
|
+
return scheme + ":" + path;
|
|
435
|
+
}
|
|
436
|
+
return scheme + "://" + authority + "/" + path;
|
|
437
|
+
}
|
|
438
|
+
// Regular file path - convert to file:// URI
|
|
439
|
+
let [volume, rest] = splitVolumePath(fileName);
|
|
440
|
+
if (volume !== "") {
|
|
441
|
+
volume = "/" + extraEscape(volume);
|
|
442
|
+
}
|
|
443
|
+
// Remove leading // for UNC paths (already handled by file://)
|
|
444
|
+
if (rest.startsWith("//")) {
|
|
445
|
+
rest = rest.substring(2);
|
|
446
|
+
}
|
|
447
|
+
const parts = rest.split("/");
|
|
448
|
+
const encodedParts = parts.map(part => extraEscape(encodeURIComponent(part)));
|
|
449
|
+
return "file://" + volume + encodedParts.join("/");
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Converts a document URI to a file name.
|
|
453
|
+
*
|
|
454
|
+
* @example
|
|
455
|
+
* documentURIToFileName("file:///path/to/file.ts") === "/path/to/file.ts"
|
|
456
|
+
* documentURIToFileName("file:///c%3A/path/to/file.ts") === "c:/path/to/file.ts"
|
|
457
|
+
* documentURIToFileName("untitled:Untitled-1") === "^/untitled/ts-nul-authority/Untitled-1"
|
|
458
|
+
* documentURIToFileName("vscode-vfs://github/microsoft/typescript-go/file.ts") === "^/vscode-vfs/github/microsoft/typescript-go/file.ts"
|
|
459
|
+
*/
|
|
460
|
+
export function documentURIToFileName(uri) {
|
|
461
|
+
// Bundled files are returned as-is
|
|
462
|
+
if (isBundled(uri)) {
|
|
463
|
+
return uri;
|
|
464
|
+
}
|
|
465
|
+
// Handle file:// URIs
|
|
466
|
+
if (uri.startsWith("file://")) {
|
|
467
|
+
let parsed;
|
|
468
|
+
try {
|
|
469
|
+
parsed = new URL(uri);
|
|
470
|
+
}
|
|
471
|
+
catch {
|
|
472
|
+
throw new Error("invalid file URI: " + uri);
|
|
473
|
+
}
|
|
474
|
+
// UNC path: file://server/share/...
|
|
475
|
+
if (parsed.host !== "") {
|
|
476
|
+
return "//" + parsed.host + parsed.pathname;
|
|
477
|
+
}
|
|
478
|
+
// Local file - fix Windows path by removing leading slash before volume
|
|
479
|
+
const path = decodeURIComponent(parsed.pathname);
|
|
480
|
+
if (path.length >= 3 && path.charCodeAt(0) === CharacterCodesSlash) {
|
|
481
|
+
const [volume, rest, ok] = splitVolumePath(path.substring(1));
|
|
482
|
+
if (ok) {
|
|
483
|
+
return volume + rest;
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
return path;
|
|
487
|
+
}
|
|
488
|
+
// Leave all other URIs escaped so we can round-trip them.
|
|
489
|
+
// Convert to dynamic file name format: ^/scheme/authority/path
|
|
490
|
+
const colonIndex = uri.indexOf(":");
|
|
491
|
+
if (colonIndex === -1) {
|
|
492
|
+
throw new Error("invalid URI: " + uri);
|
|
493
|
+
}
|
|
494
|
+
const scheme = uri.substring(0, colonIndex);
|
|
495
|
+
let path = uri.substring(colonIndex + 1);
|
|
496
|
+
let authority = "ts-nul-authority";
|
|
497
|
+
if (path.startsWith("//")) {
|
|
498
|
+
const rest = path.substring(2);
|
|
499
|
+
const slashIndex = rest.indexOf("/");
|
|
500
|
+
if (slashIndex === -1) {
|
|
501
|
+
throw new Error("invalid URI: " + uri);
|
|
502
|
+
}
|
|
503
|
+
authority = rest.substring(0, slashIndex);
|
|
504
|
+
path = rest.substring(slashIndex + 1);
|
|
505
|
+
}
|
|
506
|
+
return "^/" + scheme + "/" + authority + "/" + path;
|
|
507
|
+
}
|
|
508
|
+
//# sourceMappingURL=path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/api/path.ts"],"names":[],"mappings":"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"}
|