@sussudio/platform
Version:
Internal APIs for VS Code's service injection the base services.
35 lines (34 loc) • 1.48 kB
JavaScript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Disposable } from '@sussudio/base/common/lifecycle.mjs';
import { join } from '@sussudio/base/common/path.mjs';
import * as pfs from '@sussudio/base/node/pfs.mjs';
import { MANIFEST_CACHE_FOLDER, USER_MANIFEST_CACHE_FILE } from '../../extensions/common/extensions.mjs';
export class ExtensionsManifestCache extends Disposable {
environmentService;
extensionsManifestCache = join(this.environmentService.userDataPath, MANIFEST_CACHE_FOLDER, USER_MANIFEST_CACHE_FILE);
constructor(environmentService, extensionsManagementService) {
super();
this.environmentService = environmentService;
this._register(extensionsManagementService.onDidInstallExtensions((e) => this.onDidInstallExtensions(e)));
this._register(extensionsManagementService.onDidUninstallExtension((e) => this.onDidUnInstallExtension(e)));
}
onDidInstallExtensions(results) {
if (results.some((r) => !!r.local)) {
this.invalidate();
}
}
onDidUnInstallExtension(e) {
if (!e.error) {
this.invalidate();
}
}
invalidate() {
pfs.Promises.rm(this.extensionsManifestCache, pfs.RimRafMode.MOVE).then(
() => {},
() => {},
);
}
}