sussudio
Version:
An unofficial VS Code Internal API
160 lines (159 loc) • 8.66 kB
text/typescript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Emitter, Event } from "../../../base/common/event.mjs";
import { Disposable } from "../../../base/common/lifecycle.mjs";
import { URI, UriDto } from "../../../base/common/uri.mjs";
import { IEnvironmentService } from "../../environment/common/environment.mjs";
import { IFileService } from "../../files/common/files.mjs";
import { ILogService } from "../../log/common/log.mjs";
import { IAnyWorkspaceIdentifier } from "../../workspace/common/workspace.mjs";
import { ResourceMap } from "../../../base/common/map.mjs";
import { IStringDictionary } from "../../../base/common/collections.mjs";
import { IUriIdentityService } from "../../uriIdentity/common/uriIdentity.mjs";
/**
* Flags to indicate whether to use the default profile or not.
*/
export type UseDefaultProfileFlags = {
settings?: boolean;
keybindings?: boolean;
tasks?: boolean;
snippets?: boolean;
extensions?: boolean;
uiState?: boolean;
};
export interface IUserDataProfile {
readonly id: string;
readonly isDefault: boolean;
readonly name: string;
readonly shortName?: string;
readonly location: URI;
readonly globalStorageHome: URI;
readonly settingsResource: URI;
readonly keybindingsResource: URI;
readonly tasksResource: URI;
readonly snippetsHome: URI;
readonly extensionsResource: URI;
readonly useDefaultFlags?: UseDefaultProfileFlags;
readonly isTransient?: boolean;
}
export declare function isUserDataProfile(thing: unknown): thing is IUserDataProfile;
export declare const PROFILES_ENABLEMENT_CONFIG = "workbench.experimental.settingsProfiles.enabled";
export type DidChangeProfilesEvent = {
readonly added: readonly IUserDataProfile[];
readonly removed: readonly IUserDataProfile[];
readonly updated: readonly IUserDataProfile[];
readonly all: readonly IUserDataProfile[];
};
export type WillCreateProfileEvent = {
profile: IUserDataProfile;
join(promise: Promise<void>): void;
};
export type WillRemoveProfileEvent = {
profile: IUserDataProfile;
join(promise: Promise<void>): void;
};
export interface IUserDataProfileOptions {
readonly shortName?: string;
readonly useDefaultFlags?: UseDefaultProfileFlags;
readonly transient?: boolean;
}
export interface IUserDataProfileUpdateOptions extends IUserDataProfileOptions {
readonly name?: string;
}
export declare const IUserDataProfilesService: import("../../instantiation/common/instantiation.mjs").ServiceIdentifier<IUserDataProfilesService>;
export interface IUserDataProfilesService {
readonly _serviceBrand: undefined;
readonly profilesHome: URI;
readonly defaultProfile: IUserDataProfile;
readonly onDidChangeProfiles: Event<DidChangeProfilesEvent>;
readonly profiles: readonly IUserDataProfile[];
readonly onDidResetWorkspaces: Event<void>;
isEnabled(): boolean;
createNamedProfile(name: string, options?: IUserDataProfileOptions, workspaceIdentifier?: IAnyWorkspaceIdentifier): Promise<IUserDataProfile>;
createTransientProfile(workspaceIdentifier?: IAnyWorkspaceIdentifier): Promise<IUserDataProfile>;
createProfile(id: string, name: string, options?: IUserDataProfileOptions, workspaceIdentifier?: IAnyWorkspaceIdentifier): Promise<IUserDataProfile>;
updateProfile(profile: IUserDataProfile, options?: IUserDataProfileUpdateOptions): Promise<IUserDataProfile>;
removeProfile(profile: IUserDataProfile): Promise<void>;
setProfileForWorkspace(workspaceIdentifier: IAnyWorkspaceIdentifier, profile: IUserDataProfile): Promise<void>;
resetWorkspaces(): Promise<void>;
cleanUp(): Promise<void>;
cleanUpTransientProfiles(): Promise<void>;
}
export declare function reviveProfile(profile: UriDto<IUserDataProfile>, scheme: string): IUserDataProfile;
export declare function toUserDataProfile(id: string, name: string, location: URI, options?: IUserDataProfileOptions): IUserDataProfile;
export type UserDataProfilesObject = {
profiles: IUserDataProfile[];
workspaces: ResourceMap<IUserDataProfile>;
emptyWindows: Map<string, IUserDataProfile>;
};
export type StoredUserDataProfile = {
name: string;
location: URI;
shortName?: string;
useDefaultFlags?: UseDefaultProfileFlags;
};
export type StoredProfileAssociations = {
workspaces?: IStringDictionary<string>;
emptyWindows?: IStringDictionary<string>;
};
export declare class UserDataProfilesService extends Disposable implements IUserDataProfilesService {
protected readonly environmentService: IEnvironmentService;
protected readonly fileService: IFileService;
protected readonly uriIdentityService: IUriIdentityService;
protected readonly logService: ILogService;
protected static readonly PROFILES_KEY = "userDataProfiles";
protected static readonly PROFILE_ASSOCIATIONS_KEY = "profileAssociations";
readonly _serviceBrand: undefined;
protected enabled: boolean;
readonly profilesHome: URI;
get defaultProfile(): IUserDataProfile;
get profiles(): IUserDataProfile[];
protected readonly _onDidChangeProfiles: Emitter<DidChangeProfilesEvent>;
readonly onDidChangeProfiles: Event<DidChangeProfilesEvent>;
protected readonly _onWillCreateProfile: Emitter<WillCreateProfileEvent>;
readonly onWillCreateProfile: Event<WillCreateProfileEvent>;
protected readonly _onWillRemoveProfile: Emitter<WillRemoveProfileEvent>;
readonly onWillRemoveProfile: Event<WillRemoveProfileEvent>;
private readonly _onDidResetWorkspaces;
readonly onDidResetWorkspaces: Event<void>;
private profileCreationPromises;
protected readonly transientProfilesObject: UserDataProfilesObject;
constructor(environmentService: IEnvironmentService, fileService: IFileService, uriIdentityService: IUriIdentityService, logService: ILogService);
setEnablement(enabled: boolean): void;
isEnabled(): boolean;
protected _profilesObject: UserDataProfilesObject | undefined;
protected get profilesObject(): UserDataProfilesObject;
createTransientProfile(workspaceIdentifier?: IAnyWorkspaceIdentifier): Promise<IUserDataProfile>;
createNamedProfile(name: string, options?: IUserDataProfileOptions, workspaceIdentifier?: IAnyWorkspaceIdentifier): Promise<IUserDataProfile>;
createProfile(id: string, name: string, options?: IUserDataProfileOptions, workspaceIdentifier?: IAnyWorkspaceIdentifier): Promise<IUserDataProfile>;
private doCreateProfile;
updateProfile(profileToUpdate: IUserDataProfile, options: IUserDataProfileUpdateOptions): Promise<IUserDataProfile>;
removeProfile(profileToRemove: IUserDataProfile): Promise<void>;
setProfileForWorkspace(workspaceIdentifier: IAnyWorkspaceIdentifier, profileToSet: IUserDataProfile): Promise<void>;
unsetWorkspace(workspaceIdentifier: IAnyWorkspaceIdentifier, transient?: boolean): void;
resetWorkspaces(): Promise<void>;
cleanUp(): Promise<void>;
cleanUpTransientProfiles(): Promise<void>;
getProfileForWorkspace(workspaceIdentifier: IAnyWorkspaceIdentifier): IUserDataProfile | undefined;
protected getWorkspace(workspaceIdentifier: IAnyWorkspaceIdentifier): URI | string;
private isProfileAssociatedToWorkspace;
private updateProfiles;
protected triggerProfilesChanges(added: IUserDataProfile[], removed: IUserDataProfile[], updated: IUserDataProfile[]): void;
private updateWorkspaceAssociation;
private updateStoredProfileAssociations;
protected getStoredProfiles(): StoredUserDataProfile[];
protected saveStoredProfiles(storedProfiles: StoredUserDataProfile[]): void;
protected getStoredProfileAssociations(): StoredProfileAssociations;
protected saveStoredProfileAssociations(storedProfileAssociations: StoredProfileAssociations): void;
protected getDefaultProfileExtensionsLocation(): URI | undefined;
}
export declare class InMemoryUserDataProfilesService extends UserDataProfilesService {
private storedProfiles;
protected getStoredProfiles(): StoredUserDataProfile[];
protected saveStoredProfiles(storedProfiles: StoredUserDataProfile[]): void;
private storedProfileAssociations;
protected getStoredProfileAssociations(): StoredProfileAssociations;
protected saveStoredProfileAssociations(storedProfileAssociations: StoredProfileAssociations): void;
}