Path: blob/main/src/vs/workbench/api/node/uriTransformer.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { UriParts, IRawURITransformer, URITransformer, IURITransformer } from '../../../base/common/uriIpc.js';67/**8* ```9* --------------------------------10* | UI SIDE | AGENT SIDE |11* |---------------|--------------|12* | vscode-remote | file |13* | file | vscode-local |14* --------------------------------15* ```16*/17function createRawURITransformer(remoteAuthority: string): IRawURITransformer {18return {19transformIncoming: (uri: UriParts): UriParts => {20if (uri.scheme === 'vscode-remote') {21return { scheme: 'file', path: uri.path, query: uri.query, fragment: uri.fragment };22}23if (uri.scheme === 'file') {24return { scheme: 'vscode-local', path: uri.path, query: uri.query, fragment: uri.fragment };25}26return uri;27},28transformOutgoing: (uri: UriParts): UriParts => {29if (uri.scheme === 'file') {30return { scheme: 'vscode-remote', authority: remoteAuthority, path: uri.path, query: uri.query, fragment: uri.fragment };31}32if (uri.scheme === 'vscode-local') {33return { scheme: 'file', path: uri.path, query: uri.query, fragment: uri.fragment };34}35return uri;36},37transformOutgoingScheme: (scheme: string): string => {38if (scheme === 'file') {39return 'vscode-remote';40} else if (scheme === 'vscode-local') {41return 'file';42}43return scheme;44}45};46}4748export function createURITransformer(remoteAuthority: string): IURITransformer {49return new URITransformer(createRawURITransformer(remoteAuthority));50}515253