import { type IEditorOverrideServices } from "@codingame/monaco-vscode-api/vscode/vs/editor/standalone/browser/standaloneServices"; import { InMemoryFileSystemProvider } from "@codingame/monaco-vscode-2f06fe84-148e-5e6b-a7ca-c7989c5f128a-common/vscode/vs/platform/files/common/inMemoryFilesystemProvider"; import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri"; import { FileChangeType, FilePermission, FileSystemProviderCapabilities, FileType, type IFileSystemProvider, FileSystemProviderError, FileSystemProviderErrorCode, type IFileChange, type IFileDeleteOptions, type IFileOverwriteOptions, type IFileSystemProviderWithFileReadWriteCapability, type IFileWriteOptions, type IStat, type IWatchOptions, type IFileSystemProviderWithOpenReadWriteCloseCapability, type IFileSystemProviderWithFileReadStreamCapability, type IFileReadStreamOptions, type IFileSystemProviderWithFileAtomicReadCapability, type IFileSystemProviderWithFileAtomicWriteCapability, type IFileSystemProviderWithFileAtomicDeleteCapability, type IFileStat } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files"; import { type IDisposable, Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle"; import { Emitter, Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event"; import { HTMLFileSystemProvider } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/browser/htmlFileSystemProvider"; import { IndexedDBFileSystemProvider } from "./vscode/src/vs/platform/files/browser/indexedDBFileSystemProvider.js"; import { IndexedDB } from "@codingame/monaco-vscode-2f06fe84-148e-5e6b-a7ca-c7989c5f128a-common/vscode/vs/base/browser/indexedDB"; import { type ReadableStreamEvents } from "@codingame/monaco-vscode-api/vscode/vs/base/common/stream"; import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation"; interface _RegisteredNode { type: FileType; stats(): Promise; onDidDelete: Event; onDidChange: Event; } interface RegisteredFileNode extends _RegisteredNode { type: FileType.File; uri: URI; read(): Promise; readStream?(): Promise>; write(content: Uint8Array): Promise; delete(): void; } interface RegisteredDirectoryNode extends _RegisteredNode { type: FileType.Directory; addChild(name: string, node: RegisteredNode): IDisposable; deleteChild(name: string): boolean; getChildren(name: string): RegisteredNode | undefined; read(): [ string, FileType ][]; } type RegisteredNode = RegisteredFileNode | RegisteredDirectoryNode; declare abstract class RegisteredFile implements RegisteredFileNode { uri: URI; private readonly; protected ctime: number; protected mtime: number; readonly type = FileType.File; protected _onDidChange: Emitter; onDidChange: Event; protected _onDidDelete: Emitter; onDidDelete: Event; constructor(uri: URI, readonly: boolean); stats(): Promise; abstract getSize(): Promise; delete(): Promise; abstract read(): Promise; abstract write(content: Uint8Array): Promise; } declare class RegisteredReadOnlyFile extends RegisteredFile { read: () => Promise; private size; constructor(uri: URI, read: () => Promise, size: number); getSize(): Promise; write(): Promise; delete(): Promise; } export interface ExtensionFileMetadata { mimeType?: string; size?: number; } declare class RegisteredUriFile extends RegisteredFile { private url; private metadata?; constructor(location: URI, url: string, metadata?: ExtensionFileMetadata | undefined); private fetch; getSize(): Promise; read(): Promise; readStream(): Promise>; write(): Promise; delete(): Promise; } declare class RegisteredMemoryFile extends RegisteredFile { private content; constructor(uri: URI, content: string | Uint8Array); getSize(): Promise; read(): Promise; write(content: Uint8Array): Promise; } declare class RegisteredFileSystemProvider extends Disposable implements IFileSystemProviderWithFileReadWriteCapability, IFileSystemProviderWithOpenReadWriteCloseCapability, IFileSystemProviderWithFileReadStreamCapability, IFileSystemProviderWithFileAtomicReadCapability, IFileSystemProviderWithFileAtomicWriteCapability, IFileSystemProviderWithFileAtomicDeleteCapability { private memoryFdCounter; private readonly fdMemory; private rootByAuthority; onDidChangeCapabilities: Event; _onDidChangeFile: Emitter; onDidChangeFile: Event; capabilities: number; constructor(readonly: boolean); open(resource: URI): Promise; close(fd: number): Promise; read(fd: number, pos: number, data: Uint8Array, offset: number, length: number): Promise; write(fd: number, pos: number, data: Uint8Array, offset: number, length: number): Promise; private _lookupRoot; private _lookup; private _lookupAsDirectory; private _lookupAsFile; registerFile(file: RegisteredFileNode): IDisposable; stat(resource: URI): Promise; readdirSync(resource: URI): [ string, FileType ][]; readdir(resource: URI): Promise<[ string, FileType ][]>; readFile(resource: URI): Promise; readFileStream(resource: URI, opts: IFileReadStreamOptions, token: CancellationToken): ReadableStreamEvents; watch(): IDisposable; writeFile(resource: URI, content: Uint8Array, opts: IFileWriteOptions): Promise; rename(): Promise; mkdirSync(resource: URI): RegisteredDirectoryNode; mkdir(): Promise; private deleteSync; delete(resource: URI): Promise; private _bufferedChanges; private _fireSoonHandle?; private _fireSoon; } declare class OverlayFileSystemProvider implements IFileSystemProviderWithFileReadWriteCapability, IFileSystemProviderWithFileReadStreamCapability, IFileSystemProviderWithFileAtomicReadCapability, IFileSystemProviderWithFileAtomicWriteCapability, IFileSystemProviderWithFileAtomicDeleteCapability { private providers; register(priority: number, provider: IFileSystemProviderWithFileReadWriteCapability): IDisposable; get delegates(): IFileSystemProviderWithFileReadWriteCapability[]; onDidChangeCapabilities: Event; _onDidChangeFile: Emitter; onDidChangeFile: Event; _onDidChangeOverlays: Emitter; onDidChangeOverlays: Event; capabilities: number; private readFromDelegates; private writeToDelegates; stat(resource: URI): Promise; readFile(resource: URI): Promise; readFileStream(resource: URI, opts: IFileReadStreamOptions, token: CancellationToken): ReadableStreamEvents; readdir(resource: URI): Promise<[ string, FileType ][]>; watch(resource: URI, opts: IWatchOptions): IDisposable; writeFile(resource: URI, content: Uint8Array, opts: IFileWriteOptions): Promise; mkdir(resource: URI): Promise; delete(resource: URI, opts: IFileDeleteOptions): Promise; rename(from: URI, to: URI, opts: IFileOverwriteOptions): Promise; } declare class DelegateFileSystemProvider implements IFileSystemProvider { private options; constructor(options: { delegate: IFileSystemProvider; toDelegate: (uri: URI) => URI; fromDeletate: (uri: URI) => URI; }); get capabilities(): FileSystemProviderCapabilities; onDidChangeCapabilities: Event; onDidChangeFile: Event<{ type: FileChangeType; resource: URI; }[]>; readFile: ((resource: URI) => Promise) | undefined; writeFile: ((resource: URI, content: Uint8Array, opts: IFileWriteOptions) => Promise) | undefined; watch(resource: URI, opts: IWatchOptions): IDisposable; stat(resource: URI): Promise; mkdir(resource: URI): Promise; readdir(resource: URI): Promise<[ string, FileType ][]>; delete(resource: URI, opts: IFileDeleteOptions): Promise; rename(from: URI, to: URI, opts: IFileOverwriteOptions): Promise; } declare class EmptyFileSystemProvider implements IFileSystemProviderWithFileReadWriteCapability { readFile(): Promise; writeFile(): Promise; capabilities: number; onDidChangeCapabilities: Event; onDidChangeFile: Event; watch(): IDisposable; stat(): Promise; mkdir(): Promise; readdir(): Promise<[ string, FileType ][]>; delete(): Promise; rename(): Promise; } export declare namespace CustomSchemas { /** * A schema that is used for models that exist in memory * only and that have no correspondence on a server or such. */ const extensionFile = "extension-file"; } export interface FileServiceOptions { statMiddleware?: (resource: URI, next: () => Promise) => Promise; } export default function getServiceOverride(options?: FileServiceOptions): IEditorOverrideServices; /** * Register a custom file system provider for the given scheme. This allows us to override * the default file system provider for a given scheme. */ export declare function registerCustomProvider(scheme: string, provider: IFileSystemProvider): void; export declare function registerExtensionFile(file: RegisteredFileNode): IDisposable; /** * Can be used to create a file before the fileService is initialized */ export declare function initFile(file: URI, content: Uint8Array | string, options?: Partial): Promise; /** * Can be used to replace memory providers by indexeddb providers before the fileService is initialized */ export declare function createIndexedDBProviders(): Promise; /** * Can be used to replace the default filesystem provider by the HTMLFileSystemProvider before the fileService is initialized * Should be called "after" createIndexedDBProviders if used */ export declare function registerHTMLFileSystemProvider(): void; /** * Register a file system overlay * * By default, a memory filesystem is used to read and write file * * This method allows to register another fileSystemProvider in front OR behind the default memory one. * * The default one is registered as priority: 0, so: * - any provider registered with a positive priority will be in front of the default one * - any provider registered with a negative priority will be behind the default one */ export declare function registerFileSystemOverlay(priority: number, provider: IFileSystemProviderWithFileReadWriteCapability): IDisposable; export { FileSystemProviderCapabilities, FileType, FileSystemProviderError, FileSystemProviderErrorCode, FileChangeType, FilePermission, HTMLFileSystemProvider, InMemoryFileSystemProvider, IndexedDB, IndexedDBFileSystemProvider, RegisteredFileSystemProvider, RegisteredFile, RegisteredReadOnlyFile, RegisteredUriFile, RegisteredMemoryFile, DelegateFileSystemProvider, OverlayFileSystemProvider, EmptyFileSystemProvider }; export type { IFileSystemProviderWithFileReadWriteCapability, IStat, IWatchOptions, IFileWriteOptions, IFileDeleteOptions, IFileOverwriteOptions, IFileChange, IFileStat };