UNPKG

sussudio

Version:

An unofficial VS Code Internal API

86 lines (85 loc) 4.2 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; import { Emitter } from "../../../base/common/event.mjs"; import { Disposable } from "../../../base/common/lifecycle.mjs"; import { RemoteAuthorities } from "../../../base/common/network.mjs"; import { IProductService } from "../../product/common/productService.mjs"; import { getRemoteServerRootPath, parseAuthorityWithOptionalPort } from "../common/remoteHosts.mjs"; let RemoteAuthorityResolverService = class RemoteAuthorityResolverService extends Disposable { _onDidChangeConnectionData = this._register(new Emitter()); onDidChangeConnectionData = this._onDidChangeConnectionData.event; _promiseCache = new Map(); _cache = new Map(); _connectionToken; _connectionTokens; constructor(productService, connectionToken, resourceUriProvider) { super(); this._connectionToken = connectionToken; this._connectionTokens = new Map(); if (resourceUriProvider) { RemoteAuthorities.setDelegate(resourceUriProvider); } RemoteAuthorities.setServerRootPath(getRemoteServerRootPath(productService)); } async resolveAuthority(authority) { let result = this._promiseCache.get(authority); if (!result) { result = this._doResolveAuthority(authority); this._promiseCache.set(authority, result); } return result; } async getCanonicalURI(uri) { return uri; } getConnectionData(authority) { if (!this._cache.has(authority)) { return null; } const resolverResult = this._cache.get(authority); const connectionToken = this._connectionTokens.get(authority) || resolverResult.authority.connectionToken; return { host: resolverResult.authority.host, port: resolverResult.authority.port, connectionToken: connectionToken }; } async _doResolveAuthority(authority) { const connectionToken = await Promise.resolve(this._connectionTokens.get(authority) || this._connectionToken); const defaultPort = (/^https:/.test(window.location.href) ? 443 : 80); const { host, port } = parseAuthorityWithOptionalPort(authority, defaultPort); const result = { authority: { authority, host: host, port: port, connectionToken } }; RemoteAuthorities.set(authority, result.authority.host, result.authority.port); this._cache.set(authority, result); this._onDidChangeConnectionData.fire(); return result; } _clearResolvedAuthority(authority) { } _setResolvedAuthority(resolvedAuthority) { } _setResolvedAuthorityError(authority, err) { } _setAuthorityConnectionToken(authority, connectionToken) { this._connectionTokens.set(authority, connectionToken); RemoteAuthorities.setConnectionToken(authority, connectionToken); this._onDidChangeConnectionData.fire(); } _setCanonicalURIProvider(provider) { } }; RemoteAuthorityResolverService = __decorate([ __param(0, IProductService) ], RemoteAuthorityResolverService); export { RemoteAuthorityResolverService };