@sussudio/platform
Version:
Internal APIs for VS Code's service injection the base services.
77 lines (75 loc) • 3.05 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 { Event } from '@sussudio/base/common/event.mjs';
import { Disposable, IDisposable } from '@sussudio/base/common/lifecycle.mjs';
import {
IFileSystemProviderWithFileReadWriteCapability,
IFileChange,
IWatchOptions,
IStat,
IFileOverwriteOptions,
FileType,
IFileWriteOptions,
IFileDeleteOptions,
IFileSystemProviderWithFileReadStreamCapability,
IFileReadStreamOptions,
IFileSystemProviderWithFileAtomicReadCapability,
IFileSystemProviderWithFileFolderCopyCapability,
} from '../../files/common/files.mjs';
import { URI } from '@sussudio/base/common/uri.mjs';
import { CancellationToken } from '@sussudio/base/common/cancellation.mjs';
import { ReadableStreamEvents } from '@sussudio/base/common/stream.mjs';
import { ILogService } from '../../log/common/log.mjs';
/**
* This is a wrapper on top of the local filesystem provider which will
* - Convert the user data resources to file system scheme and vice-versa
* - Enforces atomic reads for user data
*/
export declare class FileUserDataProvider
extends Disposable
implements
IFileSystemProviderWithFileReadWriteCapability,
IFileSystemProviderWithFileReadStreamCapability,
IFileSystemProviderWithFileAtomicReadCapability,
IFileSystemProviderWithFileFolderCopyCapability
{
private readonly fileSystemScheme;
private readonly fileSystemProvider;
private readonly userDataScheme;
private readonly logService;
get capabilities(): number;
readonly onDidChangeCapabilities: Event<void>;
private readonly _onDidChangeFile;
readonly onDidChangeFile: Event<readonly IFileChange[]>;
private readonly watchResources;
constructor(
fileSystemScheme: string,
fileSystemProvider: IFileSystemProviderWithFileReadWriteCapability &
(
| IFileSystemProviderWithFileReadStreamCapability
| IFileSystemProviderWithFileAtomicReadCapability
| IFileSystemProviderWithFileFolderCopyCapability
),
userDataScheme: string,
logService: ILogService,
);
watch(resource: URI, opts: IWatchOptions): IDisposable;
stat(resource: URI): Promise<IStat>;
mkdir(resource: URI): Promise<void>;
rename(from: URI, to: URI, opts: IFileOverwriteOptions): Promise<void>;
readFile(resource: URI): Promise<Uint8Array>;
readFileStream(
resource: URI,
opts: IFileReadStreamOptions,
token: CancellationToken,
): ReadableStreamEvents<Uint8Array>;
readdir(resource: URI): Promise<[string, FileType][]>;
writeFile(resource: URI, content: Uint8Array, opts: IFileWriteOptions): Promise<void>;
delete(resource: URI, opts: IFileDeleteOptions): Promise<void>;
copy(from: URI, to: URI, opts: IFileOverwriteOptions): Promise<void>;
private handleFileChanges;
private toFileSystemResource;
private toUserDataResource;
}