Superblock.d.ts 4.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import { Node } from './Node';
  2. import { Link } from './Link';
  3. import { File } from './File';
  4. import { DirectoryJSON, NestedDirectoryJSON } from './json';
  5. import type { PathLike } from '../node/types/misc';
  6. import { TFileId } from './types';
  7. /**
  8. * Represents a filesystem superblock, which is the root of a virtual
  9. * filesystem in Linux.
  10. * @see https://lxr.linux.no/linux+v3.11.2/include/linux/fs.h#L1242
  11. */
  12. export declare class Superblock {
  13. static fromJSON(json: DirectoryJSON, cwd?: string): Superblock;
  14. static fromNestedJSON(json: NestedDirectoryJSON, cwd?: string): Superblock;
  15. /**
  16. * Global file descriptor counter. UNIX file descriptors start from 0 and go sequentially
  17. * up, so here, in order not to conflict with them, we choose some big number and descrease
  18. * the file descriptor of every new opened file.
  19. * @type {number}
  20. * @todo This should not be static, right?
  21. */
  22. static fd: number;
  23. root: Link;
  24. ino: number;
  25. inodes: {
  26. [ino: number]: Node;
  27. };
  28. releasedInos: number[];
  29. fds: {
  30. [fd: number]: File;
  31. };
  32. releasedFds: number[];
  33. maxFiles: number;
  34. openFiles: number;
  35. constructor(props?: {});
  36. createLink(): Link;
  37. createLink(parent: Link, name: string, isDirectory?: boolean, mode?: number): Link;
  38. deleteLink(link: Link): boolean;
  39. private newInoNumber;
  40. private newFdNumber;
  41. createNode(mode: number): Node;
  42. deleteNode(node: Node): void;
  43. walk(steps: string[], resolveSymlinks: boolean, checkExistence: boolean, checkAccess: boolean, funcName?: string): Link | null;
  44. walk(filename: string, resolveSymlinks: boolean, checkExistence: boolean, checkAccess: boolean, funcName?: string): Link | null;
  45. walk(link: Link, resolveSymlinks: boolean, checkExistence: boolean, checkAccess: boolean, funcName?: string): Link | null;
  46. walk(stepsOrFilenameOrLink: string[] | string | Link, resolveSymlinks: boolean, checkExistence: boolean, checkAccess: boolean, funcName?: string): Link | null;
  47. getLink(steps: string[]): Link | null;
  48. getLinkOrThrow(filename: string, funcName?: string): Link;
  49. getResolvedLink(filenameOrSteps: string | string[]): Link | null;
  50. /**
  51. * Just like `getLinkOrThrow`, but also dereference/resolves symbolic links.
  52. */
  53. getResolvedLinkOrThrow(filename: string, funcName?: string): Link;
  54. resolveSymlinks(link: Link): Link | null;
  55. /**
  56. * Just like `getLinkOrThrow`, but also verifies that the link is a directory.
  57. */
  58. getLinkAsDirOrThrow(filename: string, funcName?: string): Link;
  59. getLinkParent(steps: string[]): Link | null;
  60. getLinkParentAsDirOrThrow(filenameOrSteps: string | string[], funcName?: string): Link;
  61. getFileByFd(fd: number): File;
  62. getFileByFdOrThrow(fd: number, funcName?: string): File;
  63. _toJSON(link?: Link, json?: {}, path?: string, asBuffer?: boolean): DirectoryJSON<string | null>;
  64. toJSON(paths?: PathLike | PathLike[], json?: {}, isRelative?: boolean, asBuffer?: boolean): DirectoryJSON<string | null>;
  65. fromJSON(json: DirectoryJSON, cwd?: string): void;
  66. fromNestedJSON(json: NestedDirectoryJSON, cwd?: string): void;
  67. reset(): void;
  68. mountSync(mountpoint: string, json: DirectoryJSON): void;
  69. openLink(link: Link, flagsNum: number, resolveSymlinks?: boolean): File;
  70. protected openFile(filename: string, flagsNum: number, modeNum: number | undefined, resolveSymlinks?: boolean): File;
  71. readonly open: (filename: string, flagsNum: number, modeNum: number, resolveSymlinks?: boolean) => number;
  72. readonly writeFile: (id: TFileId, buf: Buffer, flagsNum: number, modeNum: number) => void;
  73. readonly read: (fd: number, buffer: Buffer | ArrayBufferView | DataView, offset: number, length: number, position: number | null) => number;
  74. readonly readv: (fd: number, buffers: ArrayBufferView[], position: number | null) => number;
  75. readonly link: (filename1: string, filename2: string) => void;
  76. readonly unlink: (filename: string) => void;
  77. readonly symlink: (targetFilename: string, pathFilename: string) => Link;
  78. readonly rename: (oldPathFilename: string, newPathFilename: string) => void;
  79. readonly mkdir: (filename: string, modeNum: number) => void;
  80. /**
  81. * Creates directory tree recursively.
  82. */
  83. readonly mkdirp: (filename: string, modeNum: number) => string | undefined;
  84. readonly rmdir: (filename: string, recursive?: boolean) => void;
  85. readonly rm: (filename: string, force?: boolean, recursive?: boolean) => void;
  86. protected closeFile(file: File): void;
  87. readonly close: (fd: number) => void;
  88. write(fd: number, buf: Buffer, offset?: number, length?: number, position?: number | null): number;
  89. }