projfs-fuse.one
Version:
FUSE3-compatible API for Windows using ProjFS - provides cross-platform virtual filesystem support
91 lines • 2.69 kB
TypeScript
/**
* ProjFS-FUSE.ONE - FUSE3-compatible API for Windows using ProjFS
*
* This package provides a FUSE3-compatible interface on Windows by using
* Windows Projected File System (ProjFS) as the backend. Applications can
* use the same FUSE3 API on both Linux and Windows for cross-platform
* virtual filesystem development.
*
* @author REFINIO GmbH
* @license MIT
*/
import { EventEmitter } from 'events';
export interface FuseStats {
mtime: Date;
atime: Date;
ctime: Date;
size: number;
mode: number;
uid: number;
gid: number;
}
export interface FuseOperations {
init?: () => void;
getattr?: (path: string) => FuseStats | null;
readdir?: (path: string) => string[];
read?: (path: string, size: number, offset: number) => Buffer | null;
write?: (path: string, buffer: Buffer, offset: number) => number;
create?: (path: string, mode: number) => void;
unlink?: (path: string) => void;
mkdir?: (path: string, mode: number) => void;
rmdir?: (path: string) => void;
rename?: (oldPath: string, newPath: string) => void;
truncate?: (path: string, size: number) => void;
open?: (path: string, flags: number) => number;
release?: (path: string, fd: number) => void;
statfs?: (path: string) => any;
}
/**
* ProjFS-FUSE filesystem class
*
* Provides a FUSE3-compatible interface on Windows using ProjFS as backend.
* This allows the same FUSE3 code to work on both Linux and Windows.
*/
export declare class ProjFSFuse extends EventEmitter {
private mounted;
private mountPath;
private operations;
private nativeInstance;
constructor(mountPath: string, operations: FuseOperations, options?: any);
/**
* Mount the filesystem with FUSE3-compatible operations
*
* This method adapts FUSE3 operations to ProjFS callbacks automatically
*/
mount(): Promise<void>;
/**
* Unmount the filesystem
*/
unmount(): Promise<void>;
/**
* Check if filesystem is mounted
*/
isMounted(): boolean;
/**
* Get mount path
*/
getMountPath(): string;
/**
* Adapt FUSE3 operations to ProjFS callbacks
*
* This is the core adapter logic that makes FUSE3 operations work with ProjFS
*/
private adaptFuseOperationsToProjFS;
}
export default ProjFSFuse;
export declare const FUSE_ERRORS: {
EPERM: number;
ENOENT: number;
EIO: number;
EACCES: number;
EEXIST: number;
ENOTDIR: number;
EISDIR: number;
EINVAL: number;
ENOSPC: number;
EROFS: number;
EBUSY: number;
ENOTEMPTY: number;
};
export { ProjFSFuse as Fuse3 };
//# sourceMappingURL=index.d.ts.map