UNPKG

@sussudio/platform

Version:

Internal APIs for VS Code's service injection the base services.

193 lines (191 loc) 8.4 kB
/*--------------------------------------------------------------------------------------------- * 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 '@sussudio/base/common/event.mjs'; import { Disposable } from '@sussudio/base/common/lifecycle.mjs'; import { URI, UriDto } from '@sussudio/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 '@sussudio/base/common/map.mjs'; import { IStringDictionary } from '@sussudio/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; }